diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml new file mode 100644 index 000000000..a7469d5c8 --- /dev/null +++ b/.github/FUNDING.yml @@ -0,0 +1 @@ +github: [TranscryptOrg] diff --git a/.gitignore b/.gitignore index ba072e884..3fee09593 100644 --- a/.gitignore +++ b/.gitignore @@ -1,23 +1,28 @@ -# ====== File extensions anywhere -*.nogit -*.pyc -*.npp -*.log -*.egg-info/ -*.min.html/ -.DS_Store - -# ======= Directories anywhere -__target__/ -__javascript__/ -__pycache__/ -.mypy_cache/ -dist/ -node_modules/ - -# ======== Directories at specific locations -transcrypt/docs/sphinx/_build/ -transcrypt/development/attic/ -transcrypt/development/docs/ -transcrypt/development/experiments/ -transcrypt/development/automated_tests/*/autotest.html +# ====== IDE Settings +.idea/ + +# ====== File extensions anywhere +*.nogit +*.pyc +*.npp +*.log +*.egg-info/ +*.min.html/ +.DS_Store + +# ======= Directories anywhere +__target__/ +__javascript__/ +__pycache__/ +.mypy_cache/ +dist/ +build/ +node_modules/ +venv/ + +# ======== Directories at specific locations +transcrypt/docs/sphinx/_build/ +transcrypt/development/attic/ +transcrypt/development/docs/ +transcrypt/development/experiments/ +transcrypt/development/automated_tests/*/autotest.html diff --git a/.travis.yml b/.travis.yml index f94ad8093..cd335ceb8 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,8 +6,7 @@ addons: language: python python: - - '3.7' - - '3.8' + - '3.9' script: - bash ./transcrypt/development/continuous_integration/run.sh diff --git a/MANIFEST.in b/MANIFEST.in index 0532fa8cd..c0da2d6da 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -1,9 +1,20 @@ global-include *.py *.js *.rst *.html *.css *.lyx *.pdf *.png *.gif *.jpg *.txt *.jar *.bat * -global-exclude *.pyc .gitignore +global-exclude *.pyc .gitignore workspace.* prune .git +prune .github +prune .idea +prune .mypy_cache +prune build prune dist -prune transcrypt.egg-info +prune Transcrypt.egg-info +prune venv + + prune transcrypt/development/attic prune transcrypt/development/docs prune transcrypt/development/experiments + +exclude requirements0.txt +prune venvOLD +prune zzz_sort diff --git a/README.rst b/README.rst index 53296feac..82dfb89dc 100644 --- a/README.rst +++ b/README.rst @@ -1,250 +1,127 @@ -.. figure:: http://www.transcrypt.org/illustrations/ruler_banner2.png - :alt: Logo - :target: http://www.transcrypt.org - -Python in the browser, precompiled for speed: http://www.transcrypt.org -======================================================================= - -- Precompiled into highly readable, efficient JavaScript, downloads kB's rather than MB's -- Multiple inheritance, optional operator overloading, metaclasses, async/await, properties, decorators, hierarchical modules etc. -- Seamless integration with the universe of high-quality web-oriented JavaScript libraries, rather than the desktop-oriented Python ones -- Pure Python 3.7 syntax, using Python's native parser -- Debug directly from Python sourcecode, through integrated sourcemaps -- Generates JavaScript for humans, resembling the Python source line by line, optionally annotated with source line numbers -- Lightning fast JavaScript 6 code: call caching, for-loop optimization, in-line JavaScript etc. -- Integrated static typechecking and minification at the tip of a command line switch -- Also runs on top of node.js -- Extensive documentation with many code examples -- Apache 2.0 license -- Pip-install and go! - -Latest stable release: London -============================= - -`>>> GET STARTED!_ `_ -======================================================= - -Thanks to everyone who contributed! - -Readability -=========== - -As can be seen below, there's a simple parallel between the Python and the JavaScript code. -In combination with the use of sourcemaps, this enables efficient debugging. -Also, code can be tested from the command prompt using stubs. - -.. figure:: http://www.transcrypt.org/illustrations/class_compare.png - :alt: Screenshot of Python versus JavaScript code - - **Classic OO with multiple inheritance in JavaScript** - -Main differences with CPython -============================= - -- Web batteries: Seamless access to any existing JavaScript library has been favored over inclusion of many Python libraries in the distribution. There are some exceptions to this rule, e.g. math, cmath, random, itertools, re, time, datetime and turtle, and some more may follow, but in general the accent is on libraries that are relevant in the browser. -- No eval and exec of Python code. This is again part of the concept. Transcrypt code is compiled, optimized and minified in advance to warant fast page loads. In this respect its design goal is fundamentally different from tools that compile on the fly in the browser. Transcrypt is targeted towards building professional, extensive, real world web applications that load and run as fast as their JavaScript counterparts, but offers Pythonically clean, modular structure and maintainability. - -License -======= - -Copyright 2014 - 2018 Jacques de Hooge, GEATEC engineering, www.geatec.com - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. - -How to contribute -================= - -Transcrypt started out as a personal repo, owned by Jacques de Hooge. -As the project caught on and the number of people contributing issues, ideas and code grew, -the repo was transferred to the QQuick organisation, to be able to form a developer team on GitHub. - -There was also a clear message in this: Transcrypt isn't owned by anyone in particular. -It is the collective property of everyone using it or contributing to it. -At the same time the need was felt to keep a very firm grip on code quality, especially of the core. - -Everything under ../transcrypt/modules/org/transcrypt plus the file ../transcrypt/\_\_main\_\_.py is considered to be part of Transcrypt's core. -A major design goal is to keep the core small and fast. This means that some CPython facilities were deliberately left out or simplified. -Core development is still mainly done by Jacques, but with the input of many great ideas submitted as issues. -If you want to improve something in the core, this is best initiated by first opening an issue for it. -Opening a pull request directly can lead to disappointment, although all effort is made to take good ideas seriously. - -All other parts of Transcrypt are referred to as periphery. -While a good quality pull request for the periphery stands a reasonable chance of being accepted, -still it is wise to start an issue beforehand, allowing coordination and preventing waste of effort. - -A special place is taken by implementing standard libraries. While Transcrypt mostly relies on browser-centric JavaScript libraries, -availability of a limited number of standard libraries will help acceptance by Python programmers. So you're most welcome to make a contribution here. -The design goal again is: better 90% complete, fast, small, and reliable, than 100% complete, slow, bulky and buggy. -If you contribute a library, please also contribute an autotest (see docs) and some documentation for it. -The supported platforms are Windows and Linux (and, with that, OsX). - -While being open and respectful to any good ideas, the final say as to what gets in and what doesn't, is with Jacques. -So this is a dictatorial rather than a democratic project. -Being a sailer himself, Jacques values the notion of having one captain on a ship. -The captain doesn't own the ship, but he serves the passengers by consulting with the crew and plotting one stable course. - -Another possibility to contribute libraries to Transcrypt is by submitting them as separate packages to PyPi. -In that case be sure to add the keyword Transcrypt to allow people to find your package. -Making your package pip-installable will also help it to catch on. -Contributing packages via PyPi of course means total freedom for the developer. - -Development build status -======================== - -.. image:: https://travis-ci.org/QQuick/Transcrypt.svg?branch=master - :target: https://travis-ci.org/QQuick/Transcrypt - -The icon above shows the outcome of the continous integration test that is done on Linux after each commit. -The test consists of running a set of testlets, systematically covering all facilities of Transcrypt. Each testlet performs an automated back to back test against CPython. - -The full set of testlets is described in the documentation and comes with the distribution. -Since the branching model has been deliberately kept simple, continuous integration may be transiently broken. -In that case you can use the latest passing version, that you'll find by clicking on the icon above and then on 'Build History'. - -Each release, on the other hand, is preceded by at least the following tests: - -- The automated back to back test described above, not only on Linux but also on Windows and, in case of relevant issues, on OsX. -- Automated compilation of the manual tests, human exercising of the resulting applications and a visual check of the results. -- Automated compilation of the demo's, human exercising of the resulting applications and a visual check of the results. -- A documentation build, followed by a visual sample check. - -What's new in the latest commits -================================ - -- Parcel bundler demo simplified and added to demo directory, included in shipment test -- Executable comments: skip code either in CPython or, with the skip pragma, in Transcrypt (issue 602) -- Integration with Parcel bundler incl. auto-reload (issue 596) -- Correct formatting of None fixed, autotests added (issue 494, issue 515) -- Invalid link removed from doc (issue 595) -- Fix for ameclass with 'async' verified (issue 543) -- Fix for js_is and py_is aliases verified (issue 562) -- Selenium tests tab switching and alert handling fixed -- Compilation error reports fixed (pr584, issue 586) -- Module paths can now contain dots (issue 578 revisited) -- Module name can be reexported (pr 575) -- Exported vars can contain $ (issue 578) -- Import now can contain hyphens in filename (issue 576), (-am / -alimod switch) -- Import and re-export via __init__.py fixed (issue 559) -- Extension .py allowed for source file name on command line (issue 569) -- Minimal recompilation (make versus build) fixed, was broken after introduction of modules (pull request 560) -- -dl / -dlog "Log compiler messages to file" switch added -- Static typing tutorial repaired -- Builtin pow function added -- Context managers added + testcases -- Python 3.7 dataclasses added + testcases -- Everything written in __target__ subdir rather than installation dir -- Python modules now implemented as ES6 modules pervasively, multiple apps per page, runtime and libs only once -- String formatting mini language added as an option (-sf / --sform switch) + autotest -- Div internal improvements and fixes -- Time module made suitable for use in combination with Node.js -- Single line pragma's (issue 460) + doc + autotest -- Negative list indices allowed when operator overloading is enabled (issue 460) -- Added pragma's and switches jscall and nojscall, 30% speedup, use only locally for insulated methods in a class -- Fix for callable (None) (issue 450) -- Start made with /tutorials/baseline mini Python tutorial -- Fix for decorator from module (issue 448) -- Examples for datetime, time and re added to docs -- Module datetime added (pr 435) -- Conjugate of real now compiled correctly -- Property decorators now supported for getters and setters -- Metaclasses and method decorators now execute in correct order (issue 430) -- Complex numbers now support comparison operators and conjugate -- Max and min now accept sequences (issue 331) -- Aliasers more completely dealt with in combination with keyword args and getattr, setattr, hasattr, delattr (issue 414) -- Compiler switch -xt / --xtiny added to considerably reduce size of runtime if operator overloading isn't used -- Compiler switch -dn / --dnostrip added to avoid stripping comments in __builtin__ and __core__ -- Comments in __builtin__ and __core__ JavaScript-only modules are now stripped by default -- Initial support for bytes and bytearrays added (issue 405 a.o.) -- Remark about heuristic interpretation of dictionary keys added to docs (issue 401) -- Fisher-Yates shuffle added to random module -- Exception type TypeError added, currently unused by Transcrypt itself (issue 365) -- Name of main program file now really doesn't need .py extension anymore... (issue 416, bugfix) -- Name of main program file doesn't need .py extension anymore (issue 416) -- DRY implementation of __module__, lean enough to remove the -mc / --modclass switch -- -mc / --modclass switch now controls generation of __module__ to prevent code bloat -- Issue 397 a.o., __module__ attribute added to classes, __name__ of main module is now '__main__', -- Enhancement for issue 399: __pragma__ ('keycheck') + command line switch + autotest -- Fixes for issues 398, 412, 413 + autotests -- __pragma__ ('xtrans', ...) added to facilitate partial translation by external tools (EXPERIMENTAL, issue 404, e.g. to deal with JSX) -- Default messages for ValueError and KeyError removed for better CPython compatibility (pr 395) -- Small fix of re module (issue 392) -- Conversion from bool to int now succeeds (issue 391) -- Overloadable operators __truediv__ and __floordiv__ added (issue 389) -- Class methods, static methods, class decorators, method decorators and static method decorators -- If an object doesn't have a specific string representation, function repr and str now return rather than ???, and this case isn't reported as an error anymore -- Function len now calls __len__ if it exists (pr 378) -- More Pythonic truthyness when using -t (or --tconv) switch (pr 367 a.o.) -- Source file spec on command line can now be a full path (free afer pr #362) -- The zip function now also works for finite iterators (issue #369) + autotest -- -xc (or --confimp) switch added, to confine imported names to the directly importing module (so prevent imports from being be transitive) -- Cleaned up some generated files -- Module search order fixed, continuous integration functional again -- Regular expressions autotest workaround added for Python 3.6 enums -- Async/await added + manual test -- Made Python 3.6 the default in several places -- Pragma and command line switch added to augment module search path -- Better example of use of __getattr__ and __setattr__ added to autotest suite -- Method dict.values () added -- Demo added for three.js with encapsulated constructors -- Doc link repaired -- Fix for #317: Wrong exception type for aList ['aStringLiteral'] -- Enhancement for #316: filter doesn't support None for func -- Enhancement for #314: float (' ') returns 0 -- Enhancement for #310: hasattr () raises 'Uncaught TypeError' -- Enhancement for # 306: dict.popitem () added + autotest -- Integrated with newest API of mypy -- Fix for issue #304: Invalid JS when using global --opov flag -- Fix for issue #301: zip broken for strings -- Comment-like pragma's (issue #295) added: # \_\_pragma\_\_ () -- Fix for issue #284 (+= problem) and autotest case -- Bundled version 0.4.4 of mypy static typechecker replaced by dependency on mypy (currently 0.4.7) -- Added in-place overloads for @=, \*\*=, %=, \*=, /=, +=, -=, <<=, >>=, \|=, ^= -- Operator \*\*= added, a \*\*= b converted to a = a \*\* b -- Operator @= added, M3 @= M2 converted to M3 = M3 @ M2, same as for other augmented assignment ops -- Compilation error report now contains detailed import sequence -- Enhancement for issue #281: tuple keys allowed for dictionaries -- Enhancement for issue #26: super () added for unique path to single ancestor method -- Fix for issue #279: TypeError exists both in Python and JavaScrip, needs alias -- Fix for issue #277: Alias needed for new -- Fix for issue #274: Cannot delete unqualified property in strict mode -- Fix for issue #268: Module import trace missing in error messages -- Autotest for regular expression module made part of shipment test and CI test. Some parts commented out, marked with @JdeH -- Documentation updated, also on-line -- Fix for issue #256: Parenthesis aren't translated (before dot, e.g. in return) -- Option -b (or --blind) added to shipment test. Running it with -c (or --clean) -b (or --blind) will not show anything, just clean repo by removing all generated files. Meant for usage before a commit. -- [Release Paris (PyPi v3.6.4, GitHub #14): Support for Python 3.6, div. fixes and enhancements] -- Function globals () is now available to dynamically get and set module attribs, issue #251 -- Demo for cyclejs was added, also to the shipment test -- Enhancement for issue #247: One web page can now hold multiple Transcrypt apps -- Regular expression module finished! (issue #98) -- Fixes for issues #254 and #252, both having to do with sourcemap being one line off in else clause -- Emulation of sync console I/O for educational purposes, text only -- Autotest output now in tabular form for easy comparison, incl. source line nrs -- Fix for issue #178: List Comprehensions / Operator Precedence Bug -- Div. enhancements and fixes for CI tests -- Enhancement for issue #139: 'yield from' now supported. -- Enhancement for issue #89 and #149: __getattr__ and __setattr__ are now supported, requiring the -e 6 switch. Testlet 'proxies' added. -- New aliases added to prevent name clashes. The orignal name can always be reached by prepending \js_. So e.g. if you need 'clear' in JS, use 'js_clear' in Python. A complete list of aliases is in the docs. Any alias can be undefined to maintain backward compatibility, e.g __pragma__ ('noalias', 'clear'). -- Enhancement for issue #169: Add support for float('inf') and float('-inf') - -Known bugs in latest commits -============================ - -None - -Other packages you might like -============================= - -- Htmltree - effective, minimalistic HTML generator running both on the server using CPython and Bottle and on the client using Transcrypt: https://github.com/Michael-F-Ellis/NearlyPurePythonWebAppDemo (demo) and https://github.com/Michael-F-Ellis/htmltree (package). -- Numscrypt - port of a microscopic part of NumPy to Transcrypt, using JavaScript typed arrays: https://github.com/QQuick/Numscrypt -- SimPyLC - PLC simulator with Arduino code generation: https://github.com/QQuick/SimPyLC +.. figure:: https://www.transcrypt.org/illustrations/ruler_banner2.png + :alt: Logo + :target: https://www.transcrypt.org + +Python in the browser, precompiled for speed: https://www.transcrypt.org +========================================================================= + +- Precompiled into highly readable, efficient JavaScript, downloads kB's rather than MB's +- Multiple inheritance, optional operator overloading, metaclasses, async/await, properties, decorators, hierarchical modules etc. +- Seamless integration with the universe of high-quality web-oriented JavaScript libraries, rather than the desktop-oriented Python ones +- Pure Python 3.9 syntax, using Python's native parser +- Debug directly from Python sourcecode, through integrated sourcemaps +- Generates JavaScript for humans, resembling the Python source line by line, optionally annotated with source line numbers +- Lightning fast JavaScript 6 code: call caching, for-loop optimization, in-line JavaScript etc. +- Integrated static type checking and minification at the tip of a command line switch +- Also runs on top of node.js +- Extensive documentation with many code examples +- Apache 2.0 license +- Pip-install and go! + +Latest stable release: Berlin +============================= + +`>>> GET STARTED! `__ +======================================================== + +Thanks to everyone who contributed! + +Readability +=========== + +As can be seen below, there's a simple parallel between the Python and the JavaScript code. +In combination with the use of sourcemaps, this enables efficient debugging. +Also, code can be tested from the command prompt using stubs. + +.. figure:: https://www.transcrypt.org/illustrations/class_compare.png + :alt: Screenshot of Python versus JavaScript code + + **Classic OO with multiple inheritance in JavaScript** + +Main differences with CPython +============================= + +- Web batteries: Seamless access to any existing JavaScript library has been favored over inclusion of many Python libraries in the distribution. There are some exceptions to this rule, e.g. math, cmath, random, itertools, re, time, datetime and turtle, and some more may follow, but in general the accent is on libraries that are relevant in the browser. +- No eval and exec of Python code. This is again part of the concept. Transcrypt code is compiled, optimized and minified in advance to warant fast page loads. In this respect its design goal is fundamentally different from tools that compile on the fly in the browser. Transcrypt is targeted towards building professional, extensive, real world web applications that load and run as fast as their JavaScript counterparts, but offers Pythonically clean, modular structure and maintainability. + +License +======= + +Copyright 2014 - 2023 Jacques de Hooge, GEATEC engineering, www.geatec.com + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +How to contribute +================= + +Transcrypt started out as a personal repo, owned by Jacques de Hooge. +As the project caught on and the number of people contributing issues, ideas and code grew, +the repo was transferred to the QQuick organisation, to be able to form a developer team on GitHub. +Then more recently, to insure its continued development, the GitHub repo has been moved to `TranscryptOrg `_, where Transcrypt and related projects can be more centrally located. + +There was also a clear message in this: Transcrypt isn't owned by anyone in particular. +It is the collective property of everyone using it or contributing to it. +At the same time the need was felt to keep a very firm grip on code quality, especially of the core. + +Everything under ../transcrypt/modules/org/transcrypt plus the file ../transcrypt/\_\_main\_\_.py is considered to be part of Transcrypt's core. +A major design goal is to keep the core small and fast. This means that some CPython facilities were deliberately left out or simplified. +Core development is still mainly done by Jacques, but with the input of many great ideas submitted as issues. +If you want to improve something in the core, this is best initiated by first opening an issue for it. +Opening a pull request directly can lead to disappointment, although all effort is made to take good ideas seriously. + +All other parts of Transcrypt are referred to as periphery. +While a good quality pull request for the periphery stands a reasonable chance of being accepted, +still it is wise to start an issue beforehand, allowing coordination and preventing waste of effort. + +A special place is taken by implementing standard libraries. While Transcrypt mostly relies on browser-centric JavaScript libraries, +availability of a limited number of standard libraries will help acceptance by Python programmers. So you're most welcome to make a contribution here. +The design goal again is: better 90% complete, fast, small, and reliable, than 100% complete, slow, bulky and buggy. +If you contribute a library, please also contribute an autotest (see docs) and some documentation for it. +The supported platforms are Windows and Linux (and, with that, OSX). + +While being open and respectful to any good ideas, the final say as to what gets in and what doesn't, is with Jacques. +So this is a dictatorial rather than a democratic project. +Being a sailer himself, Jacques values the notion of having one captain on a ship. +The captain doesn't own the ship, but he serves the passengers by consulting with the crew and plotting one stable course. + +Another possibility to contribute libraries to Transcrypt is by submitting them as separate packages to PyPi. +In that case be sure to add the keyword Transcrypt to allow people to find your package. +Making your package pip-installable will also help it to catch on. +Contributing packages via PyPi of course means total freedom for the developer. + +Deployment testing +======================== +The full set of testlets is described in the documentation and comes with the distribution. +Each release is preceded by at least the following tests: + +- The automated back to back test described above, not only on Linux but also on Windows and, in case of relevant issues, on OSX. +- Automated compilation of the manual tests, human exercising of the resulting applications and a visual check of the results. +- Automated compilation of the demo's, human exercising of the resulting applications and a visual check of the results. +- A documentation build, followed by a visual sample check. + +What's new in the latest commits +================================ + +- Code generator adapted to Python 3.9 parser +- Updated README and packaging configuration + +Known bugs in latest commits +============================ + +None + +Other packages you might like +============================= + +- Numscrypt - port of a microscopic part of NumPy to Transcrypt, using JavaScript typed arrays: https://github.com/QQuick/Numscrypt +- SimPyLC - PLC simulator with Arduino code generation: https://github.com/QQuick/SimPyLC diff --git a/npm/README.md b/npm/README.md deleted file mode 100644 index 2c023ef51..000000000 --- a/npm/README.md +++ /dev/null @@ -1,33 +0,0 @@ -Python in the browser, precompiled for fast, small code -======================================================= -**Monthly downloads from PyPi: 13,286** - -![logo](http://www.transcrypt.org/illustrations/ruler_banner2.png "") - -This package requires Python 3.7, install from the command prompt by typing: - -*python -m pip install transcrypt* - -or in several alternative ways as explained in the docs, which can be found at: - -[http://www.transcrypt.org](http://www.transcrypt.org) - -Features -======== - -- Precompiled into highly readable, efficient JavaScript, downloads kB's rather than MB's -- Multiple inheritance, optional operator overloading, metaclasses, properties, class and function decorators, hierarchical modules etc. -- Seamless integration with the universe of high-quality web-oriented JavaScript libraries, rather than the desktop-oriented Python ones -- Pure Python 3.7 syntax, using Python's native parser -- Debug directly from Python sourcecode, through integrated sourcemaps -- Generates JavaScript for humans, resembling the Python source line by line, optionally annotated with source line numbers -- Lightning fast JavaScriptcode: call caching, for-loop optimization, in-line JavaScript etc. -- Integrated static typechecking and minification at the tip of a command line switch -- Also runs on top of node.js -- Extensive documentation with many code examples -- Apache 2.0 license -- Pip-install and go! - -As can be seen below, the compiled code is highly readable and resembles the Python original: - -![examplecode](http://www.transcrypt.org/illustrations/class_compare_doc.png "") diff --git a/npm/package.json b/npm/package.json deleted file mode 100644 index 7c5dcf1ad..000000000 --- a/npm/package.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "name": "transcrypt", - "version": "3.7.15", - "description": "Python 3.7 in the browser, precompiled for fast, small code. Source level debugging. Works seamlessly with any JavaScript library.", - "license": "Apache-2.0", - "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" - }, - "repository": { - "type": "git", - "url": "https://github.com/qquick/Transcrypt" - }, - "keywords": ["python", "compiler", "browser", "javascript"], - "author": "Jacques de Hooge", - "homepage": "hhttp://www.transcrypt.org/" -} diff --git a/setup.py b/setup.py index a0c620ecc..755eb6a2f 100644 --- a/setup.py +++ b/setup.py @@ -1,43 +1,44 @@ -import os -import sys - -sys.path.append ('transcrypt/modules/org/transcrypt') - -from setuptools import setup - -def read (*paths): - with open (os.path.join (*paths), 'r') as aFile: - return aFile.read() - -setup ( - name = 'Transcrypt', - version = '3.8.0', - description = 'Python to JavaScript transpiler, supporting multiple inheritance and generating lean, highly readable code', - long_description = ( - read ('README.rst') - ), - keywords = ['python', 'javascript', 'transpiler', 'compiler', 'browser', 'web', 'multiple inheritance', 'transcrypt', 'django'], - url = 'http://www.transcrypt.org', - license = 'Apache 2.0', - author = 'Jacques de Hooge', - author_email = 'jacques.de.hooge@qquick.org', - packages = ['transcrypt'], - install_requires = [ - 'mypy' - ], - entry_points = { - 'console_scripts': [ - 'transcrypt = transcrypt.__main__:main' - ] - }, - include_package_data = True, - classifiers = [ - 'Development Status :: 5 - Production/Stable', - 'Intended Audience :: Developers', - 'Natural Language :: English', - 'License :: OSI Approved :: Apache Software License', - 'Topic :: Software Development :: Libraries :: Python Modules', - 'Operating System :: OS Independent', - 'Programming Language :: Python :: 3.7', - ], -) +import os +import sys +from setuptools import setup + +sys.path.append ('transcrypt/modules/org/transcrypt') + +def read (*paths): + with open (os.path.join (*paths), 'r') as aFile: + return aFile.read() + +setup ( + name = 'Transcrypt', + version = '3.9.4', + description = 'Python to JavaScript transpiler, supporting multiple inheritance and generating lean, highly readable code', + long_description = ( + read ('README.rst') + ), + long_description_content_type = 'text/x-rst', + keywords = ['python', 'javascript', 'transpiler', 'compiler', 'browser', 'web', 'multiple inheritance', 'transcrypt', 'django', 'flask', 'react'], + url = 'https://www.transcrypt.org', + license = 'Apache 2.0', + license_files = 'LICENSE', + author = 'Jacques de Hooge', + author_email = 'info@transcrypt.org', + packages = ['transcrypt'], + install_requires = [ + 'mypy' + ], + entry_points = { + 'console_scripts': [ + 'transcrypt = transcrypt.__main__:main' + ] + }, + include_package_data = True, + classifiers = [ + 'Development Status :: 5 - Production/Stable', + 'Intended Audience :: Developers', + 'Natural Language :: English', + 'License :: OSI Approved :: Apache Software License', + 'Topic :: Software Development :: Libraries :: Python Modules', + 'Operating System :: OS Independent', + 'Programming Language :: Python :: 3.9', + ], +) diff --git a/transcrypt/__main__.py b/transcrypt/__main__.py index 466a7cb12..f93d8dec5 100644 --- a/transcrypt/__main__.py +++ b/transcrypt/__main__.py @@ -1,196 +1,187 @@ -# ====== Legal notices -# -# Copyright 2014, 2015, 2016 Jacques de Hooge, GEATEC engineering, www.geatec.com -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import os -import sys -import traceback -import site -import atexit -import webbrowser -import tokenize - -transpilerDir = os.path.dirname (os.path.abspath (__file__)) .replace ('\\', '/') # Set of Transcrypt itself -modulesDir = '{}/modules'.format (transpilerDir) # Set dir of Transcrypt-only modules - -# Both CPython and Transcrypt will use dirs in sys.path as search roots for modules -# CPython will also search relatively from each module, Transcrypt only from the main module -# Use / rather than \ pervasively -sys.path = [item.replace ('\\', '/') for item in sys.path] - -''' -# Leave out Transcrypt dir to prevent importing modules root if there's a module by that name -# This is needed for CPython and it won't hurt for Transcrypt -try: - sys.path.remove (transpilerDir) -except: - pass -''' - -# Unload org from a packages dir, if it happens to be there in the CPython installation -sys.modules.pop ('org', None) - -# Transcrypt needs to find modulesDir before CPython modules, so it will favor Transcrypt modules -candidateTranspilationDirs = [modulesDir] + sys.path -lowerSkipExtensions = ('.zip', '/dlls', '/lib', '/python37', '/python38') # !!! Generalize to all platforms and Python versions - -transpilationDirs = [] -for candidateTranspilationDir in candidateTranspilationDirs: - # print ('DEBUG', candidateTranspilationDir) - for lowerSkipExtension in lowerSkipExtensions: - if candidateTranspilationDir.lower () .endswith (lowerSkipExtension): - break - else: - transpilationDirs.append (candidateTranspilationDir) - -# The following imports are need by Transcrypt itself, not by transpiled or executed user code -# The following imports will either reload the previously unloaded org or load org from different location -# CPython needs to find modulesDir after CPython modules, so it will favor CPython modules -sys.path.append (modulesDir) -from org.transcrypt import utils -from org.transcrypt import compiler -exitCodeNames = ('exitSuccess', 'exitCommandArgsError', 'exitNoLicense', 'exitSourceNotGiven', 'exitCannotRunSource', 'exitSpecificCompileError', 'exitGeneralCompileError') - -for exitCode, exitCodeName in enumerate (exitCodeNames): - vars () [exitCodeName] = exitCode - -def main (): - exitCode = exitCommandArgsError - - def exitHandler (): - if exitCode == exitSuccess: - utils.log (True, '\nReady\n\n') - else: - utils.log (True, '\nAborted\n\n') - - atexit.register (exitHandler) - - def setExitCode (anExitCode): - nonlocal exitCode - exitCode = anExitCode - return exitCode - - try: - __envir__ = utils.Any () - with tokenize.open (f'{modulesDir}/org/transcrypt/__envir__.js') as envirFile: - exec (envirFile.read ()); - __envir__.executor_name = __envir__.interpreter_name - - utils.log (True, '\n{} (TM) Python to JavaScript Small Sane Subset Transpiler Version {}\n', __envir__.transpiler_name.capitalize (), __envir__.transpiler_version) - utils.log (True, 'Copyright (C) Geatec Engineering. License: Apache 2.0\n\n') - - utils.log (True, '\n') - licensePath = '{}/{}'.format (transpilerDir, 'license_reference.txt') - if not os.path.isfile (licensePath): - utils.log (True, 'Error: missing license reference file\n') - return setExitCode (exitNoLicense) - - utils.commandArgs.parse () - - if utils.commandArgs.license: - with open (licensePath) as licenseFile: - bar = 80 * '*' - utils.log (True, '\n{}\n\n', bar) - utils.log (True, '{}\n', licenseFile.read ()) - utils.log (True, '{}\n\n', bar) - - if utils.commandArgs.star: - webbrowser.open ('https://github.com/qquick/Transcrypt') - - if not utils.commandArgs.source: - return setExitCode (exitSourceNotGiven) # Should never be here, dealth with by command arg checks already - - if utils.commandArgs.source.endswith ('.py') or utils.commandArgs.source.endswith ('.js'): - utils.commandArgs.source = utils.commandArgs.source [:-3] # Ignore extension - # This may be done in a more concise way, but it runs deeper than it may seem, so test any changes extensively - - # Prepend paths that are needed by transpiled or executed user code, since they have to be searched first - # So user code favors Transcrypt modules over CPython modules - extraDirs = utils.commandArgs.xpath.replace ('#', ' ') .split ('$') if utils.commandArgs.xpath else [] - - sourcePath = utils.commandArgs.source.replace ('\\', '/') # May be absolute or relative, in the latter case it may or may not specify a directory - if '/' in sourcePath: # If directory specified - sourceDir = sourcePath.rsplit ('/', 1)[0] # Use it as source directory - else: # Else - sourceDir = os.getcwd () .replace ('\\', '/') # Use current working directory as source directory - - projectDirs = [sourceDir] + extraDirs - - sys.path [0 : 0] = projectDirs - - global transpilationDirs - transpilationDirs [0 : 0] = projectDirs - - __symbols__ = utils.commandArgs.symbols.split ('$') if utils.commandArgs.symbols else [] - - if utils.commandArgs.complex: - __symbols__.append ('__complex__') - - if utils.commandArgs.sform: - __symbols__.append ('__sform__') - - if utils.commandArgs.xtiny: - __symbols__.append ('__xtiny__') - - __symbols__.append ('__py{}.{}__'.format (* sys.version_info [:2])) - - if utils.commandArgs.esv: - __symbols__.append ('__esv{}__'.format (utils.commandArgs.esv)) - else: - __symbols__.append ('__esv{}__'.format (utils.defaultJavaScriptVersion)) - - # Import (ignored when transpiling) late, since commandArgs must be set already - from org.transcrypt.stubs.browser import __set_stubsymbols__ - - # Make symbols available to CPython, seems that exec can't do that directly - __set_stubsymbols__ (__symbols__) - - if utils.commandArgs.run: - try: - with open (utils.commandArgs.source + '.py') as sourceFile: - exec (sourceFile.read (), globals (), locals ()) - return setExitCode (exitSuccess) - except Exception as exception: - utils.log (True, 'Error: cannot run {} using CPython: {}\n'.format (utils.commandArgs.source, str (exception) .replace (' (', '') .replace (')', ''))) - utils.log (True, traceback.format_exc()) - return setExitCode (exitCannotRunSource) - else: - try: - compiler.Program (transpilationDirs, __symbols__, __envir__) - return setExitCode (exitSuccess) - except utils.Error as error: - utils.log (True, '\n{}\n', error) - - # Don't log anything else, even in verbose mode, since this would only be confusing - if utils.commandArgs.dextex: - utils.log (True, '{}\n', traceback.format_exc ()) - - return setExitCode (exitSpecificCompileError) - except Exception as exception: - utils.log (True, '\n{}', exception) - - # Have to log something else, because a general exception isn't informative enough - utils.log (True, '{}\n', traceback.format_exc ()) - - return setExitCode (exitGeneralCompileError) - - except utils.CommandArgsError: - return setExitCode (exitCommandArgsError) - - except utils.CommandArgsExit: - return setExitCode (exitSuccess) - -if __name__ == '__main__': - sys.exit (main ()) +# ====== Legal notices +# +# Copyright 2014 - 2023 Jacques de Hooge, GEATEC engineering, www.geatec.com +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import os +import sys +import traceback +import site +import atexit +import webbrowser +import tokenize + +transpilerDir = os.path.dirname (os.path.abspath (__file__)) .replace ('\\', '/') # Set of Transcrypt itself +modulesDir = '{}/modules'.format (transpilerDir) # Set dir of Transcrypt-only modules + +# Both CPython and Transcrypt will use dirs in sys.path as search roots for modules +# CPython will also search relatively from each module, Transcrypt only from the main module +# Use / rather than \ pervasively +sys.path = [item.replace ('\\', '/') for item in sys.path] + +# Unload org from a packages dir, if it happens to be there in the CPython installation +sys.modules.pop ('org', None) + +# Transcrypt needs to find modulesDir before CPython modules, so it will favor Transcrypt modules +candidateTranspilationDirs = [modulesDir] + sys.path +lowerSkipExtensions = ('.zip', '/dlls', '/lib', '/python37', '/python38', '/python39') # !!! Generalize to all platforms and Python versions + +transpilationDirs = [] +for candidateTranspilationDir in candidateTranspilationDirs: + # print ('DEBUG', candidateTranspilationDir) + for lowerSkipExtension in lowerSkipExtensions: + if candidateTranspilationDir.lower () .endswith (lowerSkipExtension): + break + else: + transpilationDirs.append (candidateTranspilationDir) + +# The following imports are needed by Transcrypt itself, not by transpiled or executed user code +# They will either reload the previously unloaded org or load org from different location +# CPython needs to find modulesDir after CPython modules, so it will favor CPython modules +sys.path.append (modulesDir) +from org.transcrypt import utils +from org.transcrypt import compiler +exitCodeNames = ('exitSuccess', 'exitCommandArgsError', 'exitNoLicense', 'exitSourceNotGiven', 'exitCannotRunSource', 'exitSpecificCompileError', 'exitGeneralCompileError') + +for exitCode, exitCodeName in enumerate (exitCodeNames): + vars () [exitCodeName] = exitCode + +def main (): + exitCode = exitCommandArgsError + + def exitHandler (): + if exitCode == exitSuccess: + utils.log (True, '\nReady\n\n') + else: + utils.log (True, '\nAborted\n\n') + + atexit.register (exitHandler) + + def setExitCode (anExitCode): + nonlocal exitCode + exitCode = anExitCode + return exitCode + + try: + __envir__ = utils.Any () + with tokenize.open (f'{modulesDir}/org/transcrypt/__envir__.js') as envirFile: + exec (envirFile.read ()); + __envir__.executor_name = __envir__.interpreter_name + + utils.log (True, '\n{} (TM) Python to JavaScript Small Sane Subset Transpiler Version {}\n', __envir__.transpiler_name.capitalize (), __envir__.transpiler_version) + utils.log (True, 'Copyright (C) Geatec Engineering. License: Apache 2.0\n\n') + + utils.log (True, '\n') + licensePath = '{}/{}'.format (transpilerDir, 'license_reference.txt') + if not os.path.isfile (licensePath): + utils.log (True, 'Error: missing license reference file\n') + return setExitCode (exitNoLicense) + + utils.commandArgs.parse () + + if utils.commandArgs.license: + with open (licensePath) as licenseFile: + bar = 80 * '*' + utils.log (True, '\n{}\n\n', bar) + utils.log (True, '{}\n', licenseFile.read ()) + utils.log (True, '{}\n\n', bar) + + if utils.commandArgs.star: + webbrowser.open ('https://github.com/TranscryptOrg/Transcrypt') + + if not utils.commandArgs.source: + return setExitCode (exitSourceNotGiven) # Should never be here, dealth with by command arg checks already + + if utils.commandArgs.source.endswith ('.py') or utils.commandArgs.source.endswith ('.js'): + utils.commandArgs.source = utils.commandArgs.source [:-3] # Ignore extension + # This may be done in a more concise way, but it runs deeper than it may seem, so test any changes extensively + + # Prepend paths that are needed by transpiled or executed user code, since they have to be searched first + # So user code favors Transcrypt modules over CPython modules + extraDirs = utils.commandArgs.xpath.replace ('#', ' ') .split ('$') if utils.commandArgs.xpath else [] + + sourcePath = utils.commandArgs.source.replace ('\\', '/') # May be absolute or relative, in the latter case it may or may not specify a directory + if '/' in sourcePath: # If directory specified + sourceDir = sourcePath.rsplit ('/', 1)[0] # Use it as source directory + else: # Else + sourceDir = os.getcwd () .replace ('\\', '/') # Use current working directory as source directory + + projectDirs = [sourceDir] + extraDirs + + sys.path [0 : 0] = projectDirs + + global transpilationDirs + transpilationDirs [0 : 0] = projectDirs + + __symbols__ = utils.commandArgs.symbols.split ('$') if utils.commandArgs.symbols else [] + + if utils.commandArgs.complex: + __symbols__.append ('__complex__') + + if utils.commandArgs.sform: + __symbols__.append ('__sform__') + + if utils.commandArgs.xtiny: + __symbols__.append ('__xtiny__') + + __symbols__.append ('__py{}.{}__'.format (* sys.version_info [:2])) + + if utils.commandArgs.esv: + __symbols__.append ('__esv{}__'.format (utils.commandArgs.esv)) + else: + __symbols__.append ('__esv{}__'.format (utils.defaultJavaScriptVersion)) + + # Import (ignored when transpiling) late, since commandArgs must be set already + from org.transcrypt.stubs.browser import __set_stubsymbols__ + + # Make symbols available to CPython, seems that exec can't do that directly + __set_stubsymbols__ (__symbols__) + + if utils.commandArgs.run: + try: + with open (utils.commandArgs.source + '.py') as sourceFile: + exec (sourceFile.read (), globals (), locals ()) + return setExitCode (exitSuccess) + except Exception as exception: + utils.log (True, 'Error: cannot run {} using CPython: {}\n'.format (utils.commandArgs.source, str (exception) .replace (' (', '') .replace (')', ''))) + utils.log (True, traceback.format_exc()) + return setExitCode (exitCannotRunSource) + else: + try: + compiler.Program (transpilationDirs, __symbols__, __envir__) + return setExitCode (exitSuccess) + except utils.Error as error: + utils.log (True, '\n{}\n', error) + + # Don't log anything else, even in verbose mode, since this would only be confusing + if utils.commandArgs.dextex: + utils.log (True, '{}\n', traceback.format_exc ()) + + return setExitCode (exitSpecificCompileError) + except Exception as exception: + utils.log (True, '\n{}', exception) + + # Have to log something else, because a general exception isn't informative enough + utils.log (True, '{}\n', traceback.format_exc ()) + + return setExitCode (exitGeneralCompileError) + + except utils.CommandArgsError: + return setExitCode (exitCommandArgsError) + + except utils.CommandArgsExit: + return setExitCode (exitSuccess) + +if __name__ == '__main__': + sys.exit (main ()) diff --git a/transcrypt/demos/cyclejs_demo/cyclejs_demo.html b/transcrypt/demos/cyclejs_demo/cyclejs_demo.html index 83541f2b9..1ba37067f 100644 --- a/transcrypt/demos/cyclejs_demo/cyclejs_demo.html +++ b/transcrypt/demos/cyclejs_demo/cyclejs_demo.html @@ -1,7 +1,7 @@ - + diff --git a/transcrypt/demos/parcel_demo/package-lock.json b/transcrypt/demos/parcel_demo/package-lock.json index 9e0f2fa7f..17522eafa 100644 --- a/transcrypt/demos/parcel_demo/package-lock.json +++ b/transcrypt/demos/parcel_demo/package-lock.json @@ -1,6447 +1,14302 @@ -{ - "name": "parcel_demo", - "version": "1.0.0", - "lockfileVersion": 1, - "requires": true, - "dependencies": { - "@babel/code-frame": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz", - "integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==", - "requires": { - "@babel/highlight": "^7.0.0" - } - }, - "@babel/core": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.2.2.tgz", - "integrity": "sha512-59vB0RWt09cAct5EIe58+NzGP4TFSD3Bz//2/ELy3ZeTeKF6VTD1AXlH8BGGbCX0PuobZBsIzO7IAI9PH67eKw==", - "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/generator": "^7.2.2", - "@babel/helpers": "^7.2.0", - "@babel/parser": "^7.2.2", - "@babel/template": "^7.2.2", - "@babel/traverse": "^7.2.2", - "@babel/types": "^7.2.2", - "convert-source-map": "^1.1.0", - "debug": "^4.1.0", - "json5": "^2.1.0", - "lodash": "^4.17.10", - "resolve": "^1.3.2", - "semver": "^5.4.1", - "source-map": "^0.5.0" - }, - "dependencies": { - "json5": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.0.tgz", - "integrity": "sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ==", - "requires": { - "minimist": "^1.2.0" - } - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" - } - } - }, - "@babel/generator": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.2.2.tgz", - "integrity": "sha512-I4o675J/iS8k+P38dvJ3IBGqObLXyQLTxtrR4u9cSUJOURvafeEWb/pFMOTwtNrmq73mJzyF6ueTbO1BtN0Zeg==", - "requires": { - "@babel/types": "^7.2.2", - "jsesc": "^2.5.1", - "lodash": "^4.17.10", - "source-map": "^0.5.0", - "trim-right": "^1.0.1" - }, - "dependencies": { - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" - } - } - }, - "@babel/helper-annotate-as-pure": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0.tgz", - "integrity": "sha512-3UYcJUj9kvSLbLbUIfQTqzcy5VX7GRZ/CCDrnOaZorFFM01aXp1+GJwuFGV4NDDoAS+mOUyHcO6UD/RfqOks3Q==", - "requires": { - "@babel/types": "^7.0.0" - } - }, - "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.1.0.tgz", - "integrity": "sha512-qNSR4jrmJ8M1VMM9tibvyRAHXQs2PmaksQF7c1CGJNipfe3D8p+wgNwgso/P2A2r2mdgBWAXljNWR0QRZAMW8w==", - "requires": { - "@babel/helper-explode-assignable-expression": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "@babel/helper-builder-react-jsx": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.0.0.tgz", - "integrity": "sha512-ebJ2JM6NAKW0fQEqN8hOLxK84RbRz9OkUhGS/Xd5u56ejMfVbayJ4+LykERZCOUM6faa6Fp3SZNX3fcT16MKHw==", - "requires": { - "@babel/types": "^7.0.0", - "esutils": "^2.0.0" - } - }, - "@babel/helper-call-delegate": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/helper-call-delegate/-/helper-call-delegate-7.1.0.tgz", - "integrity": "sha512-YEtYZrw3GUK6emQHKthltKNZwszBcHK58Ygcis+gVUrF4/FmTVr5CCqQNSfmvg2y+YDEANyYoaLz/SHsnusCwQ==", - "requires": { - "@babel/helper-hoist-variables": "^7.0.0", - "@babel/traverse": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "@babel/helper-define-map": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.1.0.tgz", - "integrity": "sha512-yPPcW8dc3gZLN+U1mhYV91QU3n5uTbx7DUdf8NnPbjS0RMwBuHi9Xt2MUgppmNz7CJxTBWsGczTiEp1CSOTPRg==", - "requires": { - "@babel/helper-function-name": "^7.1.0", - "@babel/types": "^7.0.0", - "lodash": "^4.17.10" - } - }, - "@babel/helper-explode-assignable-expression": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.1.0.tgz", - "integrity": "sha512-NRQpfHrJ1msCHtKjbzs9YcMmJZOg6mQMmGRB+hbamEdG5PNpaSm95275VD92DvJKuyl0s2sFiDmMZ+EnnvufqA==", - "requires": { - "@babel/traverse": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "@babel/helper-function-name": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz", - "integrity": "sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw==", - "requires": { - "@babel/helper-get-function-arity": "^7.0.0", - "@babel/template": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "@babel/helper-get-function-arity": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz", - "integrity": "sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ==", - "requires": { - "@babel/types": "^7.0.0" - } - }, - "@babel/helper-hoist-variables": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.0.0.tgz", - "integrity": "sha512-Ggv5sldXUeSKsuzLkddtyhyHe2YantsxWKNi7A+7LeD12ExRDWTRk29JCXpaHPAbMaIPZSil7n+lq78WY2VY7w==", - "requires": { - "@babel/types": "^7.0.0" - } - }, - "@babel/helper-member-expression-to-functions": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.0.0.tgz", - "integrity": "sha512-avo+lm/QmZlv27Zsi0xEor2fKcqWG56D5ae9dzklpIaY7cQMK5N8VSpaNVPPagiqmy7LrEjK1IWdGMOqPu5csg==", - "requires": { - "@babel/types": "^7.0.0" - } - }, - "@babel/helper-module-imports": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.0.0.tgz", - "integrity": "sha512-aP/hlLq01DWNEiDg4Jn23i+CXxW/owM4WpDLFUbpjxe4NS3BhLVZQ5i7E0ZrxuQ/vwekIeciyamgB1UIYxxM6A==", - "requires": { - "@babel/types": "^7.0.0" - } - }, - "@babel/helper-module-transforms": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.2.2.tgz", - "integrity": "sha512-YRD7I6Wsv+IHuTPkAmAS4HhY0dkPobgLftHp0cRGZSdrRvmZY8rFvae/GVu3bD00qscuvK3WPHB3YdNpBXUqrA==", - "requires": { - "@babel/helper-module-imports": "^7.0.0", - "@babel/helper-simple-access": "^7.1.0", - "@babel/helper-split-export-declaration": "^7.0.0", - "@babel/template": "^7.2.2", - "@babel/types": "^7.2.2", - "lodash": "^4.17.10" - } - }, - "@babel/helper-optimise-call-expression": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0.tgz", - "integrity": "sha512-u8nd9NQePYNQV8iPWu/pLLYBqZBa4ZaY1YWRFMuxrid94wKI1QNt67NEZ7GAe5Kc/0LLScbim05xZFWkAdrj9g==", - "requires": { - "@babel/types": "^7.0.0" - } - }, - "@babel/helper-plugin-utils": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz", - "integrity": "sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA==" - }, - "@babel/helper-regex": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.0.0.tgz", - "integrity": "sha512-TR0/N0NDCcUIUEbqV6dCO+LptmmSQFQ7q70lfcEB4URsjD0E1HzicrwUH+ap6BAQ2jhCX9Q4UqZy4wilujWlkg==", - "requires": { - "lodash": "^4.17.10" - } - }, - "@babel/helper-remap-async-to-generator": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.1.0.tgz", - "integrity": "sha512-3fOK0L+Fdlg8S5al8u/hWE6vhufGSn0bN09xm2LXMy//REAF8kDCrYoOBKYmA8m5Nom+sV9LyLCwrFynA8/slg==", - "requires": { - "@babel/helper-annotate-as-pure": "^7.0.0", - "@babel/helper-wrap-function": "^7.1.0", - "@babel/template": "^7.1.0", - "@babel/traverse": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "@babel/helper-replace-supers": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.2.3.tgz", - "integrity": "sha512-GyieIznGUfPXPWu0yLS6U55Mz67AZD9cUk0BfirOWlPrXlBcan9Gz+vHGz+cPfuoweZSnPzPIm67VtQM0OWZbA==", - "requires": { - "@babel/helper-member-expression-to-functions": "^7.0.0", - "@babel/helper-optimise-call-expression": "^7.0.0", - "@babel/traverse": "^7.2.3", - "@babel/types": "^7.0.0" - } - }, - "@babel/helper-simple-access": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.1.0.tgz", - "integrity": "sha512-Vk+78hNjRbsiu49zAPALxTb+JUQCz1aolpd8osOF16BGnLtseD21nbHgLPGUwrXEurZgiCOUmvs3ExTu4F5x6w==", - "requires": { - "@babel/template": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0.tgz", - "integrity": "sha512-MXkOJqva62dfC0w85mEf/LucPPS/1+04nmmRMPEBUB++hiiThQ2zPtX/mEWQ3mtzCEjIJvPY8nuwxXtQeQwUag==", - "requires": { - "@babel/types": "^7.0.0" - } - }, - "@babel/helper-wrap-function": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.2.0.tgz", - "integrity": "sha512-o9fP1BZLLSrYlxYEYyl2aS+Flun5gtjTIG8iln+XuEzQTs0PLagAGSXUcqruJwD5fM48jzIEggCKpIfWTcR7pQ==", - "requires": { - "@babel/helper-function-name": "^7.1.0", - "@babel/template": "^7.1.0", - "@babel/traverse": "^7.1.0", - "@babel/types": "^7.2.0" - } - }, - "@babel/helpers": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.2.0.tgz", - "integrity": "sha512-Fr07N+ea0dMcMN8nFpuK6dUIT7/ivt9yKQdEEnjVS83tG2pHwPi03gYmk/tyuwONnZ+sY+GFFPlWGgCtW1hF9A==", - "requires": { - "@babel/template": "^7.1.2", - "@babel/traverse": "^7.1.5", - "@babel/types": "^7.2.0" - } - }, - "@babel/highlight": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz", - "integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==", - "requires": { - "chalk": "^2.0.0", - "esutils": "^2.0.2", - "js-tokens": "^4.0.0" - } - }, - "@babel/parser": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.2.3.tgz", - "integrity": "sha512-0LyEcVlfCoFmci8mXx8A5oIkpkOgyo8dRHtxBnK9RRBwxO2+JZPNsqtVEZQ7mJFPxnXF9lfmU24mHOPI0qnlkA==" - }, - "@babel/plugin-proposal-async-generator-functions": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.2.0.tgz", - "integrity": "sha512-+Dfo/SCQqrwx48ptLVGLdE39YtWRuKc/Y9I5Fy0P1DDBB9lsAHpjcEJQt+4IifuSOSTLBKJObJqMvaO1pIE8LQ==", - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-remap-async-to-generator": "^7.1.0", - "@babel/plugin-syntax-async-generators": "^7.2.0" - } - }, - "@babel/plugin-proposal-json-strings": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.2.0.tgz", - "integrity": "sha512-MAFV1CA/YVmYwZG0fBQyXhmj0BHCB5egZHCKWIFVv/XCxAeVGIHfos3SwDck4LvCllENIAg7xMKOG5kH0dzyUg==", - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-syntax-json-strings": "^7.2.0" - } - }, - "@babel/plugin-proposal-object-rest-spread": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.2.0.tgz", - "integrity": "sha512-1L5mWLSvR76XYUQJXkd/EEQgjq8HHRP6lQuZTTg0VA4tTGPpGemmCdAfQIz1rzEuWAm+ecP8PyyEm30jC1eQCg==", - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-syntax-object-rest-spread": "^7.2.0" - } - }, - "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.2.0.tgz", - "integrity": "sha512-mgYj3jCcxug6KUcX4OBoOJz3CMrwRfQELPQ5560F70YQUBZB7uac9fqaWamKR1iWUzGiK2t0ygzjTScZnVz75g==", - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-syntax-optional-catch-binding": "^7.2.0" - } - }, - "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.2.0.tgz", - "integrity": "sha512-LvRVYb7kikuOtIoUeWTkOxQEV1kYvL5B6U3iWEGCzPNRus1MzJweFqORTj+0jkxozkTSYNJozPOddxmqdqsRpw==", - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-regex": "^7.0.0", - "regexpu-core": "^4.2.0" - } - }, - "@babel/plugin-syntax-async-generators": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.2.0.tgz", - "integrity": "sha512-1ZrIRBv2t0GSlcwVoQ6VgSLpLgiN/FVQUzt9znxo7v2Ov4jJrs8RY8tv0wvDmFN3qIdMKWrmMMW6yZ0G19MfGg==", - "requires": { - "@babel/helper-plugin-utils": "^7.0.0" - } - }, - "@babel/plugin-syntax-flow": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.2.0.tgz", - "integrity": "sha512-r6YMuZDWLtLlu0kqIim5o/3TNRAlWb073HwT3e2nKf9I8IIvOggPrnILYPsrrKilmn/mYEMCf/Z07w3yQJF6dg==", - "requires": { - "@babel/helper-plugin-utils": "^7.0.0" - } - }, - "@babel/plugin-syntax-json-strings": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.2.0.tgz", - "integrity": "sha512-5UGYnMSLRE1dqqZwug+1LISpA403HzlSfsg6P9VXU6TBjcSHeNlw4DxDx7LgpF+iKZoOG/+uzqoRHTdcUpiZNg==", - "requires": { - "@babel/helper-plugin-utils": "^7.0.0" - } - }, - "@babel/plugin-syntax-jsx": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.2.0.tgz", - "integrity": "sha512-VyN4QANJkRW6lDBmENzRszvZf3/4AXaj9YR7GwrWeeN9tEBPuXbmDYVU9bYBN0D70zCWVwUy0HWq2553VCb6Hw==", - "requires": { - "@babel/helper-plugin-utils": "^7.0.0" - } - }, - "@babel/plugin-syntax-object-rest-spread": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.2.0.tgz", - "integrity": "sha512-t0JKGgqk2We+9may3t0xDdmneaXmyxq0xieYcKHxIsrJO64n1OiMWNUtc5gQK1PA0NpdCRrtZp4z+IUaKugrSA==", - "requires": { - "@babel/helper-plugin-utils": "^7.0.0" - } - }, - "@babel/plugin-syntax-optional-catch-binding": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.2.0.tgz", - "integrity": "sha512-bDe4xKNhb0LI7IvZHiA13kff0KEfaGX/Hv4lMA9+7TEc63hMNvfKo6ZFpXhKuEp+II/q35Gc4NoMeDZyaUbj9w==", - "requires": { - "@babel/helper-plugin-utils": "^7.0.0" - } - }, - "@babel/plugin-transform-arrow-functions": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.2.0.tgz", - "integrity": "sha512-ER77Cax1+8/8jCB9fo4Ud161OZzWN5qawi4GusDuRLcDbDG+bIGYY20zb2dfAFdTRGzrfq2xZPvF0R64EHnimg==", - "requires": { - "@babel/helper-plugin-utils": "^7.0.0" - } - }, - "@babel/plugin-transform-async-to-generator": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.2.0.tgz", - "integrity": "sha512-CEHzg4g5UraReozI9D4fblBYABs7IM6UerAVG7EJVrTLC5keh00aEuLUT+O40+mJCEzaXkYfTCUKIyeDfMOFFQ==", - "requires": { - "@babel/helper-module-imports": "^7.0.0", - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-remap-async-to-generator": "^7.1.0" - } - }, - "@babel/plugin-transform-block-scoped-functions": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.2.0.tgz", - "integrity": "sha512-ntQPR6q1/NKuphly49+QiQiTN0O63uOwjdD6dhIjSWBI5xlrbUFh720TIpzBhpnrLfv2tNH/BXvLIab1+BAI0w==", - "requires": { - "@babel/helper-plugin-utils": "^7.0.0" - } - }, - "@babel/plugin-transform-block-scoping": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.2.0.tgz", - "integrity": "sha512-vDTgf19ZEV6mx35yiPJe4fS02mPQUUcBNwWQSZFXSzTSbsJFQvHt7DqyS3LK8oOWALFOsJ+8bbqBgkirZteD5Q==", - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "lodash": "^4.17.10" - } - }, - "@babel/plugin-transform-classes": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.2.2.tgz", - "integrity": "sha512-gEZvgTy1VtcDOaQty1l10T3jQmJKlNVxLDCs+3rCVPr6nMkODLELxViq5X9l+rfxbie3XrfrMCYYY6eX3aOcOQ==", - "requires": { - "@babel/helper-annotate-as-pure": "^7.0.0", - "@babel/helper-define-map": "^7.1.0", - "@babel/helper-function-name": "^7.1.0", - "@babel/helper-optimise-call-expression": "^7.0.0", - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-replace-supers": "^7.1.0", - "@babel/helper-split-export-declaration": "^7.0.0", - "globals": "^11.1.0" - } - }, - "@babel/plugin-transform-computed-properties": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.2.0.tgz", - "integrity": "sha512-kP/drqTxY6Xt3NNpKiMomfgkNn4o7+vKxK2DDKcBG9sHj51vHqMBGy8wbDS/J4lMxnqs153/T3+DmCEAkC5cpA==", - "requires": { - "@babel/helper-plugin-utils": "^7.0.0" - } - }, - "@babel/plugin-transform-destructuring": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.2.0.tgz", - "integrity": "sha512-coVO2Ayv7g0qdDbrNiadE4bU7lvCd9H539m2gMknyVjjMdwF/iCOM7R+E8PkntoqLkltO0rk+3axhpp/0v68VQ==", - "requires": { - "@babel/helper-plugin-utils": "^7.0.0" - } - }, - "@babel/plugin-transform-dotall-regex": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.2.0.tgz", - "integrity": "sha512-sKxnyHfizweTgKZf7XsXu/CNupKhzijptfTM+bozonIuyVrLWVUvYjE2bhuSBML8VQeMxq4Mm63Q9qvcvUcciQ==", - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-regex": "^7.0.0", - "regexpu-core": "^4.1.3" - } - }, - "@babel/plugin-transform-duplicate-keys": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.2.0.tgz", - "integrity": "sha512-q+yuxW4DsTjNceUiTzK0L+AfQ0zD9rWaTLiUqHA8p0gxx7lu1EylenfzjeIWNkPy6e/0VG/Wjw9uf9LueQwLOw==", - "requires": { - "@babel/helper-plugin-utils": "^7.0.0" - } - }, - "@babel/plugin-transform-exponentiation-operator": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.2.0.tgz", - "integrity": "sha512-umh4hR6N7mu4Elq9GG8TOu9M0bakvlsREEC+ialrQN6ABS4oDQ69qJv1VtR3uxlKMCQMCvzk7vr17RHKcjx68A==", - "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.1.0", - "@babel/helper-plugin-utils": "^7.0.0" - } - }, - "@babel/plugin-transform-flow-strip-types": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.2.3.tgz", - "integrity": "sha512-xnt7UIk9GYZRitqCnsVMjQK1O2eKZwFB3CvvHjf5SGx6K6vr/MScCKQDnf1DxRaj501e3pXjti+inbSXX2ZUoQ==", - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-syntax-flow": "^7.2.0" - } - }, - "@babel/plugin-transform-for-of": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.2.0.tgz", - "integrity": "sha512-Kz7Mt0SsV2tQk6jG5bBv5phVbkd0gd27SgYD4hH1aLMJRchM0dzHaXvrWhVZ+WxAlDoAKZ7Uy3jVTW2mKXQ1WQ==", - "requires": { - "@babel/helper-plugin-utils": "^7.0.0" - } - }, - "@babel/plugin-transform-function-name": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.2.0.tgz", - "integrity": "sha512-kWgksow9lHdvBC2Z4mxTsvc7YdY7w/V6B2vy9cTIPtLEE9NhwoWivaxdNM/S37elu5bqlLP/qOY906LukO9lkQ==", - "requires": { - "@babel/helper-function-name": "^7.1.0", - "@babel/helper-plugin-utils": "^7.0.0" - } - }, - "@babel/plugin-transform-literals": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.2.0.tgz", - "integrity": "sha512-2ThDhm4lI4oV7fVQ6pNNK+sx+c/GM5/SaML0w/r4ZB7sAneD/piDJtwdKlNckXeyGK7wlwg2E2w33C/Hh+VFCg==", - "requires": { - "@babel/helper-plugin-utils": "^7.0.0" - } - }, - "@babel/plugin-transform-modules-amd": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.2.0.tgz", - "integrity": "sha512-mK2A8ucqz1qhrdqjS9VMIDfIvvT2thrEsIQzbaTdc5QFzhDjQv2CkJJ5f6BXIkgbmaoax3zBr2RyvV/8zeoUZw==", - "requires": { - "@babel/helper-module-transforms": "^7.1.0", - "@babel/helper-plugin-utils": "^7.0.0" - } - }, - "@babel/plugin-transform-modules-commonjs": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.2.0.tgz", - "integrity": "sha512-V6y0uaUQrQPXUrmj+hgnks8va2L0zcZymeU7TtWEgdRLNkceafKXEduv7QzgQAE4lT+suwooG9dC7LFhdRAbVQ==", - "requires": { - "@babel/helper-module-transforms": "^7.1.0", - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-simple-access": "^7.1.0" - } - }, - "@babel/plugin-transform-modules-systemjs": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.2.0.tgz", - "integrity": "sha512-aYJwpAhoK9a+1+O625WIjvMY11wkB/ok0WClVwmeo3mCjcNRjt+/8gHWrB5i+00mUju0gWsBkQnPpdvQ7PImmQ==", - "requires": { - "@babel/helper-hoist-variables": "^7.0.0", - "@babel/helper-plugin-utils": "^7.0.0" - } - }, - "@babel/plugin-transform-modules-umd": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.2.0.tgz", - "integrity": "sha512-BV3bw6MyUH1iIsGhXlOK6sXhmSarZjtJ/vMiD9dNmpY8QXFFQTj+6v92pcfy1iqa8DeAfJFwoxcrS/TUZda6sw==", - "requires": { - "@babel/helper-module-transforms": "^7.1.0", - "@babel/helper-plugin-utils": "^7.0.0" - } - }, - "@babel/plugin-transform-new-target": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.0.0.tgz", - "integrity": "sha512-yin069FYjah+LbqfGeTfzIBODex/e++Yfa0rH0fpfam9uTbuEeEOx5GLGr210ggOV77mVRNoeqSYqeuaqSzVSw==", - "requires": { - "@babel/helper-plugin-utils": "^7.0.0" - } - }, - "@babel/plugin-transform-object-super": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.2.0.tgz", - "integrity": "sha512-VMyhPYZISFZAqAPVkiYb7dUe2AsVi2/wCT5+wZdsNO31FojQJa9ns40hzZ6U9f50Jlq4w6qwzdBB2uwqZ00ebg==", - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-replace-supers": "^7.1.0" - } - }, - "@babel/plugin-transform-parameters": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.2.0.tgz", - "integrity": "sha512-kB9+hhUidIgUoBQ0MsxMewhzr8i60nMa2KgeJKQWYrqQpqcBYtnpR+JgkadZVZoaEZ/eKu9mclFaVwhRpLNSzA==", - "requires": { - "@babel/helper-call-delegate": "^7.1.0", - "@babel/helper-get-function-arity": "^7.0.0", - "@babel/helper-plugin-utils": "^7.0.0" - } - }, - "@babel/plugin-transform-react-jsx": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.2.0.tgz", - "integrity": "sha512-h/fZRel5wAfCqcKgq3OhbmYaReo7KkoJBpt8XnvpS7wqaNMqtw5xhxutzcm35iMUWucfAdT/nvGTsWln0JTg2Q==", - "requires": { - "@babel/helper-builder-react-jsx": "^7.0.0", - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-syntax-jsx": "^7.2.0" - } - }, - "@babel/plugin-transform-regenerator": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.0.0.tgz", - "integrity": "sha512-sj2qzsEx8KDVv1QuJc/dEfilkg3RRPvPYx/VnKLtItVQRWt1Wqf5eVCOLZm29CiGFfYYsA3VPjfizTCV0S0Dlw==", - "requires": { - "regenerator-transform": "^0.13.3" - } - }, - "@babel/plugin-transform-shorthand-properties": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.2.0.tgz", - "integrity": "sha512-QP4eUM83ha9zmYtpbnyjTLAGKQritA5XW/iG9cjtuOI8s1RuL/3V6a3DeSHfKutJQ+ayUfeZJPcnCYEQzaPQqg==", - "requires": { - "@babel/helper-plugin-utils": "^7.0.0" - } - }, - "@babel/plugin-transform-spread": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.2.2.tgz", - "integrity": "sha512-KWfky/58vubwtS0hLqEnrWJjsMGaOeSBn90Ezn5Jeg9Z8KKHmELbP1yGylMlm5N6TPKeY9A2+UaSYLdxahg01w==", - "requires": { - "@babel/helper-plugin-utils": "^7.0.0" - } - }, - "@babel/plugin-transform-sticky-regex": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.2.0.tgz", - "integrity": "sha512-KKYCoGaRAf+ckH8gEL3JHUaFVyNHKe3ASNsZ+AlktgHevvxGigoIttrEJb8iKN03Q7Eazlv1s6cx2B2cQ3Jabw==", - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-regex": "^7.0.0" - } - }, - "@babel/plugin-transform-template-literals": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.2.0.tgz", - "integrity": "sha512-FkPix00J9A/XWXv4VoKJBMeSkyY9x/TqIh76wzcdfl57RJJcf8CehQ08uwfhCDNtRQYtHQKBTwKZDEyjE13Lwg==", - "requires": { - "@babel/helper-annotate-as-pure": "^7.0.0", - "@babel/helper-plugin-utils": "^7.0.0" - } - }, - "@babel/plugin-transform-typeof-symbol": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.2.0.tgz", - "integrity": "sha512-2LNhETWYxiYysBtrBTqL8+La0jIoQQnIScUJc74OYvUGRmkskNY4EzLCnjHBzdmb38wqtTaixpo1NctEcvMDZw==", - "requires": { - "@babel/helper-plugin-utils": "^7.0.0" - } - }, - "@babel/plugin-transform-unicode-regex": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.2.0.tgz", - "integrity": "sha512-m48Y0lMhrbXEJnVUaYly29jRXbQ3ksxPrS1Tg8t+MHqzXhtBYAvI51euOBaoAlZLPHsieY9XPVMf80a5x0cPcA==", - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-regex": "^7.0.0", - "regexpu-core": "^4.1.3" - } - }, - "@babel/preset-env": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.2.3.tgz", - "integrity": "sha512-AuHzW7a9rbv5WXmvGaPX7wADxFkZIqKlbBh1dmZUQp4iwiPpkE/Qnrji6SC4UQCQzvWY/cpHET29eUhXS9cLPw==", - "requires": { - "@babel/helper-module-imports": "^7.0.0", - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-proposal-async-generator-functions": "^7.2.0", - "@babel/plugin-proposal-json-strings": "^7.2.0", - "@babel/plugin-proposal-object-rest-spread": "^7.2.0", - "@babel/plugin-proposal-optional-catch-binding": "^7.2.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.2.0", - "@babel/plugin-syntax-async-generators": "^7.2.0", - "@babel/plugin-syntax-object-rest-spread": "^7.2.0", - "@babel/plugin-syntax-optional-catch-binding": "^7.2.0", - "@babel/plugin-transform-arrow-functions": "^7.2.0", - "@babel/plugin-transform-async-to-generator": "^7.2.0", - "@babel/plugin-transform-block-scoped-functions": "^7.2.0", - "@babel/plugin-transform-block-scoping": "^7.2.0", - "@babel/plugin-transform-classes": "^7.2.0", - "@babel/plugin-transform-computed-properties": "^7.2.0", - "@babel/plugin-transform-destructuring": "^7.2.0", - "@babel/plugin-transform-dotall-regex": "^7.2.0", - "@babel/plugin-transform-duplicate-keys": "^7.2.0", - "@babel/plugin-transform-exponentiation-operator": "^7.2.0", - "@babel/plugin-transform-for-of": "^7.2.0", - "@babel/plugin-transform-function-name": "^7.2.0", - "@babel/plugin-transform-literals": "^7.2.0", - "@babel/plugin-transform-modules-amd": "^7.2.0", - "@babel/plugin-transform-modules-commonjs": "^7.2.0", - "@babel/plugin-transform-modules-systemjs": "^7.2.0", - "@babel/plugin-transform-modules-umd": "^7.2.0", - "@babel/plugin-transform-new-target": "^7.0.0", - "@babel/plugin-transform-object-super": "^7.2.0", - "@babel/plugin-transform-parameters": "^7.2.0", - "@babel/plugin-transform-regenerator": "^7.0.0", - "@babel/plugin-transform-shorthand-properties": "^7.2.0", - "@babel/plugin-transform-spread": "^7.2.0", - "@babel/plugin-transform-sticky-regex": "^7.2.0", - "@babel/plugin-transform-template-literals": "^7.2.0", - "@babel/plugin-transform-typeof-symbol": "^7.2.0", - "@babel/plugin-transform-unicode-regex": "^7.2.0", - "browserslist": "^4.3.4", - "invariant": "^2.2.2", - "js-levenshtein": "^1.1.3", - "semver": "^5.3.0" - } - }, - "@babel/runtime": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.2.0.tgz", - "integrity": "sha512-oouEibCbHMVdZSDlJBO6bZmID/zA/G/Qx3H1d3rSNPTD+L8UNKvCat7aKWSJ74zYbm5zWGh0GQN0hKj8zYFTCg==", - "requires": { - "regenerator-runtime": "^0.12.0" - } - }, - "@babel/template": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.2.2.tgz", - "integrity": "sha512-zRL0IMM02AUDwghf5LMSSDEz7sBCO2YnNmpg3uWTZj/v1rcG2BmQUvaGU8GhU8BvfMh1k2KIAYZ7Ji9KXPUg7g==", - "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.2.2", - "@babel/types": "^7.2.2" - } - }, - "@babel/traverse": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.2.3.tgz", - "integrity": "sha512-Z31oUD/fJvEWVR0lNZtfgvVt512ForCTNKYcJBGbPb1QZfve4WGH8Wsy7+Mev33/45fhP/hwQtvgusNdcCMgSw==", - "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/generator": "^7.2.2", - "@babel/helper-function-name": "^7.1.0", - "@babel/helper-split-export-declaration": "^7.0.0", - "@babel/parser": "^7.2.3", - "@babel/types": "^7.2.2", - "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.10" - } - }, - "@babel/types": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.2.2.tgz", - "integrity": "sha512-fKCuD6UFUMkR541eDWL+2ih/xFZBXPOg/7EQFeTluMDebfqR4jrpaCjLhkWlQS4hT6nRa2PMEgXKbRB5/H2fpg==", - "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.10", - "to-fast-properties": "^2.0.0" - } - }, - "@iarna/toml": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@iarna/toml/-/toml-2.2.1.tgz", - "integrity": "sha512-I2EjI9TbEFJNLziNPFfpo64PNanOaK17iL2kTW/jGlGOa4bvHw4VEied83kOEB7NJjXf1KfvmsQ2aEjy3xjiGg==" - }, - "@mrmlnc/readdir-enhanced": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", - "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==", - "requires": { - "call-me-maybe": "^1.0.1", - "glob-to-regexp": "^0.3.0" - } - }, - "@nodelib/fs.stat": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz", - "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==" - }, - "@parcel/fs": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@parcel/fs/-/fs-1.11.0.tgz", - "integrity": "sha512-86RyEqULbbVoeo8OLcv+LQ1Vq2PKBAvWTU9fCgALxuCTbbs5Ppcvll4Vr+Ko1AnmMzja/k++SzNAwJfeQXVlpA==", - "requires": { - "@parcel/utils": "^1.11.0", - "mkdirp": "^0.5.1", - "rimraf": "^2.6.2" - } - }, - "@parcel/logger": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@parcel/logger/-/logger-1.11.0.tgz", - "integrity": "sha512-lIRfDg+junbFUUeU0QtHX00gKCgEsYHZydFKwrJ8dc0D+WE2SYT1FcVCgpPAfKYgtg0QQMns8E9vzT9UjH92PQ==", - "requires": { - "@parcel/workers": "^1.11.0", - "chalk": "^2.1.0", - "grapheme-breaker": "^0.3.2", - "ora": "^2.1.0", - "strip-ansi": "^4.0.0" - } - }, - "@parcel/utils": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@parcel/utils/-/utils-1.11.0.tgz", - "integrity": "sha512-cA3p4jTlaMeOtAKR/6AadanOPvKeg8VwgnHhOyfi0yClD0TZS/hi9xu12w4EzA/8NtHu0g6o4RDfcNjqN8l1AQ==" - }, - "@parcel/watcher": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-1.11.0.tgz", - "integrity": "sha512-1ySF0sH06jyhpaErW1UWC7BNgkAl6PJyBjuu2cLTW1o71J2iQqgGt95cbuqmfmjI3l0xYN+nauDFqHERaj7Z8A==", - "requires": { - "@parcel/utils": "^1.11.0", - "chokidar": "^2.0.3" - } - }, - "@parcel/workers": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@parcel/workers/-/workers-1.11.0.tgz", - "integrity": "sha512-USSjRAAQYsZFlv43FUPdD+jEGML5/8oLF0rUzPQTtK4q9kvaXr49F5ZplyLz5lox78cLZ0TxN2bIDQ1xhOkulQ==", - "requires": { - "@parcel/utils": "^1.11.0", - "physical-cpu-count": "^2.0.0" - } - }, - "@types/node": { - "version": "10.12.18", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.12.18.tgz", - "integrity": "sha512-fh+pAqt4xRzPfqA6eh3Z2y6fyZavRIumvjhaCL753+TVkGKGhpPeyrJG2JftD0T9q4GF00KjefsQ+PQNDdWQaQ==" - }, - "@types/q": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.1.tgz", - "integrity": "sha512-eqz8c/0kwNi/OEHQfvIuJVLTst3in0e7uTKeuY+WL/zfKn0xVujOTp42bS/vUUokhK5P2BppLd9JXMOMHcgbjA==" - }, - "@types/semver": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-5.5.0.tgz", - "integrity": "sha512-41qEJgBH/TWgo5NFSvBCJ1qkoi3Q6ONSF2avrHq1LVEZfYpdHmj0y9SuTK+u9ZhG1sYQKBL1AWXKyLWP4RaUoQ==" - }, - "abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" - }, - "acorn": { - "version": "5.7.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz", - "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==" - }, - "alphanum-sort": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", - "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=" - }, - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" - }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "requires": { - "color-convert": "^1.9.0" - } - }, - "ansi-to-html": { - "version": "0.6.9", - "resolved": "https://registry.npmjs.org/ansi-to-html/-/ansi-to-html-0.6.9.tgz", - "integrity": "sha512-hwNdg2DNgCzsrvaNc+LDqSxJkpxf9oEt4R7KE0IeURXhEOlontEqNpXNiGeFBpSes8TZF+ZZ9sjB85QzjPsI6A==", - "requires": { - "entities": "^1.1.1" - } - }, - "anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", - "requires": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - } - }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" - }, - "arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==" - }, - "arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=" - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" - }, - "asn1.js": { - "version": "4.10.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", - "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", - "requires": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, - "assert": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", - "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", - "requires": { - "util": "0.10.3" - }, - "dependencies": { - "inherits": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=" - }, - "util": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", - "requires": { - "inherits": "2.0.1" - } - } - } - }, - "assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=" - }, - "async-each": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", - "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=" - }, - "async-limiter": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz", - "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==" - }, - "atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==" - }, - "autoprefixer": { - "version": "6.7.7", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-6.7.7.tgz", - "integrity": "sha1-Hb0cg1ZY41zj+ZhAmdsAWFx4IBQ=", - "requires": { - "browserslist": "^1.7.6", - "caniuse-db": "^1.0.30000634", - "normalize-range": "^0.1.2", - "num2fraction": "^1.2.2", - "postcss": "^5.2.16", - "postcss-value-parser": "^3.2.3" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" - }, - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" - }, - "browserslist": { - "version": "1.7.7", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", - "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", - "requires": { - "caniuse-db": "^1.0.30000639", - "electron-to-chromium": "^1.2.7" - } - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "requires": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" - } - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "requires": { - "has-flag": "^1.0.0" - } - } - } - }, - "babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", - "requires": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.0" - }, - "dependencies": { - "regenerator-runtime": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" - } - } - }, - "babel-types": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", - "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", - "requires": { - "babel-runtime": "^6.26.0", - "esutils": "^2.0.2", - "lodash": "^4.17.4", - "to-fast-properties": "^1.0.3" - }, - "dependencies": { - "to-fast-properties": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", - "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=" - } - } - }, - "babylon-walk": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/babylon-walk/-/babylon-walk-1.0.2.tgz", - "integrity": "sha1-OxWl3btIKni0zpwByLoYFwLZ1s4=", - "requires": { - "babel-runtime": "^6.11.6", - "babel-types": "^6.15.0", - "lodash.clone": "^4.5.0" - } - }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" - }, - "base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", - "requires": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "base64-js": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz", - "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==" - }, - "binary-extensions": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.12.0.tgz", - "integrity": "sha512-DYWGk01lDcxeS/K9IHPGWfT8PsJmbXRtRd2Sx72Tnb8pcYZQFF1oSDb8hJtS1vhp212q1Rzi5dUf9+nq0o9UIg==" - }, - "bindings": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.2.1.tgz", - "integrity": "sha1-FK1hE4EtLTfXLme0ystLtyZQXxE=" - }, - "bn.js": { - "version": "4.11.8", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", - "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==" - }, - "boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=" - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "brfs": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/brfs/-/brfs-1.6.1.tgz", - "integrity": "sha512-OfZpABRQQf+Xsmju8XE9bDjs+uU4vLREGolP7bDgcpsI17QREyZ4Bl+2KLxxx1kCgA0fAIhKQBaBYh+PEcCqYQ==", - "requires": { - "quote-stream": "^1.0.1", - "resolve": "^1.1.5", - "static-module": "^2.2.0", - "through2": "^2.0.0" - } - }, - "brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=" - }, - "browserify-aes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", - "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", - "requires": { - "buffer-xor": "^1.0.3", - "cipher-base": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.3", - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "browserify-cipher": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", - "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", - "requires": { - "browserify-aes": "^1.0.4", - "browserify-des": "^1.0.0", - "evp_bytestokey": "^1.0.0" - } - }, - "browserify-des": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", - "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", - "requires": { - "cipher-base": "^1.0.1", - "des.js": "^1.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "browserify-rsa": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", - "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", - "requires": { - "bn.js": "^4.1.0", - "randombytes": "^2.0.1" - } - }, - "browserify-sign": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", - "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", - "requires": { - "bn.js": "^4.1.1", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.2", - "elliptic": "^6.0.0", - "inherits": "^2.0.1", - "parse-asn1": "^5.0.0" - } - }, - "browserify-zlib": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", - "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", - "requires": { - "pako": "~1.0.5" - }, - "dependencies": { - "pako": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.8.tgz", - "integrity": "sha512-6i0HVbUfcKaTv+EG8ZTr75az7GFXcLYk9UyLEg7Notv/Ma+z/UG3TCoz6GiNeOrn1E/e63I0X/Hpw18jHOTUnA==" - } - } - }, - "browserslist": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.4.1.tgz", - "integrity": "sha512-pEBxEXg7JwaakBXjATYw/D1YZh4QUSCX/Mnd/wnqSRPPSi1U39iDhDoKGoBUcraKdxDlrYqJxSI5nNvD+dWP2A==", - "requires": { - "caniuse-lite": "^1.0.30000929", - "electron-to-chromium": "^1.3.103", - "node-releases": "^1.1.3" - } - }, - "buffer": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", - "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", - "requires": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4", - "isarray": "^1.0.0" - } - }, - "buffer-equal": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-0.0.1.tgz", - "integrity": "sha1-kbx0sR6kBbyRa8aqkI+q+ltKrEs=" - }, - "buffer-from": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" - }, - "buffer-xor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=" - }, - "builtin-status-codes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", - "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=" - }, - "cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", - "requires": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" - } - }, - "call-me-maybe": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", - "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=" - }, - "caller-callsite": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", - "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", - "requires": { - "callsites": "^2.0.0" - } - }, - "caller-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", - "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", - "requires": { - "caller-callsite": "^2.0.0" - } - }, - "callsites": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", - "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=" - }, - "caniuse-api": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", - "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", - "requires": { - "browserslist": "^4.0.0", - "caniuse-lite": "^1.0.0", - "lodash.memoize": "^4.1.2", - "lodash.uniq": "^4.5.0" - } - }, - "caniuse-db": { - "version": "1.0.30000929", - "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000929.tgz", - "integrity": "sha512-bap0KDH7KJ2Hc4zWb1bBJwsyl+76jOukW6TH8uxaVI7BrzF2CnibTj53ro7VZAHB+ucMlIGBC1rhG2BQY0ekeg==" - }, - "caniuse-lite": { - "version": "1.0.30000929", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000929.tgz", - "integrity": "sha512-n2w1gPQSsYyorSVYqPMqbSaz1w7o9ZC8VhOEGI9T5MfGDzp7sbopQxG6GaQmYsaq13Xfx/mkxJUWC1Dz3oZfzw==" - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "chokidar": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.4.tgz", - "integrity": "sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ==", - "requires": { - "anymatch": "^2.0.0", - "async-each": "^1.0.0", - "braces": "^2.3.0", - "fsevents": "^1.2.2", - "glob-parent": "^3.1.0", - "inherits": "^2.0.1", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "lodash.debounce": "^4.0.8", - "normalize-path": "^2.1.1", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.0.0", - "upath": "^1.0.5" - } - }, - "cipher-base": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "clap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/clap/-/clap-1.2.3.tgz", - "integrity": "sha512-4CoL/A3hf90V3VIEjeuhSvlGFEHKzOz+Wfc2IVZc+FaUgU0ZQafJTP49fvnULipOPcAfqhyI2duwQyns6xqjYA==", - "requires": { - "chalk": "^1.1.3" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" - }, - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" - } - } - }, - "class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", - "requires": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, - "cli-cursor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", - "requires": { - "restore-cursor": "^2.0.0" - } - }, - "cli-spinners": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-1.3.1.tgz", - "integrity": "sha512-1QL4544moEsDVH9T/l6Cemov/37iv1RtoKf7NJ04A60+4MREXNfx/QvavbH6QoGdsD4N4Mwy49cmaINR/o2mdg==" - }, - "clone": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", - "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=" - }, - "clones": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/clones/-/clones-1.2.0.tgz", - "integrity": "sha512-FXDYw4TjR8wgPZYui2LeTqWh1BLpfQ8lB6upMtlpDF6WlOOxghmTTxWyngdKTgozqBgKnHbTVwTE+hOHqAykuQ==" - }, - "coa": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz", - "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==", - "requires": { - "@types/q": "^1.5.1", - "chalk": "^2.4.1", - "q": "^1.1.2" - } - }, - "collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", - "requires": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - } - }, - "color": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/color/-/color-3.1.0.tgz", - "integrity": "sha512-CwyopLkuRYO5ei2EpzpIh6LqJMt6Mt+jZhO5VI5f/wJLZriXQE32/SSqzmrh+QB+AZT81Cj8yv+7zwToW8ahZg==", - "requires": { - "color-convert": "^1.9.1", - "color-string": "^1.5.2" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" - }, - "color-string": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.3.tgz", - "integrity": "sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw==", - "requires": { - "color-name": "^1.0.0", - "simple-swizzle": "^0.2.2" - } - }, - "colormin": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/colormin/-/colormin-1.1.2.tgz", - "integrity": "sha1-6i90IKcrlogaOKrlnsEkpvcpgTM=", - "requires": { - "color": "^0.11.0", - "css-color-names": "0.0.4", - "has": "^1.0.1" - }, - "dependencies": { - "clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=" - }, - "color": { - "version": "0.11.4", - "resolved": "https://registry.npmjs.org/color/-/color-0.11.4.tgz", - "integrity": "sha1-bXtcdPtl6EHNSHkq0e1eB7kE12Q=", - "requires": { - "clone": "^1.0.2", - "color-convert": "^1.3.0", - "color-string": "^0.3.0" - } - }, - "color-string": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-0.3.0.tgz", - "integrity": "sha1-J9RvtnAlxcL6JZk7+/V55HhBuZE=", - "requires": { - "color-name": "^1.0.0" - } - } - } - }, - "colors": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", - "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=" - }, - "command-exists": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.8.tgz", - "integrity": "sha512-PM54PkseWbiiD/mMsbvW351/u+dafwTJ0ye2qB60G1aGQP9j3xK2gmMDc+R34L3nDtx4qMCitXT75mkbkGJDLw==" - }, - "commander": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz", - "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==" - }, - "component-emitter": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", - "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=" - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" - }, - "concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, - "config-chain": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.12.tgz", - "integrity": "sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA==", - "requires": { - "ini": "^1.3.4", - "proto-list": "~1.2.1" - } - }, - "console-browserify": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", - "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", - "requires": { - "date-now": "^0.1.4" - } - }, - "constants-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", - "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=" - }, - "convert-source-map": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz", - "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==", - "requires": { - "safe-buffer": "~5.1.1" - } - }, - "copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=" - }, - "core-js": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.2.tgz", - "integrity": "sha512-NdBPF/RVwPW6jr0NCILuyN9RiqLo2b1mddWHkUL+VnvcB7dzlnBJ1bXYntjpTGOgkZiiLWj2JxmOr7eGE3qK6g==" - }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" - }, - "cosmiconfig": { - "version": "5.0.7", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.0.7.tgz", - "integrity": "sha512-PcLqxTKiDmNT6pSpy4N6KtuPwb53W+2tzNvwOZw0WH9N6O0vLIBq0x8aj8Oj75ere4YcGi48bDFCL+3fRJdlNA==", - "requires": { - "import-fresh": "^2.0.0", - "is-directory": "^0.3.1", - "js-yaml": "^3.9.0", - "parse-json": "^4.0.0" - } - }, - "create-ecdh": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", - "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==", - "requires": { - "bn.js": "^4.1.0", - "elliptic": "^6.0.0" - } - }, - "create-hash": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", - "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", - "requires": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" - } - }, - "create-hmac": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", - "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", - "requires": { - "cipher-base": "^1.0.3", - "create-hash": "^1.1.0", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "crypto-browserify": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", - "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", - "requires": { - "browserify-cipher": "^1.0.0", - "browserify-sign": "^4.0.0", - "create-ecdh": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.0", - "diffie-hellman": "^5.0.0", - "inherits": "^2.0.1", - "pbkdf2": "^3.0.3", - "public-encrypt": "^4.0.0", - "randombytes": "^2.0.0", - "randomfill": "^1.0.3" - } - }, - "css-color-names": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", - "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=" - }, - "css-declaration-sorter": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz", - "integrity": "sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA==", - "requires": { - "postcss": "^7.0.1", - "timsort": "^0.3.0" - } - }, - "css-select": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.0.2.tgz", - "integrity": "sha512-dSpYaDVoWaELjvZ3mS6IKZM/y2PMPa/XYoEfYNZePL4U/XgyxZNroHEHReDx/d+VgXh9VbCTtFqLkFbmeqeaRQ==", - "requires": { - "boolbase": "^1.0.0", - "css-what": "^2.1.2", - "domutils": "^1.7.0", - "nth-check": "^1.0.2" - } - }, - "css-select-base-adapter": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz", - "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==" - }, - "css-tree": { - "version": "1.0.0-alpha.28", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.28.tgz", - "integrity": "sha512-joNNW1gCp3qFFzj4St6zk+Wh/NBv0vM5YbEreZk0SD4S23S+1xBKb6cLDg2uj4P4k/GUMlIm6cKIDqIG+vdt0w==", - "requires": { - "mdn-data": "~1.1.0", - "source-map": "^0.5.3" - }, - "dependencies": { - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" - } - } - }, - "css-unit-converter": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/css-unit-converter/-/css-unit-converter-1.1.1.tgz", - "integrity": "sha1-2bkoGtz9jO2TW9urqDeGiX9k6ZY=" - }, - "css-url-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/css-url-regex/-/css-url-regex-1.1.0.tgz", - "integrity": "sha1-g4NCMMyfdMRX3lnuvRVD/uuDt+w=" - }, - "css-what": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.2.tgz", - "integrity": "sha512-wan8dMWQ0GUeF7DGEPVjhHemVW/vy6xUYmFzRY8RYqgA0JtXC9rJmbScBjqSu6dg9q0lwPQy6ZAmJVr3PPTvqQ==" - }, - "cssesc": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz", - "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==" - }, - "cssnano": { - "version": "4.1.8", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.8.tgz", - "integrity": "sha512-5GIY0VzAHORpbKiL3rMXp4w4M1Ki+XlXgEXyuWXVd3h6hlASb+9Vo76dNP56/elLMVBBsUfusCo1q56uW0UWig==", - "requires": { - "cosmiconfig": "^5.0.0", - "cssnano-preset-default": "^4.0.6", - "is-resolvable": "^1.0.0", - "postcss": "^7.0.0" - } - }, - "cssnano-preset-default": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.6.tgz", - "integrity": "sha512-UPboYbFaJFtDUhJ4fqctThWbbyF4q01/7UhsZbLzp35l+nUxtzh1SifoVlEfyLM3n3Z0htd8B1YlCxy9i+bQvg==", - "requires": { - "css-declaration-sorter": "^4.0.1", - "cssnano-util-raw-cache": "^4.0.1", - "postcss": "^7.0.0", - "postcss-calc": "^7.0.0", - "postcss-colormin": "^4.0.2", - "postcss-convert-values": "^4.0.1", - "postcss-discard-comments": "^4.0.1", - "postcss-discard-duplicates": "^4.0.2", - "postcss-discard-empty": "^4.0.1", - "postcss-discard-overridden": "^4.0.1", - "postcss-merge-longhand": "^4.0.10", - "postcss-merge-rules": "^4.0.2", - "postcss-minify-font-values": "^4.0.2", - "postcss-minify-gradients": "^4.0.1", - "postcss-minify-params": "^4.0.1", - "postcss-minify-selectors": "^4.0.1", - "postcss-normalize-charset": "^4.0.1", - "postcss-normalize-display-values": "^4.0.1", - "postcss-normalize-positions": "^4.0.1", - "postcss-normalize-repeat-style": "^4.0.1", - "postcss-normalize-string": "^4.0.1", - "postcss-normalize-timing-functions": "^4.0.1", - "postcss-normalize-unicode": "^4.0.1", - "postcss-normalize-url": "^4.0.1", - "postcss-normalize-whitespace": "^4.0.1", - "postcss-ordered-values": "^4.1.1", - "postcss-reduce-initial": "^4.0.2", - "postcss-reduce-transforms": "^4.0.1", - "postcss-svgo": "^4.0.1", - "postcss-unique-selectors": "^4.0.1" - } - }, - "cssnano-util-get-arguments": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz", - "integrity": "sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8=" - }, - "cssnano-util-get-match": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz", - "integrity": "sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0=" - }, - "cssnano-util-raw-cache": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz", - "integrity": "sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==", - "requires": { - "postcss": "^7.0.0" - } - }, - "cssnano-util-same-parent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz", - "integrity": "sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==" - }, - "csso": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/csso/-/csso-3.5.1.tgz", - "integrity": "sha512-vrqULLffYU1Q2tLdJvaCYbONStnfkfimRxXNaGjxMldI0C7JPBC4rB1RyjhfdZ4m1frm8pM9uRPKH3d2knZ8gg==", - "requires": { - "css-tree": "1.0.0-alpha.29" - }, - "dependencies": { - "css-tree": { - "version": "1.0.0-alpha.29", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.29.tgz", - "integrity": "sha512-sRNb1XydwkW9IOci6iB2xmy8IGCj6r/fr+JWitvJ2JxQRPzN3T4AGGVWCMlVmVwM1gtgALJRmGIlWv5ppnGGkg==", - "requires": { - "mdn-data": "~1.1.0", - "source-map": "^0.5.3" - } - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" - } - } - }, - "date-now": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", - "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=" - }, - "deasync": { - "version": "0.1.14", - "resolved": "https://registry.npmjs.org/deasync/-/deasync-0.1.14.tgz", - "integrity": "sha512-wN8sIuEqIwyQh72AG7oY6YQODCxIp1eXzEZlZznBuwDF8Q03Tdy9QNp1BNZXeadXoklNrw+Ip1fch+KXo/+ASw==", - "requires": { - "bindings": "~1.2.1", - "node-addon-api": "^1.6.0" - } - }, - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "requires": { - "ms": "^2.1.1" - } - }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" - }, - "decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=" - }, - "deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=" - }, - "defaults": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", - "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", - "requires": { - "clone": "^1.0.2" - }, - "dependencies": { - "clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=" - } - } - }, - "define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", - "requires": { - "object-keys": "^1.0.12" - } - }, - "define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "dependencies": { - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "defined": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", - "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=" - }, - "depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" - }, - "des.js": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", - "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", - "requires": { - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, - "destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" - }, - "diffie-hellman": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", - "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", - "requires": { - "bn.js": "^4.1.0", - "miller-rabin": "^4.0.0", - "randombytes": "^2.0.0" - } - }, - "dom-serializer": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz", - "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=", - "requires": { - "domelementtype": "~1.1.1", - "entities": "~1.1.1" - }, - "dependencies": { - "domelementtype": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz", - "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=" - } - } - }, - "domain-browser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", - "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==" - }, - "domelementtype": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", - "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==" - }, - "domhandler": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", - "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", - "requires": { - "domelementtype": "1" - } - }, - "domutils": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", - "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", - "requires": { - "dom-serializer": "0", - "domelementtype": "1" - } - }, - "dot-prop": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz", - "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==", - "requires": { - "is-obj": "^1.0.0" - } - }, - "dotenv": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-5.0.1.tgz", - "integrity": "sha512-4As8uPrjfwb7VXC+WnLCbXK7y+Ueb2B3zgNCePYfhxS1PYeaO1YTeplffTEcbfLhvFNGLAz90VvJs9yomG7bow==" - }, - "dotenv-expand": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-4.2.0.tgz", - "integrity": "sha1-3vHxyl1gWdJKdm5YeULCEQbOEnU=" - }, - "duplexer2": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", - "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", - "requires": { - "readable-stream": "^2.0.2" - } - }, - "editorconfig": { - "version": "0.15.2", - "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-0.15.2.tgz", - "integrity": "sha512-GWjSI19PVJAM9IZRGOS+YKI8LN+/sjkSjNyvxL5ucqP9/IqtYNXBaQ/6c/hkPNYQHyOHra2KoXZI/JVpuqwmcQ==", - "requires": { - "@types/node": "^10.11.7", - "@types/semver": "^5.5.0", - "commander": "^2.19.0", - "lru-cache": "^4.1.3", - "semver": "^5.6.0", - "sigmund": "^1.0.1" - } - }, - "ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" - }, - "electron-to-chromium": { - "version": "1.3.103", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.103.tgz", - "integrity": "sha512-tObPqGmY9X8MUM8i3MEimYmbnLLf05/QV5gPlkR8MQ3Uj8G8B2govE1U4cQcBYtv3ymck9Y8cIOu4waoiykMZQ==" - }, - "elliptic": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.1.tgz", - "integrity": "sha512-BsXLz5sqX8OHcsh7CqBMztyXARmGQ3LWPtGjJi6DiJHq5C/qvi9P3OqgswKSDftbu8+IoI/QDTAm2fFnQ9SZSQ==", - "requires": { - "bn.js": "^4.4.0", - "brorand": "^1.0.1", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.0" - } - }, - "encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" - }, - "entities": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", - "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==" - }, - "error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "es-abstract": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.13.0.tgz", - "integrity": "sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==", - "requires": { - "es-to-primitive": "^1.2.0", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "is-callable": "^1.1.4", - "is-regex": "^1.0.4", - "object-keys": "^1.0.12" - } - }, - "es-to-primitive": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz", - "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==", - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" - }, - "escodegen": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.9.1.tgz", - "integrity": "sha512-6hTjO1NAWkHnDk3OqQ4YrCuwwmGHL9S3nPlzBOUG/R44rda3wLNrfvQ5fkSGjyhHFKM7ALPKcKGrwvCLe0lC7Q==", - "requires": { - "esprima": "^3.1.3", - "estraverse": "^4.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1", - "source-map": "~0.6.1" - } - }, - "esprima": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", - "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=" - }, - "estraverse": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", - "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=" - }, - "esutils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=" - }, - "etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" - }, - "events": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.0.0.tgz", - "integrity": "sha512-Dc381HFWJzEOhQ+d8pkNon++bk9h6cdAoAj4iE6Q4y6xgTzySWXlKn05/TVNpjnfRqi/X0EpJEJohPjNI3zpVA==" - }, - "evp_bytestokey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", - "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", - "requires": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" - } - }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - } - } - }, - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "falafel": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/falafel/-/falafel-2.1.0.tgz", - "integrity": "sha1-lrsXdh2rqU9G0AFzizzt86Z/4Gw=", - "requires": { - "acorn": "^5.0.0", - "foreach": "^2.0.5", - "isarray": "0.0.1", - "object-keys": "^1.0.6" - }, - "dependencies": { - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" - } - } - }, - "fast-glob": { - "version": "2.2.6", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.6.tgz", - "integrity": "sha512-0BvMaZc1k9F+MeWWMe8pL6YltFzZYcJsYU7D4JyDA6PAczaXvxqQQ/z+mDF7/4Mw01DeUc+i3CTKajnkANkV4w==", - "requires": { - "@mrmlnc/readdir-enhanced": "^2.2.1", - "@nodelib/fs.stat": "^1.1.2", - "glob-parent": "^3.1.0", - "is-glob": "^4.0.0", - "merge2": "^1.2.3", - "micromatch": "^3.1.10" - } - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" - }, - "filesize": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.6.1.tgz", - "integrity": "sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg==" - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "flatten": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.2.tgz", - "integrity": "sha1-2uRqnXj74lKSJYzB54CkHZXAN4I=" - }, - "for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" - }, - "foreach": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", - "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=" - }, - "fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", - "requires": { - "map-cache": "^0.2.2" - } - }, - "fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" - }, - "fsevents": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.7.tgz", - "integrity": "sha512-Pxm6sI2MeBD7RdD12RYsqaP0nMiwx8eZBXCa6z2L+mRHm2DYrOYwihmhjpkdjUHwQhslWQjRpEgNq4XvBmaAuw==", - "optional": true, - "requires": { - "nan": "^2.9.2", - "node-pre-gyp": "^0.10.0" - }, - "dependencies": { - "abbrev": { - "version": "1.1.1", - "bundled": true, - "optional": true - }, - "ansi-regex": { - "version": "2.1.1", - "bundled": true - }, - "aproba": { - "version": "1.2.0", - "bundled": true, - "optional": true - }, - "are-we-there-yet": { - "version": "1.1.5", - "bundled": true, - "optional": true, - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" - } - }, - "balanced-match": { - "version": "1.0.0", - "bundled": true - }, - "brace-expansion": { - "version": "1.1.11", - "bundled": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "chownr": { - "version": "1.1.1", - "bundled": true, - "optional": true - }, - "code-point-at": { - "version": "1.1.0", - "bundled": true - }, - "concat-map": { - "version": "0.0.1", - "bundled": true - }, - "console-control-strings": { - "version": "1.1.0", - "bundled": true - }, - "core-util-is": { - "version": "1.0.2", - "bundled": true, - "optional": true - }, - "debug": { - "version": "2.6.9", - "bundled": true, - "optional": true, - "requires": { - "ms": "2.0.0" - } - }, - "deep-extend": { - "version": "0.6.0", - "bundled": true, - "optional": true - }, - "delegates": { - "version": "1.0.0", - "bundled": true, - "optional": true - }, - "detect-libc": { - "version": "1.0.3", - "bundled": true, - "optional": true - }, - "fs-minipass": { - "version": "1.2.5", - "bundled": true, - "optional": true, - "requires": { - "minipass": "^2.2.1" - } - }, - "fs.realpath": { - "version": "1.0.0", - "bundled": true, - "optional": true - }, - "gauge": { - "version": "2.7.4", - "bundled": true, - "optional": true, - "requires": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" - } - }, - "glob": { - "version": "7.1.3", - "bundled": true, - "optional": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "has-unicode": { - "version": "2.0.1", - "bundled": true, - "optional": true - }, - "iconv-lite": { - "version": "0.4.24", - "bundled": true, - "optional": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "ignore-walk": { - "version": "3.0.1", - "bundled": true, - "optional": true, - "requires": { - "minimatch": "^3.0.4" - } - }, - "inflight": { - "version": "1.0.6", - "bundled": true, - "optional": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.3", - "bundled": true - }, - "ini": { - "version": "1.3.5", - "bundled": true, - "optional": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "isarray": { - "version": "1.0.0", - "bundled": true, - "optional": true - }, - "minimatch": { - "version": "3.0.4", - "bundled": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "0.0.8", - "bundled": true - }, - "minipass": { - "version": "2.3.5", - "bundled": true, - "requires": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" - } - }, - "minizlib": { - "version": "1.2.1", - "bundled": true, - "optional": true, - "requires": { - "minipass": "^2.2.1" - } - }, - "mkdirp": { - "version": "0.5.1", - "bundled": true, - "requires": { - "minimist": "0.0.8" - } - }, - "ms": { - "version": "2.0.0", - "bundled": true, - "optional": true - }, - "needle": { - "version": "2.2.4", - "bundled": true, - "optional": true, - "requires": { - "debug": "^2.1.2", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" - } - }, - "node-pre-gyp": { - "version": "0.10.3", - "bundled": true, - "optional": true, - "requires": { - "detect-libc": "^1.0.2", - "mkdirp": "^0.5.1", - "needle": "^2.2.1", - "nopt": "^4.0.1", - "npm-packlist": "^1.1.6", - "npmlog": "^4.0.2", - "rc": "^1.2.7", - "rimraf": "^2.6.1", - "semver": "^5.3.0", - "tar": "^4" - } - }, - "nopt": { - "version": "4.0.1", - "bundled": true, - "optional": true, - "requires": { - "abbrev": "1", - "osenv": "^0.1.4" - } - }, - "npm-bundled": { - "version": "1.0.5", - "bundled": true, - "optional": true - }, - "npm-packlist": { - "version": "1.2.0", - "bundled": true, - "optional": true, - "requires": { - "ignore-walk": "^3.0.1", - "npm-bundled": "^1.0.1" - } - }, - "npmlog": { - "version": "4.1.2", - "bundled": true, - "optional": true, - "requires": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" - } - }, - "number-is-nan": { - "version": "1.0.1", - "bundled": true - }, - "object-assign": { - "version": "4.1.1", - "bundled": true, - "optional": true - }, - "once": { - "version": "1.4.0", - "bundled": true, - "requires": { - "wrappy": "1" - } - }, - "os-homedir": { - "version": "1.0.2", - "bundled": true, - "optional": true - }, - "os-tmpdir": { - "version": "1.0.2", - "bundled": true, - "optional": true - }, - "osenv": { - "version": "0.1.5", - "bundled": true, - "optional": true, - "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "bundled": true, - "optional": true - }, - "process-nextick-args": { - "version": "2.0.0", - "bundled": true, - "optional": true - }, - "rc": { - "version": "1.2.8", - "bundled": true, - "optional": true, - "requires": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "bundled": true, - "optional": true - } - } - }, - "readable-stream": { - "version": "2.3.6", - "bundled": true, - "optional": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "rimraf": { - "version": "2.6.3", - "bundled": true, - "optional": true, - "requires": { - "glob": "^7.1.3" - } - }, - "safe-buffer": { - "version": "5.1.2", - "bundled": true - }, - "safer-buffer": { - "version": "2.1.2", - "bundled": true, - "optional": true - }, - "sax": { - "version": "1.2.4", - "bundled": true, - "optional": true - }, - "semver": { - "version": "5.6.0", - "bundled": true, - "optional": true - }, - "set-blocking": { - "version": "2.0.0", - "bundled": true, - "optional": true - }, - "signal-exit": { - "version": "3.0.2", - "bundled": true, - "optional": true - }, - "string-width": { - "version": "1.0.2", - "bundled": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "string_decoder": { - "version": "1.1.1", - "bundled": true, - "optional": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "strip-json-comments": { - "version": "2.0.1", - "bundled": true, - "optional": true - }, - "tar": { - "version": "4.4.8", - "bundled": true, - "optional": true, - "requires": { - "chownr": "^1.1.1", - "fs-minipass": "^1.2.5", - "minipass": "^2.3.4", - "minizlib": "^1.1.1", - "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.2", - "yallist": "^3.0.2" - } - }, - "util-deprecate": { - "version": "1.0.2", - "bundled": true, - "optional": true - }, - "wide-align": { - "version": "1.1.3", - "bundled": true, - "optional": true, - "requires": { - "string-width": "^1.0.2 || 2" - } - }, - "wrappy": { - "version": "1.0.2", - "bundled": true - }, - "yallist": { - "version": "3.0.3", - "bundled": true - } - } - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, - "get-port": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz", - "integrity": "sha1-3Xzn3hh8Bsi/NTeWrHHgmfCYDrw=" - }, - "get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=" - }, - "glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "requires": { - "is-extglob": "^2.1.0" - } - } - } - }, - "glob-to-regexp": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz", - "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=" - }, - "globals": { - "version": "11.10.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.10.0.tgz", - "integrity": "sha512-0GZF1RiPKU97IHUO5TORo9w1PwrH/NBPl+fS7oMLdaTRiYmYbwK4NWoZWrAdd0/abG9R2BU+OiwyQpTpE6pdfQ==" - }, - "graceful-fs": { - "version": "4.1.15", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", - "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==" - }, - "grapheme-breaker": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/grapheme-breaker/-/grapheme-breaker-0.3.2.tgz", - "integrity": "sha1-W55reMODJFLSuiuxy4MPlidkEKw=", - "requires": { - "brfs": "^1.2.0", - "unicode-trie": "^0.3.1" - } - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", - "requires": { - "ansi-regex": "^2.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" - } - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" - }, - "has-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", - "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=" - }, - "has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", - "requires": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - } - }, - "has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", - "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "dependencies": { - "kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "hash-base": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", - "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "hash.js": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", - "requires": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, - "hex-color-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz", - "integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==" - }, - "hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", - "requires": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "hsl-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz", - "integrity": "sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4=" - }, - "hsla-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz", - "integrity": "sha1-wc56MWjIxmFAM6S194d/OyJfnDg=" - }, - "html-comment-regex": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.2.tgz", - "integrity": "sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==" - }, - "htmlnano": { - "version": "0.1.10", - "resolved": "https://registry.npmjs.org/htmlnano/-/htmlnano-0.1.10.tgz", - "integrity": "sha512-eTEUzz8VdWYp+w/KUdb99kwao4reR64epUySyZkQeepcyzPQ2n2EPWzibf6QDxmkGy10Kr+CKxYqI3izSbmhJQ==", - "requires": { - "cssnano": "^3.4.0", - "object-assign": "^4.0.1", - "posthtml": "^0.11.3", - "posthtml-render": "^1.1.4", - "svgo": "^1.0.5", - "terser": "^3.8.1" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" - }, - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" - }, - "browserslist": { - "version": "1.7.7", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", - "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", - "requires": { - "caniuse-db": "^1.0.30000639", - "electron-to-chromium": "^1.2.7" - } - }, - "caniuse-api": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-1.6.1.tgz", - "integrity": "sha1-tTTnxzTE+B7F++isoq0kNUuWLGw=", - "requires": { - "browserslist": "^1.3.6", - "caniuse-db": "^1.0.30000529", - "lodash.memoize": "^4.1.2", - "lodash.uniq": "^4.5.0" - } - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" - } - } - }, - "coa": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/coa/-/coa-1.0.4.tgz", - "integrity": "sha1-qe8VNmDWqGqL3sAomlxoTSF0Mv0=", - "requires": { - "q": "^1.1.2" - } - }, - "cssnano": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-3.10.0.tgz", - "integrity": "sha1-Tzj2zqK5sX+gFJDyPx3GjqZcHDg=", - "requires": { - "autoprefixer": "^6.3.1", - "decamelize": "^1.1.2", - "defined": "^1.0.0", - "has": "^1.0.1", - "object-assign": "^4.0.1", - "postcss": "^5.0.14", - "postcss-calc": "^5.2.0", - "postcss-colormin": "^2.1.8", - "postcss-convert-values": "^2.3.4", - "postcss-discard-comments": "^2.0.4", - "postcss-discard-duplicates": "^2.0.1", - "postcss-discard-empty": "^2.0.1", - "postcss-discard-overridden": "^0.1.1", - "postcss-discard-unused": "^2.2.1", - "postcss-filter-plugins": "^2.0.0", - "postcss-merge-idents": "^2.1.5", - "postcss-merge-longhand": "^2.0.1", - "postcss-merge-rules": "^2.0.3", - "postcss-minify-font-values": "^1.0.2", - "postcss-minify-gradients": "^1.0.1", - "postcss-minify-params": "^1.0.4", - "postcss-minify-selectors": "^2.0.4", - "postcss-normalize-charset": "^1.1.0", - "postcss-normalize-url": "^3.0.7", - "postcss-ordered-values": "^2.1.0", - "postcss-reduce-idents": "^2.2.2", - "postcss-reduce-initial": "^1.0.0", - "postcss-reduce-transforms": "^1.0.3", - "postcss-svgo": "^2.1.1", - "postcss-unique-selectors": "^2.0.2", - "postcss-value-parser": "^3.2.3", - "postcss-zindex": "^2.0.1" - } - }, - "csso": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/csso/-/csso-2.3.2.tgz", - "integrity": "sha1-3dUsWHAz9J6Utx/FVWnyUuj/X4U=", - "requires": { - "clap": "^1.0.9", - "source-map": "^0.5.3" - } - }, - "esprima": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", - "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=" - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" - }, - "is-svg": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-2.1.0.tgz", - "integrity": "sha1-z2EJDaDZ77yrhyLeum8DIgjbsOk=", - "requires": { - "html-comment-regex": "^1.1.0" - } - }, - "js-yaml": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.7.0.tgz", - "integrity": "sha1-XJZ93YN6m/3KXy3oQlOr6KHAO4A=", - "requires": { - "argparse": "^1.0.7", - "esprima": "^2.6.0" - } - }, - "normalize-url": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz", - "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=", - "requires": { - "object-assign": "^4.0.1", - "prepend-http": "^1.0.0", - "query-string": "^4.1.0", - "sort-keys": "^1.0.0" - } - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "requires": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" - } - }, - "postcss-calc": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-5.3.1.tgz", - "integrity": "sha1-d7rnypKK2FcW4v2kLyYb98HWW14=", - "requires": { - "postcss": "^5.0.2", - "postcss-message-helpers": "^2.0.0", - "reduce-css-calc": "^1.2.6" - } - }, - "postcss-colormin": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-2.2.2.tgz", - "integrity": "sha1-ZjFBfV8OkJo9fsJrJMio0eT5bks=", - "requires": { - "colormin": "^1.0.5", - "postcss": "^5.0.13", - "postcss-value-parser": "^3.2.3" - } - }, - "postcss-convert-values": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-2.6.1.tgz", - "integrity": "sha1-u9hZPFwf0uPRwyK7kl3K6Nrk1i0=", - "requires": { - "postcss": "^5.0.11", - "postcss-value-parser": "^3.1.2" - } - }, - "postcss-discard-comments": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-2.0.4.tgz", - "integrity": "sha1-vv6J+v1bPazlzM5Rt2uBUUvgDj0=", - "requires": { - "postcss": "^5.0.14" - } - }, - "postcss-discard-duplicates": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-2.1.0.tgz", - "integrity": "sha1-uavye4isGIFYpesSq8riAmO5GTI=", - "requires": { - "postcss": "^5.0.4" - } - }, - "postcss-discard-empty": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-2.1.0.tgz", - "integrity": "sha1-0rS9nVztXr2Nyt52QMfXzX9PkrU=", - "requires": { - "postcss": "^5.0.14" - } - }, - "postcss-discard-overridden": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-0.1.1.tgz", - "integrity": "sha1-ix6vVU9ob7KIzYdMVWZ7CqNmjVg=", - "requires": { - "postcss": "^5.0.16" - } - }, - "postcss-merge-longhand": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-2.0.2.tgz", - "integrity": "sha1-I9kM0Sewp3mUkVMyc5A0oaTz1lg=", - "requires": { - "postcss": "^5.0.4" - } - }, - "postcss-merge-rules": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-2.1.2.tgz", - "integrity": "sha1-0d9d+qexrMO+VT8OnhDofGG19yE=", - "requires": { - "browserslist": "^1.5.2", - "caniuse-api": "^1.5.2", - "postcss": "^5.0.4", - "postcss-selector-parser": "^2.2.2", - "vendors": "^1.0.0" - } - }, - "postcss-minify-font-values": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-1.0.5.tgz", - "integrity": "sha1-S1jttWZB66fIR0qzUmyv17vey2k=", - "requires": { - "object-assign": "^4.0.1", - "postcss": "^5.0.4", - "postcss-value-parser": "^3.0.2" - } - }, - "postcss-minify-gradients": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-1.0.5.tgz", - "integrity": "sha1-Xb2hE3NwP4PPtKPqOIHY11/15uE=", - "requires": { - "postcss": "^5.0.12", - "postcss-value-parser": "^3.3.0" - } - }, - "postcss-minify-params": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-1.2.2.tgz", - "integrity": "sha1-rSzgcTc7lDs9kwo/pZo1jCjW8fM=", - "requires": { - "alphanum-sort": "^1.0.1", - "postcss": "^5.0.2", - "postcss-value-parser": "^3.0.2", - "uniqs": "^2.0.0" - } - }, - "postcss-minify-selectors": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-2.1.1.tgz", - "integrity": "sha1-ssapjAByz5G5MtGkllCBFDEXNb8=", - "requires": { - "alphanum-sort": "^1.0.2", - "has": "^1.0.1", - "postcss": "^5.0.14", - "postcss-selector-parser": "^2.0.0" - } - }, - "postcss-normalize-charset": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-1.1.1.tgz", - "integrity": "sha1-757nEhLX/nWceO0WL2HtYrXLk/E=", - "requires": { - "postcss": "^5.0.5" - } - }, - "postcss-normalize-url": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-3.0.8.tgz", - "integrity": "sha1-EI90s/L82viRov+j6kWSJ5/HgiI=", - "requires": { - "is-absolute-url": "^2.0.0", - "normalize-url": "^1.4.0", - "postcss": "^5.0.14", - "postcss-value-parser": "^3.2.3" - } - }, - "postcss-ordered-values": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-2.2.3.tgz", - "integrity": "sha1-7sbCpntsQSqNsgQud/6NpD+VwR0=", - "requires": { - "postcss": "^5.0.4", - "postcss-value-parser": "^3.0.1" - } - }, - "postcss-reduce-initial": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-1.0.1.tgz", - "integrity": "sha1-aPgGlfBF0IJjqHmtJA343WT2ROo=", - "requires": { - "postcss": "^5.0.4" - } - }, - "postcss-reduce-transforms": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-1.0.4.tgz", - "integrity": "sha1-/3b02CEkN7McKYpC0uFEQCV3GuE=", - "requires": { - "has": "^1.0.1", - "postcss": "^5.0.8", - "postcss-value-parser": "^3.0.1" - } - }, - "postcss-selector-parser": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz", - "integrity": "sha1-+UN3iGBsPJrO4W/+jYsWKX8nu5A=", - "requires": { - "flatten": "^1.0.2", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - } - }, - "postcss-svgo": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-2.1.6.tgz", - "integrity": "sha1-tt8YqmE7Zm4TPwittSGcJoSsEI0=", - "requires": { - "is-svg": "^2.0.0", - "postcss": "^5.0.14", - "postcss-value-parser": "^3.2.3", - "svgo": "^0.7.0" - }, - "dependencies": { - "svgo": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-0.7.2.tgz", - "integrity": "sha1-n1dyQTlSE1xv779Ar+ak+qiLS7U=", - "requires": { - "coa": "~1.0.1", - "colors": "~1.1.2", - "csso": "~2.3.1", - "js-yaml": "~3.7.0", - "mkdirp": "~0.5.1", - "sax": "~1.2.1", - "whet.extend": "~0.9.9" - } - } - } - }, - "postcss-unique-selectors": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-2.0.2.tgz", - "integrity": "sha1-mB1X0p3csz57Hf4f1DuGSfkzyh0=", - "requires": { - "alphanum-sort": "^1.0.1", - "postcss": "^5.0.4", - "uniqs": "^2.0.0" - } - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "requires": { - "has-flag": "^1.0.0" - } - } - } - }, - "htmlparser2": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.0.tgz", - "integrity": "sha512-J1nEUGv+MkXS0weHNWVKJJ+UrLfePxRWpN3C9bEi9fLxL2+ggW94DQvgYVXsaT30PGwYRIZKNZXuyMhp3Di4bQ==", - "requires": { - "domelementtype": "^1.3.0", - "domhandler": "^2.3.0", - "domutils": "^1.5.1", - "entities": "^1.1.1", - "inherits": "^2.0.1", - "readable-stream": "^3.0.6" - }, - "dependencies": { - "readable-stream": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.1.1.tgz", - "integrity": "sha512-DkN66hPyqDhnIQ6Jcsvx9bFjhw214O4poMBcIMgPVpQvNy9a0e0Uhg5SqySyDKAmUlwt8LonTBz1ezOnM8pUdA==", - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - } - } - }, - "http-errors": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" - } - }, - "https-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", - "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=" - }, - "ieee754": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.12.tgz", - "integrity": "sha512-GguP+DRY+pJ3soyIiGPTvdiVXjZ+DbXOxGpXn3eMvNW4x4irjqXm4wHKscC+TfxSJ0yw/S1F24tqdMNsMZTiLA==" - }, - "import-fresh": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", - "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", - "requires": { - "caller-path": "^2.0.0", - "resolve-from": "^3.0.0" - } - }, - "indexes-of": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", - "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=" - }, - "indexof": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", - "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=" - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" - }, - "ini": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" - }, - "invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", - "requires": { - "loose-envify": "^1.0.0" - } - }, - "is-absolute-url": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", - "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=" - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" - }, - "is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", - "requires": { - "binary-extensions": "^1.0.0" - } - }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" - }, - "is-callable": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", - "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==" - }, - "is-color-stop": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz", - "integrity": "sha1-z/9HGu5N1cnhWFmPvhKWe1za00U=", - "requires": { - "css-color-names": "^0.0.4", - "hex-color-regex": "^1.1.0", - "hsl-regex": "^1.0.0", - "hsla-regex": "^1.0.0", - "rgb-regex": "^1.0.1", - "rgba-regex": "^1.0.0" - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-date-object": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", - "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=" - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" - } - } - }, - "is-directory": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", - "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=" - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" - }, - "is-glob": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", - "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", - "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=" - }, - "is-plain-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=" - }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "requires": { - "isobject": "^3.0.1" - } - }, - "is-regex": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", - "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", - "requires": { - "has": "^1.0.1" - } - }, - "is-resolvable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", - "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==" - }, - "is-svg": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-3.0.0.tgz", - "integrity": "sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ==", - "requires": { - "html-comment-regex": "^1.1.0" - } - }, - "is-symbol": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz", - "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==", - "requires": { - "has-symbols": "^1.0.0" - } - }, - "is-url": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz", - "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==" - }, - "is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==" - }, - "is-wsl": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=" - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" - }, - "js-base64": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.5.1.tgz", - "integrity": "sha512-M7kLczedRMYX4L8Mdh4MzyAMM9O5osx+4FcOQuTvr3A9F2D9S5JXheN0ewNbrvK2UatkTRhL5ejGmGSjNMiZuw==" - }, - "js-beautify": { - "version": "1.8.9", - "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.8.9.tgz", - "integrity": "sha512-MwPmLywK9RSX0SPsUJjN7i+RQY9w/yC17Lbrq9ViEefpLRgqAR2BgrMN2AbifkUuhDV8tRauLhLda/9+bE0YQA==", - "requires": { - "config-chain": "^1.1.12", - "editorconfig": "^0.15.2", - "glob": "^7.1.3", - "mkdirp": "~0.5.0", - "nopt": "~4.0.1" - } - }, - "js-levenshtein": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.6.tgz", - "integrity": "sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==" - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" - }, - "js-yaml": { - "version": "3.12.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.1.tgz", - "integrity": "sha512-um46hB9wNOKlwkHgiuyEVAybXBjwFUV0Z/RaHJblRd9DXltue9FTYvzCr9ErQrK9Adz5MU4gHWVaNUfdmrC8qA==", - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "dependencies": { - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" - } - } - }, - "jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" - }, - "json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" - }, - "json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", - "requires": { - "minimist": "^1.2.0" - } - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" - }, - "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", - "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - } - }, - "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" - }, - "lodash.clone": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clone/-/lodash.clone-4.5.0.tgz", - "integrity": "sha1-GVhwRQ9aExkkeN9Lw9I9LeoZB7Y=" - }, - "lodash.debounce": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=" - }, - "lodash.memoize": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=" - }, - "lodash.uniq": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", - "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=" - }, - "log-symbols": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", - "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", - "requires": { - "chalk": "^2.0.1" - } - }, - "loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "requires": { - "js-tokens": "^3.0.0 || ^4.0.0" - } - }, - "lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", - "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "magic-string": { - "version": "0.22.5", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.22.5.tgz", - "integrity": "sha512-oreip9rJZkzvA8Qzk9HFs8fZGF/u7H/gtrE8EN6RjKJ9kh2HlC+yQ2QezifqTZfGyiuAV0dRv5a+y/8gBb1m9w==", - "requires": { - "vlq": "^0.2.2" - } - }, - "map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=" - }, - "map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", - "requires": { - "object-visit": "^1.0.0" - } - }, - "math-expression-evaluator": { - "version": "1.2.17", - "resolved": "https://registry.npmjs.org/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz", - "integrity": "sha1-3oGf282E3M2PrlnGrreWFbnSZqw=" - }, - "md5.js": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", - "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "mdn-data": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-1.1.4.tgz", - "integrity": "sha512-FSYbp3lyKjyj3E7fMl6rYvUdX0FBXaluGqlFoYESWQlyUTq8R+wp0rkFxoYFqZlHCvsUXGjyJmLQSnXToYhOSA==" - }, - "merge-source-map": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.0.4.tgz", - "integrity": "sha1-pd5GU42uhNQRTMXqArR3KmNGcB8=", - "requires": { - "source-map": "^0.5.6" - }, - "dependencies": { - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" - } - } - }, - "merge2": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.2.3.tgz", - "integrity": "sha512-gdUU1Fwj5ep4kplwcmftruWofEFt6lfpkkr3h860CXbAB9c3hGb55EOL2ali0Td5oebvW0E1+3Sr+Ur7XfKpRA==" - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - }, - "miller-rabin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", - "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", - "requires": { - "bn.js": "^4.0.0", - "brorand": "^1.0.1" - } - }, - "mime": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", - "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==" - }, - "mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==" - }, - "minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" - }, - "minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=" - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" - }, - "mixin-deep": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", - "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", - "requires": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "requires": { - "minimist": "0.0.8" - }, - "dependencies": { - "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" - } - } - }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" - }, - "nan": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.12.1.tgz", - "integrity": "sha512-JY7V6lRkStKcKTvHO5NVSQRv+RV+FIL5pvDoLiAtSL9pKlC5x9PKQcZDsq7m4FO4d57mkhC6Z+QhAh3Jdk5JFw==", - "optional": true - }, - "nanomatch": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", - "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - } - }, - "nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" - }, - "node-addon-api": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-1.6.2.tgz", - "integrity": "sha512-479Bjw9nTE5DdBSZZWprFryHGjUaQC31y1wHo19We/k0BZlrmhqQitWoUL0cD8+scljCbIUL+E58oRDEakdGGA==" - }, - "node-forge": { - "version": "0.7.6", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.6.tgz", - "integrity": "sha512-sol30LUpz1jQFBjOKwbjxijiE3b6pjd74YwfD0fJOKPjF+fONKb2Yg8rYgS6+bK6VDl+/wfr4IYpC7jDzLUIfw==" - }, - "node-libs-browser": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.0.tgz", - "integrity": "sha512-5MQunG/oyOaBdttrL40dA7bUfPORLRWMUJLQtMg7nluxUvk5XwnLdL9twQHFAjRx/y7mIMkLKT9++qPbbk6BZA==", - "requires": { - "assert": "^1.1.1", - "browserify-zlib": "^0.2.0", - "buffer": "^4.3.0", - "console-browserify": "^1.1.0", - "constants-browserify": "^1.0.0", - "crypto-browserify": "^3.11.0", - "domain-browser": "^1.1.1", - "events": "^3.0.0", - "https-browserify": "^1.0.0", - "os-browserify": "^0.3.0", - "path-browserify": "0.0.0", - "process": "^0.11.10", - "punycode": "^1.2.4", - "querystring-es3": "^0.2.0", - "readable-stream": "^2.3.3", - "stream-browserify": "^2.0.1", - "stream-http": "^2.7.2", - "string_decoder": "^1.0.0", - "timers-browserify": "^2.0.4", - "tty-browserify": "0.0.0", - "url": "^0.11.0", - "util": "^0.11.0", - "vm-browserify": "0.0.4" - } - }, - "node-releases": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.3.tgz", - "integrity": "sha512-6VrvH7z6jqqNFY200kdB6HdzkgM96Oaj9v3dqGfgp6mF+cHmU4wyQKZ2/WPDRVoR0Jz9KqbamaBN0ZhdUaysUQ==", - "requires": { - "semver": "^5.3.0" - } - }, - "nopt": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", - "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", - "requires": { - "abbrev": "1", - "osenv": "^0.1.4" - } - }, - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "requires": { - "remove-trailing-separator": "^1.0.1" - } - }, - "normalize-range": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=" - }, - "normalize-url": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz", - "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==" - }, - "nth-check": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", - "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", - "requires": { - "boolbase": "~1.0.0" - } - }, - "num2fraction": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", - "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=" - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" - }, - "object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", - "requires": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "object-inspect": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.4.1.tgz", - "integrity": "sha512-wqdhLpfCUbEsoEwl3FXwGyv8ief1k/1aUdIPCqVnupM6e8l63BEJdiF/0swtn04/8p05tG/T0FrpTlfwvljOdw==" - }, - "object-keys": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.12.tgz", - "integrity": "sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag==" - }, - "object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", - "requires": { - "isobject": "^3.0.0" - } - }, - "object.getownpropertydescriptors": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz", - "integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=", - "requires": { - "define-properties": "^1.1.2", - "es-abstract": "^1.5.1" - } - }, - "object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", - "requires": { - "isobject": "^3.0.1" - } - }, - "object.values": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.0.tgz", - "integrity": "sha512-8mf0nKLAoFX6VlNVdhGj31SVYpaNFtUnuoOXWyFEstsWRgU837AK+JYM0iAxwkSzGRbwn8cbFmgbyxj1j4VbXg==", - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.12.0", - "function-bind": "^1.1.1", - "has": "^1.0.3" - } - }, - "on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", - "requires": { - "ee-first": "1.1.1" - } - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "requires": { - "wrappy": "1" - } - }, - "onetime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", - "requires": { - "mimic-fn": "^1.0.0" - } - }, - "opn": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/opn/-/opn-5.4.0.tgz", - "integrity": "sha512-YF9MNdVy/0qvJvDtunAOzFw9iasOQHpVthTCvGzxt61Il64AYSGdK+rYwld7NAfk9qJ7dt+hymBNSc9LNYS+Sw==", - "requires": { - "is-wsl": "^1.1.0" - } - }, - "optionator": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", - "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", - "requires": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.4", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "wordwrap": "~1.0.0" - } - }, - "ora": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/ora/-/ora-2.1.0.tgz", - "integrity": "sha512-hNNlAd3gfv/iPmsNxYoAPLvxg7HuPozww7fFonMZvL84tP6Ox5igfk5j/+a9rtJJwqMgKK+JgWsAQik5o0HTLA==", - "requires": { - "chalk": "^2.3.1", - "cli-cursor": "^2.1.0", - "cli-spinners": "^1.1.0", - "log-symbols": "^2.2.0", - "strip-ansi": "^4.0.0", - "wcwidth": "^1.0.1" - } - }, - "os-browserify": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", - "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=" - }, - "os-homedir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" - }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" - }, - "osenv": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", - "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", - "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" - } - }, - "pako": { - "version": "0.2.9", - "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", - "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=" - }, - "parcel-bundler": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/parcel-bundler/-/parcel-bundler-1.11.0.tgz", - "integrity": "sha512-H0w/Obx76vWiG+UtofznfcHZJBmd6JA5iCn7zrGBINyVAh+Nt/JLD6QDROghHLXfJkO4XyczsB+fO+nPbXlFfA==", - "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/core": "^7.0.0", - "@babel/generator": "^7.0.0", - "@babel/parser": "^7.0.0", - "@babel/plugin-transform-flow-strip-types": "^7.0.0", - "@babel/plugin-transform-modules-commonjs": "^7.0.0", - "@babel/plugin-transform-react-jsx": "^7.0.0", - "@babel/preset-env": "^7.0.0", - "@babel/runtime": "^7.0.0", - "@babel/template": "^7.0.0", - "@babel/traverse": "^7.0.0", - "@babel/types": "^7.0.0", - "@iarna/toml": "^2.2.0", - "@parcel/fs": "^1.11.0", - "@parcel/logger": "^1.11.0", - "@parcel/utils": "^1.11.0", - "@parcel/watcher": "^1.11.0", - "@parcel/workers": "^1.11.0", - "ansi-to-html": "^0.6.4", - "babylon-walk": "^1.0.2", - "browserslist": "^4.1.0", - "chalk": "^2.1.0", - "clone": "^2.1.1", - "command-exists": "^1.2.6", - "commander": "^2.11.0", - "cross-spawn": "^6.0.4", - "cssnano": "^4.0.0", - "deasync": "^0.1.14", - "dotenv": "^5.0.0", - "dotenv-expand": "^4.2.0", - "fast-glob": "^2.2.2", - "filesize": "^3.6.0", - "get-port": "^3.2.0", - "htmlnano": "^0.1.9", - "is-glob": "^4.0.0", - "is-url": "^1.2.2", - "js-yaml": "^3.10.0", - "json5": "^1.0.1", - "micromatch": "^3.0.4", - "mkdirp": "^0.5.1", - "node-forge": "^0.7.1", - "node-libs-browser": "^2.0.0", - "opn": "^5.1.0", - "postcss": "^7.0.5", - "postcss-value-parser": "^3.3.1", - "posthtml": "^0.11.2", - "posthtml-parser": "^0.4.0", - "posthtml-render": "^1.1.3", - "resolve": "^1.4.0", - "semver": "^5.4.1", - "serialize-to-js": "^1.1.1", - "serve-static": "^1.12.4", - "source-map": "0.6.1", - "terser": "^3.7.3", - "v8-compile-cache": "^2.0.0", - "ws": "^5.1.1" - } - }, - "parcel-plugin-transcrypt": { - "version": "1.0.20", - "resolved": "https://registry.npmjs.org/parcel-plugin-transcrypt/-/parcel-plugin-transcrypt-1.0.20.tgz", - "integrity": "sha512-/nzFcV/bHjQC1VjwZ/GO7K8SvI1lyndquWfB76znmJYjqAbHdM8xsjnMvaXPNnYH7VTAYHO8i0y8gvrKdkbR3g==" - }, - "parse-asn1": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.3.tgz", - "integrity": "sha512-VrPoetlz7B/FqjBLD2f5wBVZvsZVLnRUrxVLfRYhGXCODa/NWE4p3Wp+6+aV3ZPL3KM7/OZmxDIwwijD7yuucg==", - "requires": { - "asn1.js": "^4.0.0", - "browserify-aes": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.0", - "pbkdf2": "^3.0.3", - "safe-buffer": "^5.1.1" - } - }, - "parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", - "requires": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - } - }, - "parseurl": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", - "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=" - }, - "pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=" - }, - "path-browserify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", - "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=" - }, - "path-dirname": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=" - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" - }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" - }, - "path-parse": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" - }, - "pbkdf2": { - "version": "3.0.17", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz", - "integrity": "sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==", - "requires": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "physical-cpu-count": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/physical-cpu-count/-/physical-cpu-count-2.0.0.tgz", - "integrity": "sha1-GN4vl+S/epVRrXURlCtUlverpmA=" - }, - "posix-character-classes": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=" - }, - "postcss": { - "version": "7.0.13", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.13.tgz", - "integrity": "sha512-h8SY6kQTd1wISHWjz+E6cswdhMuyBZRb16pSTv3W4zYZ3/YbyWeJdNUeOXB5IdZqE1U76OUEjjjqsC3z2f3hVg==", - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "dependencies": { - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "postcss-calc": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.1.tgz", - "integrity": "sha512-oXqx0m6tb4N3JGdmeMSc/i91KppbYsFZKdH0xMOqK8V1rJlzrKlTdokz8ozUXLVejydRN6u2IddxpcijRj2FqQ==", - "requires": { - "css-unit-converter": "^1.1.1", - "postcss": "^7.0.5", - "postcss-selector-parser": "^5.0.0-rc.4", - "postcss-value-parser": "^3.3.1" - } - }, - "postcss-colormin": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-4.0.2.tgz", - "integrity": "sha512-1QJc2coIehnVFsz0otges8kQLsryi4lo19WD+U5xCWvXd0uw/Z+KKYnbiNDCnO9GP+PvErPHCG0jNvWTngk9Rw==", - "requires": { - "browserslist": "^4.0.0", - "color": "^3.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - } - }, - "postcss-convert-values": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz", - "integrity": "sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ==", - "requires": { - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - } - }, - "postcss-discard-comments": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-4.0.1.tgz", - "integrity": "sha512-Ay+rZu1Sz6g8IdzRjUgG2NafSNpp2MSMOQUb+9kkzzzP+kh07fP0yNbhtFejURnyVXSX3FYy2nVNW1QTnNjgBQ==", - "requires": { - "postcss": "^7.0.0" - } - }, - "postcss-discard-duplicates": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz", - "integrity": "sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ==", - "requires": { - "postcss": "^7.0.0" - } - }, - "postcss-discard-empty": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz", - "integrity": "sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w==", - "requires": { - "postcss": "^7.0.0" - } - }, - "postcss-discard-overridden": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz", - "integrity": "sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg==", - "requires": { - "postcss": "^7.0.0" - } - }, - "postcss-discard-unused": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/postcss-discard-unused/-/postcss-discard-unused-2.2.3.tgz", - "integrity": "sha1-vOMLLMWR/8Y0Mitfs0ZLbZNPRDM=", - "requires": { - "postcss": "^5.0.14", - "uniqs": "^2.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" - }, - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "requires": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" - } - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "requires": { - "has-flag": "^1.0.0" - } - } - } - }, - "postcss-filter-plugins": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/postcss-filter-plugins/-/postcss-filter-plugins-2.0.3.tgz", - "integrity": "sha512-T53GVFsdinJhgwm7rg1BzbeBRomOg9y5MBVhGcsV0CxurUdVj1UlPdKtn7aqYA/c/QVkzKMjq2bSV5dKG5+AwQ==", - "requires": { - "postcss": "^5.0.4" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" - }, - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "requires": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" - } - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "requires": { - "has-flag": "^1.0.0" - } - } - } - }, - "postcss-merge-idents": { - "version": "2.1.7", - "resolved": "https://registry.npmjs.org/postcss-merge-idents/-/postcss-merge-idents-2.1.7.tgz", - "integrity": "sha1-TFUwMTwI4dWzu/PSu8dH4njuonA=", - "requires": { - "has": "^1.0.1", - "postcss": "^5.0.10", - "postcss-value-parser": "^3.1.1" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" - }, - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "requires": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" - } - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "requires": { - "has-flag": "^1.0.0" - } - } - } - }, - "postcss-merge-longhand": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-4.0.10.tgz", - "integrity": "sha512-hME10s6CSjm9nlVIcO1ukR7Jr5RisTaaC1y83jWCivpuBtPohA3pZE7cGTIVSYjXvLnXozHTiVOkG4dnnl756g==", - "requires": { - "css-color-names": "0.0.4", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0", - "stylehacks": "^4.0.0" - } - }, - "postcss-merge-rules": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-4.0.2.tgz", - "integrity": "sha512-UiuXwCCJtQy9tAIxsnurfF0mrNHKc4NnNx6NxqmzNNjXpQwLSukUxELHTRF0Rg1pAmcoKLih8PwvZbiordchag==", - "requires": { - "browserslist": "^4.0.0", - "caniuse-api": "^3.0.0", - "cssnano-util-same-parent": "^4.0.0", - "postcss": "^7.0.0", - "postcss-selector-parser": "^3.0.0", - "vendors": "^1.0.0" - }, - "dependencies": { - "postcss-selector-parser": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz", - "integrity": "sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU=", - "requires": { - "dot-prop": "^4.1.1", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - } - } - } - }, - "postcss-message-helpers": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/postcss-message-helpers/-/postcss-message-helpers-2.0.0.tgz", - "integrity": "sha1-pPL0+rbk/gAvCu0ABHjN9S+bpg4=" - }, - "postcss-minify-font-values": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz", - "integrity": "sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg==", - "requires": { - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - } - }, - "postcss-minify-gradients": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-4.0.1.tgz", - "integrity": "sha512-pySEW3E6Ly5mHm18rekbWiAjVi/Wj8KKt2vwSfVFAWdW6wOIekgqxKxLU7vJfb107o3FDNPkaYFCxGAJBFyogA==", - "requires": { - "cssnano-util-get-arguments": "^4.0.0", - "is-color-stop": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - } - }, - "postcss-minify-params": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-4.0.1.tgz", - "integrity": "sha512-h4W0FEMEzBLxpxIVelRtMheskOKKp52ND6rJv+nBS33G1twu2tCyurYj/YtgU76+UDCvWeNs0hs8HFAWE2OUFg==", - "requires": { - "alphanum-sort": "^1.0.0", - "browserslist": "^4.0.0", - "cssnano-util-get-arguments": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0", - "uniqs": "^2.0.0" - } - }, - "postcss-minify-selectors": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-4.0.1.tgz", - "integrity": "sha512-8+plQkomve3G+CodLCgbhAKrb5lekAnLYuL1d7Nz+/7RANpBEVdgBkPNwljfSKvZ9xkkZTZITd04KP+zeJTJqg==", - "requires": { - "alphanum-sort": "^1.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-selector-parser": "^3.0.0" - }, - "dependencies": { - "postcss-selector-parser": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz", - "integrity": "sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU=", - "requires": { - "dot-prop": "^4.1.1", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - } - } - } - }, - "postcss-normalize-charset": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz", - "integrity": "sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g==", - "requires": { - "postcss": "^7.0.0" - } - }, - "postcss-normalize-display-values": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.1.tgz", - "integrity": "sha512-R5mC4vaDdvsrku96yXP7zak+O3Mm9Y8IslUobk7IMP+u/g+lXvcN4jngmHY5zeJnrQvE13dfAg5ViU05ZFDwdg==", - "requires": { - "cssnano-util-get-match": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - } - }, - "postcss-normalize-positions": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-4.0.1.tgz", - "integrity": "sha512-GNoOaLRBM0gvH+ZRb2vKCIujzz4aclli64MBwDuYGU2EY53LwiP7MxOZGE46UGtotrSnmarPPZ69l2S/uxdaWA==", - "requires": { - "cssnano-util-get-arguments": "^4.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - } - }, - "postcss-normalize-repeat-style": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.1.tgz", - "integrity": "sha512-fFHPGIjBUyUiswY2rd9rsFcC0t3oRta4wxE1h3lpwfQZwFeFjXFSiDtdJ7APCmHQOnUZnqYBADNRPKPwFAONgA==", - "requires": { - "cssnano-util-get-arguments": "^4.0.0", - "cssnano-util-get-match": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - } - }, - "postcss-normalize-string": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-4.0.1.tgz", - "integrity": "sha512-IJoexFTkAvAq5UZVxWXAGE0yLoNN/012v7TQh5nDo6imZJl2Fwgbhy3J2qnIoaDBrtUP0H7JrXlX1jjn2YcvCQ==", - "requires": { - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - } - }, - "postcss-normalize-timing-functions": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.1.tgz", - "integrity": "sha512-1nOtk7ze36+63ONWD8RCaRDYsnzorrj+Q6fxkQV+mlY5+471Qx9kspqv0O/qQNMeApg8KNrRf496zHwJ3tBZ7w==", - "requires": { - "cssnano-util-get-match": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - } - }, - "postcss-normalize-unicode": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz", - "integrity": "sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg==", - "requires": { - "browserslist": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - } - }, - "postcss-normalize-url": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz", - "integrity": "sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA==", - "requires": { - "is-absolute-url": "^2.0.0", - "normalize-url": "^3.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - } - }, - "postcss-normalize-whitespace": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.1.tgz", - "integrity": "sha512-U8MBODMB2L+nStzOk6VvWWjZgi5kQNShCyjRhMT3s+W9Jw93yIjOnrEkKYD3Ul7ChWbEcjDWmXq0qOL9MIAnAw==", - "requires": { - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - } - }, - "postcss-ordered-values": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-4.1.1.tgz", - "integrity": "sha512-PeJiLgJWPzkVF8JuKSBcylaU+hDJ/TX3zqAMIjlghgn1JBi6QwQaDZoDIlqWRcCAI8SxKrt3FCPSRmOgKRB97Q==", - "requires": { - "cssnano-util-get-arguments": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - } - }, - "postcss-reduce-idents": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/postcss-reduce-idents/-/postcss-reduce-idents-2.4.0.tgz", - "integrity": "sha1-wsbSDMlYKE9qv75j92Cb9AkFmtM=", - "requires": { - "postcss": "^5.0.4", - "postcss-value-parser": "^3.0.2" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" - }, - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "requires": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" - } - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "requires": { - "has-flag": "^1.0.0" - } - } - } - }, - "postcss-reduce-initial": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-4.0.2.tgz", - "integrity": "sha512-epUiC39NonKUKG+P3eAOKKZtm5OtAtQJL7Ye0CBN1f+UQTHzqotudp+hki7zxXm7tT0ZAKDMBj1uihpPjP25ug==", - "requires": { - "browserslist": "^4.0.0", - "caniuse-api": "^3.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0" - } - }, - "postcss-reduce-transforms": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.1.tgz", - "integrity": "sha512-sZVr3QlGs0pjh6JAIe6DzWvBaqYw05V1t3d9Tp+VnFRT5j+rsqoWsysh/iSD7YNsULjq9IAylCznIwVd5oU/zA==", - "requires": { - "cssnano-util-get-match": "^4.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - } - }, - "postcss-selector-parser": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", - "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==", - "requires": { - "cssesc": "^2.0.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - } - }, - "postcss-svgo": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.1.tgz", - "integrity": "sha512-YD5uIk5NDRySy0hcI+ZJHwqemv2WiqqzDgtvgMzO8EGSkK5aONyX8HMVFRFJSdO8wUWTuisUFn/d7yRRbBr5Qw==", - "requires": { - "is-svg": "^3.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0", - "svgo": "^1.0.0" - } - }, - "postcss-unique-selectors": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz", - "integrity": "sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg==", - "requires": { - "alphanum-sort": "^1.0.0", - "postcss": "^7.0.0", - "uniqs": "^2.0.0" - } - }, - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" - }, - "postcss-zindex": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/postcss-zindex/-/postcss-zindex-2.2.0.tgz", - "integrity": "sha1-0hCd3AVbka9n/EyzsCWUZjnSryI=", - "requires": { - "has": "^1.0.1", - "postcss": "^5.0.4", - "uniqs": "^2.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" - }, - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "requires": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" - } - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "requires": { - "has-flag": "^1.0.0" - } - } - } - }, - "posthtml": { - "version": "0.11.3", - "resolved": "https://registry.npmjs.org/posthtml/-/posthtml-0.11.3.tgz", - "integrity": "sha512-quMHnDckt2DQ9lRi6bYLnuyBDnVzK+McHa8+ar4kTdYbWEo/92hREOu3h70ZirudOOp/my2b3r0m5YtxY52yrA==", - "requires": { - "object-assign": "^4.1.1", - "posthtml-parser": "^0.3.3", - "posthtml-render": "^1.1.0" - }, - "dependencies": { - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "requires": { - "isarray": "1.0.0" - } - }, - "posthtml-parser": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/posthtml-parser/-/posthtml-parser-0.3.3.tgz", - "integrity": "sha512-H/Z/yXGwl49A7hYQLV1iQ3h87NE0aZ/PMZhFwhw3lKeCAN+Ti4idrHvVvh4/GX10I7u77aQw+QB4vV5/Lzvv5A==", - "requires": { - "htmlparser2": "^3.9.2", - "isobject": "^2.1.0", - "object-assign": "^4.1.1" - } - } - } - }, - "posthtml-parser": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/posthtml-parser/-/posthtml-parser-0.4.1.tgz", - "integrity": "sha512-h7vXIQ21Ikz2w5wPClPakNP6mJeJCK6BT0GpqnQrNNABdR7/TchNlFyryL1Bz6Ww53YWCKkr6tdZuHlxY1AVdQ==", - "requires": { - "htmlparser2": "^3.9.2", - "object-assign": "^4.1.1" - } - }, - "posthtml-render": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/posthtml-render/-/posthtml-render-1.1.4.tgz", - "integrity": "sha512-jL6eFIzoN3xUEvbo33OAkSDE2VIKU4JQ1wENOows1DpfnrdapR/K3Q1/fB43Mq7wQlcSgRm23nFrvoioufM7eA==" - }, - "prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=" - }, - "prepend-http": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", - "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=" - }, - "private": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", - "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==" - }, - "process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=" - }, - "process-nextick-args": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", - "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" - }, - "proto-list": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", - "integrity": "sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=" - }, - "pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" - }, - "public-encrypt": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", - "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", - "requires": { - "bn.js": "^4.1.0", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "parse-asn1": "^5.0.0", - "randombytes": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" - }, - "q": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=" - }, - "query-string": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz", - "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=", - "requires": { - "object-assign": "^4.1.0", - "strict-uri-encode": "^1.0.0" - } - }, - "querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=" - }, - "querystring-es3": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", - "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=" - }, - "quote-stream": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/quote-stream/-/quote-stream-1.0.2.tgz", - "integrity": "sha1-hJY/jJwmuULhU/7rU6rnRlK34LI=", - "requires": { - "buffer-equal": "0.0.1", - "minimist": "^1.1.3", - "through2": "^2.0.0" - } - }, - "randombytes": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.6.tgz", - "integrity": "sha512-CIQ5OFxf4Jou6uOKe9t1AOgqpeU5fd70A8NPdHSGeYXqXsPe6peOwI0cUl88RWZ6sP1vPMV3avd/R6cZ5/sP1A==", - "requires": { - "safe-buffer": "^5.1.0" - } - }, - "randomfill": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", - "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", - "requires": { - "randombytes": "^2.0.5", - "safe-buffer": "^5.1.0" - } - }, - "range-parser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", - "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=" - }, - "readable-stream": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "readdirp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", - "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", - "requires": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" - } - }, - "reduce-css-calc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz", - "integrity": "sha1-dHyRTgSWFKTJz7umKYca0dKSdxY=", - "requires": { - "balanced-match": "^0.4.2", - "math-expression-evaluator": "^1.2.14", - "reduce-function-call": "^1.0.1" - }, - "dependencies": { - "balanced-match": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", - "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=" - } - } - }, - "reduce-function-call": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/reduce-function-call/-/reduce-function-call-1.0.2.tgz", - "integrity": "sha1-WiAL+S4ON3UXUv5FsKszD9S2vpk=", - "requires": { - "balanced-match": "^0.4.2" - }, - "dependencies": { - "balanced-match": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", - "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=" - } - } - }, - "regenerate": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", - "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==" - }, - "regenerate-unicode-properties": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-7.0.0.tgz", - "integrity": "sha512-s5NGghCE4itSlUS+0WUj88G6cfMVMmH8boTPNvABf8od+2dhT9WDlWu8n01raQAJZMOK8Ch6jSexaRO7swd6aw==", - "requires": { - "regenerate": "^1.4.0" - } - }, - "regenerator-runtime": { - "version": "0.12.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz", - "integrity": "sha512-odxIc1/vDlo4iZcfXqRYFj0vpXFNoGdKMAUieAlFYO6m/nl5e9KR/beGf41z4a1FI+aQgtjhuaSlDxQ0hmkrHg==" - }, - "regenerator-transform": { - "version": "0.13.3", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.13.3.tgz", - "integrity": "sha512-5ipTrZFSq5vU2YoGoww4uaRVAK4wyYC4TSICibbfEPOruUu8FFP7ErV0BjmbIOEpn3O/k9na9UEdYR/3m7N6uA==", - "requires": { - "private": "^0.1.6" - } - }, - "regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", - "requires": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - } - }, - "regexpu-core": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.4.0.tgz", - "integrity": "sha512-eDDWElbwwI3K0Lo6CqbQbA6FwgtCz4kYTarrri1okfkRLZAqstU+B3voZBCjg8Fl6iq0gXrJG6MvRgLthfvgOA==", - "requires": { - "regenerate": "^1.4.0", - "regenerate-unicode-properties": "^7.0.0", - "regjsgen": "^0.5.0", - "regjsparser": "^0.6.0", - "unicode-match-property-ecmascript": "^1.0.4", - "unicode-match-property-value-ecmascript": "^1.0.2" - } - }, - "regjsgen": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.0.tgz", - "integrity": "sha512-RnIrLhrXCX5ow/E5/Mh2O4e/oa1/jW0eaBKTSy3LaCj+M3Bqvm97GWDp2yUtzIs4LEn65zR2yiYGFqb2ApnzDA==" - }, - "regjsparser": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.0.tgz", - "integrity": "sha512-RQ7YyokLiQBomUJuUG8iGVvkgOLxwyZM8k6d3q5SAXpg4r5TZJZigKFvC6PpD+qQ98bCDC5YelPeA3EucDoNeQ==", - "requires": { - "jsesc": "~0.5.0" - }, - "dependencies": { - "jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=" - } - } - }, - "remove-trailing-separator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=" - }, - "repeat-element": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", - "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==" - }, - "repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" - }, - "resolve": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.9.0.tgz", - "integrity": "sha512-TZNye00tI67lwYvzxCxHGjwTNlUV70io54/Ed4j6PscB8xVfuBJpRenI/o6dVk0cY0PYTY27AgCoGGxRnYuItQ==", - "requires": { - "path-parse": "^1.0.6" - } - }, - "resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=" - }, - "resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=" - }, - "restore-cursor": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", - "requires": { - "onetime": "^2.0.0", - "signal-exit": "^3.0.2" - } - }, - "ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==" - }, - "rgb-regex": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz", - "integrity": "sha1-wODWiC3w4jviVKR16O3UGRX+rrE=" - }, - "rgba-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz", - "integrity": "sha1-QzdOLiyglosO8VI0YLfXMP8i7rM=" - }, - "rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", - "requires": { - "glob": "^7.1.3" - } - }, - "ripemd160": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", - "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", - "requires": { - "ret": "~0.1.10" - } - }, - "safer-eval": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/safer-eval/-/safer-eval-1.3.0.tgz", - "integrity": "sha512-4qkBS8VzJatFR7F0eZfKoJyjqo43jY1jBvRhB5WXM0eJNjx9fiSmph5NApJefqKqpASKWPfaIJCJMMeWePSzfw==", - "requires": { - "clones": "^1.2.0" - } - }, - "sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" - }, - "semver": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", - "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==" - }, - "send": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", - "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", - "requires": { - "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "~1.6.2", - "mime": "1.4.1", - "ms": "2.0.0", - "on-finished": "~2.3.0", - "range-parser": "~1.2.0", - "statuses": "~1.4.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - } - } - }, - "serialize-to-js": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/serialize-to-js/-/serialize-to-js-1.2.2.tgz", - "integrity": "sha512-mUc8vA5iJghe+O+3s0YDGFLMJcqitVFk787YKiv8a4sf6RX5W0u81b+gcHrp15O0fFa010dRBVZvwcKXOWsL9Q==", - "requires": { - "js-beautify": "^1.8.9", - "safer-eval": "^1.3.0" - } - }, - "serve-static": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", - "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", - "requires": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.2", - "send": "0.16.2" - } - }, - "set-value": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", - "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" - }, - "setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" - }, - "sha.js": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "shallow-copy": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/shallow-copy/-/shallow-copy-0.0.1.tgz", - "integrity": "sha1-QV9CcC1z2BAzApLMXuhurhoRoXA=" - }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "requires": { - "shebang-regex": "^1.0.0" - } - }, - "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" - }, - "sigmund": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", - "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=" - }, - "signal-exit": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" - }, - "simple-swizzle": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", - "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", - "requires": { - "is-arrayish": "^0.3.1" - }, - "dependencies": { - "is-arrayish": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", - "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" - } - } - }, - "snapdragon": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", - "requires": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" - } - } - }, - "snapdragon-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", - "requires": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "snapdragon-util": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", - "requires": { - "kind-of": "^3.2.0" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "sort-keys": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", - "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", - "requires": { - "is-plain-obj": "^1.0.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - }, - "source-map-resolve": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", - "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", - "requires": { - "atob": "^2.1.1", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - } - }, - "source-map-support": { - "version": "0.5.10", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.10.tgz", - "integrity": "sha512-YfQ3tQFTK/yzlGJuX8pTwa4tifQj4QS2Mj7UegOu8jAz59MqIiMGPXxQhVQiIMNzayuUSF/jEuVnfFF5JqybmQ==", - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "source-map-url": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", - "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=" - }, - "split-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", - "requires": { - "extend-shallow": "^3.0.0" - } - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" - }, - "stable": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", - "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==" - }, - "static-eval": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/static-eval/-/static-eval-2.0.0.tgz", - "integrity": "sha512-6flshd3F1Gwm+Ksxq463LtFd1liC77N/PX1FVVc3OzL3hAmo2fwHFbuArkcfi7s9rTNsLEhcRmXGFZhlgy40uw==", - "requires": { - "escodegen": "^1.8.1" - } - }, - "static-extend": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", - "requires": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, - "static-module": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/static-module/-/static-module-2.2.5.tgz", - "integrity": "sha512-D8vv82E/Kpmz3TXHKG8PPsCPg+RAX6cbCOyvjM6x04qZtQ47EtJFVwRsdov3n5d6/6ynrOY9XB4JkaZwB2xoRQ==", - "requires": { - "concat-stream": "~1.6.0", - "convert-source-map": "^1.5.1", - "duplexer2": "~0.1.4", - "escodegen": "~1.9.0", - "falafel": "^2.1.0", - "has": "^1.0.1", - "magic-string": "^0.22.4", - "merge-source-map": "1.0.4", - "object-inspect": "~1.4.0", - "quote-stream": "~1.0.2", - "readable-stream": "~2.3.3", - "shallow-copy": "~0.0.1", - "static-eval": "^2.0.0", - "through2": "~2.0.3" - } - }, - "statuses": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", - "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==" - }, - "stream-browserify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz", - "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=", - "requires": { - "inherits": "~2.0.1", - "readable-stream": "^2.0.2" - } - }, - "stream-http": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", - "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", - "requires": { - "builtin-status-codes": "^3.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.3.6", - "to-arraybuffer": "^1.0.0", - "xtend": "^4.0.0" - } - }, - "strict-uri-encode": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", - "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=" - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "requires": { - "ansi-regex": "^3.0.0" - } - }, - "stylehacks": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.1.tgz", - "integrity": "sha512-TK5zEPeD9NyC1uPIdjikzsgWxdQQN/ry1X3d1iOz1UkYDCmcr928gWD1KHgyC27F50UnE0xCTrBOO1l6KR8M4w==", - "requires": { - "browserslist": "^4.0.0", - "postcss": "^7.0.0", - "postcss-selector-parser": "^3.0.0" - }, - "dependencies": { - "postcss-selector-parser": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz", - "integrity": "sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU=", - "requires": { - "dot-prop": "^4.1.1", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - } - } - } - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "requires": { - "has-flag": "^3.0.0" - } - }, - "svgo": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.1.1.tgz", - "integrity": "sha512-GBkJbnTuFpM4jFbiERHDWhZc/S/kpHToqmZag3aEBjPYK44JAN2QBjvrGIxLOoCyMZjuFQIfTO2eJd8uwLY/9g==", - "requires": { - "coa": "~2.0.1", - "colors": "~1.1.2", - "css-select": "^2.0.0", - "css-select-base-adapter": "~0.1.0", - "css-tree": "1.0.0-alpha.28", - "css-url-regex": "^1.1.0", - "csso": "^3.5.0", - "js-yaml": "^3.12.0", - "mkdirp": "~0.5.1", - "object.values": "^1.0.4", - "sax": "~1.2.4", - "stable": "~0.1.6", - "unquote": "~1.1.1", - "util.promisify": "~1.0.0" - } - }, - "terser": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-3.14.1.tgz", - "integrity": "sha512-NSo3E99QDbYSMeJaEk9YW2lTg3qS9V0aKGlb+PlOrei1X02r1wSBHCNX/O+yeTRFSWPKPIGj6MqvvdqV4rnVGw==", - "requires": { - "commander": "~2.17.1", - "source-map": "~0.6.1", - "source-map-support": "~0.5.6" - }, - "dependencies": { - "commander": { - "version": "2.17.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", - "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==" - } - } - }, - "through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "requires": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "timers-browserify": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.10.tgz", - "integrity": "sha512-YvC1SV1XdOUaL6gx5CoGroT3Gu49pK9+TZ38ErPldOWW4j49GI1HKs9DV+KGq/w6y+LZ72W1c8cKz2vzY+qpzg==", - "requires": { - "setimmediate": "^1.0.4" - } - }, - "timsort": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", - "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=" - }, - "tiny-inflate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/tiny-inflate/-/tiny-inflate-1.0.2.tgz", - "integrity": "sha1-k9nez/yIBb1X6uQxDwt0Xptvs6c=" - }, - "to-arraybuffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", - "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=" - }, - "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=" - }, - "to-object-path": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "to-regex": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", - "requires": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" - } - }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - } - }, - "trim-right": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", - "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=" - }, - "tty-browserify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", - "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=" - }, - "type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", - "requires": { - "prelude-ls": "~1.1.2" - } - }, - "typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" - }, - "unicode-canonical-property-names-ecmascript": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", - "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==" - }, - "unicode-match-property-ecmascript": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", - "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", - "requires": { - "unicode-canonical-property-names-ecmascript": "^1.0.4", - "unicode-property-aliases-ecmascript": "^1.0.4" - } - }, - "unicode-match-property-value-ecmascript": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.0.2.tgz", - "integrity": "sha512-Rx7yODZC1L/T8XKo/2kNzVAQaRE88AaMvI1EF/Xnj3GW2wzN6fop9DDWuFAKUVFH7vozkz26DzP0qyWLKLIVPQ==" - }, - "unicode-property-aliases-ecmascript": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.4.tgz", - "integrity": "sha512-2WSLa6OdYd2ng8oqiGIWnJqyFArvhn+5vgx5GTxMbUYjCYKUcuKS62YLFF0R/BDGlB1yzXjQOLtPAfHsgirEpg==" - }, - "unicode-trie": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/unicode-trie/-/unicode-trie-0.3.1.tgz", - "integrity": "sha1-1nHd3YkQGgi6w3tqUWEBBgIFIIU=", - "requires": { - "pako": "^0.2.5", - "tiny-inflate": "^1.0.0" - } - }, - "union-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", - "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", - "requires": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^0.4.3" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - }, - "set-value": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", - "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.1", - "to-object-path": "^0.3.0" - } - } - } - }, - "uniq": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", - "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=" - }, - "uniqs": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", - "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=" - }, - "unquote": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", - "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=" - }, - "unset-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", - "requires": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "dependencies": { - "has-value": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", - "requires": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "dependencies": { - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "requires": { - "isarray": "1.0.0" - } - } - } - }, - "has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=" - } - } - }, - "upath": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.0.tgz", - "integrity": "sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw==" - }, - "urix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=" - }, - "url": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", - "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", - "requires": { - "punycode": "1.3.2", - "querystring": "0.2.0" - }, - "dependencies": { - "punycode": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=" - } - } - }, - "use": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", - "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==" - }, - "util": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", - "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", - "requires": { - "inherits": "2.0.3" - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" - }, - "util.promisify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz", - "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==", - "requires": { - "define-properties": "^1.1.2", - "object.getownpropertydescriptors": "^2.0.3" - } - }, - "v8-compile-cache": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.0.2.tgz", - "integrity": "sha512-1wFuMUIM16MDJRCrpbpuEPTUGmM5QMUg0cr3KFwra2XgOgFcPGDQHDh3CszSCD2Zewc/dh/pamNEW8CbfDebUw==" - }, - "vendors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.2.tgz", - "integrity": "sha512-w/hry/368nO21AN9QljsaIhb9ZiZtZARoVH5f3CsFbawdLdayCgKRPup7CggujvySMxx0I91NOyxdVENohprLQ==" - }, - "vlq": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/vlq/-/vlq-0.2.3.tgz", - "integrity": "sha512-DRibZL6DsNhIgYQ+wNdWDL2SL3bKPlVrRiBqV5yuMm++op8W4kGFtaQfCs4KEJn0wBZcHVHJ3eoywX8983k1ow==" - }, - "vm-browserify": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", - "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=", - "requires": { - "indexof": "0.0.1" - } - }, - "wcwidth": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", - "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", - "requires": { - "defaults": "^1.0.3" - } - }, - "whet.extend": { - "version": "0.9.9", - "resolved": "https://registry.npmjs.org/whet.extend/-/whet.extend-0.9.9.tgz", - "integrity": "sha1-+HfVv2SMl+WqVC+twW1qJZucEaE=" - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "requires": { - "isexe": "^2.0.0" - } - }, - "wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=" - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" - }, - "ws": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.2.tgz", - "integrity": "sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA==", - "requires": { - "async-limiter": "~1.0.0" - } - }, - "xtend": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", - "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=" - }, - "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" - } - } -} +{ + "name": "parcel_demo", + "version": "1.0.0", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "parcel-bundler": "^1.11.0", + "parcel-plugin-transcrypt": "^1.0.20" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", + "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", + "dependencies": { + "@babel/highlight": "^7.12.13" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.14.0.tgz", + "integrity": "sha512-vu9V3uMM/1o5Hl5OekMUowo3FqXLJSw+s+66nt0fSWVWTtmosdzn45JHOB3cPtZoe6CTBDzvSw0RdOY85Q37+Q==" + }, + "node_modules/@babel/core": { + "version": "7.14.2", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.14.2.tgz", + "integrity": "sha512-OgC1mON+l4U4B4wiohJlQNUU3H73mpTyYY3j/c8U9dr9UagGGSm+WFpzjy/YLdoyjiG++c1kIDgxCo/mLwQJeQ==", + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@babel/generator": "^7.14.2", + "@babel/helper-compilation-targets": "^7.13.16", + "@babel/helper-module-transforms": "^7.14.2", + "@babel/helpers": "^7.14.0", + "@babel/parser": "^7.14.2", + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.14.2", + "@babel/types": "^7.14.2", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.1.2", + "semver": "^6.3.0", + "source-map": "^0.5.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/node_modules/json5": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", + "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/core/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@babel/generator": { + "version": "7.14.2", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.14.2.tgz", + "integrity": "sha512-OnADYbKrffDVai5qcpkMxQ7caomHOoEwjkouqnN2QhydAjowFAZcsdecFIRUBdb+ZcruwYE4ythYmF1UBZU5xQ==", + "dependencies": { + "@babel/types": "^7.14.2", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "node_modules/@babel/generator/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.13.tgz", + "integrity": "sha512-7YXfX5wQ5aYM/BOlbSccHDbuXXFPxeoUmfWtz8le2yTkTZc+BxsiEnENFoi2SlmA8ewDkG2LgIMIVzzn2h8kfw==", + "dependencies": { + "@babel/types": "^7.12.13" + } + }, + "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.12.13.tgz", + "integrity": "sha512-CZOv9tGphhDRlVjVkAgm8Nhklm9RzSmWpX2my+t7Ua/KT616pEzXsQCjinzvkRvHWJ9itO4f296efroX23XCMA==", + "dependencies": { + "@babel/helper-explode-assignable-expression": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.13.16", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.16.tgz", + "integrity": "sha512-3gmkYIrpqsLlieFwjkGgLaSHmhnvlAYzZLlYVjlW+QwI+1zE17kGxuJGmIqDQdYp56XdmGeD+Bswx0UTyG18xA==", + "dependencies": { + "@babel/compat-data": "^7.13.15", + "@babel/helper-validator-option": "^7.12.17", + "browserslist": "^4.14.5", + "semver": "^6.3.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.14.2", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.14.2.tgz", + "integrity": "sha512-6YctwVsmlkchxfGUogvVrrhzyD3grFJyluj5JgDlQrwfMLJSt5tdAzFZfPf4H2Xoi5YLcQ6BxfJlaOBHuctyIw==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.12.13", + "@babel/helper-function-name": "^7.14.2", + "@babel/helper-member-expression-to-functions": "^7.13.12", + "@babel/helper-optimise-call-expression": "^7.12.13", + "@babel/helper-replace-supers": "^7.13.12", + "@babel/helper-split-export-declaration": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.12.17", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.17.tgz", + "integrity": "sha512-p2VGmBu9oefLZ2nQpgnEnG0ZlRPvL8gAGvPUMQwUdaE8k49rOMuZpOwdQoy5qJf6K8jL3bcAMhVUlHAjIgJHUg==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.12.13", + "regexpu-core": "^4.7.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.2.0.tgz", + "integrity": "sha512-JT8tHuFjKBo8NnaUbblz7mIu1nnvUDiHVjXXkulZULyidvo/7P6TY7+YqpV37IfF+KUFxmlK04elKtGKXaiVgw==", + "dependencies": { + "@babel/helper-compilation-targets": "^7.13.0", + "@babel/helper-module-imports": "^7.12.13", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/traverse": "^7.13.0", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2", + "semver": "^6.1.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0-0" + } + }, + "node_modules/@babel/helper-define-polyfill-provider/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-explode-assignable-expression": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.13.0.tgz", + "integrity": "sha512-qS0peLTDP8kOisG1blKbaoBg/o9OSa1qoumMjTK5pM+KDTtpxpsiubnCGP34vK8BXGcb2M9eigwgvoJryrzwWA==", + "dependencies": { + "@babel/types": "^7.13.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.14.2", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.14.2.tgz", + "integrity": "sha512-NYZlkZRydxw+YT56IlhIcS8PAhb+FEUiOzuhFTfqDyPmzAhRge6ua0dQYT/Uh0t/EDHq05/i+e5M2d4XvjgarQ==", + "dependencies": { + "@babel/helper-get-function-arity": "^7.12.13", + "@babel/template": "^7.12.13", + "@babel/types": "^7.14.2" + } + }, + "node_modules/@babel/helper-get-function-arity": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz", + "integrity": "sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg==", + "dependencies": { + "@babel/types": "^7.12.13" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.13.16", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.13.16.tgz", + "integrity": "sha512-1eMtTrXtrwscjcAeO4BVK+vvkxaLJSPFz1w1KLawz6HLNi9bPFGBNwwDyVfiu1Tv/vRRFYfoGaKhmAQPGPn5Wg==", + "dependencies": { + "@babel/traverse": "^7.13.15", + "@babel/types": "^7.13.16" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.12.tgz", + "integrity": "sha512-48ql1CLL59aKbU94Y88Xgb2VFy7a95ykGRbJJaaVv+LX5U8wFpLfiGXJJGUozsmA1oEh/o5Bp60Voq7ACyA/Sw==", + "dependencies": { + "@babel/types": "^7.13.12" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.13.12.tgz", + "integrity": "sha512-4cVvR2/1B693IuOvSI20xqqa/+bl7lqAMR59R4iu39R9aOX8/JoYY1sFaNvUMyMBGnHdwvJgUrzNLoUZxXypxA==", + "dependencies": { + "@babel/types": "^7.13.12" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.14.2", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.14.2.tgz", + "integrity": "sha512-OznJUda/soKXv0XhpvzGWDnml4Qnwp16GN+D/kZIdLsWoHj05kyu8Rm5kXmMef+rVJZ0+4pSGLkeixdqNUATDA==", + "dependencies": { + "@babel/helper-module-imports": "^7.13.12", + "@babel/helper-replace-supers": "^7.13.12", + "@babel/helper-simple-access": "^7.13.12", + "@babel/helper-split-export-declaration": "^7.12.13", + "@babel/helper-validator-identifier": "^7.14.0", + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.14.2", + "@babel/types": "^7.14.2" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz", + "integrity": "sha512-BdWQhoVJkp6nVjB7nkFWcn43dkprYauqtk++Py2eaf/GRDFm5BxRqEIZCiHlZUGAVmtwKcsVL1dC68WmzeFmiA==", + "dependencies": { + "@babel/types": "^7.12.13" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.13.0.tgz", + "integrity": "sha512-ZPafIPSwzUlAoWT8DKs1W2VyF2gOWthGd5NGFMsBcMMol+ZhK+EQY/e6V96poa6PA/Bh+C9plWN0hXO1uB8AfQ==" + }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.13.0.tgz", + "integrity": "sha512-pUQpFBE9JvC9lrQbpX0TmeNIy5s7GnZjna2lhhcHC7DzgBs6fWn722Y5cfwgrtrqc7NAJwMvOa0mKhq6XaE4jg==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.12.13", + "@babel/helper-wrap-function": "^7.13.0", + "@babel/types": "^7.13.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.13.12.tgz", + "integrity": "sha512-Gz1eiX+4yDO8mT+heB94aLVNCL+rbuT2xy4YfyNqu8F+OI6vMvJK891qGBTqL9Uc8wxEvRW92Id6G7sDen3fFw==", + "dependencies": { + "@babel/helper-member-expression-to-functions": "^7.13.12", + "@babel/helper-optimise-call-expression": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.12" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.13.12.tgz", + "integrity": "sha512-7FEjbrx5SL9cWvXioDbnlYTppcZGuCY6ow3/D5vMggb2Ywgu4dMrpTJX0JdQAIcRRUElOIxF3yEooa9gUb9ZbA==", + "dependencies": { + "@babel/types": "^7.13.12" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz", + "integrity": "sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA==", + "dependencies": { + "@babel/types": "^7.12.1" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz", + "integrity": "sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg==", + "dependencies": { + "@babel/types": "^7.12.13" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.0.tgz", + "integrity": "sha512-V3ts7zMSu5lfiwWDVWzRDGIN+lnCEUdaXgtVHJgLb1rGaA6jMrtB9EmE7L18foXJIE8Un/A/h6NJfGQp/e1J4A==" + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.12.17", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz", + "integrity": "sha512-TopkMDmLzq8ngChwRlyjR6raKD6gMSae4JdYDB8bByKreQgG0RBTuKe9LRxW3wFtUnjxOPRKBDwEH6Mg5KeDfw==" + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.13.0.tgz", + "integrity": "sha512-1UX9F7K3BS42fI6qd2A4BjKzgGjToscyZTdp1DjknHLCIvpgne6918io+aL5LXFcER/8QWiwpoY902pVEqgTXA==", + "dependencies": { + "@babel/helper-function-name": "^7.12.13", + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.14.0.tgz", + "integrity": "sha512-+ufuXprtQ1D1iZTO/K9+EBRn+qPWMJjZSw/S0KlFrxCw4tkrzv9grgpDHkY9MeQTjTY8i2sp7Jep8DfU6tN9Mg==", + "dependencies": { + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.14.0", + "@babel/types": "^7.14.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.0.tgz", + "integrity": "sha512-YSCOwxvTYEIMSGaBQb5kDDsCopDdiUGsqpatp3fOlI4+2HQSkTmEVWnVuySdAC5EWCqSWWTv0ib63RjR7dTBdg==", + "dependencies": { + "@babel/helper-validator-identifier": "^7.14.0", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.14.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.14.2.tgz", + "integrity": "sha512-IoVDIHpsgE/fu7eXBeRWt8zLbDrSvD7H1gpomOkPpBoEN8KCruCqSDdqo8dddwQQrui30KSvQBaMUOJiuFu6QQ==", + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.13.12.tgz", + "integrity": "sha512-d0u3zWKcoZf379fOeJdr1a5WPDny4aOFZ6hlfKivgK0LY7ZxNfoaHL2fWwdGtHyVvra38FC+HVYkO+byfSA8AQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", + "@babel/plugin-proposal-optional-chaining": "^7.13.12" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" + } + }, + "node_modules/@babel/plugin-proposal-async-generator-functions": { + "version": "7.14.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.14.2.tgz", + "integrity": "sha512-b1AM4F6fwck4N8ItZ/AtC4FP/cqZqmKRQ4FaTDutwSYyjuhtvsGEMLK4N/ztV/ImP40BjIDyMgBQAeAMsQYVFQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-remap-async-to-generator": "^7.13.0", + "@babel/plugin-syntax-async-generators": "^7.8.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-class-properties": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.13.0.tgz", + "integrity": "sha512-KnTDjFNC1g+45ka0myZNvSBFLhNCLN+GeGYLDEA8Oq7MZ6yMgfLoIRh86GRT0FjtJhZw8JyUskP9uvj5pHM9Zg==", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.13.0", + "@babel/helper-plugin-utils": "^7.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-class-static-block": { + "version": "7.13.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.13.11.tgz", + "integrity": "sha512-fJTdFI4bfnMjvxJyNuaf8i9mVcZ0UhetaGEUHaHV9KEnibLugJkZAtXikR8KcYj+NYmI4DZMS8yQAyg+hvfSqg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-class-static-block": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, + "node_modules/@babel/plugin-proposal-dynamic-import": { + "version": "7.14.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.14.2.tgz", + "integrity": "sha512-oxVQZIWFh91vuNEMKltqNsKLFWkOIyJc95k2Gv9lWVyDfPUQGSSlbDEgWuJUU1afGE9WwlzpucMZ3yDRHIItkA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-export-namespace-from": { + "version": "7.14.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.14.2.tgz", + "integrity": "sha512-sRxW3z3Zp3pFfLAgVEvzTFutTXax837oOatUIvSG9o5gRj9mKwm3br1Se5f4QalTQs9x4AzlA/HrCWbQIHASUQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-json-strings": { + "version": "7.14.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.14.2.tgz", + "integrity": "sha512-w2DtsfXBBJddJacXMBhElGEYqCZQqN99Se1qeYn8DVLB33owlrlLftIbMzn5nz1OITfDVknXF433tBrLEAOEjA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-json-strings": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.14.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.14.2.tgz", + "integrity": "sha512-1JAZtUrqYyGsS7IDmFeaem+/LJqujfLZ2weLR9ugB0ufUPjzf8cguyVT1g5im7f7RXxuLq1xUxEzvm68uYRtGg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.14.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.14.2.tgz", + "integrity": "sha512-ebR0zU9OvI2N4qiAC38KIAK75KItpIPTpAtd2r4OZmMFeKbKJpUFLYP2EuDut82+BmYi8sz42B+TfTptJ9iG5Q==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-numeric-separator": { + "version": "7.14.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.14.2.tgz", + "integrity": "sha512-DcTQY9syxu9BpU3Uo94fjCB3LN9/hgPS8oUL7KrSW3bA2ePrKZZPJcc5y0hoJAM9dft3pGfErtEUvxXQcfLxUg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-object-rest-spread": { + "version": "7.14.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.14.2.tgz", + "integrity": "sha512-hBIQFxwZi8GIp934+nj5uV31mqclC1aYDhctDu5khTi9PCCUOczyy0b34W0oE9U/eJXiqQaKyVsmjeagOaSlbw==", + "dependencies": { + "@babel/compat-data": "^7.14.0", + "@babel/helper-compilation-targets": "^7.13.16", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.14.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-optional-catch-binding": { + "version": "7.14.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.14.2.tgz", + "integrity": "sha512-XtkJsmJtBaUbOxZsNk0Fvrv8eiqgneug0A6aqLFZ4TSkar2L5dSXWcnUKHgmjJt49pyB/6ZHvkr3dPgl9MOWRQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-optional-chaining": { + "version": "7.14.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.14.2.tgz", + "integrity": "sha512-qQByMRPwMZJainfig10BoaDldx/+VDtNcrA7qdNaEOAj6VXud+gfrkA8j4CRAU5HjnWREXqIpSpH30qZX1xivA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-methods": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.13.0.tgz", + "integrity": "sha512-MXyyKQd9inhx1kDYPkFRVOBXQ20ES8Pto3T7UZ92xj2mY0EVD8oAVzeyYuVfy/mxAdTSIayOvg+aVzcHV2bn6Q==", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.13.0", + "@babel/helper-plugin-utils": "^7.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.14.0.tgz", + "integrity": "sha512-59ANdmEwwRUkLjB7CRtwJxxwtjESw+X2IePItA+RGQh+oy5RmpCh/EvVVvh5XQc3yxsm5gtv0+i9oBZhaDNVTg==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.12.13", + "@babel/helper-create-class-features-plugin": "^7.14.0", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-private-property-in-object": "^7.14.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-unicode-property-regex": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.13.tgz", + "integrity": "sha512-XyJmZidNfofEkqFV5VC/bLabGmO5QzenPO/YOfGuEbgU+2sSwMmio3YLb4WtBgcmmdwZHyVyv8on77IUjQ5Gvg==", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.12.13.tgz", + "integrity": "sha512-ZmKQ0ZXR0nYpHZIIuj9zE7oIqCx2hw9TKi+lIo73NNrMPAZGHfS92/VRV0ZmPj6H2ffBgyFHXvJ5NYsNeEaP2A==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-flow": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.12.13.tgz", + "integrity": "sha512-J/RYxnlSLXZLVR7wTRsozxKT8qbsx1mNKJzXEEjQ0Kjx1ZACcyHgbanNWNCFtc36IzuWhYWPpvJFFoexoOWFmA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.13.tgz", + "integrity": "sha512-d4HM23Q1K7oq/SLNmG6mRt85l2csmQ0cHRaxRXjKW0YFdEXqlZ5kzFQKH5Uc3rDJECgu+yCRgPkG04Mm98R/1g==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.0.tgz", + "integrity": "sha512-bda3xF8wGl5/5btF794utNOL0Jw+9jE5C1sLZcoK7c4uonE/y3iQiyG+KbkF3WBV/paX58VCpjhxLPkdj5Fe4w==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.13.tgz", + "integrity": "sha512-A81F9pDwyS7yM//KwbCSDqy3Uj4NMIurtplxphWxoYtNPov7cJsDkAFNNyVlIZ3jwGycVsurZ+LtOA8gZ376iQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.13.0.tgz", + "integrity": "sha512-96lgJagobeVmazXFaDrbmCLQxBysKu7U6Do3mLsx27gf5Dk85ezysrs2BZUpXD703U/Su1xTBDxxar2oa4jAGg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.13.0.tgz", + "integrity": "sha512-3j6E004Dx0K3eGmhxVJxwwI89CTJrce7lg3UrtFuDAVQ/2+SJ/h/aSFOeE6/n0WB1GsOffsJp6MnPQNQ8nmwhg==", + "dependencies": { + "@babel/helper-module-imports": "^7.12.13", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-remap-async-to-generator": "^7.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.13.tgz", + "integrity": "sha512-zNyFqbc3kI/fVpqwfqkg6RvBgFpC4J18aKKMmv7KdQ/1GgREapSJAykLMVNwfRGO3BtHj3YQZl8kxCXPcVMVeg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.14.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.14.2.tgz", + "integrity": "sha512-neZZcP19NugZZqNwMTH+KoBjx5WyvESPSIOQb4JHpfd+zPfqcH65RMu5xJju5+6q/Y2VzYrleQTr+b6METyyxg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.14.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.14.2.tgz", + "integrity": "sha512-7oafAVcucHquA/VZCsXv/gmuiHeYd64UJyyTYU+MPfNu0KeNlxw06IeENBO8bJjXVbolu+j1MM5aKQtH1OMCNg==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.12.13", + "@babel/helper-function-name": "^7.14.2", + "@babel/helper-optimise-call-expression": "^7.12.13", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-replace-supers": "^7.13.12", + "@babel/helper-split-export-declaration": "^7.12.13", + "globals": "^11.1.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.13.0.tgz", + "integrity": "sha512-RRqTYTeZkZAz8WbieLTvKUEUxZlUTdmL5KGMyZj7FnMfLNKV4+r5549aORG/mgojRmFlQMJDUupwAMiF2Q7OUg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.13.17", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.13.17.tgz", + "integrity": "sha512-UAUqiLv+uRLO+xuBKKMEpC+t7YRNVRqBsWWq1yKXbBZBje/t3IXCiSinZhjn/DC3qzBfICeYd2EFGEbHsh5RLA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.13.tgz", + "integrity": "sha512-foDrozE65ZFdUC2OfgeOCrEPTxdB3yjqxpXh8CH+ipd9CHd4s/iq81kcUpyH8ACGNEPdFqbtzfgzbT/ZGlbDeQ==", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.13.tgz", + "integrity": "sha512-NfADJiiHdhLBW3pulJlJI2NB0t4cci4WTZ8FtdIuNc2+8pslXdPtRRAEWqUY+m9kNOk2eRYbTAOipAxlrOcwwQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.13.tgz", + "integrity": "sha512-fbUelkM1apvqez/yYx1/oICVnGo2KM5s63mhGylrmXUxK/IAXSIf87QIxVfZldWf4QsOafY6vV3bX8aMHSvNrA==", + "dependencies": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-flow-strip-types": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.13.0.tgz", + "integrity": "sha512-EXAGFMJgSX8gxWD7PZtW/P6M+z74jpx3wm/+9pn+c2dOawPpBkUX7BrfyPvo6ZpXbgRIEuwgwDb/MGlKvu2pOg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-flow": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.13.0.tgz", + "integrity": "sha512-IHKT00mwUVYE0zzbkDgNRP6SRzvfGCYsOxIRz8KsiaaHCcT9BWIkO+H9QRJseHBLOGBZkHUdHiqj6r0POsdytg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.13.tgz", + "integrity": "sha512-6K7gZycG0cmIwwF7uMK/ZqeCikCGVBdyP2J5SKNCXO5EOHcqi+z7Jwf8AmyDNcBgxET8DrEtCt/mPKPyAzXyqQ==", + "dependencies": { + "@babel/helper-function-name": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.13.tgz", + "integrity": "sha512-FW+WPjSR7hiUxMcKqyNjP05tQ2kmBCdpEpZHY1ARm96tGQCCBvXKnpjILtDplUnJ/eHZ0lALLM+d2lMFSpYJrQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.13.tgz", + "integrity": "sha512-kxLkOsg8yir4YeEPHLuO2tXP9R/gTjpuTOjshqSpELUN3ZAg2jfDnKUvzzJxObun38sw3wm4Uu69sX/zA7iRvg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.14.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.14.2.tgz", + "integrity": "sha512-hPC6XBswt8P3G2D1tSV2HzdKvkqOpmbyoy+g73JG0qlF/qx2y3KaMmXb1fLrpmWGLZYA0ojCvaHdzFWjlmV+Pw==", + "dependencies": { + "@babel/helper-module-transforms": "^7.14.2", + "@babel/helper-plugin-utils": "^7.13.0", + "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.14.0.tgz", + "integrity": "sha512-EX4QePlsTaRZQmw9BsoPeyh5OCtRGIhwfLquhxGp5e32w+dyL8htOcDwamlitmNFK6xBZYlygjdye9dbd9rUlQ==", + "dependencies": { + "@babel/helper-module-transforms": "^7.14.0", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-simple-access": "^7.13.12", + "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.13.8.tgz", + "integrity": "sha512-hwqctPYjhM6cWvVIlOIe27jCIBgHCsdH2xCJVAYQm7V5yTMoilbVMi9f6wKg0rpQAOn6ZG4AOyvCqFF/hUh6+A==", + "dependencies": { + "@babel/helper-hoist-variables": "^7.13.0", + "@babel/helper-module-transforms": "^7.13.0", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-validator-identifier": "^7.12.11", + "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.14.0.tgz", + "integrity": "sha512-nPZdnWtXXeY7I87UZr9VlsWme3Y0cfFFE41Wbxz4bbaexAjNMInXPFUpRRUJ8NoMm0Cw+zxbqjdPmLhcjfazMw==", + "dependencies": { + "@babel/helper-module-transforms": "^7.14.0", + "@babel/helper-plugin-utils": "^7.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.13.tgz", + "integrity": "sha512-Xsm8P2hr5hAxyYblrfACXpQKdQbx4m2df9/ZZSQ8MAhsadw06+jW7s9zsSw6he+mJZXRlVMyEnVktJo4zjk1WA==", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.13.tgz", + "integrity": "sha512-/KY2hbLxrG5GTQ9zzZSc3xWiOy379pIETEhbtzwZcw9rvuaVV4Fqy7BYGYOWZnaoXIQYbbJ0ziXLa/sKcGCYEQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.13.tgz", + "integrity": "sha512-JzYIcj3XtYspZDV8j9ulnoMPZZnF/Cj0LUxPOjR89BdBVx+zYJI9MdMIlUZjbXDX+6YVeS6I3e8op+qQ3BYBoQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-replace-supers": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.14.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.14.2.tgz", + "integrity": "sha512-NxoVmA3APNCC1JdMXkdYXuQS+EMdqy0vIwyDHeKHiJKRxmp1qGSdb0JLEIoPRhkx6H/8Qi3RJ3uqOCYw8giy9A==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.13.tgz", + "integrity": "sha512-nqVigwVan+lR+g8Fj8Exl0UQX2kymtjcWfMOYM1vTYEKujeyv2SkMgazf2qNcK7l4SDiKyTA/nHCPqL4e2zo1A==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.13.12.tgz", + "integrity": "sha512-jcEI2UqIcpCqB5U5DRxIl0tQEProI2gcu+g8VTIqxLO5Iidojb4d77q+fwGseCvd8af/lJ9masp4QWzBXFE2xA==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.12.13", + "@babel/helper-module-imports": "^7.13.12", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-jsx": "^7.12.13", + "@babel/types": "^7.13.12" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.13.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.13.15.tgz", + "integrity": "sha512-Bk9cOLSz8DiurcMETZ8E2YtIVJbFCPGW28DJWUakmyVWtQSm6Wsf0p4B4BfEr/eL2Nkhe/CICiUiMOCi1TPhuQ==", + "dependencies": { + "regenerator-transform": "^0.14.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.13.tgz", + "integrity": "sha512-xhUPzDXxZN1QfiOy/I5tyye+TRz6lA7z6xaT4CLOjPRMVg1ldRf0LHw0TDBpYL4vG78556WuHdyO9oi5UmzZBg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.13.tgz", + "integrity": "sha512-xpL49pqPnLtf0tVluuqvzWIgLEhuPpZzvs2yabUHSKRNlN7ScYU7aMlmavOeyXJZKgZKQRBlh8rHbKiJDraTSw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.13.0.tgz", + "integrity": "sha512-V6vkiXijjzYeFmQTr3dBxPtZYLPcUfY34DebOU27jIl2M/Y8Egm52Hw82CSjjPqd54GTlJs5x+CR7HeNr24ckg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.13.tgz", + "integrity": "sha512-Jc3JSaaWT8+fr7GRvQP02fKDsYk4K/lYwWq38r/UGfaxo89ajud321NH28KRQ7xy1Ybc0VUE5Pz8psjNNDUglg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.13.0.tgz", + "integrity": "sha512-d67umW6nlfmr1iehCcBv69eSUSySk1EsIS8aTDX4Xo9qajAh6mYtcl4kJrBkGXuxZPEgVr7RVfAvNW6YQkd4Mw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.13.tgz", + "integrity": "sha512-eKv/LmUJpMnu4npgfvs3LiHhJua5fo/CysENxa45YCQXZwKnGCQKAg87bvoqSW1fFT+HA32l03Qxsm8ouTY3ZQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.13.tgz", + "integrity": "sha512-0bHEkdwJ/sN/ikBHfSmOXPypN/beiGqjo+o4/5K+vxEFNPRPdImhviPakMKG4x96l85emoa0Z6cDflsdBusZbw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.13.tgz", + "integrity": "sha512-mDRzSNY7/zopwisPZ5kM9XKCfhchqIYwAKRERtEnhYscZB79VRekuRSoYbN0+KVe3y8+q1h6A4svXtP7N+UoCA==", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.14.2", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.14.2.tgz", + "integrity": "sha512-7dD7lVT8GMrE73v4lvDEb85cgcQhdES91BSD7jS/xjC6QY8PnRhux35ac+GCpbiRhp8crexBvZZqnaL6VrY8TQ==", + "dependencies": { + "@babel/compat-data": "^7.14.0", + "@babel/helper-compilation-targets": "^7.13.16", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-validator-option": "^7.12.17", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.13.12", + "@babel/plugin-proposal-async-generator-functions": "^7.14.2", + "@babel/plugin-proposal-class-properties": "^7.13.0", + "@babel/plugin-proposal-class-static-block": "^7.13.11", + "@babel/plugin-proposal-dynamic-import": "^7.14.2", + "@babel/plugin-proposal-export-namespace-from": "^7.14.2", + "@babel/plugin-proposal-json-strings": "^7.14.2", + "@babel/plugin-proposal-logical-assignment-operators": "^7.14.2", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.14.2", + "@babel/plugin-proposal-numeric-separator": "^7.14.2", + "@babel/plugin-proposal-object-rest-spread": "^7.14.2", + "@babel/plugin-proposal-optional-catch-binding": "^7.14.2", + "@babel/plugin-proposal-optional-chaining": "^7.14.2", + "@babel/plugin-proposal-private-methods": "^7.13.0", + "@babel/plugin-proposal-private-property-in-object": "^7.14.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.12.13", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.12.13", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.0", + "@babel/plugin-syntax-top-level-await": "^7.12.13", + "@babel/plugin-transform-arrow-functions": "^7.13.0", + "@babel/plugin-transform-async-to-generator": "^7.13.0", + "@babel/plugin-transform-block-scoped-functions": "^7.12.13", + "@babel/plugin-transform-block-scoping": "^7.14.2", + "@babel/plugin-transform-classes": "^7.14.2", + "@babel/plugin-transform-computed-properties": "^7.13.0", + "@babel/plugin-transform-destructuring": "^7.13.17", + "@babel/plugin-transform-dotall-regex": "^7.12.13", + "@babel/plugin-transform-duplicate-keys": "^7.12.13", + "@babel/plugin-transform-exponentiation-operator": "^7.12.13", + "@babel/plugin-transform-for-of": "^7.13.0", + "@babel/plugin-transform-function-name": "^7.12.13", + "@babel/plugin-transform-literals": "^7.12.13", + "@babel/plugin-transform-member-expression-literals": "^7.12.13", + "@babel/plugin-transform-modules-amd": "^7.14.2", + "@babel/plugin-transform-modules-commonjs": "^7.14.0", + "@babel/plugin-transform-modules-systemjs": "^7.13.8", + "@babel/plugin-transform-modules-umd": "^7.14.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.12.13", + "@babel/plugin-transform-new-target": "^7.12.13", + "@babel/plugin-transform-object-super": "^7.12.13", + "@babel/plugin-transform-parameters": "^7.14.2", + "@babel/plugin-transform-property-literals": "^7.12.13", + "@babel/plugin-transform-regenerator": "^7.13.15", + "@babel/plugin-transform-reserved-words": "^7.12.13", + "@babel/plugin-transform-shorthand-properties": "^7.12.13", + "@babel/plugin-transform-spread": "^7.13.0", + "@babel/plugin-transform-sticky-regex": "^7.12.13", + "@babel/plugin-transform-template-literals": "^7.13.0", + "@babel/plugin-transform-typeof-symbol": "^7.12.13", + "@babel/plugin-transform-unicode-escapes": "^7.12.13", + "@babel/plugin-transform-unicode-regex": "^7.12.13", + "@babel/preset-modules": "^0.1.4", + "@babel/types": "^7.14.2", + "babel-plugin-polyfill-corejs2": "^0.2.0", + "babel-plugin-polyfill-corejs3": "^0.2.0", + "babel-plugin-polyfill-regenerator": "^0.2.0", + "core-js-compat": "^3.9.0", + "semver": "^6.3.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-env/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/preset-modules": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.4.tgz", + "integrity": "sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.0.tgz", + "integrity": "sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==", + "dependencies": { + "regenerator-runtime": "^0.13.4" + } + }, + "node_modules/@babel/template": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz", + "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==", + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@babel/parser": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, + "node_modules/@babel/traverse": { + "version": "7.14.2", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.2.tgz", + "integrity": "sha512-TsdRgvBFHMyHOOzcP9S6QU0QQtjxlRpEYOy3mcCO5RgmC305ki42aSAmfZEMSSYBla2oZ9BMqYlncBaKmD/7iA==", + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@babel/generator": "^7.14.2", + "@babel/helper-function-name": "^7.14.2", + "@babel/helper-split-export-declaration": "^7.12.13", + "@babel/parser": "^7.14.2", + "@babel/types": "^7.14.2", + "debug": "^4.1.0", + "globals": "^11.1.0" + } + }, + "node_modules/@babel/types": { + "version": "7.14.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.2.tgz", + "integrity": "sha512-SdjAG/3DikRHpUOjxZgnkbR11xUlyDMUFJdvnIgZEE16mqmY0BINMmc4//JMJglEmn6i7sq6p+mGrFWyZ98EEw==", + "dependencies": { + "@babel/helper-validator-identifier": "^7.14.0", + "to-fast-properties": "^2.0.0" + } + }, + "node_modules/@iarna/toml": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/@iarna/toml/-/toml-2.2.5.tgz", + "integrity": "sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==" + }, + "node_modules/@mrmlnc/readdir-enhanced": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", + "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==", + "dependencies": { + "call-me-maybe": "^1.0.1", + "glob-to-regexp": "^0.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz", + "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/@parcel/fs": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@parcel/fs/-/fs-1.11.0.tgz", + "integrity": "sha512-86RyEqULbbVoeo8OLcv+LQ1Vq2PKBAvWTU9fCgALxuCTbbs5Ppcvll4Vr+Ko1AnmMzja/k++SzNAwJfeQXVlpA==", + "dependencies": { + "@parcel/utils": "^1.11.0", + "mkdirp": "^0.5.1", + "rimraf": "^2.6.2" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/@parcel/logger": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@parcel/logger/-/logger-1.11.1.tgz", + "integrity": "sha512-9NF3M6UVeP2udOBDILuoEHd8VrF4vQqoWHEafymO1pfSoOMfxrSJZw1MfyAAIUN/IFp9qjcpDCUbDZB+ioVevA==", + "dependencies": { + "@parcel/workers": "^1.11.0", + "chalk": "^2.1.0", + "grapheme-breaker": "^0.3.2", + "ora": "^2.1.0", + "strip-ansi": "^4.0.0" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/@parcel/utils": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@parcel/utils/-/utils-1.11.0.tgz", + "integrity": "sha512-cA3p4jTlaMeOtAKR/6AadanOPvKeg8VwgnHhOyfi0yClD0TZS/hi9xu12w4EzA/8NtHu0g6o4RDfcNjqN8l1AQ==", + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/@parcel/watcher": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-1.12.1.tgz", + "integrity": "sha512-od+uCtCxC/KoNQAIE1vWx1YTyKYY+7CTrxBJPRh3cDWw/C0tCtlBMVlrbplscGoEpt6B27KhJDCv82PBxOERNA==", + "dependencies": { + "@parcel/utils": "^1.11.0", + "chokidar": "^2.1.5" + } + }, + "node_modules/@parcel/workers": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@parcel/workers/-/workers-1.11.0.tgz", + "integrity": "sha512-USSjRAAQYsZFlv43FUPdD+jEGML5/8oLF0rUzPQTtK4q9kvaXr49F5ZplyLz5lox78cLZ0TxN2bIDQ1xhOkulQ==", + "dependencies": { + "@parcel/utils": "^1.11.0", + "physical-cpu-count": "^2.0.0" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/@types/q": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.4.tgz", + "integrity": "sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug==" + }, + "node_modules/abab": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", + "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==" + }, + "node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-globals": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.4.tgz", + "integrity": "sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A==", + "dependencies": { + "acorn": "^6.0.1", + "acorn-walk": "^6.0.1" + } + }, + "node_modules/acorn-globals/node_modules/acorn": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", + "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-walk": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.2.0.tgz", + "integrity": "sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/alphanum-sort": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", + "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=" + }, + "node_modules/ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "engines": { + "node": ">=4" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ansi-to-html": { + "version": "0.6.15", + "resolved": "https://registry.npmjs.org/ansi-to-html/-/ansi-to-html-0.6.15.tgz", + "integrity": "sha512-28ijx2aHJGdzbs+O5SNQF65r6rrKYnkuwTYm8lZlChuoJ9P1vVzIpWO20sQTqTPDXYp6NFwk326vApTtLVFXpQ==", + "dependencies": { + "entities": "^2.0.0" + }, + "bin": { + "ansi-to-html": "bin/ansi-to-html" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dependencies": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "node_modules/anymatch/node_modules/normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dependencies": { + "remove-trailing-separator": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", + "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=" + }, + "node_modules/array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "dependencies": { + "safer-buffer": "~2.1.0" + } + }, + "node_modules/asn1.js": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", + "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", + "dependencies": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "safer-buffer": "^2.1.0" + } + }, + "node_modules/asn1.js/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, + "node_modules/assert": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", + "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", + "dependencies": { + "object-assign": "^4.1.1", + "util": "0.10.3" + } + }, + "node_modules/assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/assert/node_modules/inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=" + }, + "node_modules/assert/node_modules/util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "dependencies": { + "inherits": "2.0.1" + } + }, + "node_modules/assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/async-each": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", + "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==" + }, + "node_modules/async-limiter": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", + "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==" + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + }, + "node_modules/atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "bin": { + "atob": "bin/atob.js" + }, + "engines": { + "node": ">= 4.5.0" + } + }, + "node_modules/aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "engines": { + "node": "*" + } + }, + "node_modules/aws4": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", + "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" + }, + "node_modules/babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "dependencies": { + "object.assign": "^4.1.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.2.0.tgz", + "integrity": "sha512-9bNwiR0dS881c5SHnzCmmGlMkJLl0OUZvxrxHo9w/iNoRuqaPjqlvBf4HrovXtQs/au5yKkpcdgfT1cC5PAZwg==", + "dependencies": { + "@babel/compat-data": "^7.13.11", + "@babel/helper-define-polyfill-provider": "^0.2.0", + "semver": "^6.1.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.2.0.tgz", + "integrity": "sha512-zZyi7p3BCUyzNxLx8KV61zTINkkV65zVkDAFNZmrTCRVhjo1jAS+YLvDJ9Jgd/w2tsAviCwFHReYfxO3Iql8Yg==", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.2.0", + "core-js-compat": "^3.9.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.2.0.tgz", + "integrity": "sha512-J7vKbCuD2Xi/eEHxquHN14bXAW9CXtecwuLrOIDJtcZzTaPzV1VdEfoUf9AzcRBMolKUQKM9/GVojeh0hFiqMg==", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.2.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "dependencies": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + } + }, + "node_modules/babel-runtime/node_modules/regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" + }, + "node_modules/babel-types": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", + "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "dependencies": { + "babel-runtime": "^6.26.0", + "esutils": "^2.0.2", + "lodash": "^4.17.4", + "to-fast-properties": "^1.0.3" + } + }, + "node_modules/babel-types/node_modules/to-fast-properties": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", + "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/babylon-walk": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/babylon-walk/-/babylon-walk-1.0.2.tgz", + "integrity": "sha1-OxWl3btIKni0zpwByLoYFwLZ1s4=", + "dependencies": { + "babel-runtime": "^6.11.6", + "babel-types": "^6.15.0", + "lodash.clone": "^4.5.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "node_modules/base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dependencies": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/base/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "dependencies": { + "tweetnacl": "^0.14.3" + } + }, + "node_modules/binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dependencies": { + "file-uri-to-path": "1.0.0" + } + }, + "node_modules/bn.js": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", + "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==" + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=" + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dependencies": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/brfs": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/brfs/-/brfs-1.6.1.tgz", + "integrity": "sha512-OfZpABRQQf+Xsmju8XE9bDjs+uU4vLREGolP7bDgcpsI17QREyZ4Bl+2KLxxx1kCgA0fAIhKQBaBYh+PEcCqYQ==", + "dependencies": { + "quote-stream": "^1.0.1", + "resolve": "^1.1.5", + "static-module": "^2.2.0", + "through2": "^2.0.0" + }, + "bin": { + "brfs": "bin/cmd.js" + } + }, + "node_modules/brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=" + }, + "node_modules/browser-process-hrtime": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==" + }, + "node_modules/browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dependencies": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "dependencies": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "node_modules/browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "dependencies": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/browserify-rsa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", + "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", + "dependencies": { + "bn.js": "^5.0.0", + "randombytes": "^2.0.1" + } + }, + "node_modules/browserify-sign": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", + "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", + "dependencies": { + "bn.js": "^5.1.1", + "browserify-rsa": "^4.0.1", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.5.3", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.5", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + } + }, + "node_modules/browserify-sign/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/browserify-sign/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "dependencies": { + "pako": "~1.0.5" + } + }, + "node_modules/browserslist": { + "version": "4.16.6", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz", + "integrity": "sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==", + "dependencies": { + "caniuse-lite": "^1.0.30001219", + "colorette": "^1.2.2", + "electron-to-chromium": "^1.3.723", + "escalade": "^3.1.1", + "node-releases": "^1.1.71" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + } + }, + "node_modules/buffer": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", + "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", + "dependencies": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, + "node_modules/buffer-equal": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-0.0.1.tgz", + "integrity": "sha1-kbx0sR6kBbyRa8aqkI+q+ltKrEs=", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" + }, + "node_modules/buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=" + }, + "node_modules/builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=" + }, + "node_modules/cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dependencies": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/call-me-maybe": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", + "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=" + }, + "node_modules/caller-callsite": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", + "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", + "dependencies": { + "callsites": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/caller-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", + "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", + "dependencies": { + "caller-callsite": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/callsites": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", + "engines": { + "node": ">=4" + } + }, + "node_modules/caniuse-api": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", + "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", + "dependencies": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001228", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001228.tgz", + "integrity": "sha512-QQmLOGJ3DEgokHbMSA8cj2a+geXqmnpyOFT0lhQV6P3/YOJvGDEwoedcwxEQ30gJIwIIunHIicunJ2rzK5gB2A==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + } + }, + "node_modules/caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "deprecated": "Chokidar 2 will break on node v14+. Upgrade to chokidar 3 with 15x less dependencies.", + "dependencies": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + }, + "optionalDependencies": { + "fsevents": "^1.2.7" + } + }, + "node_modules/cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dependencies": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/is-descriptor/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "dependencies": { + "restore-cursor": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cli-spinners": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-1.3.1.tgz", + "integrity": "sha512-1QL4544moEsDVH9T/l6Cemov/37iv1RtoKf7NJ04A60+4MREXNfx/QvavbH6QoGdsD4N4Mwy49cmaINR/o2mdg==", + "engines": { + "node": ">=4" + } + }, + "node_modules/clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/coa": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz", + "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==", + "dependencies": { + "@types/q": "^1.5.1", + "chalk": "^2.4.1", + "q": "^1.1.2" + }, + "engines": { + "node": ">= 4.0" + } + }, + "node_modules/collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "dependencies": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/color": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/color/-/color-3.1.3.tgz", + "integrity": "sha512-xgXAcTHa2HeFCGLE9Xs/R82hujGtu9Jd9x4NW3T34+OMs7VoPsjwzRczKHvTAHeJwWFwX5j15+MgAppE8ztObQ==", + "dependencies": { + "color-convert": "^1.9.1", + "color-string": "^1.5.4" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "node_modules/color-string": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.5.tgz", + "integrity": "sha512-jgIoum0OfQfq9Whcfc2z/VhCNcmQjWbey6qBX0vqt7YICflUmBCh9E9CiQD5GSJ+Uehixm3NUwHVhqUAWRivZg==", + "dependencies": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "node_modules/colorette": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz", + "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==" + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/command-exists": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz", + "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==" + }, + "node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + }, + "node_modules/component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "node_modules/concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "engines": [ + "node >= 0.8" + ], + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "node_modules/console-browserify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==" + }, + "node_modules/constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=" + }, + "node_modules/convert-source-map": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", + "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", + "dependencies": { + "safe-buffer": "~5.1.1" + } + }, + "node_modules/copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/core-js": { + "version": "2.6.12", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", + "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==", + "deprecated": "core-js@<3.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Please, upgrade your dependencies to the actual version of core-js.", + "hasInstallScript": true + }, + "node_modules/core-js-compat": { + "version": "3.12.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.12.1.tgz", + "integrity": "sha512-i6h5qODpw6EsHAoIdQhKoZdWn+dGBF3dSS8m5tif36RlWvW3A6+yu2S16QHUo3CrkzrnEskMAt9f8FxmY9fhWQ==", + "dependencies": { + "browserslist": "^4.16.6", + "semver": "7.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-js-compat/node_modules/semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, + "node_modules/cosmiconfig": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", + "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", + "dependencies": { + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/create-ecdh": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", + "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", + "dependencies": { + "bn.js": "^4.1.0", + "elliptic": "^6.5.3" + } + }, + "node_modules/create-ecdh/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, + "node_modules/create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dependencies": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "node_modules/create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dependencies": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "node_modules/cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "node_modules/crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "dependencies": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + }, + "engines": { + "node": "*" + } + }, + "node_modules/css-color-names": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", + "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=", + "engines": { + "node": "*" + } + }, + "node_modules/css-declaration-sorter": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz", + "integrity": "sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA==", + "dependencies": { + "postcss": "^7.0.1", + "timsort": "^0.3.0" + }, + "engines": { + "node": ">4" + } + }, + "node_modules/css-modules-loader-core": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/css-modules-loader-core/-/css-modules-loader-core-1.1.0.tgz", + "integrity": "sha1-WQhmgpShvs0mGuCkziGwtVHyHRY=", + "dependencies": { + "icss-replace-symbols": "1.1.0", + "postcss": "6.0.1", + "postcss-modules-extract-imports": "1.1.0", + "postcss-modules-local-by-default": "1.2.0", + "postcss-modules-scope": "1.1.0", + "postcss-modules-values": "1.3.0" + } + }, + "node_modules/css-modules-loader-core/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/css-modules-loader-core/node_modules/ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/css-modules-loader-core/node_modules/chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dependencies": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/css-modules-loader-core/node_modules/chalk/node_modules/supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/css-modules-loader-core/node_modules/has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/css-modules-loader-core/node_modules/postcss": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.1.tgz", + "integrity": "sha1-AA29H47vIXqjaLmiEsX8QLKo8/I=", + "dependencies": { + "chalk": "^1.1.3", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/css-modules-loader-core/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/css-modules-loader-core/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/css-modules-loader-core/node_modules/supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dependencies": { + "has-flag": "^1.0.0" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/css-select": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", + "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^3.2.1", + "domutils": "^1.7.0", + "nth-check": "^1.0.2" + } + }, + "node_modules/css-select-base-adapter": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz", + "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==" + }, + "node_modules/css-selector-tokenizer": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.3.tgz", + "integrity": "sha512-jWQv3oCEL5kMErj4wRnK/OPoBi0D+P1FR2cDCKYPaMeD2eW3/mttav8HT4hT1CKopiJI/psEULjkClhvJo4Lvg==", + "dependencies": { + "cssesc": "^3.0.0", + "fastparse": "^1.1.2" + } + }, + "node_modules/css-tree": { + "version": "1.0.0-alpha.37", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz", + "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==", + "dependencies": { + "mdn-data": "2.0.4", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/css-what": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz", + "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==", + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cssnano": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.11.tgz", + "integrity": "sha512-6gZm2htn7xIPJOHY824ERgj8cNPgPxyCSnkXc4v7YvNW+TdVfzgngHcEhy/8D11kUWRUMbke+tC+AUcUsnMz2g==", + "dependencies": { + "cosmiconfig": "^5.0.0", + "cssnano-preset-default": "^4.0.8", + "is-resolvable": "^1.0.0", + "postcss": "^7.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/cssnano-preset-default": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.8.tgz", + "integrity": "sha512-LdAyHuq+VRyeVREFmuxUZR1TXjQm8QQU/ktoo/x7bz+SdOge1YKc5eMN6pRW7YWBmyq59CqYba1dJ5cUukEjLQ==", + "dependencies": { + "css-declaration-sorter": "^4.0.1", + "cssnano-util-raw-cache": "^4.0.1", + "postcss": "^7.0.0", + "postcss-calc": "^7.0.1", + "postcss-colormin": "^4.0.3", + "postcss-convert-values": "^4.0.1", + "postcss-discard-comments": "^4.0.2", + "postcss-discard-duplicates": "^4.0.2", + "postcss-discard-empty": "^4.0.1", + "postcss-discard-overridden": "^4.0.1", + "postcss-merge-longhand": "^4.0.11", + "postcss-merge-rules": "^4.0.3", + "postcss-minify-font-values": "^4.0.2", + "postcss-minify-gradients": "^4.0.2", + "postcss-minify-params": "^4.0.2", + "postcss-minify-selectors": "^4.0.2", + "postcss-normalize-charset": "^4.0.1", + "postcss-normalize-display-values": "^4.0.2", + "postcss-normalize-positions": "^4.0.2", + "postcss-normalize-repeat-style": "^4.0.2", + "postcss-normalize-string": "^4.0.2", + "postcss-normalize-timing-functions": "^4.0.2", + "postcss-normalize-unicode": "^4.0.1", + "postcss-normalize-url": "^4.0.1", + "postcss-normalize-whitespace": "^4.0.2", + "postcss-ordered-values": "^4.1.2", + "postcss-reduce-initial": "^4.0.3", + "postcss-reduce-transforms": "^4.0.2", + "postcss-svgo": "^4.0.3", + "postcss-unique-selectors": "^4.0.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/cssnano-util-get-arguments": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz", + "integrity": "sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8=", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/cssnano-util-get-match": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz", + "integrity": "sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0=", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/cssnano-util-raw-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz", + "integrity": "sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==", + "dependencies": { + "postcss": "^7.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/cssnano-util-same-parent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz", + "integrity": "sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/csso": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", + "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", + "dependencies": { + "css-tree": "^1.1.2" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/csso/node_modules/css-tree": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", + "dependencies": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/csso/node_modules/mdn-data": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==" + }, + "node_modules/cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==" + }, + "node_modules/cssstyle": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.4.0.tgz", + "integrity": "sha512-GBrLZYZ4X4x6/QEoBnIrqb8B/f5l4+8me2dkom/j1Gtbxy0kBv6OGzKuAsGM75bkGwGAFkt56Iwg28S3XTZgSA==", + "dependencies": { + "cssom": "0.3.x" + } + }, + "node_modules/dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dependencies": { + "assert-plus": "^1.0.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/data-urls": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz", + "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==", + "dependencies": { + "abab": "^2.0.0", + "whatwg-mimetype": "^2.2.0", + "whatwg-url": "^7.0.0" + } + }, + "node_modules/deasync": { + "version": "0.1.21", + "resolved": "https://registry.npmjs.org/deasync/-/deasync-0.1.21.tgz", + "integrity": "sha512-kUmM8Y+PZpMpQ+B4AuOW9k2Pfx/mSupJtxOsLzmnHY2WqZUYRFccFn2RhzPAqt3Xb+sorK/badW2D4zNzqZz5w==", + "hasInstallScript": true, + "dependencies": { + "bindings": "^1.5.0", + "node-addon-api": "^1.7.1" + }, + "engines": { + "node": ">=0.11.0" + } + }, + "node_modules/debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=" + }, + "node_modules/defaults": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", + "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", + "dependencies": { + "clone": "^1.0.2" + } + }, + "node_modules/defaults/node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dependencies": { + "object-keys": "^1.0.12" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dependencies": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/des.js": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", + "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", + "dependencies": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" + }, + "node_modules/diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "dependencies": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + } + }, + "node_modules/diffie-hellman/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, + "node_modules/dom-serializer": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", + "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", + "dependencies": { + "domelementtype": "^2.0.1", + "entities": "^2.0.0" + } + }, + "node_modules/dom-serializer/node_modules/domelementtype": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", + "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] + }, + "node_modules/domain-browser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", + "engines": { + "node": ">=0.4", + "npm": ">=1.2" + } + }, + "node_modules/domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==" + }, + "node_modules/domexception": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", + "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", + "dependencies": { + "webidl-conversions": "^4.0.2" + } + }, + "node_modules/domhandler": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", + "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", + "dependencies": { + "domelementtype": "1" + } + }, + "node_modules/domutils": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", + "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", + "dependencies": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "node_modules/dot-prop": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "dependencies": { + "is-obj": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dotenv": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-5.0.1.tgz", + "integrity": "sha512-4As8uPrjfwb7VXC+WnLCbXK7y+Ueb2B3zgNCePYfhxS1PYeaO1YTeplffTEcbfLhvFNGLAz90VvJs9yomG7bow==", + "engines": { + "node": ">=4.6.0" + } + }, + "node_modules/dotenv-expand": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz", + "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==" + }, + "node_modules/duplexer2": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", + "dependencies": { + "readable-stream": "^2.0.2" + } + }, + "node_modules/ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "dependencies": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + }, + "node_modules/electron-to-chromium": { + "version": "1.3.728", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.728.tgz", + "integrity": "sha512-SHv4ziXruBpb1Nz4aTuqEHBYi/9GNCJMYIJgDEXrp/2V01nFXMNFUTli5Z85f5ivSkioLilQatqBYFB44wNJrA==" + }, + "node_modules/elliptic": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", + "dependencies": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/elliptic/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/envinfo": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", + "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", + "bin": { + "envinfo": "dist/cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-abstract": { + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0.tgz", + "integrity": "sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw==", + "dependencies": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "get-intrinsic": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.2", + "is-callable": "^1.2.3", + "is-negative-zero": "^2.0.1", + "is-regex": "^1.1.2", + "is-string": "^1.0.5", + "object-inspect": "^1.9.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.2", + "string.prototype.trimend": "^1.0.4", + "string.prototype.trimstart": "^1.0.4", + "unbox-primitive": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-abstract/node_modules/object-inspect": { + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.10.3.tgz", + "integrity": "sha512-e5mCJlSH7poANfC8z8S9s9S2IN5/4Zb3aZ33f5s8YqoazCFzNLloLU8r5VCG+G7WoqLvAAZoVMcy3tp/3X0Plw==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/escodegen": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.9.1.tgz", + "integrity": "sha512-6hTjO1NAWkHnDk3OqQ4YrCuwwmGHL9S3nPlzBOUG/R44rda3wLNrfvQ5fkSGjyhHFKM7ALPKcKGrwvCLe0lC7Q==", + "dependencies": { + "esprima": "^3.1.3", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=4.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/escodegen/node_modules/esprima": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", + "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dependencies": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dependencies": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/expand-brackets/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-descriptor/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dependencies": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "engines": [ + "node >=0.6.0" + ] + }, + "node_modules/falafel": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/falafel/-/falafel-2.2.4.tgz", + "integrity": "sha512-0HXjo8XASWRmsS0X1EkhwEMZaD3Qvp7FfURwjLKjG1ghfRm/MGZl2r4cWUTv41KdNghTw4OUMmVtdGQp3+H+uQ==", + "dependencies": { + "acorn": "^7.1.1", + "foreach": "^2.0.5", + "isarray": "^2.0.1", + "object-keys": "^1.0.6" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/falafel/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "node_modules/fast-glob": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz", + "integrity": "sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==", + "dependencies": { + "@mrmlnc/readdir-enhanced": "^2.2.1", + "@nodelib/fs.stat": "^1.1.2", + "glob-parent": "^3.1.0", + "is-glob": "^4.0.0", + "merge2": "^1.2.3", + "micromatch": "^3.1.10" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" + }, + "node_modules/fastparse": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz", + "integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==" + }, + "node_modules/file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==" + }, + "node_modules/filesize": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.6.1.tgz", + "integrity": "sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg==", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dependencies": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/foreach": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", + "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=" + }, + "node_modules/forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "engines": { + "node": "*" + } + }, + "node_modules/form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 0.12" + } + }, + "node_modules/fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dependencies": { + "map-cache": "^0.2.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "node_modules/fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "deprecated": "fsevents 1 will break on node v14+ and could be using insecure binaries. Upgrade to fsevents 2.", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "dependencies": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + }, + "engines": { + "node": ">= 4.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-port": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz", + "integrity": "sha1-3Xzn3hh8Bsi/NTeWrHHgmfCYDrw=", + "engines": { + "node": ">=4" + } + }, + "node_modules/get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dependencies": { + "assert-plus": "^1.0.0" + } + }, + "node_modules/glob": { + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dependencies": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + } + }, + "node_modules/glob-parent/node_modules/is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dependencies": { + "is-extglob": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/glob-to-regexp": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz", + "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=" + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", + "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==" + }, + "node_modules/grapheme-breaker": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/grapheme-breaker/-/grapheme-breaker-0.3.2.tgz", + "integrity": "sha1-W55reMODJFLSuiuxy4MPlidkEKw=", + "dependencies": { + "brfs": "^1.2.0", + "unicode-trie": "^0.3.1" + } + }, + "node_modules/har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "engines": { + "node": ">=4" + } + }, + "node_modules/har-validator": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "deprecated": "this library is no longer supported", + "dependencies": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-ansi/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-bigints": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", + "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "engines": { + "node": ">=4" + } + }, + "node_modules/has-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "dependencies": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "dependencies": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values/node_modules/kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/hash-base": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "dependencies": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/hash-base/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/hash-base/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dependencies": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "node_modules/hex-color-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz", + "integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==" + }, + "node_modules/hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "dependencies": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/hsl-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz", + "integrity": "sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4=" + }, + "node_modules/hsla-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz", + "integrity": "sha1-wc56MWjIxmFAM6S194d/OyJfnDg=" + }, + "node_modules/html-encoding-sniffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", + "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", + "dependencies": { + "whatwg-encoding": "^1.0.1" + } + }, + "node_modules/html-tags": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-1.2.0.tgz", + "integrity": "sha1-x43mW1Zjqll5id0rerSSANfk25g=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/htmlnano": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/htmlnano/-/htmlnano-0.2.9.tgz", + "integrity": "sha512-jWTtP3dCd7R8x/tt9DK3pvpcQd7HDMcRPUqPxr/i9989q2k5RHIhmlRDFeyQ/LSd8IKrteG8Ce5g0Ig4eGIipg==", + "dependencies": { + "cssnano": "^4.1.11", + "posthtml": "^0.15.1", + "purgecss": "^2.3.0", + "relateurl": "^0.2.7", + "srcset": "^3.0.0", + "svgo": "^1.3.2", + "terser": "^5.6.1", + "timsort": "^0.3.0", + "uncss": "^0.17.3" + } + }, + "node_modules/htmlnano/node_modules/dom-serializer": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.1.tgz", + "integrity": "sha512-Pv2ZluG5ife96udGgEDovOOOA5UELkltfJpnIExPrAk1LTvecolUGn6lIaoLh86d83GiB86CjzciMd9BuRB71Q==", + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "entities": "^2.0.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/htmlnano/node_modules/domelementtype": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", + "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] + }, + "node_modules/htmlnano/node_modules/domhandler": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.2.0.tgz", + "integrity": "sha512-zk7sgt970kzPks2Bf+dwT/PLzghLnsivb9CcxkvR8Mzr66Olr0Ofd8neSbglHJHaHa2MadfoSdNlKYAaafmWfA==", + "dependencies": { + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/htmlnano/node_modules/domutils": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.6.0.tgz", + "integrity": "sha512-y0BezHuy4MDYxh6OvolXYsH+1EMGmFbwv5FKW7ovwMG6zTPWqNPq3WF9ayZssFq+UlKdffGLbOEaghNdaOm1WA==", + "dependencies": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/htmlnano/node_modules/htmlparser2": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", + "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" + } + }, + "node_modules/htmlnano/node_modules/posthtml": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/posthtml/-/posthtml-0.15.2.tgz", + "integrity": "sha512-YugEJ5ze/0DLRIVBjCpDwANWL4pPj1kHJ/2llY8xuInr0nbkon3qTiMPe5LQa+cCwNjxS7nAZZTp+1M+6mT4Zg==", + "dependencies": { + "posthtml-parser": "^0.7.2", + "posthtml-render": "^1.3.1" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/htmlnano/node_modules/posthtml-parser": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/posthtml-parser/-/posthtml-parser-0.7.2.tgz", + "integrity": "sha512-LjEEG/3fNcWZtBfsOE3Gbyg1Li4CmsZRkH1UmbMR7nKdMXVMYI3B4/ZMiCpaq8aI1Aym4FRMMW9SAOLSwOnNsQ==", + "dependencies": { + "htmlparser2": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/htmlnano/node_modules/source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/htmlnano/node_modules/terser": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.7.0.tgz", + "integrity": "sha512-HP5/9hp2UaZt5fYkuhNBR8YyRcT8juw8+uFbAme53iN9hblvKnLUTKkmwJG6ocWpIKf8UK4DoeWG4ty0J6S6/g==", + "dependencies": { + "commander": "^2.20.0", + "source-map": "~0.7.2", + "source-map-support": "~0.5.19" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/htmlparser2": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", + "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", + "dependencies": { + "domelementtype": "^1.3.1", + "domhandler": "^2.3.0", + "domutils": "^1.5.1", + "entities": "^1.1.1", + "inherits": "^2.0.1", + "readable-stream": "^3.1.1" + } + }, + "node_modules/htmlparser2/node_modules/entities": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", + "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==" + }, + "node_modules/htmlparser2/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/http-errors": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz", + "integrity": "sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==", + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dependencies": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + }, + "engines": { + "node": ">=0.8", + "npm": ">=1.3.7" + } + }, + "node_modules/https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=" + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/icss-replace-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz", + "integrity": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=" + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/import-fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", + "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", + "dependencies": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/indexes-of": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", + "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=" + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/is-absolute-url": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", + "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" + }, + "node_modules/is-bigint": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.2.tgz", + "integrity": "sha512-0JV5+SOCQkIdzjBK9buARcV804Ddu7A0Qet6sHi3FimE9ne6m4BGQZfRn+NZiXbBk4F4XmHfDZIipLj9pX8dSA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dependencies": { + "binary-extensions": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.1.tgz", + "integrity": "sha512-bXdQWkECBUIAcCkeH1unwJLIpZYaa5VvuygSyS/c2lf719mTKZDU5UdDRlpd01UjADgmW8RfqaP+mRaVPdr/Ng==", + "dependencies": { + "call-bind": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + }, + "node_modules/is-callable": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", + "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-color-stop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz", + "integrity": "sha1-z/9HGu5N1cnhWFmPvhKWe1za00U=", + "dependencies": { + "css-color-names": "^0.0.4", + "hex-color-regex": "^1.1.0", + "hsl-regex": "^1.0.0", + "hsla-regex": "^1.0.0", + "rgb-regex": "^1.0.1", + "rgba-regex": "^1.0.0" + } + }, + "node_modules/is-core-module": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.4.0.tgz", + "integrity": "sha512-6A2fkfq1rfeQZjxrZJGerpLCTHRNEBiSgnu0+obeJpEPZRUooHgsizvzv0ZjJwOz3iWIHdJtVWJ/tmPr3D21/A==", + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-date-object": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.4.tgz", + "integrity": "sha512-/b4ZVsG7Z5XVtIxs/h9W8nvfLgSAyKYdtGWQLbqy6jA1icmgjf8WCoTKgeS4wy5tYaPePouzFMANbnj94c2Z+A==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dependencies": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-descriptor/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-directory": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", + "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-html": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-html/-/is-html-1.1.0.tgz", + "integrity": "sha1-4E8cGNOUhRETlvmgJz6rUa8hhGQ=", + "dependencies": { + "html-tags": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", + "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.5.tgz", + "integrity": "sha512-RU0lI/n95pMoUKu9v1BZP5MBcZuNSVJkMkAG2dJqC4z2GlkGUNeH68SuHuBKBD/XFe+LHZ+f9BKkLET60Niedw==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-regex": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.3.tgz", + "integrity": "sha512-qSVXFz28HM7y+IWX6vLCsexdlvzT1PJNFSBuaQLQ5o0IEw8UDYW6/2+eCMVyIsbM8CNLX2a/QWmSpyxYEHY7CQ==", + "dependencies": { + "call-bind": "^1.0.2", + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-resolvable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", + "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==" + }, + "node_modules/is-string": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.6.tgz", + "integrity": "sha512-2gdzbKUuqtQ3lYNrUTQYoClPhm7oQu4UdpSZMp1/DGgkHBT8E2Z1l0yMdb6D4zNAxwDiMv8MdulKROJGNl0Q0w==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + }, + "node_modules/is-url": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz", + "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==" + }, + "node_modules/is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "engines": { + "node": ">=4" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" + }, + "node_modules/jsdom": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-14.1.0.tgz", + "integrity": "sha512-O901mfJSuTdwU2w3Sn+74T+RnDVP+FuV5fH8tcPWyqrseRAb0s5xOtPgCFiPOtLcyK7CLIJwPyD83ZqQWvA5ng==", + "dependencies": { + "abab": "^2.0.0", + "acorn": "^6.0.4", + "acorn-globals": "^4.3.0", + "array-equal": "^1.0.0", + "cssom": "^0.3.4", + "cssstyle": "^1.1.1", + "data-urls": "^1.1.0", + "domexception": "^1.0.1", + "escodegen": "^1.11.0", + "html-encoding-sniffer": "^1.0.2", + "nwsapi": "^2.1.3", + "parse5": "5.1.0", + "pn": "^1.1.0", + "request": "^2.88.0", + "request-promise-native": "^1.0.5", + "saxes": "^3.1.9", + "symbol-tree": "^3.2.2", + "tough-cookie": "^2.5.0", + "w3c-hr-time": "^1.0.1", + "w3c-xmlserializer": "^1.1.2", + "webidl-conversions": "^4.0.2", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^7.0.0", + "ws": "^6.1.2", + "xml-name-validator": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jsdom/node_modules/acorn": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", + "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/jsdom/node_modules/escodegen": { + "version": "1.14.3", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", + "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=4.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/jsdom/node_modules/ws": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", + "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", + "dependencies": { + "async-limiter": "~1.0.0" + } + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" + }, + "node_modules/json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + }, + "node_modules/json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "engines": [ + "node >=0.6.0" + ], + "dependencies": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dependencies": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "node_modules/lodash.clone": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clone/-/lodash.clone-4.5.0.tgz", + "integrity": "sha1-GVhwRQ9aExkkeN9Lw9I9LeoZB7Y=" + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=" + }, + "node_modules/lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=" + }, + "node_modules/lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=" + }, + "node_modules/lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=" + }, + "node_modules/log-symbols": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", + "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", + "dependencies": { + "chalk": "^2.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/magic-string": { + "version": "0.22.5", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.22.5.tgz", + "integrity": "sha512-oreip9rJZkzvA8Qzk9HFs8fZGF/u7H/gtrE8EN6RjKJ9kh2HlC+yQ2QezifqTZfGyiuAV0dRv5a+y/8gBb1m9w==", + "dependencies": { + "vlq": "^0.2.2" + } + }, + "node_modules/map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dependencies": { + "object-visit": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/mdn-data": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz", + "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==" + }, + "node_modules/merge-source-map": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.0.4.tgz", + "integrity": "sha1-pd5GU42uhNQRTMXqArR3KmNGcB8=", + "dependencies": { + "source-map": "^0.5.6" + } + }, + "node_modules/merge-source-map/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/micromatch/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/micromatch/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/micromatch/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dependencies": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + }, + "bin": { + "miller-rabin": "bin/miller-rabin" + } + }, + "node_modules/miller-rabin/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.47.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.47.0.tgz", + "integrity": "sha512-QBmA/G2y+IfeS4oktet3qRZ+P5kPhCKRXxXnQEudYqUaEioAU1/Lq2us3D/t1Jfo4hE9REQPrbB7K5sOczJVIw==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.30", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.30.tgz", + "integrity": "sha512-crmjA4bLtR8m9qLpHvgxSChT+XoSlZi8J4n/aIdn3z92e/U47Z0V/yl+Wh9W046GgFVAmoNR/fmdbZYcSSIUeg==", + "dependencies": { + "mime-db": "1.47.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "engines": { + "node": ">=4" + } + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" + }, + "node_modules/minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=" + }, + "node_modules/minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + }, + "node_modules/mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "dependencies": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/mixin-deep/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/nan": { + "version": "2.14.2", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.2.tgz", + "integrity": "sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ==", + "optional": true + }, + "node_modules/nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nanomatch/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nanomatch/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nanomatch/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" + }, + "node_modules/node-addon-api": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-1.7.2.tgz", + "integrity": "sha512-ibPK3iA+vaY1eEjESkQkM0BbCqFOaZMiXRTtdB0u7b4djtY6JnsjvPdUHVMg6xQt3B8fpTTWHI9A+ADjM9frzg==" + }, + "node_modules/node-forge": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz", + "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==", + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/node-libs-browser": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", + "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", + "dependencies": { + "assert": "^1.1.1", + "browserify-zlib": "^0.2.0", + "buffer": "^4.3.0", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "crypto-browserify": "^3.11.0", + "domain-browser": "^1.1.1", + "events": "^3.0.0", + "https-browserify": "^1.0.0", + "os-browserify": "^0.3.0", + "path-browserify": "0.0.1", + "process": "^0.11.10", + "punycode": "^1.2.4", + "querystring-es3": "^0.2.0", + "readable-stream": "^2.3.3", + "stream-browserify": "^2.0.1", + "stream-http": "^2.7.2", + "string_decoder": "^1.0.0", + "timers-browserify": "^2.0.4", + "tty-browserify": "0.0.0", + "url": "^0.11.0", + "util": "^0.11.0", + "vm-browserify": "^1.0.1" + } + }, + "node_modules/node-releases": { + "version": "1.1.72", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.72.tgz", + "integrity": "sha512-LLUo+PpH3dU6XizX3iVoubUNheF/owjXCZZ5yACDxNnPtgFuludV1ZL3ayK1kVep42Rmm0+R9/Y60NQbZ2bifw==" + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-url": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz", + "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/nth-check": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", + "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", + "dependencies": { + "boolbase": "~1.0.0" + } + }, + "node_modules/nwsapi": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", + "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==" + }, + "node_modules/oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "engines": { + "node": "*" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dependencies": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/is-descriptor/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.4.1.tgz", + "integrity": "sha512-wqdhLpfCUbEsoEwl3FXwGyv8ief1k/1aUdIPCqVnupM6e8l63BEJdiF/0swtn04/8p05tG/T0FrpTlfwvljOdw==" + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "dependencies": { + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.assign": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "dependencies": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.getownpropertydescriptors": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.2.tgz", + "integrity": "sha512-WtxeKSzfBjlzL+F9b7M7hewDzMwy+C8NRssHd1YrNlzHzIDrXcXiNOMrezdAEM4UXixgV+vvnyBeN7Rygl2ttQ==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.2" + }, + "engines": { + "node": ">= 0.8" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.values": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.3.tgz", + "integrity": "sha512-nkF6PfDB9alkOUxpf1HNm/QlkeW3SReqL5WXeBLpEJJnlPSvRaDQpW3gQTksTN3fgJX4hL42RzKyOin6ff3tyw==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.2", + "has": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "dependencies": { + "mimic-fn": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/opn": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz", + "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==", + "dependencies": { + "is-wsl": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dependencies": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/ora": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-2.1.0.tgz", + "integrity": "sha512-hNNlAd3gfv/iPmsNxYoAPLvxg7HuPozww7fFonMZvL84tP6Ox5igfk5j/+a9rtJJwqMgKK+JgWsAQik5o0HTLA==", + "dependencies": { + "chalk": "^2.3.1", + "cli-cursor": "^2.1.0", + "cli-spinners": "^1.1.0", + "log-symbols": "^2.2.0", + "strip-ansi": "^4.0.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=" + }, + "node_modules/pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" + }, + "node_modules/parcel-bundler": { + "version": "1.12.5", + "resolved": "https://registry.npmjs.org/parcel-bundler/-/parcel-bundler-1.12.5.tgz", + "integrity": "sha512-hpku8mW67U6PXQIenW6NBbphBOMb8XzW6B9r093DUhYj5GN2FUB/CXCiz5hKoPYUsusZ35BpProH8AUF9bh5IQ==", + "deprecated": "Parcel v1 is no longer maintained. Please migrate to v2, which is published under the 'parcel' package. See https://v2.parceljs.org/getting-started/migration for details.", + "hasInstallScript": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "@babel/core": "^7.4.4", + "@babel/generator": "^7.4.4", + "@babel/parser": "^7.4.4", + "@babel/plugin-transform-flow-strip-types": "^7.4.4", + "@babel/plugin-transform-modules-commonjs": "^7.4.4", + "@babel/plugin-transform-react-jsx": "^7.0.0", + "@babel/preset-env": "^7.4.4", + "@babel/runtime": "^7.4.4", + "@babel/template": "^7.4.4", + "@babel/traverse": "^7.4.4", + "@babel/types": "^7.4.4", + "@iarna/toml": "^2.2.0", + "@parcel/fs": "^1.11.0", + "@parcel/logger": "^1.11.1", + "@parcel/utils": "^1.11.0", + "@parcel/watcher": "^1.12.1", + "@parcel/workers": "^1.11.0", + "ansi-to-html": "^0.6.4", + "babylon-walk": "^1.0.2", + "browserslist": "^4.1.0", + "chalk": "^2.1.0", + "clone": "^2.1.1", + "command-exists": "^1.2.6", + "commander": "^2.11.0", + "core-js": "^2.6.5", + "cross-spawn": "^6.0.4", + "css-modules-loader-core": "^1.1.0", + "cssnano": "^4.0.0", + "deasync": "^0.1.14", + "dotenv": "^5.0.0", + "dotenv-expand": "^5.1.0", + "envinfo": "^7.3.1", + "fast-glob": "^2.2.2", + "filesize": "^3.6.0", + "get-port": "^3.2.0", + "htmlnano": "^0.2.2", + "is-glob": "^4.0.0", + "is-url": "^1.2.2", + "js-yaml": "^3.10.0", + "json5": "^1.0.1", + "micromatch": "^3.0.4", + "mkdirp": "^0.5.1", + "node-forge": "^0.10.0", + "node-libs-browser": "^2.0.0", + "opn": "^5.1.0", + "postcss": "^7.0.11", + "postcss-value-parser": "^3.3.1", + "posthtml": "^0.11.2", + "posthtml-parser": "^0.4.0", + "posthtml-render": "^1.1.3", + "resolve": "^1.4.0", + "semver": "^5.4.1", + "serialize-to-js": "^3.0.0", + "serve-static": "^1.12.4", + "source-map": "0.6.1", + "terser": "^3.7.3", + "v8-compile-cache": "^2.0.0", + "ws": "^5.1.1" + }, + "bin": { + "parcel": "bin/cli.js" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/parcel-plugin-transcrypt": { + "version": "1.0.20", + "resolved": "https://registry.npmjs.org/parcel-plugin-transcrypt/-/parcel-plugin-transcrypt-1.0.20.tgz", + "integrity": "sha512-/nzFcV/bHjQC1VjwZ/GO7K8SvI1lyndquWfB76znmJYjqAbHdM8xsjnMvaXPNnYH7VTAYHO8i0y8gvrKdkbR3g==" + }, + "node_modules/parse-asn1": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", + "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", + "dependencies": { + "asn1.js": "^5.2.0", + "browserify-aes": "^1.0.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dependencies": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/parse5": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz", + "integrity": "sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==" + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", + "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==" + }, + "node_modules/path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=" + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "engines": { + "node": ">=4" + } + }, + "node_modules/path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" + }, + "node_modules/pbkdf2": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", + "dependencies": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" + }, + "node_modules/physical-cpu-count": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/physical-cpu-count/-/physical-cpu-count-2.0.0.tgz", + "integrity": "sha1-GN4vl+S/epVRrXURlCtUlverpmA=" + }, + "node_modules/pn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", + "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==" + }, + "node_modules/posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/postcss-calc": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.5.tgz", + "integrity": "sha512-1tKHutbGtLtEZF6PT4JSihCHfIVldU72mZ8SdZHIYriIZ9fh9k9aWSppaT8rHsyI3dX+KSR+W+Ix9BMY3AODrg==", + "dependencies": { + "postcss": "^7.0.27", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.0.2" + } + }, + "node_modules/postcss-calc/node_modules/postcss-value-parser": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz", + "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==" + }, + "node_modules/postcss-colormin": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-4.0.3.tgz", + "integrity": "sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw==", + "dependencies": { + "browserslist": "^4.0.0", + "color": "^3.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-convert-values": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz", + "integrity": "sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ==", + "dependencies": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-discard-comments": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz", + "integrity": "sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg==", + "dependencies": { + "postcss": "^7.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-discard-duplicates": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz", + "integrity": "sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ==", + "dependencies": { + "postcss": "^7.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-discard-empty": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz", + "integrity": "sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w==", + "dependencies": { + "postcss": "^7.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-discard-overridden": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz", + "integrity": "sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg==", + "dependencies": { + "postcss": "^7.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-merge-longhand": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz", + "integrity": "sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw==", + "dependencies": { + "css-color-names": "0.0.4", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "stylehacks": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-merge-rules": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz", + "integrity": "sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ==", + "dependencies": { + "browserslist": "^4.0.0", + "caniuse-api": "^3.0.0", + "cssnano-util-same-parent": "^4.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0", + "vendors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-merge-rules/node_modules/postcss-selector-parser": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", + "dependencies": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/postcss-minify-font-values": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz", + "integrity": "sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg==", + "dependencies": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-minify-gradients": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz", + "integrity": "sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q==", + "dependencies": { + "cssnano-util-get-arguments": "^4.0.0", + "is-color-stop": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-minify-params": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz", + "integrity": "sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg==", + "dependencies": { + "alphanum-sort": "^1.0.0", + "browserslist": "^4.0.0", + "cssnano-util-get-arguments": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "uniqs": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-minify-selectors": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz", + "integrity": "sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g==", + "dependencies": { + "alphanum-sort": "^1.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-minify-selectors/node_modules/postcss-selector-parser": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", + "dependencies": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/postcss-modules-extract-imports": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.1.0.tgz", + "integrity": "sha1-thTJcgvmgW6u41+zpfqh26agXds=", + "dependencies": { + "postcss": "^6.0.1" + } + }, + "node_modules/postcss-modules-extract-imports/node_modules/postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dependencies": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/postcss-modules-local-by-default": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz", + "integrity": "sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk=", + "dependencies": { + "css-selector-tokenizer": "^0.7.0", + "postcss": "^6.0.1" + } + }, + "node_modules/postcss-modules-local-by-default/node_modules/postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dependencies": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/postcss-modules-scope": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz", + "integrity": "sha1-1upkmUx5+XtipytCb75gVqGUu5A=", + "dependencies": { + "css-selector-tokenizer": "^0.7.0", + "postcss": "^6.0.1" + } + }, + "node_modules/postcss-modules-scope/node_modules/postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dependencies": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/postcss-modules-values": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz", + "integrity": "sha1-7P+p1+GSUYOJ9CrQ6D9yrsRW6iA=", + "dependencies": { + "icss-replace-symbols": "^1.1.0", + "postcss": "^6.0.1" + } + }, + "node_modules/postcss-modules-values/node_modules/postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dependencies": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/postcss-normalize-charset": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz", + "integrity": "sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g==", + "dependencies": { + "postcss": "^7.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-normalize-display-values": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz", + "integrity": "sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ==", + "dependencies": { + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-normalize-positions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz", + "integrity": "sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA==", + "dependencies": { + "cssnano-util-get-arguments": "^4.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-normalize-repeat-style": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz", + "integrity": "sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q==", + "dependencies": { + "cssnano-util-get-arguments": "^4.0.0", + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-normalize-string": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz", + "integrity": "sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA==", + "dependencies": { + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-normalize-timing-functions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz", + "integrity": "sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A==", + "dependencies": { + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-normalize-unicode": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz", + "integrity": "sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg==", + "dependencies": { + "browserslist": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-normalize-url": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz", + "integrity": "sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA==", + "dependencies": { + "is-absolute-url": "^2.0.0", + "normalize-url": "^3.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-normalize-whitespace": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz", + "integrity": "sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA==", + "dependencies": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-ordered-values": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz", + "integrity": "sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw==", + "dependencies": { + "cssnano-util-get-arguments": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-reduce-initial": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz", + "integrity": "sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA==", + "dependencies": { + "browserslist": "^4.0.0", + "caniuse-api": "^3.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-reduce-transforms": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz", + "integrity": "sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg==", + "dependencies": { + "cssnano-util-get-match": "^4.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.0.6", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.6.tgz", + "integrity": "sha512-9LXrvaaX3+mcv5xkg5kFwqSzSH1JIObIx51PrndZwlmznwXRfxMddDvo9gve3gVR8ZTKgoFDdWkbRFmEhT4PMg==", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-svgo": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.3.tgz", + "integrity": "sha512-NoRbrcMWTtUghzuKSoIm6XV+sJdvZ7GZSc3wdBN0W19FTtp2ko8NqLsgoh/m9CzNhU3KLPvQmjIwtaNFkaFTvw==", + "dependencies": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "svgo": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-unique-selectors": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz", + "integrity": "sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg==", + "dependencies": { + "alphanum-sort": "^1.0.0", + "postcss": "^7.0.0", + "uniqs": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + }, + "node_modules/postcss/node_modules/supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/posthtml": { + "version": "0.11.6", + "resolved": "https://registry.npmjs.org/posthtml/-/posthtml-0.11.6.tgz", + "integrity": "sha512-C2hrAPzmRdpuL3iH0TDdQ6XCc9M7Dcc3zEW5BLerY65G4tWWszwv6nG/ksi6ul5i2mx22ubdljgktXCtNkydkw==", + "dependencies": { + "posthtml-parser": "^0.4.1", + "posthtml-render": "^1.1.5" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/posthtml-parser": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/posthtml-parser/-/posthtml-parser-0.4.2.tgz", + "integrity": "sha512-BUIorsYJTvS9UhXxPTzupIztOMVNPa/HtAm9KHni9z6qEfiJ1bpOBL5DfUOL9XAc3XkLIEzBzpph+Zbm4AdRAg==", + "dependencies": { + "htmlparser2": "^3.9.2" + } + }, + "node_modules/posthtml-render": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/posthtml-render/-/posthtml-render-1.4.0.tgz", + "integrity": "sha512-W1779iVHGfq0Fvh2PROhCe2QhB8mEErgqzo1wpIt36tCgChafP+hbXIhLDOM8ePJrZcFs0vkNEtdibEWVqChqw==", + "engines": { + "node": ">=10" + } + }, + "node_modules/prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "node_modules/psl": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==" + }, + "node_modules/public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "dependencies": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/public-encrypt/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, + "node_modules/punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + }, + "node_modules/purgecss": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/purgecss/-/purgecss-2.3.0.tgz", + "integrity": "sha512-BE5CROfVGsx2XIhxGuZAT7rTH9lLeQx/6M0P7DTXQH4IUc3BBzs9JUzt4yzGf3JrH9enkeq6YJBe9CTtkm1WmQ==", + "dependencies": { + "commander": "^5.0.0", + "glob": "^7.0.0", + "postcss": "7.0.32", + "postcss-selector-parser": "^6.0.2" + }, + "bin": { + "purgecss": "bin/purgecss" + } + }, + "node_modules/purgecss/node_modules/commander": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", + "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/purgecss/node_modules/postcss": { + "version": "7.0.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz", + "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==", + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + } + }, + "node_modules/purgecss/node_modules/supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", + "engines": { + "node": ">=0.6.0", + "teleport": ">=0.2.0" + } + }, + "node_modules/qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", + "engines": { + "node": ">=0.4.x" + } + }, + "node_modules/querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", + "engines": { + "node": ">=0.4.x" + } + }, + "node_modules/quote-stream": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/quote-stream/-/quote-stream-1.0.2.tgz", + "integrity": "sha1-hJY/jJwmuULhU/7rU6rnRlK34LI=", + "dependencies": { + "buffer-equal": "0.0.1", + "minimist": "^1.1.3", + "through2": "^2.0.0" + }, + "bin": { + "quote-stream": "bin/cmd.js" + } + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "dependencies": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/readable-stream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dependencies": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==" + }, + "node_modules/regenerate-unicode-properties": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz", + "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==", + "dependencies": { + "regenerate": "^1.4.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.13.7", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", + "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==" + }, + "node_modules/regenerator-transform": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz", + "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", + "dependencies": { + "@babel/runtime": "^7.8.4" + } + }, + "node_modules/regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dependencies": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/regex-not/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/regex-not/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/regexpu-core": { + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz", + "integrity": "sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==", + "dependencies": { + "regenerate": "^1.4.0", + "regenerate-unicode-properties": "^8.2.0", + "regjsgen": "^0.5.1", + "regjsparser": "^0.6.4", + "unicode-match-property-ecmascript": "^1.0.4", + "unicode-match-property-value-ecmascript": "^1.2.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regjsgen": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", + "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==" + }, + "node_modules/regjsparser": { + "version": "0.6.9", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.9.tgz", + "integrity": "sha512-ZqbNRz1SNjLAiYuwY0zoXW8Ne675IX5q+YHioAGbCw4X96Mjl2+dcX9B2ciaeyYjViDAfvIjFpQjJgLttTEERQ==", + "dependencies": { + "jsesc": "~0.5.0" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "bin": { + "jsesc": "bin/jsesc" + } + }, + "node_modules/relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=" + }, + "node_modules/repeat-element": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", + "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", + "dependencies": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/request-promise-core": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.4.tgz", + "integrity": "sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==", + "dependencies": { + "lodash": "^4.17.19" + }, + "engines": { + "node": ">=0.10.0" + }, + "peerDependencies": { + "request": "^2.34" + } + }, + "node_modules/request-promise-native": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.9.tgz", + "integrity": "sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g==", + "deprecated": "request-promise-native has been deprecated because it extends the now deprecated request package, see https://github.com/request/request/issues/3142", + "dependencies": { + "request-promise-core": "1.1.4", + "stealthy-require": "^1.1.1", + "tough-cookie": "^2.3.3" + }, + "engines": { + "node": ">=0.12.0" + }, + "peerDependencies": { + "request": "^2.34" + } + }, + "node_modules/resolve": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "dependencies": { + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "engines": { + "node": ">=4" + } + }, + "node_modules/resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "deprecated": "https://github.com/lydell/resolve-url#deprecated" + }, + "node_modules/restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "dependencies": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "engines": { + "node": ">=0.12" + } + }, + "node_modules/rgb-regex": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz", + "integrity": "sha1-wODWiC3w4jviVKR16O3UGRX+rrE=" + }, + "node_modules/rgba-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz", + "integrity": "sha1-QzdOLiyglosO8VI0YLfXMP8i7rM=" + }, + "node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dependencies": { + "ret": "~0.1.10" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "node_modules/sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + }, + "node_modules/saxes": { + "version": "3.1.11", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-3.1.11.tgz", + "integrity": "sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g==", + "dependencies": { + "xmlchars": "^2.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", + "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", + "dependencies": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.7.2", + "mime": "1.6.0", + "ms": "2.1.1", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + }, + "node_modules/serialize-to-js": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/serialize-to-js/-/serialize-to-js-3.1.1.tgz", + "integrity": "sha512-F+NGU0UHMBO4Q965tjw7rvieNVjlH6Lqi2emq/Lc9LUURYJbiCzmpi4Cy1OOjjVPtxu0c+NE85LU6968Wko5ZA==", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/serve-static": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", + "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "dependencies": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" + }, + "node_modules/setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" + }, + "node_modules/sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + }, + "bin": { + "sha.js": "bin.js" + } + }, + "node_modules/shallow-copy": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/shallow-copy/-/shallow-copy-0.0.1.tgz", + "integrity": "sha1-QV9CcC1z2BAzApLMXuhurhoRoXA=" + }, + "node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/signal-exit": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==" + }, + "node_modules/simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", + "dependencies": { + "is-arrayish": "^0.3.1" + } + }, + "node_modules/simple-swizzle/node_modules/is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" + }, + "node_modules/snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dependencies": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dependencies": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dependencies": { + "kind-of": "^3.2.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/snapdragon/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-descriptor/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "node_modules/snapdragon/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "dependencies": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-url": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", + "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==" + }, + "node_modules/split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dependencies": { + "extend-shallow": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/split-string/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/split-string/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" + }, + "node_modules/srcset": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/srcset/-/srcset-3.0.1.tgz", + "integrity": "sha512-MM8wDGg5BQJEj94tDrZDrX9wrC439/Eoeg3sgmVLPMjHgrAFeXAKk3tmFlCbKw5k+yOEhPXRpPlRcisQmqWVSQ==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/sshpk": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "dependencies": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + }, + "bin": { + "sshpk-conv": "bin/sshpk-conv", + "sshpk-sign": "bin/sshpk-sign", + "sshpk-verify": "bin/sshpk-verify" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/stable": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==" + }, + "node_modules/static-eval": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/static-eval/-/static-eval-2.1.0.tgz", + "integrity": "sha512-agtxZ/kWSsCkI5E4QifRwsaPs0P0JmZV6dkLz6ILYfFYQGn+5plctanRN+IC8dJRiFkyXHrwEE3W9Wmx67uDbw==", + "dependencies": { + "escodegen": "^1.11.1" + } + }, + "node_modules/static-eval/node_modules/escodegen": { + "version": "1.14.3", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", + "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=4.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dependencies": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-descriptor/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-module": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/static-module/-/static-module-2.2.5.tgz", + "integrity": "sha512-D8vv82E/Kpmz3TXHKG8PPsCPg+RAX6cbCOyvjM6x04qZtQ47EtJFVwRsdov3n5d6/6ynrOY9XB4JkaZwB2xoRQ==", + "dependencies": { + "concat-stream": "~1.6.0", + "convert-source-map": "^1.5.1", + "duplexer2": "~0.1.4", + "escodegen": "~1.9.0", + "falafel": "^2.1.0", + "has": "^1.0.1", + "magic-string": "^0.22.4", + "merge-source-map": "1.0.4", + "object-inspect": "~1.4.0", + "quote-stream": "~1.0.2", + "readable-stream": "~2.3.3", + "shallow-copy": "~0.0.1", + "static-eval": "^2.0.0", + "through2": "~2.0.3" + } + }, + "node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/stealthy-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", + "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/stream-browserify": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", + "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", + "dependencies": { + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" + } + }, + "node_modules/stream-http": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", + "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", + "dependencies": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string_decoder/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", + "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", + "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dependencies": { + "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/stylehacks": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz", + "integrity": "sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g==", + "dependencies": { + "browserslist": "^4.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/stylehacks/node_modules/postcss-selector-parser": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", + "dependencies": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/svgo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz", + "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==", + "dependencies": { + "chalk": "^2.4.1", + "coa": "^2.0.2", + "css-select": "^2.0.0", + "css-select-base-adapter": "^0.1.1", + "css-tree": "1.0.0-alpha.37", + "csso": "^4.0.2", + "js-yaml": "^3.13.1", + "mkdirp": "~0.5.1", + "object.values": "^1.1.0", + "sax": "~1.2.4", + "stable": "^0.1.8", + "unquote": "~1.1.1", + "util.promisify": "~1.0.0" + }, + "bin": { + "svgo": "bin/svgo" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==" + }, + "node_modules/terser": { + "version": "3.17.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-3.17.0.tgz", + "integrity": "sha512-/FQzzPJmCpjAH9Xvk2paiWrFq+5M6aVOf+2KRbwhByISDX/EujxsK+BAvrhb6H+2rtrLCHK9N01wO014vrIwVQ==", + "dependencies": { + "commander": "^2.19.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.10" + }, + "bin": { + "terser": "bin/uglifyjs" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dependencies": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "node_modules/timers-browserify": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", + "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", + "dependencies": { + "setimmediate": "^1.0.4" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/timsort": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", + "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=" + }, + "node_modules/tiny-inflate": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-inflate/-/tiny-inflate-1.0.3.tgz", + "integrity": "sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==" + }, + "node_modules/to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=" + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "engines": { + "node": ">=4" + } + }, + "node_modules/to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dependencies": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dependencies": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dependencies": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/tough-cookie/node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "engines": { + "node": ">=6" + } + }, + "node_modules/tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/tr46/node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "engines": { + "node": ">=6" + } + }, + "node_modules/tty-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=" + }, + "node_modules/tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" + }, + "node_modules/type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dependencies": { + "prelude-ls": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" + }, + "node_modules/unbox-primitive": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", + "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", + "dependencies": { + "function-bind": "^1.1.1", + "has-bigints": "^1.0.1", + "has-symbols": "^1.0.2", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/uncss": { + "version": "0.17.3", + "resolved": "https://registry.npmjs.org/uncss/-/uncss-0.17.3.tgz", + "integrity": "sha512-ksdDWl81YWvF/X14fOSw4iu8tESDHFIeyKIeDrK6GEVTQvqJc1WlOEXqostNwOCi3qAj++4EaLsdAgPmUbEyog==", + "dependencies": { + "commander": "^2.20.0", + "glob": "^7.1.4", + "is-absolute-url": "^3.0.1", + "is-html": "^1.1.0", + "jsdom": "^14.1.0", + "lodash": "^4.17.15", + "postcss": "^7.0.17", + "postcss-selector-parser": "6.0.2", + "request": "^2.88.0" + }, + "bin": { + "uncss": "bin/uncss" + }, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/uncss/node_modules/is-absolute-url": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz", + "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/uncss/node_modules/postcss-selector-parser": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz", + "integrity": "sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg==", + "dependencies": { + "cssesc": "^3.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", + "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", + "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^1.0.4", + "unicode-property-aliases-ecmascript": "^1.0.4" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-value-ecmascript": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz", + "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-property-aliases-ecmascript": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz", + "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-trie": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/unicode-trie/-/unicode-trie-0.3.1.tgz", + "integrity": "sha1-1nHd3YkQGgi6w3tqUWEBBgIFIIU=", + "dependencies": { + "pako": "^0.2.5", + "tiny-inflate": "^1.0.0" + } + }, + "node_modules/unicode-trie/node_modules/pako": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", + "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=" + }, + "node_modules/union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "dependencies": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/uniq": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", + "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=" + }, + "node_modules/uniqs": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", + "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=" + }, + "node_modules/unquote": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", + "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=" + }, + "node_modules/unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dependencies": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "dependencies": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-value/node_modules/isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dependencies": { + "isarray": "1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "engines": { + "node": ">=4", + "yarn": "*" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/uri-js/node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "engines": { + "node": ">=6" + } + }, + "node_modules/urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "deprecated": "Please see https://github.com/lydell/urix#deprecated" + }, + "node_modules/url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "dependencies": { + "punycode": "1.3.2", + "querystring": "0.2.0" + } + }, + "node_modules/url/node_modules/punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=" + }, + "node_modules/use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/util": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", + "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", + "dependencies": { + "inherits": "2.0.3" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "node_modules/util.promisify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz", + "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==", + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.2", + "has-symbols": "^1.0.1", + "object.getownpropertydescriptors": "^2.1.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/util/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "node_modules/uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "bin": { + "uuid": "bin/uuid" + } + }, + "node_modules/v8-compile-cache": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==" + }, + "node_modules/vendors": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.4.tgz", + "integrity": "sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "engines": [ + "node >=0.6.0" + ], + "dependencies": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "node_modules/vlq": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/vlq/-/vlq-0.2.3.tgz", + "integrity": "sha512-DRibZL6DsNhIgYQ+wNdWDL2SL3bKPlVrRiBqV5yuMm++op8W4kGFtaQfCs4KEJn0wBZcHVHJ3eoywX8983k1ow==" + }, + "node_modules/vm-browserify": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==" + }, + "node_modules/w3c-hr-time": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", + "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", + "dependencies": { + "browser-process-hrtime": "^1.0.0" + } + }, + "node_modules/w3c-xmlserializer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz", + "integrity": "sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg==", + "dependencies": { + "domexception": "^1.0.1", + "webidl-conversions": "^4.0.2", + "xml-name-validator": "^3.0.0" + } + }, + "node_modules/wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", + "dependencies": { + "defaults": "^1.0.3" + } + }, + "node_modules/webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==" + }, + "node_modules/whatwg-encoding": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", + "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", + "dependencies": { + "iconv-lite": "0.4.24" + } + }, + "node_modules/whatwg-mimetype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==" + }, + "node_modules/whatwg-url": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", + "dependencies": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, + "node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "node_modules/ws": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.2.tgz", + "integrity": "sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA==", + "dependencies": { + "async-limiter": "~1.0.0" + } + }, + "node_modules/xml-name-validator": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==" + }, + "node_modules/xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==" + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "engines": { + "node": ">=0.4" + } + } + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", + "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", + "requires": { + "@babel/highlight": "^7.12.13" + } + }, + "@babel/compat-data": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.14.0.tgz", + "integrity": "sha512-vu9V3uMM/1o5Hl5OekMUowo3FqXLJSw+s+66nt0fSWVWTtmosdzn45JHOB3cPtZoe6CTBDzvSw0RdOY85Q37+Q==" + }, + "@babel/core": { + "version": "7.14.2", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.14.2.tgz", + "integrity": "sha512-OgC1mON+l4U4B4wiohJlQNUU3H73mpTyYY3j/c8U9dr9UagGGSm+WFpzjy/YLdoyjiG++c1kIDgxCo/mLwQJeQ==", + "requires": { + "@babel/code-frame": "^7.12.13", + "@babel/generator": "^7.14.2", + "@babel/helper-compilation-targets": "^7.13.16", + "@babel/helper-module-transforms": "^7.14.2", + "@babel/helpers": "^7.14.0", + "@babel/parser": "^7.14.2", + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.14.2", + "@babel/types": "^7.14.2", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.1.2", + "semver": "^6.3.0", + "source-map": "^0.5.0" + }, + "dependencies": { + "json5": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", + "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", + "requires": { + "minimist": "^1.2.5" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + } + } + }, + "@babel/generator": { + "version": "7.14.2", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.14.2.tgz", + "integrity": "sha512-OnADYbKrffDVai5qcpkMxQ7caomHOoEwjkouqnN2QhydAjowFAZcsdecFIRUBdb+ZcruwYE4ythYmF1UBZU5xQ==", + "requires": { + "@babel/types": "^7.14.2", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + } + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.13.tgz", + "integrity": "sha512-7YXfX5wQ5aYM/BOlbSccHDbuXXFPxeoUmfWtz8le2yTkTZc+BxsiEnENFoi2SlmA8ewDkG2LgIMIVzzn2h8kfw==", + "requires": { + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.12.13.tgz", + "integrity": "sha512-CZOv9tGphhDRlVjVkAgm8Nhklm9RzSmWpX2my+t7Ua/KT616pEzXsQCjinzvkRvHWJ9itO4f296efroX23XCMA==", + "requires": { + "@babel/helper-explode-assignable-expression": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.13.16", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.16.tgz", + "integrity": "sha512-3gmkYIrpqsLlieFwjkGgLaSHmhnvlAYzZLlYVjlW+QwI+1zE17kGxuJGmIqDQdYp56XdmGeD+Bswx0UTyG18xA==", + "requires": { + "@babel/compat-data": "^7.13.15", + "@babel/helper-validator-option": "^7.12.17", + "browserslist": "^4.14.5", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } + } + }, + "@babel/helper-create-class-features-plugin": { + "version": "7.14.2", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.14.2.tgz", + "integrity": "sha512-6YctwVsmlkchxfGUogvVrrhzyD3grFJyluj5JgDlQrwfMLJSt5tdAzFZfPf4H2Xoi5YLcQ6BxfJlaOBHuctyIw==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.12.13", + "@babel/helper-function-name": "^7.14.2", + "@babel/helper-member-expression-to-functions": "^7.13.12", + "@babel/helper-optimise-call-expression": "^7.12.13", + "@babel/helper-replace-supers": "^7.13.12", + "@babel/helper-split-export-declaration": "^7.12.13" + } + }, + "@babel/helper-create-regexp-features-plugin": { + "version": "7.12.17", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.17.tgz", + "integrity": "sha512-p2VGmBu9oefLZ2nQpgnEnG0ZlRPvL8gAGvPUMQwUdaE8k49rOMuZpOwdQoy5qJf6K8jL3bcAMhVUlHAjIgJHUg==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.12.13", + "regexpu-core": "^4.7.1" + } + }, + "@babel/helper-define-polyfill-provider": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.2.0.tgz", + "integrity": "sha512-JT8tHuFjKBo8NnaUbblz7mIu1nnvUDiHVjXXkulZULyidvo/7P6TY7+YqpV37IfF+KUFxmlK04elKtGKXaiVgw==", + "requires": { + "@babel/helper-compilation-targets": "^7.13.0", + "@babel/helper-module-imports": "^7.12.13", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/traverse": "^7.13.0", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2", + "semver": "^6.1.2" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } + } + }, + "@babel/helper-explode-assignable-expression": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.13.0.tgz", + "integrity": "sha512-qS0peLTDP8kOisG1blKbaoBg/o9OSa1qoumMjTK5pM+KDTtpxpsiubnCGP34vK8BXGcb2M9eigwgvoJryrzwWA==", + "requires": { + "@babel/types": "^7.13.0" + } + }, + "@babel/helper-function-name": { + "version": "7.14.2", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.14.2.tgz", + "integrity": "sha512-NYZlkZRydxw+YT56IlhIcS8PAhb+FEUiOzuhFTfqDyPmzAhRge6ua0dQYT/Uh0t/EDHq05/i+e5M2d4XvjgarQ==", + "requires": { + "@babel/helper-get-function-arity": "^7.12.13", + "@babel/template": "^7.12.13", + "@babel/types": "^7.14.2" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz", + "integrity": "sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg==", + "requires": { + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.13.16", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.13.16.tgz", + "integrity": "sha512-1eMtTrXtrwscjcAeO4BVK+vvkxaLJSPFz1w1KLawz6HLNi9bPFGBNwwDyVfiu1Tv/vRRFYfoGaKhmAQPGPn5Wg==", + "requires": { + "@babel/traverse": "^7.13.15", + "@babel/types": "^7.13.16" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.12.tgz", + "integrity": "sha512-48ql1CLL59aKbU94Y88Xgb2VFy7a95ykGRbJJaaVv+LX5U8wFpLfiGXJJGUozsmA1oEh/o5Bp60Voq7ACyA/Sw==", + "requires": { + "@babel/types": "^7.13.12" + } + }, + "@babel/helper-module-imports": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.13.12.tgz", + "integrity": "sha512-4cVvR2/1B693IuOvSI20xqqa/+bl7lqAMR59R4iu39R9aOX8/JoYY1sFaNvUMyMBGnHdwvJgUrzNLoUZxXypxA==", + "requires": { + "@babel/types": "^7.13.12" + } + }, + "@babel/helper-module-transforms": { + "version": "7.14.2", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.14.2.tgz", + "integrity": "sha512-OznJUda/soKXv0XhpvzGWDnml4Qnwp16GN+D/kZIdLsWoHj05kyu8Rm5kXmMef+rVJZ0+4pSGLkeixdqNUATDA==", + "requires": { + "@babel/helper-module-imports": "^7.13.12", + "@babel/helper-replace-supers": "^7.13.12", + "@babel/helper-simple-access": "^7.13.12", + "@babel/helper-split-export-declaration": "^7.12.13", + "@babel/helper-validator-identifier": "^7.14.0", + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.14.2", + "@babel/types": "^7.14.2" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz", + "integrity": "sha512-BdWQhoVJkp6nVjB7nkFWcn43dkprYauqtk++Py2eaf/GRDFm5BxRqEIZCiHlZUGAVmtwKcsVL1dC68WmzeFmiA==", + "requires": { + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.13.0.tgz", + "integrity": "sha512-ZPafIPSwzUlAoWT8DKs1W2VyF2gOWthGd5NGFMsBcMMol+ZhK+EQY/e6V96poa6PA/Bh+C9plWN0hXO1uB8AfQ==" + }, + "@babel/helper-remap-async-to-generator": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.13.0.tgz", + "integrity": "sha512-pUQpFBE9JvC9lrQbpX0TmeNIy5s7GnZjna2lhhcHC7DzgBs6fWn722Y5cfwgrtrqc7NAJwMvOa0mKhq6XaE4jg==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.12.13", + "@babel/helper-wrap-function": "^7.13.0", + "@babel/types": "^7.13.0" + } + }, + "@babel/helper-replace-supers": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.13.12.tgz", + "integrity": "sha512-Gz1eiX+4yDO8mT+heB94aLVNCL+rbuT2xy4YfyNqu8F+OI6vMvJK891qGBTqL9Uc8wxEvRW92Id6G7sDen3fFw==", + "requires": { + "@babel/helper-member-expression-to-functions": "^7.13.12", + "@babel/helper-optimise-call-expression": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.12" + } + }, + "@babel/helper-simple-access": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.13.12.tgz", + "integrity": "sha512-7FEjbrx5SL9cWvXioDbnlYTppcZGuCY6ow3/D5vMggb2Ywgu4dMrpTJX0JdQAIcRRUElOIxF3yEooa9gUb9ZbA==", + "requires": { + "@babel/types": "^7.13.12" + } + }, + "@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz", + "integrity": "sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA==", + "requires": { + "@babel/types": "^7.12.1" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz", + "integrity": "sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg==", + "requires": { + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.0.tgz", + "integrity": "sha512-V3ts7zMSu5lfiwWDVWzRDGIN+lnCEUdaXgtVHJgLb1rGaA6jMrtB9EmE7L18foXJIE8Un/A/h6NJfGQp/e1J4A==" + }, + "@babel/helper-validator-option": { + "version": "7.12.17", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz", + "integrity": "sha512-TopkMDmLzq8ngChwRlyjR6raKD6gMSae4JdYDB8bByKreQgG0RBTuKe9LRxW3wFtUnjxOPRKBDwEH6Mg5KeDfw==" + }, + "@babel/helper-wrap-function": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.13.0.tgz", + "integrity": "sha512-1UX9F7K3BS42fI6qd2A4BjKzgGjToscyZTdp1DjknHLCIvpgne6918io+aL5LXFcER/8QWiwpoY902pVEqgTXA==", + "requires": { + "@babel/helper-function-name": "^7.12.13", + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0" + } + }, + "@babel/helpers": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.14.0.tgz", + "integrity": "sha512-+ufuXprtQ1D1iZTO/K9+EBRn+qPWMJjZSw/S0KlFrxCw4tkrzv9grgpDHkY9MeQTjTY8i2sp7Jep8DfU6tN9Mg==", + "requires": { + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.14.0", + "@babel/types": "^7.14.0" + } + }, + "@babel/highlight": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.0.tgz", + "integrity": "sha512-YSCOwxvTYEIMSGaBQb5kDDsCopDdiUGsqpatp3fOlI4+2HQSkTmEVWnVuySdAC5EWCqSWWTv0ib63RjR7dTBdg==", + "requires": { + "@babel/helper-validator-identifier": "^7.14.0", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.14.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.14.2.tgz", + "integrity": "sha512-IoVDIHpsgE/fu7eXBeRWt8zLbDrSvD7H1gpomOkPpBoEN8KCruCqSDdqo8dddwQQrui30KSvQBaMUOJiuFu6QQ==" + }, + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.13.12.tgz", + "integrity": "sha512-d0u3zWKcoZf379fOeJdr1a5WPDny4aOFZ6hlfKivgK0LY7ZxNfoaHL2fWwdGtHyVvra38FC+HVYkO+byfSA8AQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", + "@babel/plugin-proposal-optional-chaining": "^7.13.12" + } + }, + "@babel/plugin-proposal-async-generator-functions": { + "version": "7.14.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.14.2.tgz", + "integrity": "sha512-b1AM4F6fwck4N8ItZ/AtC4FP/cqZqmKRQ4FaTDutwSYyjuhtvsGEMLK4N/ztV/ImP40BjIDyMgBQAeAMsQYVFQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-remap-async-to-generator": "^7.13.0", + "@babel/plugin-syntax-async-generators": "^7.8.4" + } + }, + "@babel/plugin-proposal-class-properties": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.13.0.tgz", + "integrity": "sha512-KnTDjFNC1g+45ka0myZNvSBFLhNCLN+GeGYLDEA8Oq7MZ6yMgfLoIRh86GRT0FjtJhZw8JyUskP9uvj5pHM9Zg==", + "requires": { + "@babel/helper-create-class-features-plugin": "^7.13.0", + "@babel/helper-plugin-utils": "^7.13.0" + } + }, + "@babel/plugin-proposal-class-static-block": { + "version": "7.13.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.13.11.tgz", + "integrity": "sha512-fJTdFI4bfnMjvxJyNuaf8i9mVcZ0UhetaGEUHaHV9KEnibLugJkZAtXikR8KcYj+NYmI4DZMS8yQAyg+hvfSqg==", + "requires": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-class-static-block": "^7.12.13" + } + }, + "@babel/plugin-proposal-dynamic-import": { + "version": "7.14.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.14.2.tgz", + "integrity": "sha512-oxVQZIWFh91vuNEMKltqNsKLFWkOIyJc95k2Gv9lWVyDfPUQGSSlbDEgWuJUU1afGE9WwlzpucMZ3yDRHIItkA==", + "requires": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + } + }, + "@babel/plugin-proposal-export-namespace-from": { + "version": "7.14.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.14.2.tgz", + "integrity": "sha512-sRxW3z3Zp3pFfLAgVEvzTFutTXax837oOatUIvSG9o5gRj9mKwm3br1Se5f4QalTQs9x4AzlA/HrCWbQIHASUQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + } + }, + "@babel/plugin-proposal-json-strings": { + "version": "7.14.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.14.2.tgz", + "integrity": "sha512-w2DtsfXBBJddJacXMBhElGEYqCZQqN99Se1qeYn8DVLB33owlrlLftIbMzn5nz1OITfDVknXF433tBrLEAOEjA==", + "requires": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-json-strings": "^7.8.3" + } + }, + "@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.14.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.14.2.tgz", + "integrity": "sha512-1JAZtUrqYyGsS7IDmFeaem+/LJqujfLZ2weLR9ugB0ufUPjzf8cguyVT1g5im7f7RXxuLq1xUxEzvm68uYRtGg==", + "requires": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + } + }, + "@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.14.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.14.2.tgz", + "integrity": "sha512-ebR0zU9OvI2N4qiAC38KIAK75KItpIPTpAtd2r4OZmMFeKbKJpUFLYP2EuDut82+BmYi8sz42B+TfTptJ9iG5Q==", + "requires": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + } + }, + "@babel/plugin-proposal-numeric-separator": { + "version": "7.14.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.14.2.tgz", + "integrity": "sha512-DcTQY9syxu9BpU3Uo94fjCB3LN9/hgPS8oUL7KrSW3bA2ePrKZZPJcc5y0hoJAM9dft3pGfErtEUvxXQcfLxUg==", + "requires": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + } + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.14.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.14.2.tgz", + "integrity": "sha512-hBIQFxwZi8GIp934+nj5uV31mqclC1aYDhctDu5khTi9PCCUOczyy0b34W0oE9U/eJXiqQaKyVsmjeagOaSlbw==", + "requires": { + "@babel/compat-data": "^7.14.0", + "@babel/helper-compilation-targets": "^7.13.16", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.14.2" + } + }, + "@babel/plugin-proposal-optional-catch-binding": { + "version": "7.14.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.14.2.tgz", + "integrity": "sha512-XtkJsmJtBaUbOxZsNk0Fvrv8eiqgneug0A6aqLFZ4TSkar2L5dSXWcnUKHgmjJt49pyB/6ZHvkr3dPgl9MOWRQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + } + }, + "@babel/plugin-proposal-optional-chaining": { + "version": "7.14.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.14.2.tgz", + "integrity": "sha512-qQByMRPwMZJainfig10BoaDldx/+VDtNcrA7qdNaEOAj6VXud+gfrkA8j4CRAU5HjnWREXqIpSpH30qZX1xivA==", + "requires": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + } + }, + "@babel/plugin-proposal-private-methods": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.13.0.tgz", + "integrity": "sha512-MXyyKQd9inhx1kDYPkFRVOBXQ20ES8Pto3T7UZ92xj2mY0EVD8oAVzeyYuVfy/mxAdTSIayOvg+aVzcHV2bn6Q==", + "requires": { + "@babel/helper-create-class-features-plugin": "^7.13.0", + "@babel/helper-plugin-utils": "^7.13.0" + } + }, + "@babel/plugin-proposal-private-property-in-object": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.14.0.tgz", + "integrity": "sha512-59ANdmEwwRUkLjB7CRtwJxxwtjESw+X2IePItA+RGQh+oy5RmpCh/EvVVvh5XQc3yxsm5gtv0+i9oBZhaDNVTg==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.12.13", + "@babel/helper-create-class-features-plugin": "^7.14.0", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-private-property-in-object": "^7.14.0" + } + }, + "@babel/plugin-proposal-unicode-property-regex": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.13.tgz", + "integrity": "sha512-XyJmZidNfofEkqFV5VC/bLabGmO5QzenPO/YOfGuEbgU+2sSwMmio3YLb4WtBgcmmdwZHyVyv8on77IUjQ5Gvg==", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-syntax-class-static-block": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.12.13.tgz", + "integrity": "sha512-ZmKQ0ZXR0nYpHZIIuj9zE7oIqCx2hw9TKi+lIo73NNrMPAZGHfS92/VRV0ZmPj6H2ffBgyFHXvJ5NYsNeEaP2A==", + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-syntax-flow": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.12.13.tgz", + "integrity": "sha512-J/RYxnlSLXZLVR7wTRsozxKT8qbsx1mNKJzXEEjQ0Kjx1ZACcyHgbanNWNCFtc36IzuWhYWPpvJFFoexoOWFmA==", + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-jsx": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.13.tgz", + "integrity": "sha512-d4HM23Q1K7oq/SLNmG6mRt85l2csmQ0cHRaxRXjKW0YFdEXqlZ5kzFQKH5Uc3rDJECgu+yCRgPkG04Mm98R/1g==", + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.0.tgz", + "integrity": "sha512-bda3xF8wGl5/5btF794utNOL0Jw+9jE5C1sLZcoK7c4uonE/y3iQiyG+KbkF3WBV/paX58VCpjhxLPkdj5Fe4w==", + "requires": { + "@babel/helper-plugin-utils": "^7.13.0" + } + }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.13.tgz", + "integrity": "sha512-A81F9pDwyS7yM//KwbCSDqy3Uj4NMIurtplxphWxoYtNPov7cJsDkAFNNyVlIZ3jwGycVsurZ+LtOA8gZ376iQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.13.0.tgz", + "integrity": "sha512-96lgJagobeVmazXFaDrbmCLQxBysKu7U6Do3mLsx27gf5Dk85ezysrs2BZUpXD703U/Su1xTBDxxar2oa4jAGg==", + "requires": { + "@babel/helper-plugin-utils": "^7.13.0" + } + }, + "@babel/plugin-transform-async-to-generator": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.13.0.tgz", + "integrity": "sha512-3j6E004Dx0K3eGmhxVJxwwI89CTJrce7lg3UrtFuDAVQ/2+SJ/h/aSFOeE6/n0WB1GsOffsJp6MnPQNQ8nmwhg==", + "requires": { + "@babel/helper-module-imports": "^7.12.13", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-remap-async-to-generator": "^7.13.0" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.13.tgz", + "integrity": "sha512-zNyFqbc3kI/fVpqwfqkg6RvBgFpC4J18aKKMmv7KdQ/1GgREapSJAykLMVNwfRGO3BtHj3YQZl8kxCXPcVMVeg==", + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.14.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.14.2.tgz", + "integrity": "sha512-neZZcP19NugZZqNwMTH+KoBjx5WyvESPSIOQb4JHpfd+zPfqcH65RMu5xJju5+6q/Y2VzYrleQTr+b6METyyxg==", + "requires": { + "@babel/helper-plugin-utils": "^7.13.0" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.14.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.14.2.tgz", + "integrity": "sha512-7oafAVcucHquA/VZCsXv/gmuiHeYd64UJyyTYU+MPfNu0KeNlxw06IeENBO8bJjXVbolu+j1MM5aKQtH1OMCNg==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.12.13", + "@babel/helper-function-name": "^7.14.2", + "@babel/helper-optimise-call-expression": "^7.12.13", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-replace-supers": "^7.13.12", + "@babel/helper-split-export-declaration": "^7.12.13", + "globals": "^11.1.0" + } + }, + "@babel/plugin-transform-computed-properties": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.13.0.tgz", + "integrity": "sha512-RRqTYTeZkZAz8WbieLTvKUEUxZlUTdmL5KGMyZj7FnMfLNKV4+r5549aORG/mgojRmFlQMJDUupwAMiF2Q7OUg==", + "requires": { + "@babel/helper-plugin-utils": "^7.13.0" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.13.17", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.13.17.tgz", + "integrity": "sha512-UAUqiLv+uRLO+xuBKKMEpC+t7YRNVRqBsWWq1yKXbBZBje/t3IXCiSinZhjn/DC3qzBfICeYd2EFGEbHsh5RLA==", + "requires": { + "@babel/helper-plugin-utils": "^7.13.0" + } + }, + "@babel/plugin-transform-dotall-regex": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.13.tgz", + "integrity": "sha512-foDrozE65ZFdUC2OfgeOCrEPTxdB3yjqxpXh8CH+ipd9CHd4s/iq81kcUpyH8ACGNEPdFqbtzfgzbT/ZGlbDeQ==", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-duplicate-keys": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.13.tgz", + "integrity": "sha512-NfADJiiHdhLBW3pulJlJI2NB0t4cci4WTZ8FtdIuNc2+8pslXdPtRRAEWqUY+m9kNOk2eRYbTAOipAxlrOcwwQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.13.tgz", + "integrity": "sha512-fbUelkM1apvqez/yYx1/oICVnGo2KM5s63mhGylrmXUxK/IAXSIf87QIxVfZldWf4QsOafY6vV3bX8aMHSvNrA==", + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-flow-strip-types": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.13.0.tgz", + "integrity": "sha512-EXAGFMJgSX8gxWD7PZtW/P6M+z74jpx3wm/+9pn+c2dOawPpBkUX7BrfyPvo6ZpXbgRIEuwgwDb/MGlKvu2pOg==", + "requires": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-flow": "^7.12.13" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.13.0.tgz", + "integrity": "sha512-IHKT00mwUVYE0zzbkDgNRP6SRzvfGCYsOxIRz8KsiaaHCcT9BWIkO+H9QRJseHBLOGBZkHUdHiqj6r0POsdytg==", + "requires": { + "@babel/helper-plugin-utils": "^7.13.0" + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.13.tgz", + "integrity": "sha512-6K7gZycG0cmIwwF7uMK/ZqeCikCGVBdyP2J5SKNCXO5EOHcqi+z7Jwf8AmyDNcBgxET8DrEtCt/mPKPyAzXyqQ==", + "requires": { + "@babel/helper-function-name": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-literals": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.13.tgz", + "integrity": "sha512-FW+WPjSR7hiUxMcKqyNjP05tQ2kmBCdpEpZHY1ARm96tGQCCBvXKnpjILtDplUnJ/eHZ0lALLM+d2lMFSpYJrQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-member-expression-literals": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.13.tgz", + "integrity": "sha512-kxLkOsg8yir4YeEPHLuO2tXP9R/gTjpuTOjshqSpELUN3ZAg2jfDnKUvzzJxObun38sw3wm4Uu69sX/zA7iRvg==", + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-modules-amd": { + "version": "7.14.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.14.2.tgz", + "integrity": "sha512-hPC6XBswt8P3G2D1tSV2HzdKvkqOpmbyoy+g73JG0qlF/qx2y3KaMmXb1fLrpmWGLZYA0ojCvaHdzFWjlmV+Pw==", + "requires": { + "@babel/helper-module-transforms": "^7.14.2", + "@babel/helper-plugin-utils": "^7.13.0", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.14.0.tgz", + "integrity": "sha512-EX4QePlsTaRZQmw9BsoPeyh5OCtRGIhwfLquhxGp5e32w+dyL8htOcDwamlitmNFK6xBZYlygjdye9dbd9rUlQ==", + "requires": { + "@babel/helper-module-transforms": "^7.14.0", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-simple-access": "^7.13.12", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-systemjs": { + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.13.8.tgz", + "integrity": "sha512-hwqctPYjhM6cWvVIlOIe27jCIBgHCsdH2xCJVAYQm7V5yTMoilbVMi9f6wKg0rpQAOn6ZG4AOyvCqFF/hUh6+A==", + "requires": { + "@babel/helper-hoist-variables": "^7.13.0", + "@babel/helper-module-transforms": "^7.13.0", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-validator-identifier": "^7.12.11", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-umd": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.14.0.tgz", + "integrity": "sha512-nPZdnWtXXeY7I87UZr9VlsWme3Y0cfFFE41Wbxz4bbaexAjNMInXPFUpRRUJ8NoMm0Cw+zxbqjdPmLhcjfazMw==", + "requires": { + "@babel/helper-module-transforms": "^7.14.0", + "@babel/helper-plugin-utils": "^7.13.0" + } + }, + "@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.13.tgz", + "integrity": "sha512-Xsm8P2hr5hAxyYblrfACXpQKdQbx4m2df9/ZZSQ8MAhsadw06+jW7s9zsSw6he+mJZXRlVMyEnVktJo4zjk1WA==", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.12.13" + } + }, + "@babel/plugin-transform-new-target": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.13.tgz", + "integrity": "sha512-/KY2hbLxrG5GTQ9zzZSc3xWiOy379pIETEhbtzwZcw9rvuaVV4Fqy7BYGYOWZnaoXIQYbbJ0ziXLa/sKcGCYEQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-object-super": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.13.tgz", + "integrity": "sha512-JzYIcj3XtYspZDV8j9ulnoMPZZnF/Cj0LUxPOjR89BdBVx+zYJI9MdMIlUZjbXDX+6YVeS6I3e8op+qQ3BYBoQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-replace-supers": "^7.12.13" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.14.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.14.2.tgz", + "integrity": "sha512-NxoVmA3APNCC1JdMXkdYXuQS+EMdqy0vIwyDHeKHiJKRxmp1qGSdb0JLEIoPRhkx6H/8Qi3RJ3uqOCYw8giy9A==", + "requires": { + "@babel/helper-plugin-utils": "^7.13.0" + } + }, + "@babel/plugin-transform-property-literals": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.13.tgz", + "integrity": "sha512-nqVigwVan+lR+g8Fj8Exl0UQX2kymtjcWfMOYM1vTYEKujeyv2SkMgazf2qNcK7l4SDiKyTA/nHCPqL4e2zo1A==", + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-react-jsx": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.13.12.tgz", + "integrity": "sha512-jcEI2UqIcpCqB5U5DRxIl0tQEProI2gcu+g8VTIqxLO5Iidojb4d77q+fwGseCvd8af/lJ9masp4QWzBXFE2xA==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.12.13", + "@babel/helper-module-imports": "^7.13.12", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-jsx": "^7.12.13", + "@babel/types": "^7.13.12" + } + }, + "@babel/plugin-transform-regenerator": { + "version": "7.13.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.13.15.tgz", + "integrity": "sha512-Bk9cOLSz8DiurcMETZ8E2YtIVJbFCPGW28DJWUakmyVWtQSm6Wsf0p4B4BfEr/eL2Nkhe/CICiUiMOCi1TPhuQ==", + "requires": { + "regenerator-transform": "^0.14.2" + } + }, + "@babel/plugin-transform-reserved-words": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.13.tgz", + "integrity": "sha512-xhUPzDXxZN1QfiOy/I5tyye+TRz6lA7z6xaT4CLOjPRMVg1ldRf0LHw0TDBpYL4vG78556WuHdyO9oi5UmzZBg==", + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-shorthand-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.13.tgz", + "integrity": "sha512-xpL49pqPnLtf0tVluuqvzWIgLEhuPpZzvs2yabUHSKRNlN7ScYU7aMlmavOeyXJZKgZKQRBlh8rHbKiJDraTSw==", + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.13.0.tgz", + "integrity": "sha512-V6vkiXijjzYeFmQTr3dBxPtZYLPcUfY34DebOU27jIl2M/Y8Egm52Hw82CSjjPqd54GTlJs5x+CR7HeNr24ckg==", + "requires": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1" + } + }, + "@babel/plugin-transform-sticky-regex": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.13.tgz", + "integrity": "sha512-Jc3JSaaWT8+fr7GRvQP02fKDsYk4K/lYwWq38r/UGfaxo89ajud321NH28KRQ7xy1Ybc0VUE5Pz8psjNNDUglg==", + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.13.0.tgz", + "integrity": "sha512-d67umW6nlfmr1iehCcBv69eSUSySk1EsIS8aTDX4Xo9qajAh6mYtcl4kJrBkGXuxZPEgVr7RVfAvNW6YQkd4Mw==", + "requires": { + "@babel/helper-plugin-utils": "^7.13.0" + } + }, + "@babel/plugin-transform-typeof-symbol": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.13.tgz", + "integrity": "sha512-eKv/LmUJpMnu4npgfvs3LiHhJua5fo/CysENxa45YCQXZwKnGCQKAg87bvoqSW1fFT+HA32l03Qxsm8ouTY3ZQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-unicode-escapes": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.13.tgz", + "integrity": "sha512-0bHEkdwJ/sN/ikBHfSmOXPypN/beiGqjo+o4/5K+vxEFNPRPdImhviPakMKG4x96l85emoa0Z6cDflsdBusZbw==", + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.13.tgz", + "integrity": "sha512-mDRzSNY7/zopwisPZ5kM9XKCfhchqIYwAKRERtEnhYscZB79VRekuRSoYbN0+KVe3y8+q1h6A4svXtP7N+UoCA==", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/preset-env": { + "version": "7.14.2", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.14.2.tgz", + "integrity": "sha512-7dD7lVT8GMrE73v4lvDEb85cgcQhdES91BSD7jS/xjC6QY8PnRhux35ac+GCpbiRhp8crexBvZZqnaL6VrY8TQ==", + "requires": { + "@babel/compat-data": "^7.14.0", + "@babel/helper-compilation-targets": "^7.13.16", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-validator-option": "^7.12.17", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.13.12", + "@babel/plugin-proposal-async-generator-functions": "^7.14.2", + "@babel/plugin-proposal-class-properties": "^7.13.0", + "@babel/plugin-proposal-class-static-block": "^7.13.11", + "@babel/plugin-proposal-dynamic-import": "^7.14.2", + "@babel/plugin-proposal-export-namespace-from": "^7.14.2", + "@babel/plugin-proposal-json-strings": "^7.14.2", + "@babel/plugin-proposal-logical-assignment-operators": "^7.14.2", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.14.2", + "@babel/plugin-proposal-numeric-separator": "^7.14.2", + "@babel/plugin-proposal-object-rest-spread": "^7.14.2", + "@babel/plugin-proposal-optional-catch-binding": "^7.14.2", + "@babel/plugin-proposal-optional-chaining": "^7.14.2", + "@babel/plugin-proposal-private-methods": "^7.13.0", + "@babel/plugin-proposal-private-property-in-object": "^7.14.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.12.13", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.12.13", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.0", + "@babel/plugin-syntax-top-level-await": "^7.12.13", + "@babel/plugin-transform-arrow-functions": "^7.13.0", + "@babel/plugin-transform-async-to-generator": "^7.13.0", + "@babel/plugin-transform-block-scoped-functions": "^7.12.13", + "@babel/plugin-transform-block-scoping": "^7.14.2", + "@babel/plugin-transform-classes": "^7.14.2", + "@babel/plugin-transform-computed-properties": "^7.13.0", + "@babel/plugin-transform-destructuring": "^7.13.17", + "@babel/plugin-transform-dotall-regex": "^7.12.13", + "@babel/plugin-transform-duplicate-keys": "^7.12.13", + "@babel/plugin-transform-exponentiation-operator": "^7.12.13", + "@babel/plugin-transform-for-of": "^7.13.0", + "@babel/plugin-transform-function-name": "^7.12.13", + "@babel/plugin-transform-literals": "^7.12.13", + "@babel/plugin-transform-member-expression-literals": "^7.12.13", + "@babel/plugin-transform-modules-amd": "^7.14.2", + "@babel/plugin-transform-modules-commonjs": "^7.14.0", + "@babel/plugin-transform-modules-systemjs": "^7.13.8", + "@babel/plugin-transform-modules-umd": "^7.14.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.12.13", + "@babel/plugin-transform-new-target": "^7.12.13", + "@babel/plugin-transform-object-super": "^7.12.13", + "@babel/plugin-transform-parameters": "^7.14.2", + "@babel/plugin-transform-property-literals": "^7.12.13", + "@babel/plugin-transform-regenerator": "^7.13.15", + "@babel/plugin-transform-reserved-words": "^7.12.13", + "@babel/plugin-transform-shorthand-properties": "^7.12.13", + "@babel/plugin-transform-spread": "^7.13.0", + "@babel/plugin-transform-sticky-regex": "^7.12.13", + "@babel/plugin-transform-template-literals": "^7.13.0", + "@babel/plugin-transform-typeof-symbol": "^7.12.13", + "@babel/plugin-transform-unicode-escapes": "^7.12.13", + "@babel/plugin-transform-unicode-regex": "^7.12.13", + "@babel/preset-modules": "^0.1.4", + "@babel/types": "^7.14.2", + "babel-plugin-polyfill-corejs2": "^0.2.0", + "babel-plugin-polyfill-corejs3": "^0.2.0", + "babel-plugin-polyfill-regenerator": "^0.2.0", + "core-js-compat": "^3.9.0", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } + } + }, + "@babel/preset-modules": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.4.tgz", + "integrity": "sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg==", + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + } + }, + "@babel/runtime": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.0.tgz", + "integrity": "sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==", + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/template": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz", + "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==", + "requires": { + "@babel/code-frame": "^7.12.13", + "@babel/parser": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, + "@babel/traverse": { + "version": "7.14.2", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.2.tgz", + "integrity": "sha512-TsdRgvBFHMyHOOzcP9S6QU0QQtjxlRpEYOy3mcCO5RgmC305ki42aSAmfZEMSSYBla2oZ9BMqYlncBaKmD/7iA==", + "requires": { + "@babel/code-frame": "^7.12.13", + "@babel/generator": "^7.14.2", + "@babel/helper-function-name": "^7.14.2", + "@babel/helper-split-export-declaration": "^7.12.13", + "@babel/parser": "^7.14.2", + "@babel/types": "^7.14.2", + "debug": "^4.1.0", + "globals": "^11.1.0" + } + }, + "@babel/types": { + "version": "7.14.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.2.tgz", + "integrity": "sha512-SdjAG/3DikRHpUOjxZgnkbR11xUlyDMUFJdvnIgZEE16mqmY0BINMmc4//JMJglEmn6i7sq6p+mGrFWyZ98EEw==", + "requires": { + "@babel/helper-validator-identifier": "^7.14.0", + "to-fast-properties": "^2.0.0" + } + }, + "@iarna/toml": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/@iarna/toml/-/toml-2.2.5.tgz", + "integrity": "sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==" + }, + "@mrmlnc/readdir-enhanced": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", + "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==", + "requires": { + "call-me-maybe": "^1.0.1", + "glob-to-regexp": "^0.3.0" + } + }, + "@nodelib/fs.stat": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz", + "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==" + }, + "@parcel/fs": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@parcel/fs/-/fs-1.11.0.tgz", + "integrity": "sha512-86RyEqULbbVoeo8OLcv+LQ1Vq2PKBAvWTU9fCgALxuCTbbs5Ppcvll4Vr+Ko1AnmMzja/k++SzNAwJfeQXVlpA==", + "requires": { + "@parcel/utils": "^1.11.0", + "mkdirp": "^0.5.1", + "rimraf": "^2.6.2" + } + }, + "@parcel/logger": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@parcel/logger/-/logger-1.11.1.tgz", + "integrity": "sha512-9NF3M6UVeP2udOBDILuoEHd8VrF4vQqoWHEafymO1pfSoOMfxrSJZw1MfyAAIUN/IFp9qjcpDCUbDZB+ioVevA==", + "requires": { + "@parcel/workers": "^1.11.0", + "chalk": "^2.1.0", + "grapheme-breaker": "^0.3.2", + "ora": "^2.1.0", + "strip-ansi": "^4.0.0" + } + }, + "@parcel/utils": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@parcel/utils/-/utils-1.11.0.tgz", + "integrity": "sha512-cA3p4jTlaMeOtAKR/6AadanOPvKeg8VwgnHhOyfi0yClD0TZS/hi9xu12w4EzA/8NtHu0g6o4RDfcNjqN8l1AQ==" + }, + "@parcel/watcher": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-1.12.1.tgz", + "integrity": "sha512-od+uCtCxC/KoNQAIE1vWx1YTyKYY+7CTrxBJPRh3cDWw/C0tCtlBMVlrbplscGoEpt6B27KhJDCv82PBxOERNA==", + "requires": { + "@parcel/utils": "^1.11.0", + "chokidar": "^2.1.5" + } + }, + "@parcel/workers": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@parcel/workers/-/workers-1.11.0.tgz", + "integrity": "sha512-USSjRAAQYsZFlv43FUPdD+jEGML5/8oLF0rUzPQTtK4q9kvaXr49F5ZplyLz5lox78cLZ0TxN2bIDQ1xhOkulQ==", + "requires": { + "@parcel/utils": "^1.11.0", + "physical-cpu-count": "^2.0.0" + } + }, + "@types/q": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.4.tgz", + "integrity": "sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug==" + }, + "abab": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", + "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==" + }, + "acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==" + }, + "acorn-globals": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.4.tgz", + "integrity": "sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A==", + "requires": { + "acorn": "^6.0.1", + "acorn-walk": "^6.0.1" + }, + "dependencies": { + "acorn": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", + "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==" + } + } + }, + "acorn-walk": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.2.0.tgz", + "integrity": "sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==" + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "alphanum-sort": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", + "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=" + }, + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "ansi-to-html": { + "version": "0.6.15", + "resolved": "https://registry.npmjs.org/ansi-to-html/-/ansi-to-html-0.6.15.tgz", + "integrity": "sha512-28ijx2aHJGdzbs+O5SNQF65r6rrKYnkuwTYm8lZlChuoJ9P1vVzIpWO20sQTqTPDXYp6NFwk326vApTtLVFXpQ==", + "requires": { + "entities": "^2.0.0" + } + }, + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==" + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=" + }, + "array-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", + "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=" + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" + }, + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "asn1.js": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", + "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", + "requires": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "safer-buffer": "^2.1.0" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + } + } + }, + "assert": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", + "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", + "requires": { + "object-assign": "^4.1.1", + "util": "0.10.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=" + }, + "util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "requires": { + "inherits": "2.0.1" + } + } + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=" + }, + "async-each": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", + "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==" + }, + "async-limiter": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", + "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==" + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==" + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" + }, + "aws4": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", + "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" + }, + "babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "requires": { + "object.assign": "^4.1.0" + } + }, + "babel-plugin-polyfill-corejs2": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.2.0.tgz", + "integrity": "sha512-9bNwiR0dS881c5SHnzCmmGlMkJLl0OUZvxrxHo9w/iNoRuqaPjqlvBf4HrovXtQs/au5yKkpcdgfT1cC5PAZwg==", + "requires": { + "@babel/compat-data": "^7.13.11", + "@babel/helper-define-polyfill-provider": "^0.2.0", + "semver": "^6.1.1" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } + } + }, + "babel-plugin-polyfill-corejs3": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.2.0.tgz", + "integrity": "sha512-zZyi7p3BCUyzNxLx8KV61zTINkkV65zVkDAFNZmrTCRVhjo1jAS+YLvDJ9Jgd/w2tsAviCwFHReYfxO3Iql8Yg==", + "requires": { + "@babel/helper-define-polyfill-provider": "^0.2.0", + "core-js-compat": "^3.9.1" + } + }, + "babel-plugin-polyfill-regenerator": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.2.0.tgz", + "integrity": "sha512-J7vKbCuD2Xi/eEHxquHN14bXAW9CXtecwuLrOIDJtcZzTaPzV1VdEfoUf9AzcRBMolKUQKM9/GVojeh0hFiqMg==", + "requires": { + "@babel/helper-define-polyfill-provider": "^0.2.0" + } + }, + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "requires": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + }, + "dependencies": { + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" + } + } + }, + "babel-types": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", + "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "requires": { + "babel-runtime": "^6.26.0", + "esutils": "^2.0.2", + "lodash": "^4.17.4", + "to-fast-properties": "^1.0.3" + }, + "dependencies": { + "to-fast-properties": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", + "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=" + } + } + }, + "babylon-walk": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/babylon-walk/-/babylon-walk-1.0.2.tgz", + "integrity": "sha1-OxWl3btIKni0zpwByLoYFwLZ1s4=", + "requires": { + "babel-runtime": "^6.11.6", + "babel-types": "^6.15.0", + "lodash.clone": "^4.5.0" + } + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "^1.0.0" + } + } + } + }, + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==" + }, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "requires": { + "file-uri-to-path": "1.0.0" + } + }, + "bn.js": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", + "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==" + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=" + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + } + }, + "brfs": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/brfs/-/brfs-1.6.1.tgz", + "integrity": "sha512-OfZpABRQQf+Xsmju8XE9bDjs+uU4vLREGolP7bDgcpsI17QREyZ4Bl+2KLxxx1kCgA0fAIhKQBaBYh+PEcCqYQ==", + "requires": { + "quote-stream": "^1.0.1", + "resolve": "^1.1.5", + "static-module": "^2.2.0", + "through2": "^2.0.0" + } + }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=" + }, + "browser-process-hrtime": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==" + }, + "browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "requires": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "requires": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "requires": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "browserify-rsa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", + "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", + "requires": { + "bn.js": "^5.0.0", + "randombytes": "^2.0.1" + } + }, + "browserify-sign": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", + "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", + "requires": { + "bn.js": "^5.1.1", + "browserify-rsa": "^4.0.1", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.5.3", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.5", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + } + } + }, + "browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "requires": { + "pako": "~1.0.5" + } + }, + "browserslist": { + "version": "4.16.6", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz", + "integrity": "sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==", + "requires": { + "caniuse-lite": "^1.0.30001219", + "colorette": "^1.2.2", + "electron-to-chromium": "^1.3.723", + "escalade": "^3.1.1", + "node-releases": "^1.1.71" + } + }, + "buffer": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", + "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, + "buffer-equal": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-0.0.1.tgz", + "integrity": "sha1-kbx0sR6kBbyRa8aqkI+q+ltKrEs=" + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" + }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=" + }, + "builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=" + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + } + }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, + "call-me-maybe": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", + "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=" + }, + "caller-callsite": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", + "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", + "requires": { + "callsites": "^2.0.0" + } + }, + "caller-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", + "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", + "requires": { + "caller-callsite": "^2.0.0" + } + }, + "callsites": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=" + }, + "caniuse-api": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", + "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", + "requires": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + } + }, + "caniuse-lite": { + "version": "1.0.30001228", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001228.tgz", + "integrity": "sha512-QQmLOGJ3DEgokHbMSA8cj2a+geXqmnpyOFT0lhQV6P3/YOJvGDEwoedcwxEQ30gJIwIIunHIicunJ2rzK5gB2A==" + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + } + }, + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + } + } + } + } + }, + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "requires": { + "restore-cursor": "^2.0.0" + } + }, + "cli-spinners": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-1.3.1.tgz", + "integrity": "sha512-1QL4544moEsDVH9T/l6Cemov/37iv1RtoKf7NJ04A60+4MREXNfx/QvavbH6QoGdsD4N4Mwy49cmaINR/o2mdg==" + }, + "clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=" + }, + "coa": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz", + "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==", + "requires": { + "@types/q": "^1.5.1", + "chalk": "^2.4.1", + "q": "^1.1.2" + } + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/color/-/color-3.1.3.tgz", + "integrity": "sha512-xgXAcTHa2HeFCGLE9Xs/R82hujGtu9Jd9x4NW3T34+OMs7VoPsjwzRczKHvTAHeJwWFwX5j15+MgAppE8ztObQ==", + "requires": { + "color-convert": "^1.9.1", + "color-string": "^1.5.4" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "color-string": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.5.tgz", + "integrity": "sha512-jgIoum0OfQfq9Whcfc2z/VhCNcmQjWbey6qBX0vqt7YICflUmBCh9E9CiQD5GSJ+Uehixm3NUwHVhqUAWRivZg==", + "requires": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "colorette": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz", + "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==" + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "command-exists": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz", + "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==" + }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + }, + "component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "console-browserify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==" + }, + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=" + }, + "convert-source-map": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", + "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=" + }, + "core-js": { + "version": "2.6.12", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", + "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==" + }, + "core-js-compat": { + "version": "3.12.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.12.1.tgz", + "integrity": "sha512-i6h5qODpw6EsHAoIdQhKoZdWn+dGBF3dSS8m5tif36RlWvW3A6+yu2S16QHUo3CrkzrnEskMAt9f8FxmY9fhWQ==", + "requires": { + "browserslist": "^4.16.6", + "semver": "7.0.0" + }, + "dependencies": { + "semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==" + } + } + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, + "cosmiconfig": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", + "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", + "requires": { + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" + } + }, + "create-ecdh": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", + "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", + "requires": { + "bn.js": "^4.1.0", + "elliptic": "^6.5.3" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + } + } + }, + "create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "requires": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "requires": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "requires": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + } + }, + "css-color-names": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", + "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=" + }, + "css-declaration-sorter": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz", + "integrity": "sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA==", + "requires": { + "postcss": "^7.0.1", + "timsort": "^0.3.0" + } + }, + "css-modules-loader-core": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/css-modules-loader-core/-/css-modules-loader-core-1.1.0.tgz", + "integrity": "sha1-WQhmgpShvs0mGuCkziGwtVHyHRY=", + "requires": { + "icss-replace-symbols": "1.1.0", + "postcss": "6.0.1", + "postcss-modules-extract-imports": "1.1.0", + "postcss-modules-local-by-default": "1.2.0", + "postcss-modules-scope": "1.1.0", + "postcss-modules-values": "1.3.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" + }, + "postcss": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.1.tgz", + "integrity": "sha1-AA29H47vIXqjaLmiEsX8QLKo8/I=", + "requires": { + "chalk": "^1.1.3", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "css-select": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", + "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", + "requires": { + "boolbase": "^1.0.0", + "css-what": "^3.2.1", + "domutils": "^1.7.0", + "nth-check": "^1.0.2" + } + }, + "css-select-base-adapter": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz", + "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==" + }, + "css-selector-tokenizer": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.3.tgz", + "integrity": "sha512-jWQv3oCEL5kMErj4wRnK/OPoBi0D+P1FR2cDCKYPaMeD2eW3/mttav8HT4hT1CKopiJI/psEULjkClhvJo4Lvg==", + "requires": { + "cssesc": "^3.0.0", + "fastparse": "^1.1.2" + } + }, + "css-tree": { + "version": "1.0.0-alpha.37", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz", + "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==", + "requires": { + "mdn-data": "2.0.4", + "source-map": "^0.6.1" + } + }, + "css-what": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz", + "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==" + }, + "cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==" + }, + "cssnano": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.11.tgz", + "integrity": "sha512-6gZm2htn7xIPJOHY824ERgj8cNPgPxyCSnkXc4v7YvNW+TdVfzgngHcEhy/8D11kUWRUMbke+tC+AUcUsnMz2g==", + "requires": { + "cosmiconfig": "^5.0.0", + "cssnano-preset-default": "^4.0.8", + "is-resolvable": "^1.0.0", + "postcss": "^7.0.0" + } + }, + "cssnano-preset-default": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.8.tgz", + "integrity": "sha512-LdAyHuq+VRyeVREFmuxUZR1TXjQm8QQU/ktoo/x7bz+SdOge1YKc5eMN6pRW7YWBmyq59CqYba1dJ5cUukEjLQ==", + "requires": { + "css-declaration-sorter": "^4.0.1", + "cssnano-util-raw-cache": "^4.0.1", + "postcss": "^7.0.0", + "postcss-calc": "^7.0.1", + "postcss-colormin": "^4.0.3", + "postcss-convert-values": "^4.0.1", + "postcss-discard-comments": "^4.0.2", + "postcss-discard-duplicates": "^4.0.2", + "postcss-discard-empty": "^4.0.1", + "postcss-discard-overridden": "^4.0.1", + "postcss-merge-longhand": "^4.0.11", + "postcss-merge-rules": "^4.0.3", + "postcss-minify-font-values": "^4.0.2", + "postcss-minify-gradients": "^4.0.2", + "postcss-minify-params": "^4.0.2", + "postcss-minify-selectors": "^4.0.2", + "postcss-normalize-charset": "^4.0.1", + "postcss-normalize-display-values": "^4.0.2", + "postcss-normalize-positions": "^4.0.2", + "postcss-normalize-repeat-style": "^4.0.2", + "postcss-normalize-string": "^4.0.2", + "postcss-normalize-timing-functions": "^4.0.2", + "postcss-normalize-unicode": "^4.0.1", + "postcss-normalize-url": "^4.0.1", + "postcss-normalize-whitespace": "^4.0.2", + "postcss-ordered-values": "^4.1.2", + "postcss-reduce-initial": "^4.0.3", + "postcss-reduce-transforms": "^4.0.2", + "postcss-svgo": "^4.0.3", + "postcss-unique-selectors": "^4.0.1" + } + }, + "cssnano-util-get-arguments": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz", + "integrity": "sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8=" + }, + "cssnano-util-get-match": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz", + "integrity": "sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0=" + }, + "cssnano-util-raw-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz", + "integrity": "sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==", + "requires": { + "postcss": "^7.0.0" + } + }, + "cssnano-util-same-parent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz", + "integrity": "sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==" + }, + "csso": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", + "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", + "requires": { + "css-tree": "^1.1.2" + }, + "dependencies": { + "css-tree": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", + "requires": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + } + }, + "mdn-data": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==" + } + } + }, + "cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==" + }, + "cssstyle": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.4.0.tgz", + "integrity": "sha512-GBrLZYZ4X4x6/QEoBnIrqb8B/f5l4+8me2dkom/j1Gtbxy0kBv6OGzKuAsGM75bkGwGAFkt56Iwg28S3XTZgSA==", + "requires": { + "cssom": "0.3.x" + } + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "requires": { + "assert-plus": "^1.0.0" + } + }, + "data-urls": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz", + "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==", + "requires": { + "abab": "^2.0.0", + "whatwg-mimetype": "^2.2.0", + "whatwg-url": "^7.0.0" + } + }, + "deasync": { + "version": "0.1.21", + "resolved": "https://registry.npmjs.org/deasync/-/deasync-0.1.21.tgz", + "integrity": "sha512-kUmM8Y+PZpMpQ+B4AuOW9k2Pfx/mSupJtxOsLzmnHY2WqZUYRFccFn2RhzPAqt3Xb+sorK/badW2D4zNzqZz5w==", + "requires": { + "bindings": "^1.5.0", + "node-addon-api": "^1.7.1" + } + }, + "debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "requires": { + "ms": "2.1.2" + } + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=" + }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=" + }, + "defaults": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", + "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", + "requires": { + "clone": "^1.0.2" + }, + "dependencies": { + "clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=" + } + } + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "requires": { + "object-keys": "^1.0.12" + } + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" + }, + "des.js": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", + "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", + "requires": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" + }, + "diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "requires": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + } + } + }, + "dom-serializer": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", + "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", + "requires": { + "domelementtype": "^2.0.1", + "entities": "^2.0.0" + }, + "dependencies": { + "domelementtype": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", + "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==" + } + } + }, + "domain-browser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==" + }, + "domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==" + }, + "domexception": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", + "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", + "requires": { + "webidl-conversions": "^4.0.2" + } + }, + "domhandler": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", + "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", + "requires": { + "domelementtype": "1" + } + }, + "domutils": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", + "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "dot-prop": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "requires": { + "is-obj": "^2.0.0" + } + }, + "dotenv": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-5.0.1.tgz", + "integrity": "sha512-4As8uPrjfwb7VXC+WnLCbXK7y+Ueb2B3zgNCePYfhxS1PYeaO1YTeplffTEcbfLhvFNGLAz90VvJs9yomG7bow==" + }, + "dotenv-expand": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz", + "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==" + }, + "duplexer2": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", + "requires": { + "readable-stream": "^2.0.2" + } + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + }, + "electron-to-chromium": { + "version": "1.3.728", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.728.tgz", + "integrity": "sha512-SHv4ziXruBpb1Nz4aTuqEHBYi/9GNCJMYIJgDEXrp/2V01nFXMNFUTli5Z85f5ivSkioLilQatqBYFB44wNJrA==" + }, + "elliptic": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", + "requires": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + } + } + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" + }, + "entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==" + }, + "envinfo": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", + "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==" + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es-abstract": { + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0.tgz", + "integrity": "sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw==", + "requires": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "get-intrinsic": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.2", + "is-callable": "^1.2.3", + "is-negative-zero": "^2.0.1", + "is-regex": "^1.1.2", + "is-string": "^1.0.5", + "object-inspect": "^1.9.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.2", + "string.prototype.trimend": "^1.0.4", + "string.prototype.trimstart": "^1.0.4", + "unbox-primitive": "^1.0.0" + }, + "dependencies": { + "object-inspect": { + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.10.3.tgz", + "integrity": "sha512-e5mCJlSH7poANfC8z8S9s9S2IN5/4Zb3aZ33f5s8YqoazCFzNLloLU8r5VCG+G7WoqLvAAZoVMcy3tp/3X0Plw==" + } + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + }, + "escodegen": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.9.1.tgz", + "integrity": "sha512-6hTjO1NAWkHnDk3OqQ4YrCuwwmGHL9S3nPlzBOUG/R44rda3wLNrfvQ5fkSGjyhHFKM7ALPKcKGrwvCLe0lC7Q==", + "requires": { + "esprima": "^3.1.3", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + }, + "dependencies": { + "esprima": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", + "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=" + } + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" + }, + "events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==" + }, + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "requires": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + } + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "^1.0.0" + } + } + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" + }, + "falafel": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/falafel/-/falafel-2.2.4.tgz", + "integrity": "sha512-0HXjo8XASWRmsS0X1EkhwEMZaD3Qvp7FfURwjLKjG1ghfRm/MGZl2r4cWUTv41KdNghTw4OUMmVtdGQp3+H+uQ==", + "requires": { + "acorn": "^7.1.1", + "foreach": "^2.0.5", + "isarray": "^2.0.1", + "object-keys": "^1.0.6" + }, + "dependencies": { + "isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" + } + } + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "fast-glob": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz", + "integrity": "sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==", + "requires": { + "@mrmlnc/readdir-enhanced": "^2.2.1", + "@nodelib/fs.stat": "^1.1.2", + "glob-parent": "^3.1.0", + "is-glob": "^4.0.0", + "merge2": "^1.2.3", + "micromatch": "^3.1.10" + } + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" + }, + "fastparse": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz", + "integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==" + }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==" + }, + "filesize": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.6.1.tgz", + "integrity": "sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg==" + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" + }, + "foreach": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", + "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=" + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" + }, + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "requires": { + "map-cache": "^0.2.2" + } + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + } + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==" + }, + "get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + } + }, + "get-port": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz", + "integrity": "sha1-3Xzn3hh8Bsi/NTeWrHHgmfCYDrw=" + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=" + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "requires": { + "assert-plus": "^1.0.0" + } + }, + "glob": { + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "glob-to-regexp": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz", + "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=" + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" + }, + "graceful-fs": { + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", + "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==" + }, + "grapheme-breaker": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/grapheme-breaker/-/grapheme-breaker-0.3.2.tgz", + "integrity": "sha1-W55reMODJFLSuiuxy4MPlidkEKw=", + "requires": { + "brfs": "^1.2.0", + "unicode-trie": "^0.3.1" + } + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" + }, + "har-validator": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "requires": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "requires": { + "ansi-regex": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + } + } + }, + "has-bigints": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", + "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==" + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, + "has-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==" + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "hash-base": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "requires": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + } + } + }, + "hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "hex-color-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz", + "integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==" + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "requires": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "hsl-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz", + "integrity": "sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4=" + }, + "hsla-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz", + "integrity": "sha1-wc56MWjIxmFAM6S194d/OyJfnDg=" + }, + "html-encoding-sniffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", + "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", + "requires": { + "whatwg-encoding": "^1.0.1" + } + }, + "html-tags": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-1.2.0.tgz", + "integrity": "sha1-x43mW1Zjqll5id0rerSSANfk25g=" + }, + "htmlnano": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/htmlnano/-/htmlnano-0.2.9.tgz", + "integrity": "sha512-jWTtP3dCd7R8x/tt9DK3pvpcQd7HDMcRPUqPxr/i9989q2k5RHIhmlRDFeyQ/LSd8IKrteG8Ce5g0Ig4eGIipg==", + "requires": { + "cssnano": "^4.1.11", + "posthtml": "^0.15.1", + "purgecss": "^2.3.0", + "relateurl": "^0.2.7", + "srcset": "^3.0.0", + "svgo": "^1.3.2", + "terser": "^5.6.1", + "timsort": "^0.3.0", + "uncss": "^0.17.3" + }, + "dependencies": { + "dom-serializer": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.1.tgz", + "integrity": "sha512-Pv2ZluG5ife96udGgEDovOOOA5UELkltfJpnIExPrAk1LTvecolUGn6lIaoLh86d83GiB86CjzciMd9BuRB71Q==", + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "entities": "^2.0.0" + } + }, + "domelementtype": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", + "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==" + }, + "domhandler": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.2.0.tgz", + "integrity": "sha512-zk7sgt970kzPks2Bf+dwT/PLzghLnsivb9CcxkvR8Mzr66Olr0Ofd8neSbglHJHaHa2MadfoSdNlKYAaafmWfA==", + "requires": { + "domelementtype": "^2.2.0" + } + }, + "domutils": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.6.0.tgz", + "integrity": "sha512-y0BezHuy4MDYxh6OvolXYsH+1EMGmFbwv5FKW7ovwMG6zTPWqNPq3WF9ayZssFq+UlKdffGLbOEaghNdaOm1WA==", + "requires": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + } + }, + "htmlparser2": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", + "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" + } + }, + "posthtml": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/posthtml/-/posthtml-0.15.2.tgz", + "integrity": "sha512-YugEJ5ze/0DLRIVBjCpDwANWL4pPj1kHJ/2llY8xuInr0nbkon3qTiMPe5LQa+cCwNjxS7nAZZTp+1M+6mT4Zg==", + "requires": { + "posthtml-parser": "^0.7.2", + "posthtml-render": "^1.3.1" + } + }, + "posthtml-parser": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/posthtml-parser/-/posthtml-parser-0.7.2.tgz", + "integrity": "sha512-LjEEG/3fNcWZtBfsOE3Gbyg1Li4CmsZRkH1UmbMR7nKdMXVMYI3B4/ZMiCpaq8aI1Aym4FRMMW9SAOLSwOnNsQ==", + "requires": { + "htmlparser2": "^6.0.0" + } + }, + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==" + }, + "terser": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.7.0.tgz", + "integrity": "sha512-HP5/9hp2UaZt5fYkuhNBR8YyRcT8juw8+uFbAme53iN9hblvKnLUTKkmwJG6ocWpIKf8UK4DoeWG4ty0J6S6/g==", + "requires": { + "commander": "^2.20.0", + "source-map": "~0.7.2", + "source-map-support": "~0.5.19" + } + } + } + }, + "htmlparser2": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", + "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", + "requires": { + "domelementtype": "^1.3.1", + "domhandler": "^2.3.0", + "domutils": "^1.5.1", + "entities": "^1.1.1", + "inherits": "^2.0.1", + "readable-stream": "^3.1.1" + }, + "dependencies": { + "entities": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", + "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==" + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "http-errors": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz", + "integrity": "sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==", + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=" + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "icss-replace-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz", + "integrity": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=" + }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" + }, + "import-fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", + "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", + "requires": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + } + }, + "indexes-of": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", + "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=" + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "is-absolute-url": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", + "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=" + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "^6.0.0" + }, + "dependencies": { + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + } + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" + }, + "is-bigint": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.2.tgz", + "integrity": "sha512-0JV5+SOCQkIdzjBK9buARcV804Ddu7A0Qet6sHi3FimE9ne6m4BGQZfRn+NZiXbBk4F4XmHfDZIipLj9pX8dSA==" + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-boolean-object": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.1.tgz", + "integrity": "sha512-bXdQWkECBUIAcCkeH1unwJLIpZYaa5VvuygSyS/c2lf719mTKZDU5UdDRlpd01UjADgmW8RfqaP+mRaVPdr/Ng==", + "requires": { + "call-bind": "^1.0.2" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + }, + "is-callable": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", + "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==" + }, + "is-color-stop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz", + "integrity": "sha1-z/9HGu5N1cnhWFmPvhKWe1za00U=", + "requires": { + "css-color-names": "^0.0.4", + "hex-color-regex": "^1.1.0", + "hsl-regex": "^1.0.0", + "hsla-regex": "^1.0.0", + "rgb-regex": "^1.0.1", + "rgba-regex": "^1.0.0" + } + }, + "is-core-module": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.4.0.tgz", + "integrity": "sha512-6A2fkfq1rfeQZjxrZJGerpLCTHRNEBiSgnu0+obeJpEPZRUooHgsizvzv0ZjJwOz3iWIHdJtVWJ/tmPr3D21/A==", + "requires": { + "has": "^1.0.3" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "^6.0.0" + }, + "dependencies": { + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + } + } + }, + "is-date-object": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.4.tgz", + "integrity": "sha512-/b4ZVsG7Z5XVtIxs/h9W8nvfLgSAyKYdtGWQLbqy6jA1icmgjf8WCoTKgeS4wy5tYaPePouzFMANbnj94c2Z+A==" + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + } + } + }, + "is-directory": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", + "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=" + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-html": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-html/-/is-html-1.1.0.tgz", + "integrity": "sha1-4E8cGNOUhRETlvmgJz6rUa8hhGQ=", + "requires": { + "html-tags": "^1.0.0" + } + }, + "is-negative-zero": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", + "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==" + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-number-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.5.tgz", + "integrity": "sha512-RU0lI/n95pMoUKu9v1BZP5MBcZuNSVJkMkAG2dJqC4z2GlkGUNeH68SuHuBKBD/XFe+LHZ+f9BKkLET60Niedw==" + }, + "is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==" + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "requires": { + "isobject": "^3.0.1" + } + }, + "is-regex": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.3.tgz", + "integrity": "sha512-qSVXFz28HM7y+IWX6vLCsexdlvzT1PJNFSBuaQLQ5o0IEw8UDYW6/2+eCMVyIsbM8CNLX2a/QWmSpyxYEHY7CQ==", + "requires": { + "call-bind": "^1.0.2", + "has-symbols": "^1.0.2" + } + }, + "is-resolvable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", + "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==" + }, + "is-string": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.6.tgz", + "integrity": "sha512-2gdzbKUuqtQ3lYNrUTQYoClPhm7oQu4UdpSZMp1/DGgkHBT8E2Z1l0yMdb6D4zNAxwDiMv8MdulKROJGNl0Q0w==" + }, + "is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "requires": { + "has-symbols": "^1.0.2" + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + }, + "is-url": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz", + "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==" + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==" + }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=" + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" + }, + "jsdom": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-14.1.0.tgz", + "integrity": "sha512-O901mfJSuTdwU2w3Sn+74T+RnDVP+FuV5fH8tcPWyqrseRAb0s5xOtPgCFiPOtLcyK7CLIJwPyD83ZqQWvA5ng==", + "requires": { + "abab": "^2.0.0", + "acorn": "^6.0.4", + "acorn-globals": "^4.3.0", + "array-equal": "^1.0.0", + "cssom": "^0.3.4", + "cssstyle": "^1.1.1", + "data-urls": "^1.1.0", + "domexception": "^1.0.1", + "escodegen": "^1.11.0", + "html-encoding-sniffer": "^1.0.2", + "nwsapi": "^2.1.3", + "parse5": "5.1.0", + "pn": "^1.1.0", + "request": "^2.88.0", + "request-promise-native": "^1.0.5", + "saxes": "^3.1.9", + "symbol-tree": "^3.2.2", + "tough-cookie": "^2.5.0", + "w3c-hr-time": "^1.0.1", + "w3c-xmlserializer": "^1.1.2", + "webidl-conversions": "^4.0.2", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^7.0.0", + "ws": "^6.1.2", + "xml-name-validator": "^3.0.0" + }, + "dependencies": { + "acorn": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", + "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==" + }, + "escodegen": { + "version": "1.14.3", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", + "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", + "requires": { + "esprima": "^4.0.1", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + } + }, + "ws": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", + "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", + "requires": { + "async-limiter": "~1.0.0" + } + } + } + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" + }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + }, + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "requires": { + "minimist": "^1.2.0" + } + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "lodash.clone": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clone/-/lodash.clone-4.5.0.tgz", + "integrity": "sha1-GVhwRQ9aExkkeN9Lw9I9LeoZB7Y=" + }, + "lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=" + }, + "lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=" + }, + "lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=" + }, + "lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=" + }, + "log-symbols": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", + "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", + "requires": { + "chalk": "^2.0.1" + } + }, + "magic-string": { + "version": "0.22.5", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.22.5.tgz", + "integrity": "sha512-oreip9rJZkzvA8Qzk9HFs8fZGF/u7H/gtrE8EN6RjKJ9kh2HlC+yQ2QezifqTZfGyiuAV0dRv5a+y/8gBb1m9w==", + "requires": { + "vlq": "^0.2.2" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=" + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "requires": { + "object-visit": "^1.0.0" + } + }, + "md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "mdn-data": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz", + "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==" + }, + "merge-source-map": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.0.4.tgz", + "integrity": "sha1-pd5GU42uhNQRTMXqArR3KmNGcB8=", + "requires": { + "source-map": "^0.5.6" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + } + } + }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==" + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "dependencies": { + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "^2.0.4" + } + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + } + } + }, + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "requires": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + } + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + }, + "mime-db": { + "version": "1.47.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.47.0.tgz", + "integrity": "sha512-QBmA/G2y+IfeS4oktet3qRZ+P5kPhCKRXxXnQEudYqUaEioAU1/Lq2us3D/t1Jfo4hE9REQPrbB7K5sOczJVIw==" + }, + "mime-types": { + "version": "2.1.30", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.30.tgz", + "integrity": "sha512-crmjA4bLtR8m9qLpHvgxSChT+XoSlZi8J4n/aIdn3z92e/U47Z0V/yl+Wh9W046GgFVAmoNR/fmdbZYcSSIUeg==", + "requires": { + "mime-db": "1.47.0" + } + }, + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==" + }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=" + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + }, + "mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "requires": { + "minimist": "^1.2.5" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "nan": { + "version": "2.14.2", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.2.tgz", + "integrity": "sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ==", + "optional": true + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "^2.0.4" + } + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + } + } + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" + }, + "node-addon-api": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-1.7.2.tgz", + "integrity": "sha512-ibPK3iA+vaY1eEjESkQkM0BbCqFOaZMiXRTtdB0u7b4djtY6JnsjvPdUHVMg6xQt3B8fpTTWHI9A+ADjM9frzg==" + }, + "node-forge": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz", + "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==" + }, + "node-libs-browser": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", + "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", + "requires": { + "assert": "^1.1.1", + "browserify-zlib": "^0.2.0", + "buffer": "^4.3.0", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "crypto-browserify": "^3.11.0", + "domain-browser": "^1.1.1", + "events": "^3.0.0", + "https-browserify": "^1.0.0", + "os-browserify": "^0.3.0", + "path-browserify": "0.0.1", + "process": "^0.11.10", + "punycode": "^1.2.4", + "querystring-es3": "^0.2.0", + "readable-stream": "^2.3.3", + "stream-browserify": "^2.0.1", + "stream-http": "^2.7.2", + "string_decoder": "^1.0.0", + "timers-browserify": "^2.0.4", + "tty-browserify": "0.0.0", + "url": "^0.11.0", + "util": "^0.11.0", + "vm-browserify": "^1.0.1" + } + }, + "node-releases": { + "version": "1.1.72", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.72.tgz", + "integrity": "sha512-LLUo+PpH3dU6XizX3iVoubUNheF/owjXCZZ5yACDxNnPtgFuludV1ZL3ayK1kVep42Rmm0+R9/Y60NQbZ2bifw==" + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" + }, + "normalize-url": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz", + "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==" + }, + "nth-check": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", + "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", + "requires": { + "boolbase": "~1.0.0" + } + }, + "nwsapi": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", + "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==" + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + } + } + } + } + }, + "object-inspect": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.4.1.tgz", + "integrity": "sha512-wqdhLpfCUbEsoEwl3FXwGyv8ief1k/1aUdIPCqVnupM6e8l63BEJdiF/0swtn04/8p05tG/T0FrpTlfwvljOdw==" + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "requires": { + "isobject": "^3.0.0" + } + }, + "object.assign": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + } + }, + "object.getownpropertydescriptors": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.2.tgz", + "integrity": "sha512-WtxeKSzfBjlzL+F9b7M7hewDzMwy+C8NRssHd1YrNlzHzIDrXcXiNOMrezdAEM4UXixgV+vvnyBeN7Rygl2ttQ==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.2" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "requires": { + "isobject": "^3.0.1" + } + }, + "object.values": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.3.tgz", + "integrity": "sha512-nkF6PfDB9alkOUxpf1HNm/QlkeW3SReqL5WXeBLpEJJnlPSvRaDQpW3gQTksTN3fgJX4hL42RzKyOin6ff3tyw==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.2", + "has": "^1.0.3" + } + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "requires": { + "ee-first": "1.1.1" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "requires": { + "mimic-fn": "^1.0.0" + } + }, + "opn": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz", + "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==", + "requires": { + "is-wsl": "^1.1.0" + } + }, + "optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + } + }, + "ora": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-2.1.0.tgz", + "integrity": "sha512-hNNlAd3gfv/iPmsNxYoAPLvxg7HuPozww7fFonMZvL84tP6Ox5igfk5j/+a9rtJJwqMgKK+JgWsAQik5o0HTLA==", + "requires": { + "chalk": "^2.3.1", + "cli-cursor": "^2.1.0", + "cli-spinners": "^1.1.0", + "log-symbols": "^2.2.0", + "strip-ansi": "^4.0.0", + "wcwidth": "^1.0.1" + } + }, + "os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=" + }, + "pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" + }, + "parcel-bundler": { + "version": "1.12.5", + "resolved": "https://registry.npmjs.org/parcel-bundler/-/parcel-bundler-1.12.5.tgz", + "integrity": "sha512-hpku8mW67U6PXQIenW6NBbphBOMb8XzW6B9r093DUhYj5GN2FUB/CXCiz5hKoPYUsusZ35BpProH8AUF9bh5IQ==", + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/core": "^7.4.4", + "@babel/generator": "^7.4.4", + "@babel/parser": "^7.4.4", + "@babel/plugin-transform-flow-strip-types": "^7.4.4", + "@babel/plugin-transform-modules-commonjs": "^7.4.4", + "@babel/plugin-transform-react-jsx": "^7.0.0", + "@babel/preset-env": "^7.4.4", + "@babel/runtime": "^7.4.4", + "@babel/template": "^7.4.4", + "@babel/traverse": "^7.4.4", + "@babel/types": "^7.4.4", + "@iarna/toml": "^2.2.0", + "@parcel/fs": "^1.11.0", + "@parcel/logger": "^1.11.1", + "@parcel/utils": "^1.11.0", + "@parcel/watcher": "^1.12.1", + "@parcel/workers": "^1.11.0", + "ansi-to-html": "^0.6.4", + "babylon-walk": "^1.0.2", + "browserslist": "^4.1.0", + "chalk": "^2.1.0", + "clone": "^2.1.1", + "command-exists": "^1.2.6", + "commander": "^2.11.0", + "core-js": "^2.6.5", + "cross-spawn": "^6.0.4", + "css-modules-loader-core": "^1.1.0", + "cssnano": "^4.0.0", + "deasync": "^0.1.14", + "dotenv": "^5.0.0", + "dotenv-expand": "^5.1.0", + "envinfo": "^7.3.1", + "fast-glob": "^2.2.2", + "filesize": "^3.6.0", + "get-port": "^3.2.0", + "htmlnano": "^0.2.2", + "is-glob": "^4.0.0", + "is-url": "^1.2.2", + "js-yaml": "^3.10.0", + "json5": "^1.0.1", + "micromatch": "^3.0.4", + "mkdirp": "^0.5.1", + "node-forge": "^0.10.0", + "node-libs-browser": "^2.0.0", + "opn": "^5.1.0", + "postcss": "^7.0.11", + "postcss-value-parser": "^3.3.1", + "posthtml": "^0.11.2", + "posthtml-parser": "^0.4.0", + "posthtml-render": "^1.1.3", + "resolve": "^1.4.0", + "semver": "^5.4.1", + "serialize-to-js": "^3.0.0", + "serve-static": "^1.12.4", + "source-map": "0.6.1", + "terser": "^3.7.3", + "v8-compile-cache": "^2.0.0", + "ws": "^5.1.1" + } + }, + "parcel-plugin-transcrypt": { + "version": "1.0.20", + "resolved": "https://registry.npmjs.org/parcel-plugin-transcrypt/-/parcel-plugin-transcrypt-1.0.20.tgz", + "integrity": "sha512-/nzFcV/bHjQC1VjwZ/GO7K8SvI1lyndquWfB76znmJYjqAbHdM8xsjnMvaXPNnYH7VTAYHO8i0y8gvrKdkbR3g==" + }, + "parse-asn1": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", + "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", + "requires": { + "asn1.js": "^5.2.0", + "browserify-aes": "^1.0.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" + } + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "parse5": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz", + "integrity": "sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==" + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=" + }, + "path-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", + "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==" + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=" + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" + }, + "pbkdf2": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", + "requires": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" + }, + "physical-cpu-count": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/physical-cpu-count/-/physical-cpu-count-2.0.0.tgz", + "integrity": "sha1-GN4vl+S/epVRrXURlCtUlverpmA=" + }, + "pn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", + "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==" + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=" + }, + "postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "dependencies": { + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss-calc": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.5.tgz", + "integrity": "sha512-1tKHutbGtLtEZF6PT4JSihCHfIVldU72mZ8SdZHIYriIZ9fh9k9aWSppaT8rHsyI3dX+KSR+W+Ix9BMY3AODrg==", + "requires": { + "postcss": "^7.0.27", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.0.2" + }, + "dependencies": { + "postcss-value-parser": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz", + "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==" + } + } + }, + "postcss-colormin": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-4.0.3.tgz", + "integrity": "sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw==", + "requires": { + "browserslist": "^4.0.0", + "color": "^3.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-convert-values": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz", + "integrity": "sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ==", + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-discard-comments": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz", + "integrity": "sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg==", + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-discard-duplicates": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz", + "integrity": "sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ==", + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-discard-empty": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz", + "integrity": "sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w==", + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-discard-overridden": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz", + "integrity": "sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg==", + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-merge-longhand": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz", + "integrity": "sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw==", + "requires": { + "css-color-names": "0.0.4", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "stylehacks": "^4.0.0" + } + }, + "postcss-merge-rules": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz", + "integrity": "sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ==", + "requires": { + "browserslist": "^4.0.0", + "caniuse-api": "^3.0.0", + "cssnano-util-same-parent": "^4.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0", + "vendors": "^1.0.0" + }, + "dependencies": { + "postcss-selector-parser": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", + "requires": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "postcss-minify-font-values": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz", + "integrity": "sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg==", + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-minify-gradients": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz", + "integrity": "sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q==", + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "is-color-stop": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-minify-params": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz", + "integrity": "sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg==", + "requires": { + "alphanum-sort": "^1.0.0", + "browserslist": "^4.0.0", + "cssnano-util-get-arguments": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "uniqs": "^2.0.0" + } + }, + "postcss-minify-selectors": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz", + "integrity": "sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g==", + "requires": { + "alphanum-sort": "^1.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0" + }, + "dependencies": { + "postcss-selector-parser": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", + "requires": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "postcss-modules-extract-imports": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.1.0.tgz", + "integrity": "sha1-thTJcgvmgW6u41+zpfqh26agXds=", + "requires": { + "postcss": "^6.0.1" + }, + "dependencies": { + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + } + } + } + }, + "postcss-modules-local-by-default": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz", + "integrity": "sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk=", + "requires": { + "css-selector-tokenizer": "^0.7.0", + "postcss": "^6.0.1" + }, + "dependencies": { + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + } + } + } + }, + "postcss-modules-scope": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz", + "integrity": "sha1-1upkmUx5+XtipytCb75gVqGUu5A=", + "requires": { + "css-selector-tokenizer": "^0.7.0", + "postcss": "^6.0.1" + }, + "dependencies": { + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + } + } + } + }, + "postcss-modules-values": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz", + "integrity": "sha1-7P+p1+GSUYOJ9CrQ6D9yrsRW6iA=", + "requires": { + "icss-replace-symbols": "^1.1.0", + "postcss": "^6.0.1" + }, + "dependencies": { + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + } + } + } + }, + "postcss-normalize-charset": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz", + "integrity": "sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g==", + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-normalize-display-values": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz", + "integrity": "sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ==", + "requires": { + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-normalize-positions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz", + "integrity": "sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA==", + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-normalize-repeat-style": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz", + "integrity": "sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q==", + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-normalize-string": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz", + "integrity": "sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA==", + "requires": { + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-normalize-timing-functions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz", + "integrity": "sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A==", + "requires": { + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-normalize-unicode": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz", + "integrity": "sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg==", + "requires": { + "browserslist": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-normalize-url": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz", + "integrity": "sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA==", + "requires": { + "is-absolute-url": "^2.0.0", + "normalize-url": "^3.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-normalize-whitespace": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz", + "integrity": "sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA==", + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-ordered-values": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz", + "integrity": "sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw==", + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-reduce-initial": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz", + "integrity": "sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA==", + "requires": { + "browserslist": "^4.0.0", + "caniuse-api": "^3.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0" + } + }, + "postcss-reduce-transforms": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz", + "integrity": "sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg==", + "requires": { + "cssnano-util-get-match": "^4.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-selector-parser": { + "version": "6.0.6", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.6.tgz", + "integrity": "sha512-9LXrvaaX3+mcv5xkg5kFwqSzSH1JIObIx51PrndZwlmznwXRfxMddDvo9gve3gVR8ZTKgoFDdWkbRFmEhT4PMg==", + "requires": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + } + }, + "postcss-svgo": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.3.tgz", + "integrity": "sha512-NoRbrcMWTtUghzuKSoIm6XV+sJdvZ7GZSc3wdBN0W19FTtp2ko8NqLsgoh/m9CzNhU3KLPvQmjIwtaNFkaFTvw==", + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "svgo": "^1.0.0" + } + }, + "postcss-unique-selectors": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz", + "integrity": "sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg==", + "requires": { + "alphanum-sort": "^1.0.0", + "postcss": "^7.0.0", + "uniqs": "^2.0.0" + } + }, + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + }, + "posthtml": { + "version": "0.11.6", + "resolved": "https://registry.npmjs.org/posthtml/-/posthtml-0.11.6.tgz", + "integrity": "sha512-C2hrAPzmRdpuL3iH0TDdQ6XCc9M7Dcc3zEW5BLerY65G4tWWszwv6nG/ksi6ul5i2mx22ubdljgktXCtNkydkw==", + "requires": { + "posthtml-parser": "^0.4.1", + "posthtml-render": "^1.1.5" + } + }, + "posthtml-parser": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/posthtml-parser/-/posthtml-parser-0.4.2.tgz", + "integrity": "sha512-BUIorsYJTvS9UhXxPTzupIztOMVNPa/HtAm9KHni9z6qEfiJ1bpOBL5DfUOL9XAc3XkLIEzBzpph+Zbm4AdRAg==", + "requires": { + "htmlparser2": "^3.9.2" + } + }, + "posthtml-render": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/posthtml-render/-/posthtml-render-1.4.0.tgz", + "integrity": "sha512-W1779iVHGfq0Fvh2PROhCe2QhB8mEErgqzo1wpIt36tCgChafP+hbXIhLDOM8ePJrZcFs0vkNEtdibEWVqChqw==" + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=" + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=" + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "psl": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==" + }, + "public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "requires": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + } + } + }, + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + }, + "purgecss": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/purgecss/-/purgecss-2.3.0.tgz", + "integrity": "sha512-BE5CROfVGsx2XIhxGuZAT7rTH9lLeQx/6M0P7DTXQH4IUc3BBzs9JUzt4yzGf3JrH9enkeq6YJBe9CTtkm1WmQ==", + "requires": { + "commander": "^5.0.0", + "glob": "^7.0.0", + "postcss": "7.0.32", + "postcss-selector-parser": "^6.0.2" + }, + "dependencies": { + "commander": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", + "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==" + }, + "postcss": { + "version": "7.0.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz", + "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==", + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=" + }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=" + }, + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=" + }, + "quote-stream": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/quote-stream/-/quote-stream-1.0.2.tgz", + "integrity": "sha1-hJY/jJwmuULhU/7rU6rnRlK34LI=", + "requires": { + "buffer-equal": "0.0.1", + "minimist": "^1.1.3", + "through2": "^2.0.0" + } + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "requires": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + }, + "dependencies": { + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + }, + "regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==" + }, + "regenerate-unicode-properties": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz", + "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==", + "requires": { + "regenerate": "^1.4.0" + } + }, + "regenerator-runtime": { + "version": "0.13.7", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", + "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==" + }, + "regenerator-transform": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz", + "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", + "requires": { + "@babel/runtime": "^7.8.4" + } + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "regexpu-core": { + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz", + "integrity": "sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==", + "requires": { + "regenerate": "^1.4.0", + "regenerate-unicode-properties": "^8.2.0", + "regjsgen": "^0.5.1", + "regjsparser": "^0.6.4", + "unicode-match-property-ecmascript": "^1.0.4", + "unicode-match-property-value-ecmascript": "^1.2.0" + } + }, + "regjsgen": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", + "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==" + }, + "regjsparser": { + "version": "0.6.9", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.9.tgz", + "integrity": "sha512-ZqbNRz1SNjLAiYuwY0zoXW8Ne675IX5q+YHioAGbCw4X96Mjl2+dcX9B2ciaeyYjViDAfvIjFpQjJgLttTEERQ==", + "requires": { + "jsesc": "~0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=" + } + } + }, + "relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=" + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=" + }, + "repeat-element": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", + "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==" + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" + }, + "request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + } + }, + "request-promise-core": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.4.tgz", + "integrity": "sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==", + "requires": { + "lodash": "^4.17.19" + } + }, + "request-promise-native": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.9.tgz", + "integrity": "sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g==", + "requires": { + "request-promise-core": "1.1.4", + "stealthy-require": "^1.1.1", + "tough-cookie": "^2.3.3" + } + }, + "resolve": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "requires": { + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" + } + }, + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=" + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=" + }, + "restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "requires": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + } + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==" + }, + "rgb-regex": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz", + "integrity": "sha1-wODWiC3w4jviVKR16O3UGRX+rrE=" + }, + "rgba-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz", + "integrity": "sha1-QzdOLiyglosO8VI0YLfXMP8i7rM=" + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "requires": { + "glob": "^7.1.3" + } + }, + "ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "requires": { + "ret": "~0.1.10" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + }, + "saxes": { + "version": "3.1.11", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-3.1.11.tgz", + "integrity": "sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g==", + "requires": { + "xmlchars": "^2.1.1" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + }, + "send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", + "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", + "requires": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.7.2", + "mime": "1.6.0", + "ms": "2.1.1", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + } + } + }, + "serialize-to-js": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/serialize-to-js/-/serialize-to-js-3.1.1.tgz", + "integrity": "sha512-F+NGU0UHMBO4Q965tjw7rvieNVjlH6Lqi2emq/Lc9LUURYJbiCzmpi4Cy1OOjjVPtxu0c+NE85LU6968Wko5ZA==" + }, + "serve-static": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", + "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.1" + } + }, + "set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + } + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" + }, + "setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" + }, + "sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "shallow-copy": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/shallow-copy/-/shallow-copy-0.0.1.tgz", + "integrity": "sha1-QV9CcC1z2BAzApLMXuhurhoRoXA=" + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" + }, + "signal-exit": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==" + }, + "simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", + "requires": { + "is-arrayish": "^0.3.1" + }, + "dependencies": { + "is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" + } + } + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + } + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "^1.0.0" + } + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "requires": { + "kind-of": "^3.2.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "requires": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "source-map-support": { + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "source-map-url": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", + "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==" + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "requires": { + "extend-shallow": "^3.0.0" + }, + "dependencies": { + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" + }, + "srcset": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/srcset/-/srcset-3.0.1.tgz", + "integrity": "sha512-MM8wDGg5BQJEj94tDrZDrX9wrC439/Eoeg3sgmVLPMjHgrAFeXAKk3tmFlCbKw5k+yOEhPXRpPlRcisQmqWVSQ==" + }, + "sshpk": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, + "stable": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==" + }, + "static-eval": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/static-eval/-/static-eval-2.1.0.tgz", + "integrity": "sha512-agtxZ/kWSsCkI5E4QifRwsaPs0P0JmZV6dkLz6ILYfFYQGn+5plctanRN+IC8dJRiFkyXHrwEE3W9Wmx67uDbw==", + "requires": { + "escodegen": "^1.11.1" + }, + "dependencies": { + "escodegen": { + "version": "1.14.3", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", + "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", + "requires": { + "esprima": "^4.0.1", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + } + } + } + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + } + } + } + } + }, + "static-module": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/static-module/-/static-module-2.2.5.tgz", + "integrity": "sha512-D8vv82E/Kpmz3TXHKG8PPsCPg+RAX6cbCOyvjM6x04qZtQ47EtJFVwRsdov3n5d6/6ynrOY9XB4JkaZwB2xoRQ==", + "requires": { + "concat-stream": "~1.6.0", + "convert-source-map": "^1.5.1", + "duplexer2": "~0.1.4", + "escodegen": "~1.9.0", + "falafel": "^2.1.0", + "has": "^1.0.1", + "magic-string": "^0.22.4", + "merge-source-map": "1.0.4", + "object-inspect": "~1.4.0", + "quote-stream": "~1.0.2", + "readable-stream": "~2.3.3", + "shallow-copy": "~0.0.1", + "static-eval": "^2.0.0", + "through2": "~2.0.3" + } + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" + }, + "stealthy-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", + "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=" + }, + "stream-browserify": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", + "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", + "requires": { + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" + } + }, + "stream-http": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", + "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", + "requires": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" + } + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "requires": { + "safe-buffer": "~5.2.0" + }, + "dependencies": { + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + } + } + }, + "string.prototype.trimend": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", + "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "string.prototype.trimstart": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", + "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "requires": { + "ansi-regex": "^3.0.0" + } + }, + "stylehacks": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz", + "integrity": "sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g==", + "requires": { + "browserslist": "^4.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0" + }, + "dependencies": { + "postcss-selector-parser": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", + "requires": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + }, + "svgo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz", + "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==", + "requires": { + "chalk": "^2.4.1", + "coa": "^2.0.2", + "css-select": "^2.0.0", + "css-select-base-adapter": "^0.1.1", + "css-tree": "1.0.0-alpha.37", + "csso": "^4.0.2", + "js-yaml": "^3.13.1", + "mkdirp": "~0.5.1", + "object.values": "^1.1.0", + "sax": "~1.2.4", + "stable": "^0.1.8", + "unquote": "~1.1.1", + "util.promisify": "~1.0.0" + } + }, + "symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==" + }, + "terser": { + "version": "3.17.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-3.17.0.tgz", + "integrity": "sha512-/FQzzPJmCpjAH9Xvk2paiWrFq+5M6aVOf+2KRbwhByISDX/EujxsK+BAvrhb6H+2rtrLCHK9N01wO014vrIwVQ==", + "requires": { + "commander": "^2.19.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.10" + } + }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "timers-browserify": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", + "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", + "requires": { + "setimmediate": "^1.0.4" + } + }, + "timsort": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", + "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=" + }, + "tiny-inflate": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-inflate/-/tiny-inflate-1.0.3.tgz", + "integrity": "sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==" + }, + "to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=" + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=" + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "requires": { + "kind-of": "^3.0.2" + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, + "toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" + }, + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + }, + "dependencies": { + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + } + } + }, + "tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", + "requires": { + "punycode": "^2.1.0" + }, + "dependencies": { + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + } + } + }, + "tty-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=" + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "requires": { + "prelude-ls": "~1.1.2" + } + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" + }, + "unbox-primitive": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", + "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", + "requires": { + "function-bind": "^1.1.1", + "has-bigints": "^1.0.1", + "has-symbols": "^1.0.2", + "which-boxed-primitive": "^1.0.2" + } + }, + "uncss": { + "version": "0.17.3", + "resolved": "https://registry.npmjs.org/uncss/-/uncss-0.17.3.tgz", + "integrity": "sha512-ksdDWl81YWvF/X14fOSw4iu8tESDHFIeyKIeDrK6GEVTQvqJc1WlOEXqostNwOCi3qAj++4EaLsdAgPmUbEyog==", + "requires": { + "commander": "^2.20.0", + "glob": "^7.1.4", + "is-absolute-url": "^3.0.1", + "is-html": "^1.1.0", + "jsdom": "^14.1.0", + "lodash": "^4.17.15", + "postcss": "^7.0.17", + "postcss-selector-parser": "6.0.2", + "request": "^2.88.0" + }, + "dependencies": { + "is-absolute-url": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz", + "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==" + }, + "postcss-selector-parser": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz", + "integrity": "sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg==", + "requires": { + "cssesc": "^3.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "unicode-canonical-property-names-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", + "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==" + }, + "unicode-match-property-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", + "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", + "requires": { + "unicode-canonical-property-names-ecmascript": "^1.0.4", + "unicode-property-aliases-ecmascript": "^1.0.4" + } + }, + "unicode-match-property-value-ecmascript": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz", + "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==" + }, + "unicode-property-aliases-ecmascript": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz", + "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==" + }, + "unicode-trie": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/unicode-trie/-/unicode-trie-0.3.1.tgz", + "integrity": "sha1-1nHd3YkQGgi6w3tqUWEBBgIFIIU=", + "requires": { + "pako": "^0.2.5", + "tiny-inflate": "^1.0.0" + }, + "dependencies": { + "pako": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", + "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=" + } + } + }, + "union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + } + }, + "uniq": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", + "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=" + }, + "uniqs": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", + "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=" + }, + "unquote": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", + "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=" + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=" + } + } + }, + "upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==" + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "requires": { + "punycode": "^2.1.0" + }, + "dependencies": { + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + } + } + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=" + }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=" + } + } + }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==" + }, + "util": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", + "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", + "requires": { + "inherits": "2.0.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + } + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "util.promisify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz", + "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.2", + "has-symbols": "^1.0.1", + "object.getownpropertydescriptors": "^2.1.0" + } + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" + }, + "v8-compile-cache": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==" + }, + "vendors": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.4.tgz", + "integrity": "sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==" + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "vlq": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/vlq/-/vlq-0.2.3.tgz", + "integrity": "sha512-DRibZL6DsNhIgYQ+wNdWDL2SL3bKPlVrRiBqV5yuMm++op8W4kGFtaQfCs4KEJn0wBZcHVHJ3eoywX8983k1ow==" + }, + "vm-browserify": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==" + }, + "w3c-hr-time": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", + "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", + "requires": { + "browser-process-hrtime": "^1.0.0" + } + }, + "w3c-xmlserializer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz", + "integrity": "sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg==", + "requires": { + "domexception": "^1.0.1", + "webidl-conversions": "^4.0.2", + "xml-name-validator": "^3.0.0" + } + }, + "wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", + "requires": { + "defaults": "^1.0.3" + } + }, + "webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==" + }, + "whatwg-encoding": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", + "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", + "requires": { + "iconv-lite": "0.4.24" + } + }, + "whatwg-mimetype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==" + }, + "whatwg-url": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "requires": { + "isexe": "^2.0.0" + } + }, + "which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "requires": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + } + }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==" + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "ws": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.2.tgz", + "integrity": "sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA==", + "requires": { + "async-limiter": "~1.0.0" + } + }, + "xml-name-validator": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==" + }, + "xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==" + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" + } + } +} diff --git a/transcrypt/demos/parcel_demo/package.json b/transcrypt/demos/parcel_demo/package.json index cead2ced5..1d674d334 100644 --- a/transcrypt/demos/parcel_demo/package.json +++ b/transcrypt/demos/parcel_demo/package.json @@ -8,5 +8,15 @@ "dependencies": { "parcel-bundler": "^1.11.0", "parcel-plugin-transcrypt": "^1.0.20" - } + }, + "parcel-plugin-python": { + "command": "ts", + "arguments": [ + "--nomin", + "--map", + "--verbose" + ] } +} + + diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/arguments.js b/transcrypt/development/automated_tests/transcrypt/__target__38/arguments.js new file mode 100644 index 000000000..67d0d6e7a --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/arguments.js @@ -0,0 +1,232 @@ +// Transcrypt'ed from Python, 2021-05-14 15:00:26 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +var __all__ = dict ({get A () {return A;}, set A (value) {A = value;}, get B () {return B;}, set B (value) {B = value;}, get C () {return C;}, set C (value) {C = value;}, get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get run () {return run;}, set run (value) {run = value;}}); +var __name__ = 'arguments'; +export var A = __class__ ('A', [object], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self, x, y) { + if (typeof x == 'undefined' || (x != null && x.hasOwnProperty ("__kwargtrans__"))) {; + var x = 123; + }; + if (typeof y == 'undefined' || (y != null && y.hasOwnProperty ("__kwargtrans__"))) {; + var y = 456; + }; + var n = 456; + var kwargs = dict (); + if (arguments.length) { + var __ilastarg0__ = arguments.length - 1; + if (arguments [__ilastarg0__] && arguments [__ilastarg0__].hasOwnProperty ("__kwargtrans__")) { + var __allkwargs0__ = arguments [__ilastarg0__--]; + for (var __attrib0__ in __allkwargs0__) { + switch (__attrib0__) { + case 'self': var self = __allkwargs0__ [__attrib0__]; break; + case 'x': var x = __allkwargs0__ [__attrib0__]; break; + case 'y': var y = __allkwargs0__ [__attrib0__]; break; + case 'm': var m = __allkwargs0__ [__attrib0__]; break; + case 'n': var n = __allkwargs0__ [__attrib0__]; break; + default: kwargs [__attrib0__] = __allkwargs0__ [__attrib0__]; + } + } + delete kwargs.__kwargtrans__; + } + var args = tuple ([].slice.apply (arguments).slice (3, __ilastarg0__ + 1)); + } + else { + var args = tuple (); + } + self.x = x; + self.y = y; + self.args = args; + self.m = m; + self.n = n; + self.kwargs = kwargs; + self.extra = 'hello'; + });}, + get f () {return __get__ (this, function (self, autoTester) { + if (arguments.length) { + var __ilastarg0__ = arguments.length - 1; + if (arguments [__ilastarg0__] && arguments [__ilastarg0__].hasOwnProperty ("__kwargtrans__")) { + var __allkwargs0__ = arguments [__ilastarg0__--]; + for (var __attrib0__ in __allkwargs0__) { + switch (__attrib0__) { + case 'self': var self = __allkwargs0__ [__attrib0__]; break; + case 'autoTester': var autoTester = __allkwargs0__ [__attrib0__]; break; + } + } + } + } + else { + } + autoTester.check (self.x, self.y, self.args, self.m, self.n, self.kwargs, self.extra); + });} +}); +export var B = __class__ ('B', [A], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self, x, y) { + if (typeof y == 'undefined' || (y != null && y.hasOwnProperty ("__kwargtrans__"))) {; + var y = -(1); + }; + var m = -(2); + var kwargs = dict (); + if (arguments.length) { + var __ilastarg0__ = arguments.length - 1; + if (arguments [__ilastarg0__] && arguments [__ilastarg0__].hasOwnProperty ("__kwargtrans__")) { + var __allkwargs0__ = arguments [__ilastarg0__--]; + for (var __attrib0__ in __allkwargs0__) { + switch (__attrib0__) { + case 'self': var self = __allkwargs0__ [__attrib0__]; break; + case 'x': var x = __allkwargs0__ [__attrib0__]; break; + case 'y': var y = __allkwargs0__ [__attrib0__]; break; + case 'm': var m = __allkwargs0__ [__attrib0__]; break; + case 'n': var n = __allkwargs0__ [__attrib0__]; break; + default: kwargs [__attrib0__] = __allkwargs0__ [__attrib0__]; + } + } + delete kwargs.__kwargtrans__; + } + var args = tuple ([].slice.apply (arguments).slice (3, __ilastarg0__ + 1)); + } + else { + var args = tuple (); + } + A.__init__ (self, y, x, ...args, __kwargtrans__ (__mergekwargtrans__ ({m: n, n: m}, kwargs))); + });} +}); +export var C = __class__ ('C', [object], { + __module__: __name__, + get tricky () {return __get__ (this, function (self) { + var args = tuple ([].slice.apply (arguments).slice (1)); + return args; + });} +}); +export var run = function (autoTester) { + if (arguments.length) { + var __ilastarg0__ = arguments.length - 1; + if (arguments [__ilastarg0__] && arguments [__ilastarg0__].hasOwnProperty ("__kwargtrans__")) { + var __allkwargs0__ = arguments [__ilastarg0__--]; + for (var __attrib0__ in __allkwargs0__) { + switch (__attrib0__) { + case 'autoTester': var autoTester = __allkwargs0__ [__attrib0__]; break; + } + } + } + } + else { + } + var f = function (x, y) { + if (typeof y == 'undefined' || (y != null && y.hasOwnProperty ("__kwargtrans__"))) {; + var y = -(1); + }; + var m = -(2); + var kwargs = dict (); + if (arguments.length) { + var __ilastarg0__ = arguments.length - 1; + if (arguments [__ilastarg0__] && arguments [__ilastarg0__].hasOwnProperty ("__kwargtrans__")) { + var __allkwargs0__ = arguments [__ilastarg0__--]; + for (var __attrib0__ in __allkwargs0__) { + switch (__attrib0__) { + case 'x': var x = __allkwargs0__ [__attrib0__]; break; + case 'y': var y = __allkwargs0__ [__attrib0__]; break; + case 'm': var m = __allkwargs0__ [__attrib0__]; break; + case 'n': var n = __allkwargs0__ [__attrib0__]; break; + default: kwargs [__attrib0__] = __allkwargs0__ [__attrib0__]; + } + } + delete kwargs.__kwargtrans__; + } + var args = tuple ([].slice.apply (arguments).slice (2, __ilastarg0__ + 1)); + } + else { + var args = tuple (); + } + autoTester.check ('#203', kwargs.__class__.__name__); + autoTester.check ('#203', sorted (kwargs.py_keys ())); + var f2 = function (x, y) { + if (typeof y == 'undefined' || (y != null && y.hasOwnProperty ("__kwargtrans__"))) {; + var y = -(3); + }; + var m = -(4); + var kwargs = dict (); + if (arguments.length) { + var __ilastarg0__ = arguments.length - 1; + if (arguments [__ilastarg0__] && arguments [__ilastarg0__].hasOwnProperty ("__kwargtrans__")) { + var __allkwargs0__ = arguments [__ilastarg0__--]; + for (var __attrib0__ in __allkwargs0__) { + switch (__attrib0__) { + case 'x': var x = __allkwargs0__ [__attrib0__]; break; + case 'y': var y = __allkwargs0__ [__attrib0__]; break; + case 'm': var m = __allkwargs0__ [__attrib0__]; break; + case 'n': var n = __allkwargs0__ [__attrib0__]; break; + default: kwargs [__attrib0__] = __allkwargs0__ [__attrib0__]; + } + } + delete kwargs.__kwargtrans__; + } + var args = tuple ([].slice.apply (arguments).slice (2, __ilastarg0__ + 1)); + } + else { + var args = tuple (); + } + autoTester.check (x, y, args, m, n, kwargs); + }; + f2 (11, 22, 1010, 2020, __kwargtrans__ ({m: 100100, n: 200200, p: 10001000, q: 20002000})); + autoTester.check (x, y, args, m, n, kwargs); + }; + f (1, 2, 10, 20, __kwargtrans__ ({m: 100, n: 200, p: 1000, q: 2000})); + var b = B (3, 4, 30, 40, __kwargtrans__ ({m: 300, n: 400, p: 3000, q: 4000})); + b.f (autoTester); + var g = function () { + var kwargs = dict (); + if (arguments.length) { + var __ilastarg0__ = arguments.length - 1; + if (arguments [__ilastarg0__] && arguments [__ilastarg0__].hasOwnProperty ("__kwargtrans__")) { + var __allkwargs0__ = arguments [__ilastarg0__--]; + for (var __attrib0__ in __allkwargs0__) { + switch (__attrib0__) { + default: kwargs [__attrib0__] = __allkwargs0__ [__attrib0__]; + } + } + delete kwargs.__kwargtrans__; + } + var args = tuple ([].slice.apply (arguments).slice (0, __ilastarg0__ + 1)); + } + else { + var args = tuple (); + } + autoTester.check (args, kwargs); + }; + g (...tuple ([1, 2, 3]), __kwargtrans__ (dict ({'p': 'aP', 'q': 'aQ', 'r': 'anR'}))); + (function __lambda__ (x, y) { + if (typeof y == 'undefined' || (y != null && y.hasOwnProperty ("__kwargtrans__"))) {; + var y = -(1); + }; + var m = -(2); + var kwargs = dict (); + if (arguments.length) { + var __ilastarg0__ = arguments.length - 1; + if (arguments [__ilastarg0__] && arguments [__ilastarg0__].hasOwnProperty ("__kwargtrans__")) { + var __allkwargs0__ = arguments [__ilastarg0__--]; + for (var __attrib0__ in __allkwargs0__) { + switch (__attrib0__) { + case 'x': var x = __allkwargs0__ [__attrib0__]; break; + case 'y': var y = __allkwargs0__ [__attrib0__]; break; + case 'm': var m = __allkwargs0__ [__attrib0__]; break; + case 'n': var n = __allkwargs0__ [__attrib0__]; break; + default: kwargs [__attrib0__] = __allkwargs0__ [__attrib0__]; + } + } + delete kwargs.__kwargtrans__; + } + var args = tuple ([].slice.apply (arguments).slice (2, __ilastarg0__ + 1)); + } + else { + var args = tuple (); + } + return autoTester.check (x, y, args, m, n, kwargs); + }) (1, 2, 8, 16, __kwargtrans__ ({m: 128, n: 256.3, p: 1024.3, q: 2048.3})); + autoTester.check (C ().tricky (...range (4))); + autoTester.check ('{}-{}'.format (1, 3, 5, 7, 9)); + autoTester.check ('{}-{}'.format (...range (4))); +}; + +//# sourceMappingURL=arguments.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/arguments.tree b/transcrypt/development/automated_tests/transcrypt/__target__38/arguments.tree new file mode 100644 index 000000000..6f5ecbcef --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/arguments.tree @@ -0,0 +1,1019 @@ +file: Module + body: list + element: ImportFrom + module: str = org.transcrypt.stubs.browser + names: list + element: alias + name: str = __pragma__ + asname: NoneType = None + level: int = 0 + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = kwargs + kind: NoneType = None + keywords: list + element: ClassDef + name: str = A + bases: list + keywords: list + body: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = y + annotation: NoneType = None + type_comment: NoneType = None + vararg: arg + arg: str = args + annotation: NoneType = None + type_comment: NoneType = None + kwonlyargs: list + element: arg + arg: str = m + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = n + annotation: NoneType = None + type_comment: NoneType = None + kw_defaults: list + element: NoneType = None + element: Constant + value: int = 456 + kind: NoneType = None + kwarg: arg + arg: str = kwargs + annotation: NoneType = None + type_comment: NoneType = None + defaults: list + element: Constant + value: int = 123 + kind: NoneType = None + element: Constant + value: int = 456 + kind: NoneType = None + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = x + ctx: Store + value: Name + id: str = x + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = y + ctx: Store + value: Name + id: str = y + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = args + ctx: Store + value: Name + id: str = args + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = m + ctx: Store + value: Name + id: str = m + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = n + ctx: Store + value: Name + id: str = n + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = kwargs + ctx: Store + value: Name + id: str = kwargs + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = extra + ctx: Store + value: Constant + value: str = hello + kind: NoneType = None + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = f + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = autoTester + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = x + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = y + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = args + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = m + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = n + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = kwargs + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = extra + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: ClassDef + name: str = B + bases: list + element: Name + id: str = A + ctx: Load + keywords: list + body: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = y + annotation: NoneType = None + type_comment: NoneType = None + vararg: arg + arg: str = args + annotation: NoneType = None + type_comment: NoneType = None + kwonlyargs: list + element: arg + arg: str = m + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = n + annotation: NoneType = None + type_comment: NoneType = None + kw_defaults: list + element: UnaryOp + op: USub + operand: Constant + value: int = 2 + kind: NoneType = None + element: NoneType = None + kwarg: arg + arg: str = kwargs + annotation: NoneType = None + type_comment: NoneType = None + defaults: list + element: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = A + ctx: Load + attr: str = __init__ + ctx: Load + args: list + element: Name + id: str = self + ctx: Load + element: Name + id: str = y + ctx: Load + element: Name + id: str = x + ctx: Load + element: Starred + value: Name + id: str = args + ctx: Load + ctx: Load + keywords: list + element: keyword + arg: str = m + value: Name + id: str = n + ctx: Load + element: keyword + arg: str = n + value: Name + id: str = m + ctx: Load + element: keyword + arg: NoneType = None + value: Name + id: str = kwargs + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: ClassDef + name: str = C + bases: list + keywords: list + body: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = nokwargs + kind: NoneType = None + keywords: list + element: FunctionDef + name: str = tricky + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: arg + arg: str = args + annotation: NoneType = None + type_comment: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Name + id: str = args + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = kwargs + kind: NoneType = None + keywords: list + decorator_list: list + element: FunctionDef + name: str = run + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = autoTester + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: FunctionDef + name: str = f + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = y + annotation: NoneType = None + type_comment: NoneType = None + vararg: arg + arg: str = args + annotation: NoneType = None + type_comment: NoneType = None + kwonlyargs: list + element: arg + arg: str = m + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = n + annotation: NoneType = None + type_comment: NoneType = None + kw_defaults: list + element: UnaryOp + op: USub + operand: Constant + value: int = 2 + kind: NoneType = None + element: NoneType = None + kwarg: arg + arg: str = kwargs + annotation: NoneType = None + type_comment: NoneType = None + defaults: list + element: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = #203 + kind: NoneType = None + element: Attribute + value: Attribute + value: Name + id: str = kwargs + ctx: Load + attr: str = __class__ + ctx: Load + attr: str = __name__ + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = #203 + kind: NoneType = None + element: Call + func: Name + id: str = sorted + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = kwargs + ctx: Load + attr: str = keys + ctx: Load + args: list + keywords: list + keywords: list + keywords: list + element: FunctionDef + name: str = f2 + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = y + annotation: NoneType = None + type_comment: NoneType = None + vararg: arg + arg: str = args + annotation: NoneType = None + type_comment: NoneType = None + kwonlyargs: list + element: arg + arg: str = m + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = n + annotation: NoneType = None + type_comment: NoneType = None + kw_defaults: list + element: UnaryOp + op: USub + operand: Constant + value: int = 4 + kind: NoneType = None + element: NoneType = None + kwarg: arg + arg: str = kwargs + annotation: NoneType = None + type_comment: NoneType = None + defaults: list + element: UnaryOp + op: USub + operand: Constant + value: int = 3 + kind: NoneType = None + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = x + ctx: Load + element: Name + id: str = y + ctx: Load + element: Name + id: str = args + ctx: Load + element: Name + id: str = m + ctx: Load + element: Name + id: str = n + ctx: Load + element: Name + id: str = kwargs + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = f2 + ctx: Load + args: list + element: Constant + value: int = 11 + kind: NoneType = None + element: Constant + value: int = 22 + kind: NoneType = None + element: Constant + value: int = 1010 + kind: NoneType = None + element: Constant + value: int = 2020 + kind: NoneType = None + keywords: list + element: keyword + arg: str = m + value: Constant + value: int = 100100 + kind: NoneType = None + element: keyword + arg: str = n + value: Constant + value: int = 200200 + kind: NoneType = None + element: keyword + arg: str = p + value: Constant + value: int = 10001000 + kind: NoneType = None + element: keyword + arg: str = q + value: Constant + value: int = 20002000 + kind: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = x + ctx: Load + element: Name + id: str = y + ctx: Load + element: Name + id: str = args + ctx: Load + element: Name + id: str = m + ctx: Load + element: Name + id: str = n + ctx: Load + element: Name + id: str = kwargs + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = f + ctx: Load + args: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 10 + kind: NoneType = None + element: Constant + value: int = 20 + kind: NoneType = None + keywords: list + element: keyword + arg: str = m + value: Constant + value: int = 100 + kind: NoneType = None + element: keyword + arg: str = n + value: Constant + value: int = 200 + kind: NoneType = None + element: keyword + arg: str = p + value: Constant + value: int = 1000 + kind: NoneType = None + element: keyword + arg: str = q + value: Constant + value: int = 2000 + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = b + ctx: Store + value: Call + func: Name + id: str = B + ctx: Load + args: list + element: Constant + value: int = 3 + kind: NoneType = None + element: Constant + value: int = 4 + kind: NoneType = None + element: Constant + value: int = 30 + kind: NoneType = None + element: Constant + value: int = 40 + kind: NoneType = None + keywords: list + element: keyword + arg: str = m + value: Constant + value: int = 300 + kind: NoneType = None + element: keyword + arg: str = n + value: Constant + value: int = 400 + kind: NoneType = None + element: keyword + arg: str = p + value: Constant + value: int = 3000 + kind: NoneType = None + element: keyword + arg: str = q + value: Constant + value: int = 4000 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = b + ctx: Load + attr: str = f + ctx: Load + args: list + element: Name + id: str = autoTester + ctx: Load + keywords: list + element: FunctionDef + name: str = g + args: arguments + posonlyargs: list + args: list + vararg: arg + arg: str = args + annotation: NoneType = None + type_comment: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: arg + arg: str = kwargs + annotation: NoneType = None + type_comment: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = args + ctx: Load + element: Name + id: str = kwargs + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = g + ctx: Load + args: list + element: Starred + value: Tuple + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + ctx: Load + keywords: list + element: keyword + arg: NoneType = None + value: Dict + keys: list + element: Constant + value: str = p + kind: NoneType = None + element: Constant + value: str = q + kind: NoneType = None + element: Constant + value: str = r + kind: NoneType = None + values: list + element: Constant + value: str = aP + kind: NoneType = None + element: Constant + value: str = aQ + kind: NoneType = None + element: Constant + value: str = anR + kind: NoneType = None + element: Expr + value: Call + func: Lambda + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = y + annotation: NoneType = None + type_comment: NoneType = None + vararg: arg + arg: str = args + annotation: NoneType = None + type_comment: NoneType = None + kwonlyargs: list + element: arg + arg: str = m + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = n + annotation: NoneType = None + type_comment: NoneType = None + kw_defaults: list + element: UnaryOp + op: USub + operand: Constant + value: int = 2 + kind: NoneType = None + element: NoneType = None + kwarg: arg + arg: str = kwargs + annotation: NoneType = None + type_comment: NoneType = None + defaults: list + element: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + body: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = x + ctx: Load + element: Name + id: str = y + ctx: Load + element: Name + id: str = args + ctx: Load + element: Name + id: str = m + ctx: Load + element: Name + id: str = n + ctx: Load + element: Name + id: str = kwargs + ctx: Load + keywords: list + args: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 8 + kind: NoneType = None + element: Constant + value: int = 16 + kind: NoneType = None + keywords: list + element: keyword + arg: str = m + value: Constant + value: int = 128 + kind: NoneType = None + element: keyword + arg: str = n + value: Constant + value: float = 256.3 + kind: NoneType = None + element: keyword + arg: str = p + value: Constant + value: float = 1024.3 + kind: NoneType = None + element: keyword + arg: str = q + value: Constant + value: float = 2048.3 + kind: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Call + func: Name + id: str = C + ctx: Load + args: list + keywords: list + attr: str = tricky + ctx: Load + args: list + element: Starred + value: Call + func: Name + id: str = range + ctx: Load + args: list + element: Constant + value: int = 4 + kind: NoneType = None + keywords: list + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = {}-{} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + element: Constant + value: int = 5 + kind: NoneType = None + element: Constant + value: int = 7 + kind: NoneType = None + element: Constant + value: int = 9 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = {}-{} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Starred + value: Call + func: Name + id: str = range + ctx: Load + args: list + element: Constant + value: int = 4 + kind: NoneType = None + keywords: list + ctx: Load + keywords: list + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/attribs_by_name.js b/transcrypt/development/automated_tests/transcrypt/__target__38/attribs_by_name.js new file mode 100644 index 000000000..87a667c0a --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/attribs_by_name.js @@ -0,0 +1,22 @@ +// Transcrypt'ed from Python, 2021-05-14 15:00:26 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +var __all__ = dict ({get A () {return A;}, set A (value) {A = value;}, get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get a () {return a;}, set a (value) {a = value;}, get run () {return run;}, set run (value) {run = value;}}); +var __name__ = 'attribs_by_name'; +export var A = __class__ ('A', [object], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self) { + self.s = 'hello'; + });} +}); +export var a = A (); +export var run = function (autoTester) { + autoTester.check (a.s, getattr (a, 's')); + setattr (a, 's', 'goodbye'); + autoTester.check (a.s, getattr (a, 's')); + setattr (a, 't', 'exists'); + autoTester.check (hasattr (a, 't'), a.t, getattr (a, 't')); + delattr (a, 't'); + autoTester.check (hasattr (a, 't')); +}; + +//# sourceMappingURL=attribs_by_name.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/attribs_by_name.tree b/transcrypt/development/automated_tests/transcrypt/__target__38/attribs_by_name.tree new file mode 100644 index 000000000..fb46df84c --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/attribs_by_name.tree @@ -0,0 +1,232 @@ +file: Module + body: list + element: ClassDef + name: str = A + bases: list + keywords: list + body: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = s + ctx: Store + value: Constant + value: str = hello + kind: NoneType = None + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: Assign + targets: list + element: Name + id: str = a + ctx: Store + value: Call + func: Name + id: str = A + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: FunctionDef + name: str = run + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = autoTester + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = a + ctx: Load + attr: str = s + ctx: Load + element: Call + func: Name + id: str = getattr + ctx: Load + args: list + element: Name + id: str = a + ctx: Load + element: Constant + value: str = s + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Name + id: str = setattr + ctx: Load + args: list + element: Name + id: str = a + ctx: Load + element: Constant + value: str = s + kind: NoneType = None + element: Constant + value: str = goodbye + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = a + ctx: Load + attr: str = s + ctx: Load + element: Call + func: Name + id: str = getattr + ctx: Load + args: list + element: Name + id: str = a + ctx: Load + element: Constant + value: str = s + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Name + id: str = setattr + ctx: Load + args: list + element: Name + id: str = a + ctx: Load + element: Constant + value: str = t + kind: NoneType = None + element: Constant + value: str = exists + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = hasattr + ctx: Load + args: list + element: Name + id: str = a + ctx: Load + element: Constant + value: str = t + kind: NoneType = None + keywords: list + element: Attribute + value: Name + id: str = a + ctx: Load + attr: str = t + ctx: Load + element: Call + func: Name + id: str = getattr + ctx: Load + args: list + element: Name + id: str = a + ctx: Load + element: Constant + value: str = t + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Name + id: str = delattr + ctx: Load + args: list + element: Name + id: str = a + ctx: Load + element: Constant + value: str = t + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = hasattr + ctx: Load + args: list + element: Name + id: str = a + ctx: Load + element: Constant + value: str = t + kind: NoneType = None + keywords: list + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/autotest.js b/transcrypt/development/automated_tests/transcrypt/__target__38/autotest.js new file mode 100644 index 000000000..a3c7c6ea6 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/autotest.js @@ -0,0 +1,203 @@ +// Transcrypt'ed from Python, 2021-05-14 15:00:23 +var py_arguments = {}; +var attribs_by_name = {}; +var builtin_super = {}; +var byte_arrays = {}; +var callable_test = {}; +var classes = {}; +var complex_numbers = {}; +var conditional_expressions = {}; +var control_structures = {}; +var dashed_numbers = {}; +var data_classes = {}; +var data_structures = {}; +var decorators = {}; +var dict_comprehensions = {}; +var dictionaries = {}; +var div_issues = {}; +var div_pulls = {}; +var docstrings = {}; +var exceptions = {}; +var executable_comments = {}; +var extended_slices = {}; +var fstrings = {}; +var general_functions = {}; +var globals_function = {}; +var indices_and_slices = {}; +var iterators_and_generators = {}; +var lambda_functions = {}; +var list_comprehensions = {}; +var local_classes = {}; +var metaclasses = {}; +var method_and_class_decorators = {}; +var module_builtin = {}; +var module_cmath = {}; +var module_datetime = {}; +var module_itertools = {}; +var module_math = {}; +var module_unicodedata = {}; +var modules = {}; +var nonlocals = {}; +var operator_overloading = {}; +var org = {}; +var properties = {}; +var proxies = {}; +var reprtest = {}; +var set_comprehensions = {}; +var simple_and_augmented_assignment = {}; +var string_format = {}; +var truthyness = {}; +var tuple_assignment = {}; +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +import * as __module_tuple_assignment__ from './tuple_assignment.js'; +__nest__ (tuple_assignment, '', __module_tuple_assignment__); +import * as __module_truthyness__ from './truthyness.js'; +__nest__ (truthyness, '', __module_truthyness__); +import * as __module_string_format__ from './string_format.js'; +__nest__ (string_format, '', __module_string_format__); +import * as __module_simple_and_augmented_assignment__ from './simple_and_augmented_assignment.js'; +__nest__ (simple_and_augmented_assignment, '', __module_simple_and_augmented_assignment__); +import * as __module_set_comprehensions__ from './set_comprehensions.js'; +__nest__ (set_comprehensions, '', __module_set_comprehensions__); +import * as __module_reprtest__ from './reprtest.js'; +__nest__ (reprtest, '', __module_reprtest__); +import * as __module_proxies__ from './proxies.js'; +__nest__ (proxies, '', __module_proxies__); +import * as __module_properties__ from './properties.js'; +__nest__ (properties, '', __module_properties__); +import * as __module_operator_overloading__ from './operator_overloading.js'; +__nest__ (operator_overloading, '', __module_operator_overloading__); +import * as __module_nonlocals__ from './nonlocals.js'; +__nest__ (nonlocals, '', __module_nonlocals__); +import * as __module_modules__ from './modules.js'; +__nest__ (modules, '', __module_modules__); +import * as __module_module_unicodedata__ from './module_unicodedata.js'; +__nest__ (module_unicodedata, '', __module_module_unicodedata__); +import * as __module_module_math__ from './module_math.js'; +__nest__ (module_math, '', __module_module_math__); +import * as __module_module_itertools__ from './module_itertools.js'; +__nest__ (module_itertools, '', __module_module_itertools__); +import * as __module_module_datetime__ from './module_datetime.js'; +__nest__ (module_datetime, '', __module_module_datetime__); +import * as __module_module_cmath__ from './module_cmath.js'; +__nest__ (module_cmath, '', __module_module_cmath__); +import * as __module_module_builtin__ from './module_builtin.js'; +__nest__ (module_builtin, '', __module_module_builtin__); +import * as __module_method_and_class_decorators__ from './method_and_class_decorators.js'; +__nest__ (method_and_class_decorators, '', __module_method_and_class_decorators__); +import * as __module_metaclasses__ from './metaclasses.js'; +__nest__ (metaclasses, '', __module_metaclasses__); +import * as __module_local_classes__ from './local_classes.js'; +__nest__ (local_classes, '', __module_local_classes__); +import * as __module_list_comprehensions__ from './list_comprehensions.js'; +__nest__ (list_comprehensions, '', __module_list_comprehensions__); +import * as __module_lambda_functions__ from './lambda_functions.js'; +__nest__ (lambda_functions, '', __module_lambda_functions__); +import * as __module_iterators_and_generators__ from './iterators_and_generators.js'; +__nest__ (iterators_and_generators, '', __module_iterators_and_generators__); +import * as __module_indices_and_slices__ from './indices_and_slices.js'; +__nest__ (indices_and_slices, '', __module_indices_and_slices__); +import * as __module_globals_function__ from './globals_function.js'; +__nest__ (globals_function, '', __module_globals_function__); +import * as __module_general_functions__ from './general_functions.js'; +__nest__ (general_functions, '', __module_general_functions__); +import * as __module_fstrings__ from './fstrings.js'; +__nest__ (fstrings, '', __module_fstrings__); +import * as __module_extended_slices__ from './extended_slices.js'; +__nest__ (extended_slices, '', __module_extended_slices__); +import * as __module_executable_comments__ from './executable_comments.js'; +__nest__ (executable_comments, '', __module_executable_comments__); +import * as __module_exceptions__ from './exceptions.js'; +__nest__ (exceptions, '', __module_exceptions__); +import * as __module_docstrings__ from './docstrings.js'; +__nest__ (docstrings, '', __module_docstrings__); +import * as __module_div_pulls__ from './div_pulls.js'; +__nest__ (div_pulls, '', __module_div_pulls__); +import * as __module_div_issues__ from './div_issues.js'; +__nest__ (div_issues, '', __module_div_issues__); +import * as __module_dictionaries__ from './dictionaries.js'; +__nest__ (dictionaries, '', __module_dictionaries__); +import * as __module_dict_comprehensions__ from './dict_comprehensions.js'; +__nest__ (dict_comprehensions, '', __module_dict_comprehensions__); +import * as __module_decorators__ from './decorators.js'; +__nest__ (decorators, '', __module_decorators__); +import * as __module_data_structures__ from './data_structures.js'; +__nest__ (data_structures, '', __module_data_structures__); +import * as __module_data_classes__ from './data_classes.js'; +__nest__ (data_classes, '', __module_data_classes__); +import * as __module_dashed_numbers__ from './dashed_numbers.js'; +__nest__ (dashed_numbers, '', __module_dashed_numbers__); +import * as __module_control_structures__ from './control_structures.js'; +__nest__ (control_structures, '', __module_control_structures__); +import * as __module_conditional_expressions__ from './conditional_expressions.js'; +__nest__ (conditional_expressions, '', __module_conditional_expressions__); +import * as __module_complex_numbers__ from './complex_numbers.js'; +__nest__ (complex_numbers, '', __module_complex_numbers__); +import * as __module_classes__ from './classes.js'; +__nest__ (classes, '', __module_classes__); +import * as __module_callable_test__ from './callable_test.js'; +__nest__ (callable_test, '', __module_callable_test__); +import * as __module_byte_arrays__ from './byte_arrays.js'; +__nest__ (byte_arrays, '', __module_byte_arrays__); +import * as __module_builtin_super__ from './builtin_super.js'; +__nest__ (builtin_super, '', __module_builtin_super__); +import * as __module_attribs_by_name__ from './attribs_by_name.js'; +__nest__ (attribs_by_name, '', __module_attribs_by_name__); +import * as __module_py_arguments__ from './arguments.js'; +__nest__ (py_arguments, '', __module_py_arguments__); +import * as __module_org_transcrypt_autotester__ from './org.transcrypt.autotester.js'; +__nest__ (org, 'transcrypt.autotester', __module_org_transcrypt_autotester__); +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get autoTester () {return autoTester;}, set autoTester (value) {autoTester = value;}}); +var __name__ = '__main__'; +export var autoTester = org.transcrypt.autotester.AutoTester (); +autoTester.run (py_arguments, 'arguments'); +autoTester.run (attribs_by_name, 'attribs_by_name'); +autoTester.run (builtin_super, 'builtin_super'); +autoTester.run (byte_arrays, 'byte_arrays'); +autoTester.run (callable_test, 'callable'); +autoTester.run (classes, 'classes'); +autoTester.run (complex_numbers, 'complex_numbers'); +autoTester.run (conditional_expressions, 'conditional_expressions'); +autoTester.run (control_structures, 'control_structures'); +autoTester.run (dashed_numbers, 'dashed_numbers'); +autoTester.run (data_classes, 'data_classes'); +autoTester.run (data_structures, 'data_structures'); +autoTester.run (decorators, 'decorators'); +autoTester.run (dict_comprehensions, 'dict_comprehensions'); +autoTester.run (dictionaries, 'dictionaries'); +autoTester.run (div_issues, 'div_issues'); +autoTester.run (div_pulls, 'div_pulls'); +autoTester.run (docstrings, 'docstrings'); +autoTester.run (exceptions, 'exceptions'); +autoTester.run (executable_comments, 'executable_comments'); +autoTester.run (extended_slices, 'extended_slices'); +autoTester.run (fstrings, 'fstrings'); +autoTester.run (general_functions, 'general_functions'); +autoTester.run (globals_function, 'globals_function'); +autoTester.run (indices_and_slices, 'indices_and_slices'); +autoTester.run (iterators_and_generators, 'iterators_and_generators'); +autoTester.run (lambda_functions, 'lambda_functions'); +autoTester.run (list_comprehensions, 'list_comprehensions'); +autoTester.run (local_classes, 'local_classes'); +autoTester.run (metaclasses, 'metaclasses'); +autoTester.run (method_and_class_decorators, 'method_and_class_decorators'); +autoTester.run (module_builtin, 'module_builtin'); +autoTester.run (module_cmath, 'module_cmath'); +autoTester.run (module_datetime, 'module_datetime'); +autoTester.run (module_itertools, 'module_itertools'); +autoTester.run (module_math, 'module_math'); +autoTester.run (module_unicodedata, 'module_unicodedata'); +autoTester.run (modules, 'modules'); +autoTester.run (nonlocals, 'nonlocals'); +autoTester.run (operator_overloading, 'operator_overloading'); +autoTester.run (properties, 'properties'); +autoTester.run (reprtest, 'repr_str'); +autoTester.run (proxies, 'proxies'); +autoTester.run (set_comprehensions, 'set_comprehensions'); +autoTester.run (simple_and_augmented_assignment, 'simple_and_augmented_assignment'); +autoTester.run (string_format, 'string_format'); +autoTester.run (truthyness, 'truthyness'); +autoTester.run (tuple_assignment, 'tuple_assignment'); +autoTester.done (); + +//# sourceMappingURL=autotest.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/autotest.project b/transcrypt/development/automated_tests/transcrypt/__target__38/autotest.project new file mode 100644 index 000000000..3b801fe26 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/autotest.project @@ -0,0 +1 @@ +{"options": {"source": "autotest", "anno": false, "alimod": false, "build": true, "complex": true, "docat": false, "dassert": true, "dcheck": false, "dextex": false, "dlog": false, "dmap": false, "dnostrip": false, "dstat": false, "dtree": true, "esv": null, "ecom": false, "fcall": false, "gen": false, "iconv": false, "jscall": false, "jskeys": false, "jsmod": false, "kwargs": false, "keycheck": false, "license": false, "map": false, "nomin": true, "opov": false, "outdir": null, "parent": null, "run": false, "symbols": null, "sform": true, "tconv": false, "unit": null, "verbose": false, "x": null, "xreex": true, "xglobs": true, "xpath": null, "xtiny": false, "star": false}, "modules": [{"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/modules/org/transcrypt/__runtime__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/org.transcrypt.__runtime__.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/autotest.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/autotest.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/tuple_assignment/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/tuple_assignment.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/truthyness/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/truthyness.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/string_format/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/string_format.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/simple_and_augmented_assignment/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/simple_and_augmented_assignment.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/set_comprehensions/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/set_comprehensions.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/reprtest/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/reprtest.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/proxies/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/proxies.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/properties/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/properties.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/operator_overloading/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/operator_overloading.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/nonlocals/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/nonlocals.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/modules/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/modules.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/modules/mod4.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/modules.mod4.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/modules/mod5.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/modules.mod5.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/modules/mod1/mod11/mod111.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/modules.mod1.mod11.mod111.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/modules/mod3.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/modules.mod3.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/modules/mod2/mod21.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/modules.mod2.mod21.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/modules/mod2/mod22.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/modules.mod2.mod22.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/modules/mod1/mod11/mod112.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/modules.mod1.mod11.mod112.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/modules/mod1/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/modules.mod1.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/modules/mod2/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/modules.mod2.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/modules/mod1/mod11/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/modules.mod1.mod11.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/module_unicodedata/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/module_unicodedata.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/modules/unicodedata/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/unicodedata.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/module_math/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/module_math.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/modules/math/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/math.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/module_itertools/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/module_itertools.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/modules/itertools/__init__.js", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/itertools.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/module_datetime/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/module_datetime.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/modules/datetime/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/datetime.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/modules/time/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/time.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/module_cmath/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/module_cmath.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/modules/cmath/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/cmath.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/module_builtin/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/module_builtin.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/method_and_class_decorators/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/method_and_class_decorators.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/metaclasses/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/metaclasses.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/local_classes/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/local_classes.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/list_comprehensions/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/list_comprehensions.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/lambda_functions/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/lambda_functions.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/iterators_and_generators/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/iterators_and_generators.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/indices_and_slices/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/indices_and_slices.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/globals_function/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/globals_function.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/globals_function/sub.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/globals_function.sub.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/general_functions/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/general_functions.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/fstrings/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/fstrings.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/extended_slices/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/extended_slices.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/executable_comments/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/executable_comments.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/exceptions/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/exceptions.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/docstrings/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/docstrings.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/div_pulls/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/div_pulls.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/div_pulls/pull575_reexport_modules/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/div_pulls.pull575_reexport_modules.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/div_pulls/pull575_reexport_modules/reexporter/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/div_pulls.pull575_reexport_modules.reexporter.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/div_pulls/pull575_reexport_modules/reexporter/html5/ext.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/div_pulls.pull575_reexport_modules.reexporter.html5.ext.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/div_pulls/pull575_reexport_modules/reexporter/html5/html5.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/div_pulls.pull575_reexport_modules.reexporter.html5.html5.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/div_issues/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/div_issues.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/modules/re/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/re.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/modules/re/translate.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/re.translate.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/div_issues/issue559/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/div_issues.issue559.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/div_issues/issue559/mylib/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/div_issues.issue559.mylib.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/div_issues/issue559/mylib/mylib.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/div_issues.issue559.mylib.mylib.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/div_issues/issue387/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/div_issues.issue387.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/div_issues/issue387/test1/test2.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/div_issues.issue387.test1.test2.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/div_issues/issue387/test1/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/div_issues.issue387.test1.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/div_issues/issue55/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/div_issues.issue55.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/div_issues/issue55/sub3.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/div_issues.issue55.sub3.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/div_issues/issue55/sub2/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/div_issues.issue55.sub2.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/div_issues/issue55/sub1.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/div_issues.issue55.sub1.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/div_issues/issue55/a.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/div_issues.issue55.a.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/dictionaries/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/dictionaries.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/dict_comprehensions/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/dict_comprehensions.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/decorators/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/decorators.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/data_structures/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/data_structures.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/data_classes/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/data_classes.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/modules/typing/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/typing.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/modules/dataclasses/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/dataclasses.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/dashed_numbers/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/dashed_numbers.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/control_structures/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/control_structures.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/conditional_expressions/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/conditional_expressions.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/complex_numbers/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/complex_numbers.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/classes/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/classes.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/callable_test/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/callable_test.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/byte_arrays/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/byte_arrays.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/builtin_super/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/builtin_super.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/attribs_by_name/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/attribs_by_name.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/arguments/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/arguments.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/modules/org/transcrypt/autotester/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/org.transcrypt.autotester.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/modules/org/transcrypt/autotester/html.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/org.transcrypt.autotester.html.js"}]} \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/autotest.tree b/transcrypt/development/automated_tests/transcrypt/__target__38/autotest.tree new file mode 100644 index 000000000..2692b5f82 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/autotest.tree @@ -0,0 +1,1135 @@ +file: Module + body: list + element: ImportFrom + module: str = org.transcrypt.stubs.browser + names: list + element: alias + name: str = __pragma__ + asname: NoneType = None + level: int = 0 + element: Import + names: list + element: alias + name: str = org.transcrypt.autotester + asname: NoneType = None + element: Import + names: list + element: alias + name: str = arguments + asname: NoneType = None + element: Import + names: list + element: alias + name: str = attribs_by_name + asname: NoneType = None + element: Import + names: list + element: alias + name: str = builtin_super + asname: NoneType = None + element: Import + names: list + element: alias + name: str = byte_arrays + asname: NoneType = None + element: Import + names: list + element: alias + name: str = callable_test + asname: NoneType = None + element: Import + names: list + element: alias + name: str = classes + asname: NoneType = None + element: Import + names: list + element: alias + name: str = complex_numbers + asname: NoneType = None + element: Import + names: list + element: alias + name: str = conditional_expressions + asname: NoneType = None + element: Import + names: list + element: alias + name: str = control_structures + asname: NoneType = None + element: Import + names: list + element: alias + name: str = dashed_numbers + asname: NoneType = None + element: Import + names: list + element: alias + name: str = data_classes + asname: NoneType = None + element: Import + names: list + element: alias + name: str = data_structures + asname: NoneType = None + element: Import + names: list + element: alias + name: str = decorators + asname: NoneType = None + element: Import + names: list + element: alias + name: str = dict_comprehensions + asname: NoneType = None + element: Import + names: list + element: alias + name: str = dictionaries + asname: NoneType = None + element: Import + names: list + element: alias + name: str = div_issues + asname: NoneType = None + element: Import + names: list + element: alias + name: str = div_pulls + asname: NoneType = None + element: Import + names: list + element: alias + name: str = docstrings + asname: NoneType = None + element: Import + names: list + element: alias + name: str = exceptions + asname: NoneType = None + element: Import + names: list + element: alias + name: str = executable_comments + asname: NoneType = None + element: Import + names: list + element: alias + name: str = extended_slices + asname: NoneType = None + element: Import + names: list + element: alias + name: str = fstrings + asname: NoneType = None + element: Import + names: list + element: alias + name: str = general_functions + asname: NoneType = None + element: Import + names: list + element: alias + name: str = globals_function + asname: NoneType = None + element: Import + names: list + element: alias + name: str = indices_and_slices + asname: NoneType = None + element: Import + names: list + element: alias + name: str = iterators_and_generators + asname: NoneType = None + element: Import + names: list + element: alias + name: str = lambda_functions + asname: NoneType = None + element: Import + names: list + element: alias + name: str = list_comprehensions + asname: NoneType = None + element: Import + names: list + element: alias + name: str = local_classes + asname: NoneType = None + element: Import + names: list + element: alias + name: str = metaclasses + asname: NoneType = None + element: Import + names: list + element: alias + name: str = method_and_class_decorators + asname: NoneType = None + element: Import + names: list + element: alias + name: str = module_builtin + asname: NoneType = None + element: Import + names: list + element: alias + name: str = module_cmath + asname: NoneType = None + element: If + test: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = defined + kind: NoneType = None + element: Constant + value: str = undefined + kind: NoneType = None + keywords: list + body: list + element: Import + names: list + element: alias + name: str = module_collections + asname: NoneType = None + orelse: list + element: Import + names: list + element: alias + name: str = module_datetime + asname: NoneType = None + element: Import + names: list + element: alias + name: str = module_itertools + asname: NoneType = None + element: Import + names: list + element: alias + name: str = module_math + asname: NoneType = None + element: Import + names: list + element: alias + name: str = module_unicodedata + asname: NoneType = None + element: Import + names: list + element: alias + name: str = modules + asname: NoneType = None + element: Import + names: list + element: alias + name: str = nonlocals + asname: NoneType = None + element: Import + names: list + element: alias + name: str = operator_overloading + asname: NoneType = None + element: Import + names: list + element: alias + name: str = properties + asname: NoneType = None + element: Import + names: list + element: alias + name: str = proxies + asname: NoneType = None + element: Import + names: list + element: alias + name: str = reprtest + asname: NoneType = None + element: Import + names: list + element: alias + name: str = set_comprehensions + asname: NoneType = None + element: Import + names: list + element: alias + name: str = simple_and_augmented_assignment + asname: NoneType = None + element: If + test: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = defined + kind: NoneType = None + element: Constant + value: str = __sform__ + kind: NoneType = None + keywords: list + body: list + element: Import + names: list + element: alias + name: str = string_format + asname: NoneType = None + orelse: list + element: Import + names: list + element: alias + name: str = truthyness + asname: NoneType = None + element: Import + names: list + element: alias + name: str = tuple_assignment + asname: NoneType = None + element: Assign + targets: list + element: Name + id: str = autoTester + ctx: Store + value: Call + func: Attribute + value: Attribute + value: Attribute + value: Name + id: str = org + ctx: Load + attr: str = transcrypt + ctx: Load + attr: str = autotester + ctx: Load + attr: str = AutoTester + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = run + ctx: Load + args: list + element: Name + id: str = arguments + ctx: Load + element: Constant + value: str = arguments + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = run + ctx: Load + args: list + element: Name + id: str = attribs_by_name + ctx: Load + element: Constant + value: str = attribs_by_name + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = run + ctx: Load + args: list + element: Name + id: str = builtin_super + ctx: Load + element: Constant + value: str = builtin_super + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = run + ctx: Load + args: list + element: Name + id: str = byte_arrays + ctx: Load + element: Constant + value: str = byte_arrays + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = run + ctx: Load + args: list + element: Name + id: str = callable_test + ctx: Load + element: Constant + value: str = callable + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = run + ctx: Load + args: list + element: Name + id: str = classes + ctx: Load + element: Constant + value: str = classes + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = run + ctx: Load + args: list + element: Name + id: str = complex_numbers + ctx: Load + element: Constant + value: str = complex_numbers + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = run + ctx: Load + args: list + element: Name + id: str = conditional_expressions + ctx: Load + element: Constant + value: str = conditional_expressions + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = run + ctx: Load + args: list + element: Name + id: str = control_structures + ctx: Load + element: Constant + value: str = control_structures + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = run + ctx: Load + args: list + element: Name + id: str = dashed_numbers + ctx: Load + element: Constant + value: str = dashed_numbers + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = run + ctx: Load + args: list + element: Name + id: str = data_classes + ctx: Load + element: Constant + value: str = data_classes + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = run + ctx: Load + args: list + element: Name + id: str = data_structures + ctx: Load + element: Constant + value: str = data_structures + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = run + ctx: Load + args: list + element: Name + id: str = decorators + ctx: Load + element: Constant + value: str = decorators + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = run + ctx: Load + args: list + element: Name + id: str = dict_comprehensions + ctx: Load + element: Constant + value: str = dict_comprehensions + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = run + ctx: Load + args: list + element: Name + id: str = dictionaries + ctx: Load + element: Constant + value: str = dictionaries + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = run + ctx: Load + args: list + element: Name + id: str = div_issues + ctx: Load + element: Constant + value: str = div_issues + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = run + ctx: Load + args: list + element: Name + id: str = div_pulls + ctx: Load + element: Constant + value: str = div_pulls + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = run + ctx: Load + args: list + element: Name + id: str = docstrings + ctx: Load + element: Constant + value: str = docstrings + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = run + ctx: Load + args: list + element: Name + id: str = exceptions + ctx: Load + element: Constant + value: str = exceptions + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = run + ctx: Load + args: list + element: Name + id: str = executable_comments + ctx: Load + element: Constant + value: str = executable_comments + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = run + ctx: Load + args: list + element: Name + id: str = extended_slices + ctx: Load + element: Constant + value: str = extended_slices + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = run + ctx: Load + args: list + element: Name + id: str = fstrings + ctx: Load + element: Constant + value: str = fstrings + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = run + ctx: Load + args: list + element: Name + id: str = general_functions + ctx: Load + element: Constant + value: str = general_functions + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = run + ctx: Load + args: list + element: Name + id: str = globals_function + ctx: Load + element: Constant + value: str = globals_function + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = run + ctx: Load + args: list + element: Name + id: str = indices_and_slices + ctx: Load + element: Constant + value: str = indices_and_slices + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = run + ctx: Load + args: list + element: Name + id: str = iterators_and_generators + ctx: Load + element: Constant + value: str = iterators_and_generators + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = run + ctx: Load + args: list + element: Name + id: str = lambda_functions + ctx: Load + element: Constant + value: str = lambda_functions + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = run + ctx: Load + args: list + element: Name + id: str = list_comprehensions + ctx: Load + element: Constant + value: str = list_comprehensions + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = run + ctx: Load + args: list + element: Name + id: str = local_classes + ctx: Load + element: Constant + value: str = local_classes + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = run + ctx: Load + args: list + element: Name + id: str = metaclasses + ctx: Load + element: Constant + value: str = metaclasses + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = run + ctx: Load + args: list + element: Name + id: str = method_and_class_decorators + ctx: Load + element: Constant + value: str = method_and_class_decorators + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = run + ctx: Load + args: list + element: Name + id: str = module_builtin + ctx: Load + element: Constant + value: str = module_builtin + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = run + ctx: Load + args: list + element: Name + id: str = module_cmath + ctx: Load + element: Constant + value: str = module_cmath + kind: NoneType = None + keywords: list + element: If + test: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = defined + kind: NoneType = None + element: Constant + value: str = undefined + kind: NoneType = None + keywords: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = run + ctx: Load + args: list + element: Name + id: str = module_collections + ctx: Load + element: Constant + value: str = module_collections + kind: NoneType = None + keywords: list + orelse: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = run + ctx: Load + args: list + element: Name + id: str = module_datetime + ctx: Load + element: Constant + value: str = module_datetime + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = run + ctx: Load + args: list + element: Name + id: str = module_itertools + ctx: Load + element: Constant + value: str = module_itertools + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = run + ctx: Load + args: list + element: Name + id: str = module_math + ctx: Load + element: Constant + value: str = module_math + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = run + ctx: Load + args: list + element: Name + id: str = module_unicodedata + ctx: Load + element: Constant + value: str = module_unicodedata + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = run + ctx: Load + args: list + element: Name + id: str = modules + ctx: Load + element: Constant + value: str = modules + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = run + ctx: Load + args: list + element: Name + id: str = nonlocals + ctx: Load + element: Constant + value: str = nonlocals + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = run + ctx: Load + args: list + element: Name + id: str = operator_overloading + ctx: Load + element: Constant + value: str = operator_overloading + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = run + ctx: Load + args: list + element: Name + id: str = properties + ctx: Load + element: Constant + value: str = properties + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = run + ctx: Load + args: list + element: Name + id: str = reprtest + ctx: Load + element: Constant + value: str = repr_str + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = run + ctx: Load + args: list + element: Name + id: str = proxies + ctx: Load + element: Constant + value: str = proxies + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = run + ctx: Load + args: list + element: Name + id: str = set_comprehensions + ctx: Load + element: Constant + value: str = set_comprehensions + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = run + ctx: Load + args: list + element: Name + id: str = simple_and_augmented_assignment + ctx: Load + element: Constant + value: str = simple_and_augmented_assignment + kind: NoneType = None + keywords: list + element: If + test: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = defined + kind: NoneType = None + element: Constant + value: str = __sform__ + kind: NoneType = None + keywords: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = run + ctx: Load + args: list + element: Name + id: str = string_format + ctx: Load + element: Constant + value: str = string_format + kind: NoneType = None + keywords: list + orelse: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = run + ctx: Load + args: list + element: Name + id: str = truthyness + ctx: Load + element: Constant + value: str = truthyness + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = run + ctx: Load + args: list + element: Name + id: str = tuple_assignment + ctx: Load + element: Constant + value: str = tuple_assignment + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = done + ctx: Load + args: list + keywords: list + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/builtin_super.js b/transcrypt/development/automated_tests/transcrypt/__target__38/builtin_super.js new file mode 100644 index 000000000..0cb010873 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/builtin_super.js @@ -0,0 +1,108 @@ +// Transcrypt'ed from Python, 2021-05-14 15:00:26 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get run () {return run;}, set run (value) {run = value;}}); +var __name__ = 'builtin_super'; +export var run = function (autoTester) { + var show = function () { + var args = tuple ([].slice.apply (arguments).slice (0)); + autoTester.check (...args); + }; + var R = __class__ ('R', [object], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self, a, b) { + self.a = a; + self.b = b; + });} + }); + var A = __class__ ('A', [R], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self, a, b, c) { + __super__ (A, '__init__') (self, a, b); + self.c = c; + });}, + get f () {return __get__ (this, function (self, x, y) { + show ('A.f:', x, y, self.a, self.b, self.c); + });}, + get g () {return __get__ (this, function (self, x, y) { + show ('A.g:', x, y); + });} + }); + var B = __class__ ('B', [R], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self, a, b, d) { + __super__ (B, '__init__') (self, a, b); + self.d = d; + });}, + get f () {return __get__ (this, function (self, x, y) { + show ('B.f:', x, y, self.a, self.b, self.d); + });}, + get h () {return __get__ (this, function (self, x, y) { + show ('A.h:', x, y, self.a, self.b, self.d); + });} + }); + var C = __class__ ('C', [A], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self, a, b, c) { + __super__ (C, '__init__') (self, a, b, c); + });}, + get f () {return __get__ (this, function (self, x, y) { + __super__ (C, 'f') (self, x, y); + show ('C.f:', x, y, self.a, self.b, self.c); + });} + }); + var D = __class__ ('D', [B], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self, a, b, d) { + __super__ (D, '__init__') (self, a, b, d); + });}, + get f () {return __get__ (this, function (self, x, y) { + __super__ (D, 'f') (self, x, y); + show ('D.f:', x, y, self.a, self.b, self.d); + });} + }); + var E = __class__ ('E', [C, D], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self, a, b, c, d) { + R.__init__ (self, a, b); + self.c = c; + self.d = d; + });}, + get f () {return __get__ (this, function (self, x, y) { + C.f (self, x, y); + D.f (self, x, y); + show ('E.f:', x, y, self.a, self.b, self.c, self.d); + });}, + get g () {return __get__ (this, function (self, x, y) { + __super__ (E, 'g') (self, x, y); + show ('E.g:', x, y, self.a, self.b, self.c, self.d); + });}, + get h () {return __get__ (this, function (self, x, y) { + __super__ (E, 'h') (self, x, y); + show ('E.h:', x, y, self.a, self.b, self.c, self.d); + });} + }); + var rr = R (100, 200); + show ('--1--'); + var a = A (101, 201, 301); + a.f (711, 811); + a.g (721, 821); + show ('--2--'); + var b = B (102, 202, 302); + b.f (712, 812); + b.h (732, 832); + show ('--3--'); + var c = C (103, 203, 303); + c.f (713, 813); + c.g (723, 823); + show ('--4--'); + var d = D (104, 204, 304); + d.f (714, 814); + d.h (734, 834); + show ('--5--'); + var e = E (105, 205, 305, 405); + e.f (715, 815); + e.g (725, 825); + e.h (735, 835); +}; + +//# sourceMappingURL=builtin_super.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/builtin_super.tree b/transcrypt/development/automated_tests/transcrypt/__target__38/builtin_super.tree new file mode 100644 index 000000000..a00d9dfdb --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/builtin_super.tree @@ -0,0 +1,1466 @@ +file: Module + body: list + element: FunctionDef + name: str = run + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = autoTester + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: FunctionDef + name: str = show + args: arguments + posonlyargs: list + args: list + vararg: arg + arg: str = args + annotation: NoneType = None + type_comment: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Starred + value: Name + id: str = args + ctx: Load + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: ClassDef + name: str = R + bases: list + keywords: list + body: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = a + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = b + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = a + ctx: Store + value: Name + id: str = a + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = b + ctx: Store + value: Name + id: str = b + ctx: Load + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: ClassDef + name: str = A + bases: list + element: Name + id: str = R + ctx: Load + keywords: list + body: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = a + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = b + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = c + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Call + func: Name + id: str = super + ctx: Load + args: list + keywords: list + attr: str = __init__ + ctx: Load + args: list + element: Name + id: str = a + ctx: Load + element: Name + id: str = b + ctx: Load + keywords: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = c + ctx: Store + value: Name + id: str = c + ctx: Load + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = f + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = y + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Name + id: str = show + ctx: Load + args: list + element: Constant + value: str = A.f: + kind: NoneType = None + element: Name + id: str = x + ctx: Load + element: Name + id: str = y + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = a + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = b + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = c + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = g + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = y + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Name + id: str = show + ctx: Load + args: list + element: Constant + value: str = A.g: + kind: NoneType = None + element: Name + id: str = x + ctx: Load + element: Name + id: str = y + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: ClassDef + name: str = B + bases: list + element: Name + id: str = R + ctx: Load + keywords: list + body: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = a + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = b + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = d + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Call + func: Name + id: str = super + ctx: Load + args: list + keywords: list + attr: str = __init__ + ctx: Load + args: list + element: Name + id: str = a + ctx: Load + element: Name + id: str = b + ctx: Load + keywords: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = d + ctx: Store + value: Name + id: str = d + ctx: Load + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = f + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = y + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Name + id: str = show + ctx: Load + args: list + element: Constant + value: str = B.f: + kind: NoneType = None + element: Name + id: str = x + ctx: Load + element: Name + id: str = y + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = a + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = b + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = d + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = h + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = y + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Name + id: str = show + ctx: Load + args: list + element: Constant + value: str = A.h: + kind: NoneType = None + element: Name + id: str = x + ctx: Load + element: Name + id: str = y + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = a + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = b + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = d + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: ClassDef + name: str = C + bases: list + element: Name + id: str = A + ctx: Load + keywords: list + body: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = a + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = b + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = c + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Call + func: Name + id: str = super + ctx: Load + args: list + keywords: list + attr: str = __init__ + ctx: Load + args: list + element: Name + id: str = a + ctx: Load + element: Name + id: str = b + ctx: Load + element: Name + id: str = c + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = f + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = y + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Call + func: Name + id: str = super + ctx: Load + args: list + keywords: list + attr: str = f + ctx: Load + args: list + element: Name + id: str = x + ctx: Load + element: Name + id: str = y + ctx: Load + keywords: list + element: Expr + value: Call + func: Name + id: str = show + ctx: Load + args: list + element: Constant + value: str = C.f: + kind: NoneType = None + element: Name + id: str = x + ctx: Load + element: Name + id: str = y + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = a + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = b + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = c + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: ClassDef + name: str = D + bases: list + element: Name + id: str = B + ctx: Load + keywords: list + body: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = a + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = b + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = d + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Call + func: Name + id: str = super + ctx: Load + args: list + keywords: list + attr: str = __init__ + ctx: Load + args: list + element: Name + id: str = a + ctx: Load + element: Name + id: str = b + ctx: Load + element: Name + id: str = d + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = f + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = y + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Call + func: Name + id: str = super + ctx: Load + args: list + keywords: list + attr: str = f + ctx: Load + args: list + element: Name + id: str = x + ctx: Load + element: Name + id: str = y + ctx: Load + keywords: list + element: Expr + value: Call + func: Name + id: str = show + ctx: Load + args: list + element: Constant + value: str = D.f: + kind: NoneType = None + element: Name + id: str = x + ctx: Load + element: Name + id: str = y + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = a + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = b + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = d + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: ClassDef + name: str = E + bases: list + element: Name + id: str = C + ctx: Load + element: Name + id: str = D + ctx: Load + keywords: list + body: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = a + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = b + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = c + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = d + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = R + ctx: Load + attr: str = __init__ + ctx: Load + args: list + element: Name + id: str = self + ctx: Load + element: Name + id: str = a + ctx: Load + element: Name + id: str = b + ctx: Load + keywords: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = c + ctx: Store + value: Name + id: str = c + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = d + ctx: Store + value: Name + id: str = d + ctx: Load + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = f + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = y + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = C + ctx: Load + attr: str = f + ctx: Load + args: list + element: Name + id: str = self + ctx: Load + element: Name + id: str = x + ctx: Load + element: Name + id: str = y + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = D + ctx: Load + attr: str = f + ctx: Load + args: list + element: Name + id: str = self + ctx: Load + element: Name + id: str = x + ctx: Load + element: Name + id: str = y + ctx: Load + keywords: list + element: Expr + value: Call + func: Name + id: str = show + ctx: Load + args: list + element: Constant + value: str = E.f: + kind: NoneType = None + element: Name + id: str = x + ctx: Load + element: Name + id: str = y + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = a + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = b + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = c + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = d + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = g + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = y + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Call + func: Name + id: str = super + ctx: Load + args: list + keywords: list + attr: str = g + ctx: Load + args: list + element: Name + id: str = x + ctx: Load + element: Name + id: str = y + ctx: Load + keywords: list + element: Expr + value: Call + func: Name + id: str = show + ctx: Load + args: list + element: Constant + value: str = E.g: + kind: NoneType = None + element: Name + id: str = x + ctx: Load + element: Name + id: str = y + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = a + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = b + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = c + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = d + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = h + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = y + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Call + func: Name + id: str = super + ctx: Load + args: list + keywords: list + attr: str = h + ctx: Load + args: list + element: Name + id: str = x + ctx: Load + element: Name + id: str = y + ctx: Load + keywords: list + element: Expr + value: Call + func: Name + id: str = show + ctx: Load + args: list + element: Constant + value: str = E.h: + kind: NoneType = None + element: Name + id: str = x + ctx: Load + element: Name + id: str = y + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = a + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = b + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = c + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = d + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: Assign + targets: list + element: Name + id: str = rr + ctx: Store + value: Call + func: Name + id: str = R + ctx: Load + args: list + element: Constant + value: int = 100 + kind: NoneType = None + element: Constant + value: int = 200 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = show + ctx: Load + args: list + element: Constant + value: str = --1-- + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = a + ctx: Store + value: Call + func: Name + id: str = A + ctx: Load + args: list + element: Constant + value: int = 101 + kind: NoneType = None + element: Constant + value: int = 201 + kind: NoneType = None + element: Constant + value: int = 301 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = a + ctx: Load + attr: str = f + ctx: Load + args: list + element: Constant + value: int = 711 + kind: NoneType = None + element: Constant + value: int = 811 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = a + ctx: Load + attr: str = g + ctx: Load + args: list + element: Constant + value: int = 721 + kind: NoneType = None + element: Constant + value: int = 821 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Name + id: str = show + ctx: Load + args: list + element: Constant + value: str = --2-- + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = b + ctx: Store + value: Call + func: Name + id: str = B + ctx: Load + args: list + element: Constant + value: int = 102 + kind: NoneType = None + element: Constant + value: int = 202 + kind: NoneType = None + element: Constant + value: int = 302 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = b + ctx: Load + attr: str = f + ctx: Load + args: list + element: Constant + value: int = 712 + kind: NoneType = None + element: Constant + value: int = 812 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = b + ctx: Load + attr: str = h + ctx: Load + args: list + element: Constant + value: int = 732 + kind: NoneType = None + element: Constant + value: int = 832 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Name + id: str = show + ctx: Load + args: list + element: Constant + value: str = --3-- + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = c + ctx: Store + value: Call + func: Name + id: str = C + ctx: Load + args: list + element: Constant + value: int = 103 + kind: NoneType = None + element: Constant + value: int = 203 + kind: NoneType = None + element: Constant + value: int = 303 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = c + ctx: Load + attr: str = f + ctx: Load + args: list + element: Constant + value: int = 713 + kind: NoneType = None + element: Constant + value: int = 813 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = c + ctx: Load + attr: str = g + ctx: Load + args: list + element: Constant + value: int = 723 + kind: NoneType = None + element: Constant + value: int = 823 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Name + id: str = show + ctx: Load + args: list + element: Constant + value: str = --4-- + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = d + ctx: Store + value: Call + func: Name + id: str = D + ctx: Load + args: list + element: Constant + value: int = 104 + kind: NoneType = None + element: Constant + value: int = 204 + kind: NoneType = None + element: Constant + value: int = 304 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = d + ctx: Load + attr: str = f + ctx: Load + args: list + element: Constant + value: int = 714 + kind: NoneType = None + element: Constant + value: int = 814 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = d + ctx: Load + attr: str = h + ctx: Load + args: list + element: Constant + value: int = 734 + kind: NoneType = None + element: Constant + value: int = 834 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Name + id: str = show + ctx: Load + args: list + element: Constant + value: str = --5-- + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = e + ctx: Store + value: Call + func: Name + id: str = E + ctx: Load + args: list + element: Constant + value: int = 105 + kind: NoneType = None + element: Constant + value: int = 205 + kind: NoneType = None + element: Constant + value: int = 305 + kind: NoneType = None + element: Constant + value: int = 405 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = e + ctx: Load + attr: str = f + ctx: Load + args: list + element: Constant + value: int = 715 + kind: NoneType = None + element: Constant + value: int = 815 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = e + ctx: Load + attr: str = g + ctx: Load + args: list + element: Constant + value: int = 725 + kind: NoneType = None + element: Constant + value: int = 825 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = e + ctx: Load + attr: str = h + ctx: Load + args: list + element: Constant + value: int = 735 + kind: NoneType = None + element: Constant + value: int = 835 + kind: NoneType = None + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/byte_arrays.js b/transcrypt/development/automated_tests/transcrypt/__target__38/byte_arrays.js new file mode 100644 index 000000000..6786ac1ff Binary files /dev/null and b/transcrypt/development/automated_tests/transcrypt/__target__38/byte_arrays.js differ diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/byte_arrays.tree b/transcrypt/development/automated_tests/transcrypt/__target__38/byte_arrays.tree new file mode 100644 index 000000000..64ae36f9d --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/byte_arrays.tree @@ -0,0 +1,437 @@ +file: Module + body: list + element: FunctionDef + name: str = run + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = autoTester + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Name + id: str = b + ctx: Store + value: Constant + value: bytes = b'bike' + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = s + ctx: Store + value: Call + func: Name + id: str = bytes + ctx: Load + args: list + element: Constant + value: str = shop + kind: NoneType = None + element: Constant + value: str = utf8 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = e + ctx: Store + value: Constant + value: bytes = b'' + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = bb + ctx: Store + value: Call + func: Name + id: str = bytearray + ctx: Load + args: list + element: List + elts: list + element: Constant + value: int = 0 + kind: NoneType = None + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + element: Constant + value: int = 4 + kind: NoneType = None + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = bc + ctx: Store + value: Call + func: Name + id: str = bytes + ctx: Load + args: list + element: Tuple + elts: list + element: Constant + value: int = 5 + kind: NoneType = None + element: Constant + value: int = 6 + kind: NoneType = None + element: Constant + value: int = 7 + kind: NoneType = None + element: Constant + value: int = 8 + kind: NoneType = None + element: Constant + value: int = 9 + kind: NoneType = None + ctx: Load + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = opov + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = bps + ctx: Store + value: BinOp + left: BinOp + left: Name + id: str = b + ctx: Load + op: Add + right: Constant + value: bytes = b'pump' + kind: NoneType = None + op: Add + right: Name + id: str = s + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = bps3 + ctx: Store + value: BinOp + left: BinOp + left: Constant + value: int = 3 + kind: NoneType = None + op: Mult + right: Name + id: str = bps + ctx: Load + op: Add + right: Constant + value: bytes = b'\x00' + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = aBps3 + ctx: Store + value: BinOp + left: BinOp + left: Name + id: str = bps + ctx: Load + op: Mult + right: Constant + value: int = 3 + kind: NoneType = None + op: Add + right: Constant + value: bytes = b'\x00' + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = l + ctx: Store + value: BinOp + left: List + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + op: Add + right: List + elts: list + element: Constant + value: int = 4 + kind: NoneType = None + element: Constant + value: int = 5 + kind: NoneType = None + element: Constant + value: int = 6 + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = noopov + kind: NoneType = None + keywords: list + element: FunctionDef + name: str = formatCheck + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = aBytes + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: ListComp + elt: Call + func: Name + id: str = int + ctx: Load + args: list + element: Name + id: str = aByte + ctx: Load + keywords: list + generators: list + element: comprehension + target: Name + id: str = aByte + ctx: Store + iter: Name + id: str = aBytes + ctx: Load + ifs: list + is_async: int = 0 + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = formatCheck + ctx: Load + args: list + element: Name + id: str = b + ctx: Load + keywords: list + element: Expr + value: Call + func: Name + id: str = formatCheck + ctx: Load + args: list + element: Name + id: str = s + ctx: Load + keywords: list + element: Expr + value: Call + func: Name + id: str = formatCheck + ctx: Load + args: list + element: Name + id: str = e + ctx: Load + keywords: list + element: Expr + value: Call + func: Name + id: str = formatCheck + ctx: Load + args: list + element: Name + id: str = bb + ctx: Load + keywords: list + element: Expr + value: Call + func: Name + id: str = formatCheck + ctx: Load + args: list + element: Name + id: str = bc + ctx: Load + keywords: list + element: Expr + value: Call + func: Name + id: str = formatCheck + ctx: Load + args: list + element: Name + id: str = bps + ctx: Load + keywords: list + element: Expr + value: Call + func: Name + id: str = formatCheck + ctx: Load + args: list + element: Name + id: str = bps3 + ctx: Load + keywords: list + element: Expr + value: Call + func: Name + id: str = formatCheck + ctx: Load + args: list + element: Name + id: str = aBps3 + ctx: Load + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = opov + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Name + id: str = formatCheck + ctx: Load + args: list + element: BinOp + left: Name + id: str = bb + ctx: Load + op: Add + right: Name + id: str = bc + ctx: Load + keywords: list + element: Expr + value: Call + func: Name + id: str = formatCheck + ctx: Load + args: list + element: BinOp + left: BinOp + left: Call + func: Name + id: str = bytearray + ctx: Load + args: list + element: Constant + value: str = ding + kind: NoneType = None + element: Constant + value: str = utf8 + kind: NoneType = None + keywords: list + op: Add + right: Constant + value: bytes = b'dang' + kind: NoneType = None + op: Add + right: Call + func: Name + id: str = bytes + ctx: Load + args: list + element: Constant + value: str = dong + kind: NoneType = None + element: Constant + value: str = utf8 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = noopov + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Name + id: str = formatCheck + ctx: Load + args: list + element: Name + id: str = l + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/callable_test.js b/transcrypt/development/automated_tests/transcrypt/__target__38/callable_test.js new file mode 100644 index 000000000..69a10253c --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/callable_test.js @@ -0,0 +1,107 @@ +// Transcrypt'ed from Python, 2021-05-14 15:00:26 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get run () {return run;}, set run (value) {run = value;}}); +var __name__ = 'callable_test'; +export var run = function (test) { + var func = function (a, b) { + return a * b; + }; + test.check (func (3, 4)); + test.check (callable (func)); + for (var a of tuple ([true, false])) { + test.check (callable (a)); + } + var a = 1; + test.check (callable (a)); + var a = 2.3; + test.check (callable (a)); + var a = 'asdf'; + test.check (callable (a)); + var a = []; + test.check (callable (a)); + var a = [1, 2, 3, 3]; + test.check (callable (a)); + var a = ['asdf', 'qwer', 'zxcv']; + test.check (callable (a)); + var a = dict ({'asdf': 1, 'qwer': 2}); + test.check (callable (a)); + var a = set ([1, 2]); + test.check (callable (a)); + var CallObj = __class__ ('CallObj', [object], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self, r) { + self._r = r; + });}, + get __call__ () {return __get__ (this, function (self) { + return self._r; + });} + }); + (function () { + var __accu0__ = test; + return __call__ (__accu0__.check, __accu0__, __call__ (callable, null, CallObj)); + }) (); + var obj = __call__ (CallObj, null, 2); + (function () { + var __accu0__ = test; + return __call__ (__accu0__.check, __accu0__, __call__ (obj, null)); + }) (); + (function () { + var __accu0__ = test; + return __call__ (__accu0__.check, __accu0__, __call__ (callable, null, obj)); + }) (); + (function () { + var __accu0__ = test; + return __call__ (__accu0__.check, __accu0__, __call__ (callable, null, obj._r)); + }) (); + var NonCallObj = __class__ ('NonCallObj', [object], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self, b) { + self._b = b; + });}, + get func () {return __get__ (this, function (self) { + return self._b; + });} + }); + (function () { + var __accu0__ = test; + return __call__ (__accu0__.check, __accu0__, __call__ (callable, null, NonCallObj)); + }) (); + var obj2 = __call__ (NonCallObj, null, 2); + (function () { + var __accu0__ = test; + return __call__ (__accu0__.check, __accu0__, __call__ (callable, null, obj2)); + }) (); + (function () { + var __accu0__ = test; + return __call__ (__accu0__.check, __accu0__, __call__ (callable, null, obj2._b)); + }) (); + (function () { + var __accu0__ = test; + return __call__ (__accu0__.check, __accu0__, __call__ (callable, null, obj2.func)); + }) (); + var NonOpovNonCallObj = __class__ ('NonOpovNonCallObj', [object], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self, c) { + self._c = c; + });}, + get other () {return __get__ (this, function (self, b) { + return self._c * b; + });}, + get _getC () {return __get__ (this, function (self) { + return self._c; + });}, + get _setC () {return __get__ (this, function (self, val) { + self._c = val; + });} + }); + Object.defineProperty (NonOpovNonCallObj, 'C', property.call (NonOpovNonCallObj, NonOpovNonCallObj._getC, NonOpovNonCallObj._setC)); + var obj = NonOpovNonCallObj (4); + test.check (callable (obj)); + test.check (callable (obj.other)); + test.check (callable (obj._c)); + test.check (callable (obj.C)); + var exc = Exception ('asdf'); + test.check (callable (exc)); +}; + +//# sourceMappingURL=callable_test.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/callable_test.tree b/transcrypt/development/automated_tests/transcrypt/__target__38/callable_test.tree new file mode 100644 index 000000000..49a367121 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/callable_test.tree @@ -0,0 +1,1046 @@ +file: Module + body: list + element: ImportFrom + module: str = org.transcrypt.stubs.browser + names: list + element: alias + name: str = __pragma__ + asname: NoneType = None + level: int = 0 + element: FunctionDef + name: str = run + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = test + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = + + kind: NoneType = None + element: FunctionDef + name: str = func + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = a + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = b + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: BinOp + left: Name + id: str = a + ctx: Load + op: Mult + right: Name + id: str = b + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = func + ctx: Load + args: list + element: Constant + value: int = 3 + kind: NoneType = None + element: Constant + value: int = 4 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = callable + ctx: Load + args: list + element: Name + id: str = func + ctx: Load + keywords: list + keywords: list + element: For + target: Name + id: str = a + ctx: Store + iter: Tuple + elts: list + element: Constant + value: bool = True + kind: NoneType = None + element: Constant + value: bool = False + kind: NoneType = None + ctx: Load + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = callable + ctx: Load + args: list + element: Name + id: str = a + ctx: Load + keywords: list + keywords: list + orelse: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = a + ctx: Store + value: Constant + value: int = 1 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = callable + ctx: Load + args: list + element: Name + id: str = a + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = a + ctx: Store + value: Constant + value: float = 2.3 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = callable + ctx: Load + args: list + element: Name + id: str = a + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = a + ctx: Store + value: Constant + value: str = asdf + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = callable + ctx: Load + args: list + element: Name + id: str = a + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = a + ctx: Store + value: List + elts: list + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = callable + ctx: Load + args: list + element: Name + id: str = a + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = a + ctx: Store + value: List + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = callable + ctx: Load + args: list + element: Name + id: str = a + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = a + ctx: Store + value: List + elts: list + element: Constant + value: str = asdf + kind: NoneType = None + element: Constant + value: str = qwer + kind: NoneType = None + element: Constant + value: str = zxcv + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = callable + ctx: Load + args: list + element: Name + id: str = a + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = a + ctx: Store + value: Dict + keys: list + element: Constant + value: str = asdf + kind: NoneType = None + element: Constant + value: str = qwer + kind: NoneType = None + values: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = callable + ctx: Load + args: list + element: Name + id: str = a + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = a + ctx: Store + value: Call + func: Name + id: str = set + ctx: Load + args: list + element: List + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + ctx: Load + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = callable + ctx: Load + args: list + element: Name + id: str = a + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = opov + kind: NoneType = None + keywords: list + element: ClassDef + name: str = CallObj + bases: list + element: Name + id: str = object + ctx: Load + keywords: list + body: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = r + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _r + ctx: Store + value: Name + id: str = r + ctx: Load + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __call__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _r + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = callable + ctx: Load + args: list + element: Name + id: str = CallObj + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = obj + ctx: Store + value: Call + func: Name + id: str = CallObj + ctx: Load + args: list + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = obj + ctx: Load + args: list + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = callable + ctx: Load + args: list + element: Name + id: str = obj + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = callable + ctx: Load + args: list + element: Attribute + value: Name + id: str = obj + ctx: Load + attr: str = _r + ctx: Load + keywords: list + keywords: list + element: ClassDef + name: str = NonCallObj + bases: list + element: Name + id: str = object + ctx: Load + keywords: list + body: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = b + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _b + ctx: Store + value: Name + id: str = b + ctx: Load + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = func + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _b + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = callable + ctx: Load + args: list + element: Name + id: str = NonCallObj + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = obj2 + ctx: Store + value: Call + func: Name + id: str = NonCallObj + ctx: Load + args: list + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = callable + ctx: Load + args: list + element: Name + id: str = obj2 + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = callable + ctx: Load + args: list + element: Attribute + value: Name + id: str = obj2 + ctx: Load + attr: str = _b + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = callable + ctx: Load + args: list + element: Attribute + value: Name + id: str = obj2 + ctx: Load + attr: str = func + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = noopov + kind: NoneType = None + keywords: list + element: ClassDef + name: str = NonOpovNonCallObj + bases: list + element: Name + id: str = object + ctx: Load + keywords: list + body: list + element: Expr + value: Constant + value: str = + + kind: NoneType = None + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = c + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _c + ctx: Store + value: Name + id: str = c + ctx: Load + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = other + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = b + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: BinOp + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _c + ctx: Load + op: Mult + right: Name + id: str = b + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = _getC + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _c + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = _setC + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = val + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _c + ctx: Store + value: Name + id: str = val + ctx: Load + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = C + ctx: Store + value: Call + func: Name + id: str = property + ctx: Load + args: list + element: Name + id: str = _getC + ctx: Load + element: Name + id: str = _setC + ctx: Load + keywords: list + type_comment: NoneType = None + decorator_list: list + element: Assign + targets: list + element: Name + id: str = obj + ctx: Store + value: Call + func: Name + id: str = NonOpovNonCallObj + ctx: Load + args: list + element: Constant + value: int = 4 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = callable + ctx: Load + args: list + element: Name + id: str = obj + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = callable + ctx: Load + args: list + element: Attribute + value: Name + id: str = obj + ctx: Load + attr: str = other + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = callable + ctx: Load + args: list + element: Attribute + value: Name + id: str = obj + ctx: Load + attr: str = _c + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = callable + ctx: Load + args: list + element: Attribute + value: Name + id: str = obj + ctx: Load + attr: str = C + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = exc + ctx: Store + value: Call + func: Name + id: str = Exception + ctx: Load + args: list + element: Constant + value: str = asdf + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = callable + ctx: Load + args: list + element: Name + id: str = exc + ctx: Load + keywords: list + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/classes.js b/transcrypt/development/automated_tests/transcrypt/__target__38/classes.js new file mode 100644 index 000000000..069b3339e --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/classes.js @@ -0,0 +1,125 @@ +// Transcrypt'ed from Python, 2021-05-14 15:00:26 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get run () {return run;}, set run (value) {run = value;}}); +var __name__ = 'classes'; +export var run = function (autoTester) { + autoTester.check ('
General
'); + var A = __class__ ('A', [object], { + __module__: __name__, + p: 123, + get __init__ () {return __get__ (this, function (self, x) { + self.x = x; + autoTester.check (self.p); + });}, + get show () {return __get__ (this, function (self, label) { + autoTester.check ('A.show', label, self.x); + });}, + get show2 () {return __get__ (this, function (self, label) { + autoTester.check ('A.show2', label, self.x); + });} + }); + var B = __class__ ('B', [object], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self, y) { + autoTester.check ('In B constructor'); + self.y = y; + autoTester.check (self.p); + });}, + get show () {return __get__ (this, function (self, label) { + autoTester.check ('B.show', label, self.y); + });} + }); + var __left0__ = tuple ([456, 789]); + B.p = __left0__ [0]; + B.q = __left0__ [1]; + var C = __class__ ('C', [A, B], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self, x, y) { + autoTester.check ('In C constructor'); + A.__init__ (self, x); + B.__init__ (self, y); + });}, + get show () {return __get__ (this, function (self, label) { + A.show (self, label); + B.show (self, label); + autoTester.check ('C.show', label, self.x, self.y); + });} + }); + var a = A (1001); + a.show ('america'); + autoTester.check (A.p); + autoTester.check (a.p); + var b = B (2002); + b.show ('russia'); + autoTester.check (B.p); + autoTester.check (b.p); + autoTester.check (b.q); + autoTester.check (A.p); + autoTester.check (a.p); + var c = C (3003, 4004); + c.show ('netherlands'); + autoTester.check (C.p); + autoTester.check (c.p); + autoTester.check (c.q); + c.show2 ('amsterdam'); + A.show2 (c, 'rotterdam'); + var show3 = c.show; + show3 ('copy'); + autoTester.check (hasattr (a, 'x')); + autoTester.check (hasattr (a, 'y')); + autoTester.check (hasattr (a, 'p')); + autoTester.check (hasattr (a, 'q')); + autoTester.check ('

Augmented isinstance and issubclass
'); + var simpleTypes = tuple ([dict, list, A, B, C, bool, str, float, int, object]); + var tupleTypes = tuple ([tuple ([dict, list]), tuple ([bool, int]), tuple ([bool, A]), tuple ([C, B]), tuple ([B, object])]); + for (var [i, types] of enumerate (tuple ([simpleTypes, tupleTypes]))) { + for (var [j, aType] of enumerate (types)) { + for (var [k, anObject] of enumerate (tuple ([dict ({'a': 1}), [], a, C, c, C, b, true, 'a', 1, 1.2]))) { + autoTester.check (i, j, k, isinstance (anObject, aType)); + if (types == simpleTypes) { + autoTester.check (i, j, k, isinstance (anObject, simpleTypes)); + } + } + } + } + for (var [i, types] of enumerate (tuple ([simpleTypes, tupleTypes]))) { + for (var [j, aType] of enumerate (types)) { + for (var [k, aClass] of enumerate (tuple ([dict, list, A, C, B, bool, str, int, float]))) { + autoTester.check (i + 2, j, k, issubclass (aClass, aType)); + if (types == simpleTypes) { + autoTester.check (i + 2, j, k, issubclass (aClass, simpleTypes)); + } + } + } + } + autoTester.check ('

Method resolution order
'); + var mro = function (aClass, result) { + if (typeof result == 'undefined' || (result != null && result.hasOwnProperty ("__kwargtrans__"))) {; + var result = null; + }; + var last = 0; + if (result === null) { + var result = [aClass]; + var last = 1; + } + for (var aBase of aClass.__bases__) { + if (!(__in__ (aBase, result)) && aBase != object) { + result.append (aBase); + mro (aBase, result); + } + } + if (last && __in__ (object, aClass.__bases__)) { + aRoot.append (object); + } + return result; + }; + autoTester.check ((function () { + var __accu0__ = []; + for (var aClass of mro (C)) { + __accu0__.append (aClass.__name__); + } + return __accu0__; + }) ()); +}; + +//# sourceMappingURL=classes.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/classes.tree b/transcrypt/development/automated_tests/transcrypt/__target__38/classes.tree new file mode 100644 index 000000000..87d04ecf5 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/classes.tree @@ -0,0 +1,1572 @@ +file: Module + body: list + element: FunctionDef + name: str = run + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = autoTester + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str =
General
+ kind: NoneType = None + keywords: list + element: ClassDef + name: str = A + bases: list + keywords: list + body: list + element: Assign + targets: list + element: Name + id: str = p + ctx: Store + value: Constant + value: int = 123 + kind: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = x + ctx: Store + value: Name + id: str = x + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = p + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = show + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = label + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = A.show + kind: NoneType = None + element: Name + id: str = label + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = x + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = show2 + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = label + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = A.show2 + kind: NoneType = None + element: Name + id: str = label + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = x + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: ClassDef + name: str = B + bases: list + keywords: list + body: list + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = p + ctx: Store + element: Name + id: str = q + ctx: Store + ctx: Store + value: Tuple + elts: list + element: Constant + value: int = 456 + kind: NoneType = None + element: Constant + value: int = 789 + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = y + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = In B constructor + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = y + ctx: Store + value: Name + id: str = y + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = p + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = show + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = label + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = B.show + kind: NoneType = None + element: Name + id: str = label + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = y + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: ClassDef + name: str = C + bases: list + element: Name + id: str = A + ctx: Load + element: Name + id: str = B + ctx: Load + keywords: list + body: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = y + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = In C constructor + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = A + ctx: Load + attr: str = __init__ + ctx: Load + args: list + element: Name + id: str = self + ctx: Load + element: Name + id: str = x + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = B + ctx: Load + attr: str = __init__ + ctx: Load + args: list + element: Name + id: str = self + ctx: Load + element: Name + id: str = y + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = show + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = label + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = A + ctx: Load + attr: str = show + ctx: Load + args: list + element: Name + id: str = self + ctx: Load + element: Name + id: str = label + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = B + ctx: Load + attr: str = show + ctx: Load + args: list + element: Name + id: str = self + ctx: Load + element: Name + id: str = label + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = C.show + kind: NoneType = None + element: Name + id: str = label + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = x + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = y + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: Assign + targets: list + element: Name + id: str = a + ctx: Store + value: Call + func: Name + id: str = A + ctx: Load + args: list + element: Constant + value: int = 1001 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = a + ctx: Load + attr: str = show + ctx: Load + args: list + element: Constant + value: str = america + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = A + ctx: Load + attr: str = p + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = a + ctx: Load + attr: str = p + ctx: Load + keywords: list + element: Assign + targets: list + element: Name + id: str = b + ctx: Store + value: Call + func: Name + id: str = B + ctx: Load + args: list + element: Constant + value: int = 2002 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = b + ctx: Load + attr: str = show + ctx: Load + args: list + element: Constant + value: str = russia + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = B + ctx: Load + attr: str = p + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = b + ctx: Load + attr: str = p + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = b + ctx: Load + attr: str = q + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = A + ctx: Load + attr: str = p + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = a + ctx: Load + attr: str = p + ctx: Load + keywords: list + element: Assign + targets: list + element: Name + id: str = c + ctx: Store + value: Call + func: Name + id: str = C + ctx: Load + args: list + element: Constant + value: int = 3003 + kind: NoneType = None + element: Constant + value: int = 4004 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = c + ctx: Load + attr: str = show + ctx: Load + args: list + element: Constant + value: str = netherlands + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = C + ctx: Load + attr: str = p + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = c + ctx: Load + attr: str = p + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = c + ctx: Load + attr: str = q + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = c + ctx: Load + attr: str = show2 + ctx: Load + args: list + element: Constant + value: str = amsterdam + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = A + ctx: Load + attr: str = show2 + ctx: Load + args: list + element: Name + id: str = c + ctx: Load + element: Constant + value: str = rotterdam + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = show3 + ctx: Store + value: Attribute + value: Name + id: str = c + ctx: Load + attr: str = show + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = show3 + ctx: Load + args: list + element: Constant + value: str = copy + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = hasattr + ctx: Load + args: list + element: Name + id: str = a + ctx: Load + element: Constant + value: str = x + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = hasattr + ctx: Load + args: list + element: Name + id: str = a + ctx: Load + element: Constant + value: str = y + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = hasattr + ctx: Load + args: list + element: Name + id: str = a + ctx: Load + element: Constant + value: str = p + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = hasattr + ctx: Load + args: list + element: Name + id: str = a + ctx: Load + element: Constant + value: str = q + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str =

Augmented isinstance and issubclass
+ kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = simpleTypes + ctx: Store + value: Tuple + elts: list + element: Name + id: str = dict + ctx: Load + element: Name + id: str = list + ctx: Load + element: Name + id: str = A + ctx: Load + element: Name + id: str = B + ctx: Load + element: Name + id: str = C + ctx: Load + element: Name + id: str = bool + ctx: Load + element: Name + id: str = str + ctx: Load + element: Name + id: str = float + ctx: Load + element: Name + id: str = int + ctx: Load + element: Name + id: str = object + ctx: Load + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = tupleTypes + ctx: Store + value: Tuple + elts: list + element: Tuple + elts: list + element: Name + id: str = dict + ctx: Load + element: Name + id: str = list + ctx: Load + ctx: Load + element: Tuple + elts: list + element: Name + id: str = bool + ctx: Load + element: Name + id: str = int + ctx: Load + ctx: Load + element: Tuple + elts: list + element: Name + id: str = bool + ctx: Load + element: Name + id: str = A + ctx: Load + ctx: Load + element: Tuple + elts: list + element: Name + id: str = C + ctx: Load + element: Name + id: str = B + ctx: Load + ctx: Load + element: Tuple + elts: list + element: Name + id: str = B + ctx: Load + element: Name + id: str = object + ctx: Load + ctx: Load + ctx: Load + type_comment: NoneType = None + element: For + target: Tuple + elts: list + element: Name + id: str = i + ctx: Store + element: Name + id: str = types + ctx: Store + ctx: Store + iter: Call + func: Name + id: str = enumerate + ctx: Load + args: list + element: Tuple + elts: list + element: Name + id: str = simpleTypes + ctx: Load + element: Name + id: str = tupleTypes + ctx: Load + ctx: Load + keywords: list + body: list + element: For + target: Tuple + elts: list + element: Name + id: str = j + ctx: Store + element: Name + id: str = aType + ctx: Store + ctx: Store + iter: Call + func: Name + id: str = enumerate + ctx: Load + args: list + element: Name + id: str = types + ctx: Load + keywords: list + body: list + element: For + target: Tuple + elts: list + element: Name + id: str = k + ctx: Store + element: Name + id: str = anObject + ctx: Store + ctx: Store + iter: Call + func: Name + id: str = enumerate + ctx: Load + args: list + element: Tuple + elts: list + element: Dict + keys: list + element: Constant + value: str = a + kind: NoneType = None + values: list + element: Constant + value: int = 1 + kind: NoneType = None + element: List + elts: list + ctx: Load + element: Name + id: str = a + ctx: Load + element: Name + id: str = C + ctx: Load + element: Name + id: str = c + ctx: Load + element: Name + id: str = C + ctx: Load + element: Name + id: str = b + ctx: Load + element: Constant + value: bool = True + kind: NoneType = None + element: Constant + value: str = a + kind: NoneType = None + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: float = 1.2 + kind: NoneType = None + ctx: Load + keywords: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = i + ctx: Load + element: Name + id: str = j + ctx: Load + element: Name + id: str = k + ctx: Load + element: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = anObject + ctx: Load + element: Name + id: str = aType + ctx: Load + keywords: list + keywords: list + element: If + test: Compare + left: Name + id: str = types + ctx: Load + ops: list + element: Eq + comparators: list + element: Name + id: str = simpleTypes + ctx: Load + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = i + ctx: Load + element: Name + id: str = j + ctx: Load + element: Name + id: str = k + ctx: Load + element: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = anObject + ctx: Load + element: Name + id: str = simpleTypes + ctx: Load + keywords: list + keywords: list + orelse: list + orelse: list + type_comment: NoneType = None + orelse: list + type_comment: NoneType = None + orelse: list + type_comment: NoneType = None + element: For + target: Tuple + elts: list + element: Name + id: str = i + ctx: Store + element: Name + id: str = types + ctx: Store + ctx: Store + iter: Call + func: Name + id: str = enumerate + ctx: Load + args: list + element: Tuple + elts: list + element: Name + id: str = simpleTypes + ctx: Load + element: Name + id: str = tupleTypes + ctx: Load + ctx: Load + keywords: list + body: list + element: For + target: Tuple + elts: list + element: Name + id: str = j + ctx: Store + element: Name + id: str = aType + ctx: Store + ctx: Store + iter: Call + func: Name + id: str = enumerate + ctx: Load + args: list + element: Name + id: str = types + ctx: Load + keywords: list + body: list + element: For + target: Tuple + elts: list + element: Name + id: str = k + ctx: Store + element: Name + id: str = aClass + ctx: Store + ctx: Store + iter: Call + func: Name + id: str = enumerate + ctx: Load + args: list + element: Tuple + elts: list + element: Name + id: str = dict + ctx: Load + element: Name + id: str = list + ctx: Load + element: Name + id: str = A + ctx: Load + element: Name + id: str = C + ctx: Load + element: Name + id: str = B + ctx: Load + element: Name + id: str = bool + ctx: Load + element: Name + id: str = str + ctx: Load + element: Name + id: str = int + ctx: Load + element: Name + id: str = float + ctx: Load + ctx: Load + keywords: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BinOp + left: Name + id: str = i + ctx: Load + op: Add + right: Constant + value: int = 2 + kind: NoneType = None + element: Name + id: str = j + ctx: Load + element: Name + id: str = k + ctx: Load + element: Call + func: Name + id: str = issubclass + ctx: Load + args: list + element: Name + id: str = aClass + ctx: Load + element: Name + id: str = aType + ctx: Load + keywords: list + keywords: list + element: If + test: Compare + left: Name + id: str = types + ctx: Load + ops: list + element: Eq + comparators: list + element: Name + id: str = simpleTypes + ctx: Load + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BinOp + left: Name + id: str = i + ctx: Load + op: Add + right: Constant + value: int = 2 + kind: NoneType = None + element: Name + id: str = j + ctx: Load + element: Name + id: str = k + ctx: Load + element: Call + func: Name + id: str = issubclass + ctx: Load + args: list + element: Name + id: str = aClass + ctx: Load + element: Name + id: str = simpleTypes + ctx: Load + keywords: list + keywords: list + orelse: list + orelse: list + type_comment: NoneType = None + orelse: list + type_comment: NoneType = None + orelse: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str =

Method resolution order
+ kind: NoneType = None + keywords: list + element: FunctionDef + name: str = mro + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = aClass + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = result + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Expr + value: Constant + value: str = Recursively assemble method resolution order from all base classes + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = last + ctx: Store + value: Constant + value: int = 0 + kind: NoneType = None + type_comment: NoneType = None + element: If + test: Compare + left: Name + id: str = result + ctx: Load + ops: list + element: Is + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = result + ctx: Store + value: List + elts: list + element: Name + id: str = aClass + ctx: Load + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = last + ctx: Store + value: Constant + value: int = 1 + kind: NoneType = None + type_comment: NoneType = None + orelse: list + element: For + target: Name + id: str = aBase + ctx: Store + iter: Attribute + value: Name + id: str = aClass + ctx: Load + attr: str = __bases__ + ctx: Load + body: list + element: If + test: BoolOp + op: And + values: list + element: UnaryOp + op: Not + operand: Compare + left: Name + id: str = aBase + ctx: Load + ops: list + element: In + comparators: list + element: Name + id: str = result + ctx: Load + element: Compare + left: Name + id: str = aBase + ctx: Load + ops: list + element: NotEq + comparators: list + element: Name + id: str = object + ctx: Load + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = result + ctx: Load + attr: str = append + ctx: Load + args: list + element: Name + id: str = aBase + ctx: Load + keywords: list + element: Expr + value: Call + func: Name + id: str = mro + ctx: Load + args: list + element: Name + id: str = aBase + ctx: Load + element: Name + id: str = result + ctx: Load + keywords: list + orelse: list + orelse: list + type_comment: NoneType = None + element: If + test: BoolOp + op: And + values: list + element: Name + id: str = last + ctx: Load + element: Compare + left: Name + id: str = object + ctx: Load + ops: list + element: In + comparators: list + element: Attribute + value: Name + id: str = aClass + ctx: Load + attr: str = __bases__ + ctx: Load + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = aRoot + ctx: Load + attr: str = append + ctx: Load + args: list + element: Name + id: str = object + ctx: Load + keywords: list + orelse: list + element: Return + value: Name + id: str = result + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: ListComp + elt: Attribute + value: Name + id: str = aClass + ctx: Load + attr: str = __name__ + ctx: Load + generators: list + element: comprehension + target: Name + id: str = aClass + ctx: Store + iter: Call + func: Name + id: str = mro + ctx: Load + args: list + element: Name + id: str = C + ctx: Load + keywords: list + ifs: list + is_async: int = 0 + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/cmath.js b/transcrypt/development/automated_tests/transcrypt/__target__38/cmath.js new file mode 100644 index 000000000..df19ffdcb --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/cmath.js @@ -0,0 +1,80 @@ +// Transcrypt'ed from Python, 2021-05-14 15:00:24 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get acos () {return acos;}, set acos (value) {acos = value;}, get acosh () {return acosh;}, set acosh (value) {acosh = value;}, get asin () {return asin;}, set asin (value) {asin = value;}, get asinh () {return asinh;}, set asinh (value) {asinh = value;}, get atan () {return atan;}, set atan (value) {atan = value;}, get atanh () {return atanh;}, set atanh (value) {atanh = value;}, get cos () {return cos;}, set cos (value) {cos = value;}, get cosh () {return cosh;}, set cosh (value) {cosh = value;}, get e () {return e;}, set e (value) {e = value;}, get exp () {return exp;}, set exp (value) {exp = value;}, get isfinite () {return isfinite;}, set isfinite (value) {isfinite = value;}, get isinf () {return isinf;}, set isinf (value) {isinf = value;}, get isnan () {return isnan;}, set isnan (value) {isnan = value;}, get log () {return log;}, set log (value) {log = value;}, get log10 () {return log10;}, set log10 (value) {log10 = value;}, get phase () {return phase;}, set phase (value) {phase = value;}, get pi () {return pi;}, set pi (value) {pi = value;}, get polar () {return polar;}, set polar (value) {polar = value;}, get rect () {return rect;}, set rect (value) {rect = value;}, get sin () {return sin;}, set sin (value) {sin = value;}, get sinh () {return sinh;}, set sinh (value) {sinh = value;}, get sqrt () {return sqrt;}, set sqrt (value) {sqrt = value;}, get tan () {return tan;}, set tan (value) {tan = value;}, get tanh () {return tanh;}, set tanh (value) {tanh = value;}}); +var __name__ = 'cmath'; +export var pi = Math.PI; +export var e = Math.E; +export var phase = function (x) { + return (typeof x === 'number' ? 0 : Math.atan2 (x.imag, x.real)); +}; +export var polar = function (x) { + return (typeof x === 'number' ? tuple ([Math.abs (x), 0]) : tuple ([abs (x), phase (x)])); +}; +export var rect = function (r, phi) { + return __mul__ (r, __add__ ((function () { + var __accu0__ = Math; + return __call__ (__accu0__.cos, __accu0__, phi); + }) (), __mul__ (complex (0, 1.0), (function () { + var __accu0__ = Math; + return __call__ (__accu0__.sin, __accu0__, phi); + }) ()))); +}; +export var exp = function (x) { + return (typeof x === 'number' ? complex (x, 0).__exp__ () : x.__exp__ ()); +}; +export var log = function (x, base) { + return (base === undefined ? (typeof x === 'number' ? complex (x, 0).__log__ () : x.__log__ ()) : __truediv__ (log (x), log (base))); +}; +export var log10 = function (x) { + return log (x, 10); +}; +export var sqrt = function (x) { + return exp (__mul__ (log (x), 0.5)); +}; +export var sin = function (x) { + return __mul__ (__neg__ (complex (0, 0.5)), __sub__ (__call__ (exp, null, __mul__ (complex (0, 1.0), x)), __call__ (exp, null, __mul__ (__neg__ (complex (0, 1.0)), x)))); +}; +export var cos = function (x) { + return __mul__ (0.5, __add__ (__call__ (exp, null, __mul__ (complex (0, 1.0), x)), __call__ (exp, null, __mul__ (__neg__ (complex (0, 1.0)), x)))); +}; +export var tan = function (x) { + return __truediv__ (__mul__ (__neg__ (complex (0, 1.0)), __sub__ (__call__ (exp, null, __mul__ (complex (0, 1.0), x)), __call__ (exp, null, __mul__ (__neg__ (complex (0, 1.0)), x)))), __add__ (__call__ (exp, null, __mul__ (complex (0, 1.0), x)), __call__ (exp, null, __mul__ (__neg__ (complex (0, 1.0)), x)))); +}; +export var asin = function (x) { + return __mul__ (__neg__ (complex (0, 1.0)), __call__ (log, null, __add__ (__mul__ (complex (0, 1.0), x), __call__ (sqrt, null, __sub__ (1, __mul__ (x, x)))))); +}; +export var acos = function (x) { + return __mul__ (__neg__ (complex (0, 1.0)), __call__ (log, null, __add__ (x, __mul__ (complex (0, 1.0), __call__ (sqrt, null, __sub__ (1, __mul__ (x, x))))))); +}; +export var atan = function (x) { + return __mul__ (complex (0, 0.5), __call__ (log, null, __truediv__ (__add__ (complex (0, 1.0), x), __sub__ (complex (0, 1.0), x)))); +}; +export var sinh = function (x) { + return __mul__ (0.5, __sub__ (__call__ (exp, null, x), __call__ (exp, null, __neg__ (x)))); +}; +export var cosh = function (x) { + return __mul__ (0.5, __add__ (__call__ (exp, null, x), __call__ (exp, null, __neg__ (x)))); +}; +export var tanh = function (x) { + return __truediv__ (__sub__ (__call__ (exp, null, x), __call__ (exp, null, __neg__ (x))), __add__ (__call__ (exp, null, x), __call__ (exp, null, __neg__ (x)))); +}; +export var asinh = function (x) { + return __call__ (log, null, __add__ (x, __call__ (sqrt, null, __add__ (1, __mul__ (x, x))))); +}; +export var acosh = function (x) { + return __call__ (log, null, __add__ (x, __call__ (sqrt, null, __add__ (__neg__ (1), __mul__ (x, x))))); +}; +export var atanh = function (x) { + return __mul__ (0.5, __call__ (log, null, __truediv__ (__add__ (1, x), __sub__ (1, x)))); +}; +export var isinf = function (x) { + return x.real == js_Infinite || x.imag == js.Infinite; +}; +export var isfinite = function (x) { + return !(isinf (x)); +}; +export var isnan = function (x) { + return isNaN (x.real) || isNaN (x.imag); +}; + +//# sourceMappingURL=cmath.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/cmath.tree b/transcrypt/development/automated_tests/transcrypt/__target__38/cmath.tree new file mode 100644 index 000000000..c0d538c58 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/cmath.tree @@ -0,0 +1,1308 @@ +file: Module + body: list + element: Assign + targets: list + element: Name + id: str = pi + ctx: Store + value: Attribute + value: Name + id: str = Math + ctx: Load + attr: str = PI + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = e + ctx: Store + value: Attribute + value: Name + id: str = Math + ctx: Load + attr: str = E + ctx: Load + type_comment: NoneType = None + element: FunctionDef + name: str = phase + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: IfExp + test: Compare + left: Call + func: Name + id: str = __typeof__ + ctx: Load + args: list + element: Name + id: str = x + ctx: Load + keywords: list + ops: list + element: Is + comparators: list + element: Constant + value: str = number + kind: NoneType = None + body: Constant + value: int = 0 + kind: NoneType = None + orelse: Call + func: Attribute + value: Name + id: str = Math + ctx: Load + attr: str = atan2 + ctx: Load + args: list + element: Attribute + value: Name + id: str = x + ctx: Load + attr: str = imag + ctx: Load + element: Attribute + value: Name + id: str = x + ctx: Load + attr: str = real + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = polar + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: IfExp + test: Compare + left: Call + func: Name + id: str = __typeof__ + ctx: Load + args: list + element: Name + id: str = x + ctx: Load + keywords: list + ops: list + element: Is + comparators: list + element: Constant + value: str = number + kind: NoneType = None + body: Tuple + elts: list + element: Call + func: Attribute + value: Name + id: str = Math + ctx: Load + attr: str = abs + ctx: Load + args: list + element: Name + id: str = x + ctx: Load + keywords: list + element: Constant + value: int = 0 + kind: NoneType = None + ctx: Load + orelse: Tuple + elts: list + element: Call + func: Name + id: str = abs + ctx: Load + args: list + element: Name + id: str = x + ctx: Load + keywords: list + element: Call + func: Name + id: str = phase + ctx: Load + args: list + element: Name + id: str = x + ctx: Load + keywords: list + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = rect + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = r + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = phi + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = opov + kind: NoneType = None + keywords: list + element: Return + value: BinOp + left: Name + id: str = r + ctx: Load + op: Mult + right: BinOp + left: Call + func: Attribute + value: Name + id: str = Math + ctx: Load + attr: str = cos + ctx: Load + args: list + element: Name + id: str = phi + ctx: Load + keywords: list + op: Add + right: BinOp + left: Constant + value: complex = 1j + kind: NoneType = None + op: Mult + right: Call + func: Attribute + value: Name + id: str = Math + ctx: Load + attr: str = sin + ctx: Load + args: list + element: Name + id: str = phi + ctx: Load + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = noopov + kind: NoneType = None + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = exp + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: IfExp + test: Compare + left: Call + func: Name + id: str = __typeof__ + ctx: Load + args: list + element: Name + id: str = x + ctx: Load + keywords: list + ops: list + element: Is + comparators: list + element: Constant + value: str = number + kind: NoneType = None + body: Call + func: Attribute + value: Call + func: Name + id: str = complex + ctx: Load + args: list + element: Name + id: str = x + ctx: Load + element: Constant + value: int = 0 + kind: NoneType = None + keywords: list + attr: str = __exp__ + ctx: Load + args: list + keywords: list + orelse: Call + func: Attribute + value: Name + id: str = x + ctx: Load + attr: str = __exp__ + ctx: Load + args: list + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = log + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = base + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: IfExp + test: Compare + left: Name + id: str = base + ctx: Load + ops: list + element: Is + comparators: list + element: Name + id: str = js_undefined + ctx: Load + body: IfExp + test: Compare + left: Call + func: Name + id: str = __typeof__ + ctx: Load + args: list + element: Name + id: str = x + ctx: Load + keywords: list + ops: list + element: Is + comparators: list + element: Constant + value: str = number + kind: NoneType = None + body: Call + func: Attribute + value: Call + func: Name + id: str = complex + ctx: Load + args: list + element: Name + id: str = x + ctx: Load + element: Constant + value: int = 0 + kind: NoneType = None + keywords: list + attr: str = __log__ + ctx: Load + args: list + keywords: list + orelse: Call + func: Attribute + value: Name + id: str = x + ctx: Load + attr: str = __log__ + ctx: Load + args: list + keywords: list + orelse: Call + func: Name + id: str = __truediv__ + ctx: Load + args: list + element: Call + func: Name + id: str = log + ctx: Load + args: list + element: Name + id: str = x + ctx: Load + keywords: list + element: Call + func: Name + id: str = log + ctx: Load + args: list + element: Name + id: str = base + ctx: Load + keywords: list + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = log10 + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Call + func: Name + id: str = log + ctx: Load + args: list + element: Name + id: str = x + ctx: Load + element: Constant + value: int = 10 + kind: NoneType = None + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = sqrt + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Call + func: Name + id: str = exp + ctx: Load + args: list + element: Call + func: Name + id: str = __mul__ + ctx: Load + args: list + element: Call + func: Name + id: str = log + ctx: Load + args: list + element: Name + id: str = x + ctx: Load + keywords: list + element: Constant + value: float = 0.5 + kind: NoneType = None + keywords: list + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = opov + kind: NoneType = None + keywords: list + element: FunctionDef + name: str = sin + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: BinOp + left: UnaryOp + op: USub + operand: Constant + value: complex = 0.5j + kind: NoneType = None + op: Mult + right: BinOp + left: Call + func: Name + id: str = exp + ctx: Load + args: list + element: BinOp + left: Constant + value: complex = 1j + kind: NoneType = None + op: Mult + right: Name + id: str = x + ctx: Load + keywords: list + op: Sub + right: Call + func: Name + id: str = exp + ctx: Load + args: list + element: BinOp + left: UnaryOp + op: USub + operand: Constant + value: complex = 1j + kind: NoneType = None + op: Mult + right: Name + id: str = x + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = cos + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: BinOp + left: Constant + value: float = 0.5 + kind: NoneType = None + op: Mult + right: BinOp + left: Call + func: Name + id: str = exp + ctx: Load + args: list + element: BinOp + left: Constant + value: complex = 1j + kind: NoneType = None + op: Mult + right: Name + id: str = x + ctx: Load + keywords: list + op: Add + right: Call + func: Name + id: str = exp + ctx: Load + args: list + element: BinOp + left: UnaryOp + op: USub + operand: Constant + value: complex = 1j + kind: NoneType = None + op: Mult + right: Name + id: str = x + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = tan + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: BinOp + left: BinOp + left: UnaryOp + op: USub + operand: Constant + value: complex = 1j + kind: NoneType = None + op: Mult + right: BinOp + left: Call + func: Name + id: str = exp + ctx: Load + args: list + element: BinOp + left: Constant + value: complex = 1j + kind: NoneType = None + op: Mult + right: Name + id: str = x + ctx: Load + keywords: list + op: Sub + right: Call + func: Name + id: str = exp + ctx: Load + args: list + element: BinOp + left: UnaryOp + op: USub + operand: Constant + value: complex = 1j + kind: NoneType = None + op: Mult + right: Name + id: str = x + ctx: Load + keywords: list + op: Div + right: BinOp + left: Call + func: Name + id: str = exp + ctx: Load + args: list + element: BinOp + left: Constant + value: complex = 1j + kind: NoneType = None + op: Mult + right: Name + id: str = x + ctx: Load + keywords: list + op: Add + right: Call + func: Name + id: str = exp + ctx: Load + args: list + element: BinOp + left: UnaryOp + op: USub + operand: Constant + value: complex = 1j + kind: NoneType = None + op: Mult + right: Name + id: str = x + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = asin + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: BinOp + left: UnaryOp + op: USub + operand: Constant + value: complex = 1j + kind: NoneType = None + op: Mult + right: Call + func: Name + id: str = log + ctx: Load + args: list + element: BinOp + left: BinOp + left: Constant + value: complex = 1j + kind: NoneType = None + op: Mult + right: Name + id: str = x + ctx: Load + op: Add + right: Call + func: Name + id: str = sqrt + ctx: Load + args: list + element: BinOp + left: Constant + value: int = 1 + kind: NoneType = None + op: Sub + right: BinOp + left: Name + id: str = x + ctx: Load + op: Mult + right: Name + id: str = x + ctx: Load + keywords: list + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = acos + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: BinOp + left: UnaryOp + op: USub + operand: Constant + value: complex = 1j + kind: NoneType = None + op: Mult + right: Call + func: Name + id: str = log + ctx: Load + args: list + element: BinOp + left: Name + id: str = x + ctx: Load + op: Add + right: BinOp + left: Constant + value: complex = 1j + kind: NoneType = None + op: Mult + right: Call + func: Name + id: str = sqrt + ctx: Load + args: list + element: BinOp + left: Constant + value: int = 1 + kind: NoneType = None + op: Sub + right: BinOp + left: Name + id: str = x + ctx: Load + op: Mult + right: Name + id: str = x + ctx: Load + keywords: list + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = atan + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: BinOp + left: Constant + value: complex = 0.5j + kind: NoneType = None + op: Mult + right: Call + func: Name + id: str = log + ctx: Load + args: list + element: BinOp + left: BinOp + left: Constant + value: complex = 1j + kind: NoneType = None + op: Add + right: Name + id: str = x + ctx: Load + op: Div + right: BinOp + left: Constant + value: complex = 1j + kind: NoneType = None + op: Sub + right: Name + id: str = x + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = sinh + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: BinOp + left: Constant + value: float = 0.5 + kind: NoneType = None + op: Mult + right: BinOp + left: Call + func: Name + id: str = exp + ctx: Load + args: list + element: Name + id: str = x + ctx: Load + keywords: list + op: Sub + right: Call + func: Name + id: str = exp + ctx: Load + args: list + element: UnaryOp + op: USub + operand: Name + id: str = x + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = cosh + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: BinOp + left: Constant + value: float = 0.5 + kind: NoneType = None + op: Mult + right: BinOp + left: Call + func: Name + id: str = exp + ctx: Load + args: list + element: Name + id: str = x + ctx: Load + keywords: list + op: Add + right: Call + func: Name + id: str = exp + ctx: Load + args: list + element: UnaryOp + op: USub + operand: Name + id: str = x + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = tanh + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: BinOp + left: BinOp + left: Call + func: Name + id: str = exp + ctx: Load + args: list + element: Name + id: str = x + ctx: Load + keywords: list + op: Sub + right: Call + func: Name + id: str = exp + ctx: Load + args: list + element: UnaryOp + op: USub + operand: Name + id: str = x + ctx: Load + keywords: list + op: Div + right: BinOp + left: Call + func: Name + id: str = exp + ctx: Load + args: list + element: Name + id: str = x + ctx: Load + keywords: list + op: Add + right: Call + func: Name + id: str = exp + ctx: Load + args: list + element: UnaryOp + op: USub + operand: Name + id: str = x + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = asinh + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Call + func: Name + id: str = log + ctx: Load + args: list + element: BinOp + left: Name + id: str = x + ctx: Load + op: Add + right: Call + func: Name + id: str = sqrt + ctx: Load + args: list + element: BinOp + left: Constant + value: int = 1 + kind: NoneType = None + op: Add + right: BinOp + left: Name + id: str = x + ctx: Load + op: Mult + right: Name + id: str = x + ctx: Load + keywords: list + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = acosh + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Call + func: Name + id: str = log + ctx: Load + args: list + element: BinOp + left: Name + id: str = x + ctx: Load + op: Add + right: Call + func: Name + id: str = sqrt + ctx: Load + args: list + element: BinOp + left: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + op: Add + right: BinOp + left: Name + id: str = x + ctx: Load + op: Mult + right: Name + id: str = x + ctx: Load + keywords: list + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = atanh + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: BinOp + left: Constant + value: float = 0.5 + kind: NoneType = None + op: Mult + right: Call + func: Name + id: str = log + ctx: Load + args: list + element: BinOp + left: BinOp + left: Constant + value: int = 1 + kind: NoneType = None + op: Add + right: Name + id: str = x + ctx: Load + op: Div + right: BinOp + left: Constant + value: int = 1 + kind: NoneType = None + op: Sub + right: Name + id: str = x + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = noopov + kind: NoneType = None + keywords: list + element: FunctionDef + name: str = isinf + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: BoolOp + op: Or + values: list + element: Compare + left: Attribute + value: Name + id: str = x + ctx: Load + attr: str = real + ctx: Load + ops: list + element: Eq + comparators: list + element: Name + id: str = js_Infinite + ctx: Load + element: Compare + left: Attribute + value: Name + id: str = x + ctx: Load + attr: str = imag + ctx: Load + ops: list + element: Eq + comparators: list + element: Attribute + value: Name + id: str = js + ctx: Load + attr: str = Infinite + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = isfinite + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: UnaryOp + op: Not + operand: Call + func: Name + id: str = isinf + ctx: Load + args: list + element: Name + id: str = x + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = isnan + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: BoolOp + op: Or + values: list + element: Call + func: Name + id: str = js_isNaN + ctx: Load + args: list + element: Attribute + value: Name + id: str = x + ctx: Load + attr: str = real + ctx: Load + keywords: list + element: Call + func: Name + id: str = js_isNaN + ctx: Load + args: list + element: Attribute + value: Name + id: str = x + ctx: Load + attr: str = imag + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/complex_numbers.js b/transcrypt/development/automated_tests/transcrypt/__target__38/complex_numbers.js new file mode 100644 index 000000000..eea6085b6 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/complex_numbers.js @@ -0,0 +1,42 @@ +// Transcrypt'ed from Python, 2021-05-14 15:00:25 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get run () {return run;}, set run (value) {run = value;}}); +var __name__ = 'complex_numbers'; +export var run = function (autoTester) { + var x = 567; + var y = -(3); + var z = 5 * x + 2 * y; + autoTester.check (__conj__ (x).real, __conj__ (x).imag); + autoTester.check (x, y, z); + var a = __add__ (234, complex (0, 3.0)); + var b = __sub__ (4, complex (0, 5.0)); + var c = __call__ (complex, null, __neg__ (6), 7); + var d = 1; + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, a, b, c); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __call__ (__conj__, null, d).real, __call__ (__conj__, null, d).imag); + }) (); + var t = __add__ (__sub__ (__mul__ (6, x), __mul__ (3, y)), 7); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, t); + }) (); + var d = __mul__ (2, a); + var e = __mul__ (x, b); + var f = __add__ (__add__ (z, d), e); + var g = __truediv__ (a, b); + var h = __sub__ (a, b); + var i = __sub__ (x, c); + var j = __sub__ (a, x); + var k = __add__ (b, y); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, d, e, f, __call__ (round, null, g.real, 2), __call__ (round, null, g.imag, 2), h, i, j, k); + }) (); +}; + +//# sourceMappingURL=complex_numbers.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/complex_numbers.tree b/transcrypt/development/automated_tests/transcrypt/__target__38/complex_numbers.tree new file mode 100644 index 000000000..c7ba94afa --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/complex_numbers.tree @@ -0,0 +1,475 @@ +file: Module + body: list + element: ImportFrom + module: str = org.transcrypt.stubs.browser + names: list + element: alias + name: str = __pragma__ + asname: NoneType = None + level: int = 0 + element: FunctionDef + name: str = run + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = autoTester + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Name + id: str = x + ctx: Store + value: Constant + value: int = 567 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = y + ctx: Store + value: UnaryOp + op: USub + operand: Constant + value: int = 3 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = z + ctx: Store + value: BinOp + left: BinOp + left: Constant + value: int = 5 + kind: NoneType = None + op: Mult + right: Name + id: str = x + ctx: Load + op: Add + right: BinOp + left: Constant + value: int = 2 + kind: NoneType = None + op: Mult + right: Name + id: str = y + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Call + func: Attribute + value: Name + id: str = x + ctx: Load + attr: str = conjugate + ctx: Load + args: list + keywords: list + attr: str = real + ctx: Load + element: Attribute + value: Call + func: Attribute + value: Name + id: str = x + ctx: Load + attr: str = conjugate + ctx: Load + args: list + keywords: list + attr: str = imag + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = x + ctx: Load + element: Name + id: str = y + ctx: Load + element: Name + id: str = z + ctx: Load + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = opov + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = a + ctx: Store + value: BinOp + left: Constant + value: int = 234 + kind: NoneType = None + op: Add + right: Constant + value: complex = 3j + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = b + ctx: Store + value: BinOp + left: Constant + value: int = 4 + kind: NoneType = None + op: Sub + right: Constant + value: complex = 5j + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = c + ctx: Store + value: Call + func: Name + id: str = complex + ctx: Load + args: list + element: UnaryOp + op: USub + operand: Constant + value: int = 6 + kind: NoneType = None + element: Constant + value: int = 7 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = d + ctx: Store + value: Constant + value: int = 1 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = a + ctx: Load + element: Name + id: str = b + ctx: Load + element: Name + id: str = c + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Call + func: Attribute + value: Name + id: str = d + ctx: Load + attr: str = conjugate + ctx: Load + args: list + keywords: list + attr: str = real + ctx: Load + element: Attribute + value: Call + func: Attribute + value: Name + id: str = d + ctx: Load + attr: str = conjugate + ctx: Load + args: list + keywords: list + attr: str = imag + ctx: Load + keywords: list + element: Assign + targets: list + element: Name + id: str = t + ctx: Store + value: BinOp + left: BinOp + left: BinOp + left: Constant + value: int = 6 + kind: NoneType = None + op: Mult + right: Name + id: str = x + ctx: Load + op: Sub + right: BinOp + left: Constant + value: int = 3 + kind: NoneType = None + op: Mult + right: Name + id: str = y + ctx: Load + op: Add + right: Constant + value: int = 7 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = t + ctx: Load + keywords: list + element: Assign + targets: list + element: Name + id: str = d + ctx: Store + value: BinOp + left: Constant + value: int = 2 + kind: NoneType = None + op: Mult + right: Name + id: str = a + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = e + ctx: Store + value: BinOp + left: Name + id: str = x + ctx: Load + op: Mult + right: Name + id: str = b + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = f + ctx: Store + value: BinOp + left: BinOp + left: Name + id: str = z + ctx: Load + op: Add + right: Name + id: str = d + ctx: Load + op: Add + right: Name + id: str = e + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = g + ctx: Store + value: BinOp + left: Name + id: str = a + ctx: Load + op: Div + right: Name + id: str = b + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = h + ctx: Store + value: BinOp + left: Name + id: str = a + ctx: Load + op: Sub + right: Name + id: str = b + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = i + ctx: Store + value: BinOp + left: Name + id: str = x + ctx: Load + op: Sub + right: Name + id: str = c + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = j + ctx: Store + value: BinOp + left: Name + id: str = a + ctx: Load + op: Sub + right: Name + id: str = x + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = k + ctx: Store + value: BinOp + left: Name + id: str = b + ctx: Load + op: Add + right: Name + id: str = y + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = d + ctx: Load + element: Name + id: str = e + ctx: Load + element: Name + id: str = f + ctx: Load + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: Attribute + value: Name + id: str = g + ctx: Load + attr: str = real + ctx: Load + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: Attribute + value: Name + id: str = g + ctx: Load + attr: str = imag + ctx: Load + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + element: Name + id: str = h + ctx: Load + element: Name + id: str = i + ctx: Load + element: Name + id: str = j + ctx: Load + element: Name + id: str = k + ctx: Load + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = noopov + kind: NoneType = None + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/conditional_expressions.js b/transcrypt/development/automated_tests/transcrypt/__target__38/conditional_expressions.js new file mode 100644 index 000000000..edfc64f38 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/conditional_expressions.js @@ -0,0 +1,38 @@ +// Transcrypt'ed from Python, 2021-05-14 15:00:25 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get f () {return f;}, set f (value) {f = value;}, get run () {return run;}, set run (value) {run = value;}}); +var __name__ = 'conditional_expressions'; +export var f = function (x, b) { + return (b ? x * x : x + x); +}; +export var run = function (autoTester) { + var bools = tuple ([false, true]); + for (var a of bools) { + for (var b of bools) { + autoTester.check (f ((a ? 10 : 100), b)); + } + } + for (var p of bools) { + for (var q of bools) { + for (var r of bools) { + autoTester.check ((p ? 'a' : (q ? 'b' : (r ? 'c' : 'd')))); + var a = (r ? (q ? (p ? 'e' : 'f') : 'g') : 'h'); + var b = (p ? 'i' : (q ? 'j' : (r ? 'k' : 'l'))); + var c = ((q ? p : r) ? 'm' : 'n'); + var d = ((p < q && q <= r) ? 'o' : 'p'); + autoTester.check (a, b, c, d); + } + } + } + var odd = (function () { + var __accu0__ = []; + for (var x = 0; x < 10; x++) { + __accu0__.append ((__mod__ (x, 2) ? x : x + 1)); + } + return __accu0__; + }) (); + var noDuplicates = set (odd); + autoTester.check (odd, noDuplicates); +}; + +//# sourceMappingURL=conditional_expressions.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/conditional_expressions.tree b/transcrypt/development/automated_tests/transcrypt/__target__38/conditional_expressions.tree new file mode 100644 index 000000000..2f7854358 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/conditional_expressions.tree @@ -0,0 +1,398 @@ +file: Module + body: list + element: FunctionDef + name: str = f + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = b + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: IfExp + test: Name + id: str = b + ctx: Load + body: BinOp + left: Name + id: str = x + ctx: Load + op: Mult + right: Name + id: str = x + ctx: Load + orelse: BinOp + left: Name + id: str = x + ctx: Load + op: Add + right: Name + id: str = x + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = run + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = autoTester + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Name + id: str = bools + ctx: Store + value: Tuple + elts: list + element: Constant + value: bool = False + kind: NoneType = None + element: Constant + value: bool = True + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: For + target: Name + id: str = a + ctx: Store + iter: Name + id: str = bools + ctx: Load + body: list + element: For + target: Name + id: str = b + ctx: Store + iter: Name + id: str = bools + ctx: Load + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = f + ctx: Load + args: list + element: IfExp + test: Name + id: str = a + ctx: Load + body: Constant + value: int = 10 + kind: NoneType = None + orelse: Constant + value: int = 100 + kind: NoneType = None + element: Name + id: str = b + ctx: Load + keywords: list + keywords: list + orelse: list + type_comment: NoneType = None + orelse: list + type_comment: NoneType = None + element: For + target: Name + id: str = p + ctx: Store + iter: Name + id: str = bools + ctx: Load + body: list + element: For + target: Name + id: str = q + ctx: Store + iter: Name + id: str = bools + ctx: Load + body: list + element: For + target: Name + id: str = r + ctx: Store + iter: Name + id: str = bools + ctx: Load + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: IfExp + test: Name + id: str = p + ctx: Load + body: Constant + value: str = a + kind: NoneType = None + orelse: IfExp + test: Name + id: str = q + ctx: Load + body: Constant + value: str = b + kind: NoneType = None + orelse: IfExp + test: Name + id: str = r + ctx: Load + body: Constant + value: str = c + kind: NoneType = None + orelse: Constant + value: str = d + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = a + ctx: Store + value: IfExp + test: Name + id: str = r + ctx: Load + body: IfExp + test: Name + id: str = q + ctx: Load + body: IfExp + test: Name + id: str = p + ctx: Load + body: Constant + value: str = e + kind: NoneType = None + orelse: Constant + value: str = f + kind: NoneType = None + orelse: Constant + value: str = g + kind: NoneType = None + orelse: Constant + value: str = h + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = b + ctx: Store + value: IfExp + test: Name + id: str = p + ctx: Load + body: Constant + value: str = i + kind: NoneType = None + orelse: IfExp + test: Name + id: str = q + ctx: Load + body: Constant + value: str = j + kind: NoneType = None + orelse: IfExp + test: Name + id: str = r + ctx: Load + body: Constant + value: str = k + kind: NoneType = None + orelse: Constant + value: str = l + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = c + ctx: Store + value: IfExp + test: IfExp + test: Name + id: str = q + ctx: Load + body: Name + id: str = p + ctx: Load + orelse: Name + id: str = r + ctx: Load + body: Constant + value: str = m + kind: NoneType = None + orelse: Constant + value: str = n + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = d + ctx: Store + value: IfExp + test: Compare + left: Name + id: str = p + ctx: Load + ops: list + element: Lt + element: LtE + comparators: list + element: Name + id: str = q + ctx: Load + element: Name + id: str = r + ctx: Load + body: Constant + value: str = o + kind: NoneType = None + orelse: Constant + value: str = p + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = a + ctx: Load + element: Name + id: str = b + ctx: Load + element: Name + id: str = c + ctx: Load + element: Name + id: str = d + ctx: Load + keywords: list + orelse: list + type_comment: NoneType = None + orelse: list + type_comment: NoneType = None + orelse: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = odd + ctx: Store + value: ListComp + elt: IfExp + test: BinOp + left: Name + id: str = x + ctx: Load + op: Mod + right: Constant + value: int = 2 + kind: NoneType = None + body: Name + id: str = x + ctx: Load + orelse: BinOp + left: Name + id: str = x + ctx: Load + op: Add + right: Constant + value: int = 1 + kind: NoneType = None + generators: list + element: comprehension + target: Name + id: str = x + ctx: Store + iter: Call + func: Name + id: str = range + ctx: Load + args: list + element: Constant + value: int = 10 + kind: NoneType = None + keywords: list + ifs: list + is_async: int = 0 + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = noDuplicates + ctx: Store + value: Call + func: Name + id: str = set + ctx: Load + args: list + element: Name + id: str = odd + ctx: Load + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = odd + ctx: Load + element: Name + id: str = noDuplicates + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/control_structures.js b/transcrypt/development/automated_tests/transcrypt/__target__38/control_structures.js new file mode 100644 index 000000000..0558cd5bd --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/control_structures.js @@ -0,0 +1,292 @@ +// Transcrypt'ed from Python, 2021-05-14 15:00:25 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +var __all__ = dict ({get ContextManagerExample () {return ContextManagerExample;}, set ContextManagerExample (value) {ContextManagerExample = value;}, get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get run () {return run;}, set run (value) {run = value;}}); +var __name__ = 'control_structures'; +export var ContextManagerExample = __class__ ('ContextManagerExample', [object], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self) { + self.counter = 0; + });}, + get __enter__ () {return __get__ (this, function (self) { + self.counter++; + return self; + });}, + get __exit__ () {return __get__ (this, function (self) { + var args = tuple ([].slice.apply (arguments).slice (1)); + self.counter += 99; + });} +}); +export var run = function (autoTester) { + for (var index = 0; index < 10; index++) { + autoTester.check (index); + } + for (var index = 8; index < 16; index++) { + autoTester.check (index); + } + for (var index = 8; index < 16; index += 2) { + autoTester.check (index); + } + for (var index = 10; index > 0; index--) { + autoTester.check (index); + } + for (var index = 16; index > 8; index -= 2) { + autoTester.check (index); + } + for (var animal of tuple (['cat', 'dog', 'turtle', 'goldfish'])) { + autoTester.check (animal); + } + for (var [index, square] of enumerate ((function () { + var __accu0__ = []; + for (var x = 0; x < 10; x++) { + if (__mod__ (x, 2)) { + __accu0__.append (x * x); + } + } + return __accu0__; + }) ())) { + for (var y of tuple ([1, 2, 3])) { + for (var z of tuple ([10, 20, 30])) { + autoTester.check (square + y, z); + } + } + } + var vehicles = ['bike', 'train', 'boat', 'car', 'plane', 'bus']; + for (var doBreak of tuple ([false, true])) { + for (var doContinue of tuple ([false, true])) { + var __break2__ = false; + for (var index = 0; index < 10; index++) { + var __break3__ = false; + for (var index2 = 0; index2 < 100; index2 += 10) { + if (doBreak && index2 == 50) { + autoTester.check ('break2'); + __break3__ = true; + break; + } + if (doContinue && index2 == 50) { + autoTester.check ('continue2'); + continue; + } + } + if (!__break3__) { + autoTester.check ('noBreak2'); + } + if (doBreak && index == 5) { + autoTester.check ('break'); + __break2__ = true; + break; + } + if (doContinue && index == 5) { + autoTester.check ('continue'); + continue; + } + } + if (!__break2__) { + autoTester.check ('noBreak'); + } + var index = 0; + var __break2__ = false; + while (index < len (vehicles) && vehicles [index] != 'bus') { + autoTester.check (index, vehicles [index]); + if (doBreak && vehicles [index] == 'car') { + autoTester.check ('breakWhile'); + __break2__ = true; + break; + } + if (doContinue && vehicles [index] == 'car') { + autoTester.check ('continueWhile'); + index++; + continue; + } + index++; + } + if (!__break2__) { + autoTester.check ('noBreakWhile'); + } + } + for (var vehicle of vehicles) { + if (vehicle == 'bike') { + autoTester.check ('netherlands'); + } + else if (vehicle == 'car') { + autoTester.check ('america'); + } + else if (vehicle == 'boat') { + autoTester.check ('oceania'); + } + else { + autoTester.check ('anywhere'); + } + } + } + var externalCounter1 = 0; + var contextManagerExample1 = ContextManagerExample (); + try { + contextManagerExample1.__enter__ (); + externalCounter1++; + contextManagerExample1.__exit__ (); + } + catch (__except0__) { + if (! (contextManagerExample1.__exit__ (__except0__.name, __except0__, __except0__.stack))) { + throw __except0__; + } + } + autoTester.check ('ctx1', contextManagerExample1.counter, externalCounter1); + var externalCounter2 = 0; + var contextManagerExample2 = ContextManagerExample (); + try { + contextManagerExample2.__enter__ (); + externalCounter2++; + contextManagerExample2.counter += 100; + var externalCounter3 = 0; + var contextManagerExample3 = ContextManagerExample (); + try { + contextManagerExample3.__enter__ (); + externalCounter3++; + contextManagerExample2.counter += 100; + externalCounter3 += 2; + contextManagerExample3.counter += 200; + contextManagerExample3.__exit__ (); + } + catch (__except0__) { + if (! (contextManagerExample3.__exit__ (__except0__.name, __except0__, __except0__.stack))) { + throw __except0__; + } + } + autoTester.check ('ctx3', contextManagerExample3.counter, externalCounter3); + externalCounter2 += 2; + contextManagerExample2.counter += 200; + contextManagerExample2.__exit__ (); + } + catch (__except0__) { + if (! (contextManagerExample2.__exit__ (__except0__.name, __except0__, __except0__.stack))) { + throw __except0__; + } + } + autoTester.check ('ctx2', contextManagerExample2.counter, externalCounter2); + try { + var externalCounter4 = 0; + var contextManagerExample4 = ContextManagerExample (); + try { + contextManagerExample4.__enter__ (); + externalCounter4++; + contextManagerExample4.counter += 100; + var externalCounter5 = 0; + var contextManagerExample5 = ContextManagerExample (); + try { + contextManagerExample5.__enter__ (); + externalCounter5++; + contextManagerExample5.counter += 100; + var __except0__ = Exception (); + __except0__.__cause__ = null; + throw __except0__; + externalCounter5 += 2; + contextManagerExample5.counter += 200; + contextManagerExample5.__exit__ (); + } + catch (__except0__) { + if (! (contextManagerExample5.__exit__ (__except0__.name, __except0__, __except0__.stack))) { + throw __except0__; + } + } + externalCounter4 += 2; + contextManagerExample4.counter += 200; + contextManagerExample4.__exit__ (); + } + catch (__except0__) { + if (! (contextManagerExample4.__exit__ (__except0__.name, __except0__, __except0__.stack))) { + throw __except0__; + } + } + } + catch (__except0__) { + if (isinstance (__except0__, Exception)) { + var exception = __except0__; + autoTester.check ('ctx6', exception); + } + else { + throw __except0__; + } + } + finally { + autoTester.check ('ctx5', contextManagerExample5.counter, externalCounter5); + autoTester.check ('ctx4', contextManagerExample4.counter, externalCounter4); + } + var iterationCount = 0; + var contextManagerExample5 = ContextManagerExample (); + try { + contextManagerExample5.__enter__ (); + var contextManagerExample6 = ContextManagerExample (); + try { + contextManagerExample6.__enter__ (); + iterationCount++; + contextManagerExample6.__exit__ (); + } + catch (__except0__) { + if (! (contextManagerExample6.__exit__ (__except0__.name, __except0__, __except0__.stack))) { + throw __except0__; + } + } + contextManagerExample5.__exit__ (); + } + catch (__except0__) { + if (! (contextManagerExample5.__exit__ (__except0__.name, __except0__, __except0__.stack))) { + throw __except0__; + } + } + autoTester.check ('ctx7', iterationCount, contextManagerExample5.counter, contextManagerExample6.counter); + var iterationCount = 0; + var __withid0__ = ContextManagerExample (); + try { + __withid0__.__enter__ (); + var __withid1__ = ContextManagerExample (); + try { + __withid1__.__enter__ (); + var __withid2__ = ContextManagerExample (); + try { + __withid2__.__enter__ (); + var __withid3__ = ContextManagerExample (); + try { + __withid3__.__enter__ (); + var __withid4__ = ContextManagerExample (); + try { + __withid4__.__enter__ (); + iterationCount++; + __withid4__.__exit__ (); + } + catch (__except0__) { + if (! (__withid4__.__exit__ (__except0__.name, __except0__, __except0__.stack))) { + throw __except0__; + } + } + __withid3__.__exit__ (); + } + catch (__except0__) { + if (! (__withid3__.__exit__ (__except0__.name, __except0__, __except0__.stack))) { + throw __except0__; + } + } + __withid2__.__exit__ (); + } + catch (__except0__) { + if (! (__withid2__.__exit__ (__except0__.name, __except0__, __except0__.stack))) { + throw __except0__; + } + } + __withid1__.__exit__ (); + } + catch (__except0__) { + if (! (__withid1__.__exit__ (__except0__.name, __except0__, __except0__.stack))) { + throw __except0__; + } + } + __withid0__.__exit__ (); + } + catch (__except0__) { + if (! (__withid0__.__exit__ (__except0__.name, __except0__, __except0__.stack))) { + throw __except0__; + } + } + autoTester.check ('ctx8', iterationCount); +}; + +//# sourceMappingURL=control_structures.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/control_structures.tree b/transcrypt/development/automated_tests/transcrypt/__target__38/control_structures.tree new file mode 100644 index 000000000..862f7bf3a --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/control_structures.tree @@ -0,0 +1,1536 @@ +file: Module + body: list + element: ClassDef + name: str = ContextManagerExample + bases: list + keywords: list + body: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = counter + ctx: Store + value: Constant + value: int = 0 + kind: NoneType = None + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __enter__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: AugAssign + target: Attribute + value: Name + id: str = self + ctx: Load + attr: str = counter + ctx: Store + op: Add + value: Constant + value: int = 1 + kind: NoneType = None + element: Return + value: Name + id: str = self + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __exit__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: arg + arg: str = args + annotation: NoneType = None + type_comment: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: AugAssign + target: Attribute + value: Name + id: str = self + ctx: Load + attr: str = counter + ctx: Store + op: Add + value: Constant + value: int = 99 + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: FunctionDef + name: str = run + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = autoTester + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: For + target: Name + id: str = index + ctx: Store + iter: Call + func: Name + id: str = range + ctx: Load + args: list + element: Constant + value: int = 10 + kind: NoneType = None + keywords: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = index + ctx: Load + keywords: list + orelse: list + type_comment: NoneType = None + element: For + target: Name + id: str = index + ctx: Store + iter: Call + func: Name + id: str = range + ctx: Load + args: list + element: Constant + value: int = 8 + kind: NoneType = None + element: Constant + value: int = 16 + kind: NoneType = None + keywords: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = index + ctx: Load + keywords: list + orelse: list + type_comment: NoneType = None + element: For + target: Name + id: str = index + ctx: Store + iter: Call + func: Name + id: str = range + ctx: Load + args: list + element: Constant + value: int = 8 + kind: NoneType = None + element: Constant + value: int = 16 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = index + ctx: Load + keywords: list + orelse: list + type_comment: NoneType = None + element: For + target: Name + id: str = index + ctx: Store + iter: Call + func: Name + id: str = range + ctx: Load + args: list + element: Constant + value: int = 10 + kind: NoneType = None + element: Constant + value: int = 0 + kind: NoneType = None + element: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + keywords: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = index + ctx: Load + keywords: list + orelse: list + type_comment: NoneType = None + element: For + target: Name + id: str = index + ctx: Store + iter: Call + func: Name + id: str = range + ctx: Load + args: list + element: Constant + value: int = 16 + kind: NoneType = None + element: Constant + value: int = 8 + kind: NoneType = None + element: UnaryOp + op: USub + operand: Constant + value: int = 2 + kind: NoneType = None + keywords: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = index + ctx: Load + keywords: list + orelse: list + type_comment: NoneType = None + element: For + target: Name + id: str = animal + ctx: Store + iter: Tuple + elts: list + element: Constant + value: str = cat + kind: NoneType = None + element: Constant + value: str = dog + kind: NoneType = None + element: Constant + value: str = turtle + kind: NoneType = None + element: Constant + value: str = goldfish + kind: NoneType = None + ctx: Load + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = animal + ctx: Load + keywords: list + orelse: list + type_comment: NoneType = None + element: For + target: Tuple + elts: list + element: Name + id: str = index + ctx: Store + element: Name + id: str = square + ctx: Store + ctx: Store + iter: Call + func: Name + id: str = enumerate + ctx: Load + args: list + element: ListComp + elt: BinOp + left: Name + id: str = x + ctx: Load + op: Mult + right: Name + id: str = x + ctx: Load + generators: list + element: comprehension + target: Name + id: str = x + ctx: Store + iter: Call + func: Name + id: str = range + ctx: Load + args: list + element: Constant + value: int = 10 + kind: NoneType = None + keywords: list + ifs: list + element: BinOp + left: Name + id: str = x + ctx: Load + op: Mod + right: Constant + value: int = 2 + kind: NoneType = None + is_async: int = 0 + keywords: list + body: list + element: For + target: Name + id: str = y + ctx: Store + iter: Tuple + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + body: list + element: For + target: Name + id: str = z + ctx: Store + iter: Tuple + elts: list + element: Constant + value: int = 10 + kind: NoneType = None + element: Constant + value: int = 20 + kind: NoneType = None + element: Constant + value: int = 30 + kind: NoneType = None + ctx: Load + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BinOp + left: Name + id: str = square + ctx: Load + op: Add + right: Name + id: str = y + ctx: Load + element: Name + id: str = z + ctx: Load + keywords: list + orelse: list + type_comment: NoneType = None + orelse: list + type_comment: NoneType = None + orelse: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = vehicles + ctx: Store + value: List + elts: list + element: Constant + value: str = bike + kind: NoneType = None + element: Constant + value: str = train + kind: NoneType = None + element: Constant + value: str = boat + kind: NoneType = None + element: Constant + value: str = car + kind: NoneType = None + element: Constant + value: str = plane + kind: NoneType = None + element: Constant + value: str = bus + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: For + target: Name + id: str = doBreak + ctx: Store + iter: Tuple + elts: list + element: Constant + value: bool = False + kind: NoneType = None + element: Constant + value: bool = True + kind: NoneType = None + ctx: Load + body: list + element: For + target: Name + id: str = doContinue + ctx: Store + iter: Tuple + elts: list + element: Constant + value: bool = False + kind: NoneType = None + element: Constant + value: bool = True + kind: NoneType = None + ctx: Load + body: list + element: For + target: Name + id: str = index + ctx: Store + iter: Call + func: Name + id: str = range + ctx: Load + args: list + element: Constant + value: int = 10 + kind: NoneType = None + keywords: list + body: list + element: For + target: Name + id: str = index2 + ctx: Store + iter: Call + func: Name + id: str = range + ctx: Load + args: list + element: Constant + value: int = 0 + kind: NoneType = None + element: Constant + value: int = 100 + kind: NoneType = None + element: Constant + value: int = 10 + kind: NoneType = None + keywords: list + body: list + element: If + test: BoolOp + op: And + values: list + element: Name + id: str = doBreak + ctx: Load + element: Compare + left: Name + id: str = index2 + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: int = 50 + kind: NoneType = None + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = break2 + kind: NoneType = None + keywords: list + element: Break + orelse: list + element: If + test: BoolOp + op: And + values: list + element: Name + id: str = doContinue + ctx: Load + element: Compare + left: Name + id: str = index2 + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: int = 50 + kind: NoneType = None + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = continue2 + kind: NoneType = None + keywords: list + element: Continue + orelse: list + orelse: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = noBreak2 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: If + test: BoolOp + op: And + values: list + element: Name + id: str = doBreak + ctx: Load + element: Compare + left: Name + id: str = index + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: int = 5 + kind: NoneType = None + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = break + kind: NoneType = None + keywords: list + element: Break + orelse: list + element: If + test: BoolOp + op: And + values: list + element: Name + id: str = doContinue + ctx: Load + element: Compare + left: Name + id: str = index + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: int = 5 + kind: NoneType = None + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = continue + kind: NoneType = None + keywords: list + element: Continue + orelse: list + orelse: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = noBreak + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = index + ctx: Store + value: Constant + value: int = 0 + kind: NoneType = None + type_comment: NoneType = None + element: While + test: BoolOp + op: And + values: list + element: Compare + left: Name + id: str = index + ctx: Load + ops: list + element: Lt + comparators: list + element: Call + func: Name + id: str = len + ctx: Load + args: list + element: Name + id: str = vehicles + ctx: Load + keywords: list + element: Compare + left: Subscript + value: Name + id: str = vehicles + ctx: Load + slice: Index + value: Name + id: str = index + ctx: Load + ctx: Load + ops: list + element: NotEq + comparators: list + element: Constant + value: str = bus + kind: NoneType = None + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = index + ctx: Load + element: Subscript + value: Name + id: str = vehicles + ctx: Load + slice: Index + value: Name + id: str = index + ctx: Load + ctx: Load + keywords: list + element: If + test: BoolOp + op: And + values: list + element: Name + id: str = doBreak + ctx: Load + element: Compare + left: Subscript + value: Name + id: str = vehicles + ctx: Load + slice: Index + value: Name + id: str = index + ctx: Load + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = car + kind: NoneType = None + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = breakWhile + kind: NoneType = None + keywords: list + element: Break + orelse: list + element: If + test: BoolOp + op: And + values: list + element: Name + id: str = doContinue + ctx: Load + element: Compare + left: Subscript + value: Name + id: str = vehicles + ctx: Load + slice: Index + value: Name + id: str = index + ctx: Load + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = car + kind: NoneType = None + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = continueWhile + kind: NoneType = None + keywords: list + element: AugAssign + target: Name + id: str = index + ctx: Store + op: Add + value: Constant + value: int = 1 + kind: NoneType = None + element: Continue + orelse: list + element: AugAssign + target: Name + id: str = index + ctx: Store + op: Add + value: Constant + value: int = 1 + kind: NoneType = None + orelse: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = noBreakWhile + kind: NoneType = None + keywords: list + orelse: list + type_comment: NoneType = None + element: For + target: Name + id: str = vehicle + ctx: Store + iter: Name + id: str = vehicles + ctx: Load + body: list + element: If + test: Compare + left: Name + id: str = vehicle + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = bike + kind: NoneType = None + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = netherlands + kind: NoneType = None + keywords: list + orelse: list + element: If + test: Compare + left: Name + id: str = vehicle + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = car + kind: NoneType = None + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = america + kind: NoneType = None + keywords: list + orelse: list + element: If + test: Compare + left: Name + id: str = vehicle + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = boat + kind: NoneType = None + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = oceania + kind: NoneType = None + keywords: list + orelse: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = anywhere + kind: NoneType = None + keywords: list + orelse: list + type_comment: NoneType = None + orelse: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = externalCounter1 + ctx: Store + value: Constant + value: int = 0 + kind: NoneType = None + type_comment: NoneType = None + element: With + items: list + element: withitem + context_expr: Call + func: Name + id: str = ContextManagerExample + ctx: Load + args: list + keywords: list + optional_vars: Name + id: str = contextManagerExample1 + ctx: Store + body: list + element: AugAssign + target: Name + id: str = externalCounter1 + ctx: Store + op: Add + value: Constant + value: int = 1 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = ctx1 + kind: NoneType = None + element: Attribute + value: Name + id: str = contextManagerExample1 + ctx: Load + attr: str = counter + ctx: Load + element: Name + id: str = externalCounter1 + ctx: Load + keywords: list + element: Assign + targets: list + element: Name + id: str = externalCounter2 + ctx: Store + value: Constant + value: int = 0 + kind: NoneType = None + type_comment: NoneType = None + element: With + items: list + element: withitem + context_expr: Call + func: Name + id: str = ContextManagerExample + ctx: Load + args: list + keywords: list + optional_vars: Name + id: str = contextManagerExample2 + ctx: Store + body: list + element: AugAssign + target: Name + id: str = externalCounter2 + ctx: Store + op: Add + value: Constant + value: int = 1 + kind: NoneType = None + element: AugAssign + target: Attribute + value: Name + id: str = contextManagerExample2 + ctx: Load + attr: str = counter + ctx: Store + op: Add + value: Constant + value: int = 100 + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = externalCounter3 + ctx: Store + value: Constant + value: int = 0 + kind: NoneType = None + type_comment: NoneType = None + element: With + items: list + element: withitem + context_expr: Call + func: Name + id: str = ContextManagerExample + ctx: Load + args: list + keywords: list + optional_vars: Name + id: str = contextManagerExample3 + ctx: Store + body: list + element: AugAssign + target: Name + id: str = externalCounter3 + ctx: Store + op: Add + value: Constant + value: int = 1 + kind: NoneType = None + element: AugAssign + target: Attribute + value: Name + id: str = contextManagerExample2 + ctx: Load + attr: str = counter + ctx: Store + op: Add + value: Constant + value: int = 100 + kind: NoneType = None + element: AugAssign + target: Name + id: str = externalCounter3 + ctx: Store + op: Add + value: Constant + value: int = 2 + kind: NoneType = None + element: AugAssign + target: Attribute + value: Name + id: str = contextManagerExample3 + ctx: Load + attr: str = counter + ctx: Store + op: Add + value: Constant + value: int = 200 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = ctx3 + kind: NoneType = None + element: Attribute + value: Name + id: str = contextManagerExample3 + ctx: Load + attr: str = counter + ctx: Load + element: Name + id: str = externalCounter3 + ctx: Load + keywords: list + element: AugAssign + target: Name + id: str = externalCounter2 + ctx: Store + op: Add + value: Constant + value: int = 2 + kind: NoneType = None + element: AugAssign + target: Attribute + value: Name + id: str = contextManagerExample2 + ctx: Load + attr: str = counter + ctx: Store + op: Add + value: Constant + value: int = 200 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = ctx2 + kind: NoneType = None + element: Attribute + value: Name + id: str = contextManagerExample2 + ctx: Load + attr: str = counter + ctx: Load + element: Name + id: str = externalCounter2 + ctx: Load + keywords: list + element: Try + body: list + element: Assign + targets: list + element: Name + id: str = externalCounter4 + ctx: Store + value: Constant + value: int = 0 + kind: NoneType = None + type_comment: NoneType = None + element: With + items: list + element: withitem + context_expr: Call + func: Name + id: str = ContextManagerExample + ctx: Load + args: list + keywords: list + optional_vars: Name + id: str = contextManagerExample4 + ctx: Store + body: list + element: AugAssign + target: Name + id: str = externalCounter4 + ctx: Store + op: Add + value: Constant + value: int = 1 + kind: NoneType = None + element: AugAssign + target: Attribute + value: Name + id: str = contextManagerExample4 + ctx: Load + attr: str = counter + ctx: Store + op: Add + value: Constant + value: int = 100 + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = externalCounter5 + ctx: Store + value: Constant + value: int = 0 + kind: NoneType = None + type_comment: NoneType = None + element: With + items: list + element: withitem + context_expr: Call + func: Name + id: str = ContextManagerExample + ctx: Load + args: list + keywords: list + optional_vars: Name + id: str = contextManagerExample5 + ctx: Store + body: list + element: AugAssign + target: Name + id: str = externalCounter5 + ctx: Store + op: Add + value: Constant + value: int = 1 + kind: NoneType = None + element: AugAssign + target: Attribute + value: Name + id: str = contextManagerExample5 + ctx: Load + attr: str = counter + ctx: Store + op: Add + value: Constant + value: int = 100 + kind: NoneType = None + element: Raise + exc: Call + func: Name + id: str = Exception + ctx: Load + args: list + keywords: list + cause: NoneType = None + element: AugAssign + target: Name + id: str = externalCounter5 + ctx: Store + op: Add + value: Constant + value: int = 2 + kind: NoneType = None + element: AugAssign + target: Attribute + value: Name + id: str = contextManagerExample5 + ctx: Load + attr: str = counter + ctx: Store + op: Add + value: Constant + value: int = 200 + kind: NoneType = None + type_comment: NoneType = None + element: AugAssign + target: Name + id: str = externalCounter4 + ctx: Store + op: Add + value: Constant + value: int = 2 + kind: NoneType = None + element: AugAssign + target: Attribute + value: Name + id: str = contextManagerExample4 + ctx: Load + attr: str = counter + ctx: Store + op: Add + value: Constant + value: int = 200 + kind: NoneType = None + type_comment: NoneType = None + handlers: list + element: ExceptHandler + type: Name + id: str = Exception + ctx: Load + name: str = exception + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = ctx6 + kind: NoneType = None + element: Name + id: str = exception + ctx: Load + keywords: list + orelse: list + finalbody: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = ctx5 + kind: NoneType = None + element: Attribute + value: Name + id: str = contextManagerExample5 + ctx: Load + attr: str = counter + ctx: Load + element: Name + id: str = externalCounter5 + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = ctx4 + kind: NoneType = None + element: Attribute + value: Name + id: str = contextManagerExample4 + ctx: Load + attr: str = counter + ctx: Load + element: Name + id: str = externalCounter4 + ctx: Load + keywords: list + element: Assign + targets: list + element: Name + id: str = iterationCount + ctx: Store + value: Constant + value: int = 0 + kind: NoneType = None + type_comment: NoneType = None + element: With + items: list + element: withitem + context_expr: Call + func: Name + id: str = ContextManagerExample + ctx: Load + args: list + keywords: list + optional_vars: Name + id: str = contextManagerExample5 + ctx: Store + element: withitem + context_expr: Call + func: Name + id: str = ContextManagerExample + ctx: Load + args: list + keywords: list + optional_vars: Name + id: str = contextManagerExample6 + ctx: Store + body: list + element: AugAssign + target: Name + id: str = iterationCount + ctx: Store + op: Add + value: Constant + value: int = 1 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = ctx7 + kind: NoneType = None + element: Name + id: str = iterationCount + ctx: Load + element: Attribute + value: Name + id: str = contextManagerExample5 + ctx: Load + attr: str = counter + ctx: Load + element: Attribute + value: Name + id: str = contextManagerExample6 + ctx: Load + attr: str = counter + ctx: Load + keywords: list + element: Assign + targets: list + element: Name + id: str = iterationCount + ctx: Store + value: Constant + value: int = 0 + kind: NoneType = None + type_comment: NoneType = None + element: With + items: list + element: withitem + context_expr: Call + func: Name + id: str = ContextManagerExample + ctx: Load + args: list + keywords: list + optional_vars: NoneType = None + element: withitem + context_expr: Call + func: Name + id: str = ContextManagerExample + ctx: Load + args: list + keywords: list + optional_vars: NoneType = None + element: withitem + context_expr: Call + func: Name + id: str = ContextManagerExample + ctx: Load + args: list + keywords: list + optional_vars: NoneType = None + element: withitem + context_expr: Call + func: Name + id: str = ContextManagerExample + ctx: Load + args: list + keywords: list + optional_vars: NoneType = None + element: withitem + context_expr: Call + func: Name + id: str = ContextManagerExample + ctx: Load + args: list + keywords: list + optional_vars: NoneType = None + body: list + element: AugAssign + target: Name + id: str = iterationCount + ctx: Store + op: Add + value: Constant + value: int = 1 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = ctx8 + kind: NoneType = None + element: Name + id: str = iterationCount + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/dashed_numbers.js b/transcrypt/development/automated_tests/transcrypt/__target__38/dashed_numbers.js new file mode 100644 index 000000000..ac6ce9d49 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/dashed_numbers.js @@ -0,0 +1,14 @@ +// Transcrypt'ed from Python, 2021-05-14 15:00:25 +var math = {}; +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +import * as __module_math__ from './math.js'; +__nest__ (math, '', __module_math__); +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get run () {return run;}, set run (value) {run = value;}}); +var __name__ = 'dashed_numbers'; +export var run = function (autoTester) { + autoTester.check (1000000000); + autoTester.check (120000.03); + autoTester.check (16777215); +}; + +//# sourceMappingURL=dashed_numbers.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/dashed_numbers.tree b/transcrypt/development/automated_tests/transcrypt/__target__38/dashed_numbers.tree new file mode 100644 index 000000000..d6fd87fcc --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/dashed_numbers.tree @@ -0,0 +1,65 @@ +file: Module + body: list + element: Import + names: list + element: alias + name: str = math + asname: NoneType = None + element: FunctionDef + name: str = run + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = autoTester + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: int = 1000000000 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: float = 120000.03 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: int = 16777215 + kind: NoneType = None + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/data_classes.js b/transcrypt/development/automated_tests/transcrypt/__target__38/data_classes.js new file mode 100644 index 000000000..a058bfd73 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/data_classes.js @@ -0,0 +1,654 @@ +// Transcrypt'ed from Python, 2021-05-14 15:00:25 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +import {ClassVar} from './typing.js'; +import {dataclass} from './dataclasses.js'; +export {dataclass, ClassVar}; +var __all__ = dict ({get A () {return A;}, set A (value) {A = value;}, get B () {return B;}, set B (value) {B = value;}, get C () {return C;}, set C (value) {C = value;}, get D () {return D;}, set D (value) {D = value;}, get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get getQ () {return getQ;}, set getQ (value) {getQ = value;}, get run () {return run;}, set run (value) {run = value;}}); +var __name__ = 'data_classes'; +export var getQ = function () { + return 1002; +}; +export var A = __class__ ('A', [object], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self) { + var kwargs = dict (); + if (arguments.length) { + var __ilastarg0__ = arguments.length - 1; + if (arguments [__ilastarg0__] && arguments [__ilastarg0__].hasOwnProperty ("__kwargtrans__")) { + var __allkwargs0__ = arguments [__ilastarg0__--]; + for (var __attrib0__ in __allkwargs0__) { + switch (__attrib0__) { + case 'self': var self = __allkwargs0__ [__attrib0__]; break; + default: kwargs [__attrib0__] = __allkwargs0__ [__attrib0__]; + } + } + delete kwargs.__kwargtrans__; + } + var args = tuple ([].slice.apply (arguments).slice (1, __ilastarg0__ + 1)); + } + else { + var args = tuple (); + } + let names = self.__initfields__.values (); + for (let arg of args) { + self [names.next () .value] = arg; + } + for (let name of kwargs.py_keys ()) { + self [name] = kwargs [name]; + } + });}, + get __repr__ () {return __get__ (this, function (self) { + let names = self.__reprfields__.values (); + let fields = []; + for (let name of names) {{ + fields.push (name + '=' + repr (self [name])); + }} + return self.__name__ + '(' + ', '.join (fields) + ')' + });}, + get __eq__ () {return __get__ (this, function (self, other) { + let names = self.__comparefields__.values (); + let selfFields = []; + let otherFields = []; + for (let name of names) { + selfFields.push (self [name]); + otherFields.push (other [name]); + } + return list (selfFields).__eq__(list (otherFields)); + });}, + get __ne__ () {return __get__ (this, function (self, other) { + let names = self.__comparefields__.values (); + let selfFields = []; + let otherFields = []; + for (let name of names) { + selfFields.push (self [name]); + otherFields.push (other [name]); + } + return list (selfFields).__ne__(list (otherFields)); + });}, + get __lt__ () {return __get__ (this, function (self, other) { + let names = self.__comparefields__.values (); + let selfFields = []; + let otherFields = []; + for (let name of names) { + selfFields.push (self [name]); + otherFields.push (other [name]); + } + return list (selfFields).__lt__(list (otherFields)); + });}, + get __le__ () {return __get__ (this, function (self, other) { + let names = self.__comparefields__.values (); + let selfFields = []; + let otherFields = []; + for (let name of names) { + selfFields.push (self [name]); + otherFields.push (other [name]); + } + return list (selfFields).__le__(list (otherFields)); + });}, + get __gt__ () {return __get__ (this, function (self, other) { + let names = self.__comparefields__.values (); + let selfFields = []; + let otherFields = []; + for (let name of names) { + selfFields.push (self [name]); + otherFields.push (other [name]); + } + return list (selfFields).__gt__(list (otherFields)); + });}, + get __ge__ () {return __get__ (this, function (self, other) { + let names = self.__comparefields__.values (); + let selfFields = []; + let otherFields = []; + for (let name of names) { + selfFields.push (self [name]); + otherFields.push (other [name]); + } + return list (selfFields).__ge__(list (otherFields)); + });}, + m: 101010, + n: 202020 +}) +for (let aClass of A.__bases__) { + __mergefields__ (A, aClass); +}; +__mergefields__ (A, {__reprfields__: new Set (['n']), __comparefields__: new Set (['n']), __initfields__: new Set (['n'])}); +export var B = __class__ ('B', [A], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self) { + var kwargs = dict (); + if (arguments.length) { + var __ilastarg0__ = arguments.length - 1; + if (arguments [__ilastarg0__] && arguments [__ilastarg0__].hasOwnProperty ("__kwargtrans__")) { + var __allkwargs0__ = arguments [__ilastarg0__--]; + for (var __attrib0__ in __allkwargs0__) { + switch (__attrib0__) { + case 'self': var self = __allkwargs0__ [__attrib0__]; break; + default: kwargs [__attrib0__] = __allkwargs0__ [__attrib0__]; + } + } + delete kwargs.__kwargtrans__; + } + var args = tuple ([].slice.apply (arguments).slice (1, __ilastarg0__ + 1)); + } + else { + var args = tuple (); + } + let names = self.__initfields__.values (); + for (let arg of args) { + self [names.next () .value] = arg; + } + for (let name of kwargs.py_keys ()) { + self [name] = kwargs [name]; + } + });}, + get __repr__ () {return __get__ (this, function (self) { + let names = self.__reprfields__.values (); + let fields = []; + for (let name of names) {{ + fields.push (name + '=' + repr (self [name])); + }} + return self.__name__ + '(' + ', '.join (fields) + ')' + });}, + get __eq__ () {return __get__ (this, function (self, other) { + let names = self.__comparefields__.values (); + let selfFields = []; + let otherFields = []; + for (let name of names) { + selfFields.push (self [name]); + otherFields.push (other [name]); + } + return list (selfFields).__eq__(list (otherFields)); + });}, + get __ne__ () {return __get__ (this, function (self, other) { + let names = self.__comparefields__.values (); + let selfFields = []; + let otherFields = []; + for (let name of names) { + selfFields.push (self [name]); + otherFields.push (other [name]); + } + return list (selfFields).__ne__(list (otherFields)); + });}, + get __lt__ () {return __get__ (this, function (self, other) { + let names = self.__comparefields__.values (); + let selfFields = []; + let otherFields = []; + for (let name of names) { + selfFields.push (self [name]); + otherFields.push (other [name]); + } + return list (selfFields).__lt__(list (otherFields)); + });}, + get __le__ () {return __get__ (this, function (self, other) { + let names = self.__comparefields__.values (); + let selfFields = []; + let otherFields = []; + for (let name of names) { + selfFields.push (self [name]); + otherFields.push (other [name]); + } + return list (selfFields).__le__(list (otherFields)); + });}, + get __gt__ () {return __get__ (this, function (self, other) { + let names = self.__comparefields__.values (); + let selfFields = []; + let otherFields = []; + for (let name of names) { + selfFields.push (self [name]); + otherFields.push (other [name]); + } + return list (selfFields).__gt__(list (otherFields)); + });}, + get __ge__ () {return __get__ (this, function (self, other) { + let names = self.__comparefields__.values (); + let selfFields = []; + let otherFields = []; + for (let name of names) { + selfFields.push (self [name]); + otherFields.push (other [name]); + } + return list (selfFields).__ge__(list (otherFields)); + });}, + p: 1001, + q: 1002 +}) +for (let aClass of B.__bases__) { + __mergefields__ (B, aClass); +}; +__mergefields__ (B, {__reprfields__: new Set (['p', 'q']), __comparefields__: new Set (['p', 'q']), __initfields__: new Set (['p', 'q'])}); +export var C = __class__ ('C', [B], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self) { + var kwargs = dict (); + if (arguments.length) { + var __ilastarg0__ = arguments.length - 1; + if (arguments [__ilastarg0__] && arguments [__ilastarg0__].hasOwnProperty ("__kwargtrans__")) { + var __allkwargs0__ = arguments [__ilastarg0__--]; + for (var __attrib0__ in __allkwargs0__) { + switch (__attrib0__) { + case 'self': var self = __allkwargs0__ [__attrib0__]; break; + default: kwargs [__attrib0__] = __allkwargs0__ [__attrib0__]; + } + } + delete kwargs.__kwargtrans__; + } + var args = tuple ([].slice.apply (arguments).slice (1, __ilastarg0__ + 1)); + } + else { + var args = tuple (); + } + let names = self.__initfields__.values (); + for (let arg of args) { + self [names.next () .value] = arg; + } + for (let name of kwargs.py_keys ()) { + self [name] = kwargs [name]; + } + });}, + get __repr__ () {return __get__ (this, function (self) { + let names = self.__reprfields__.values (); + let fields = []; + for (let name of names) {{ + fields.push (name + '=' + repr (self [name])); + }} + return self.__name__ + '(' + ', '.join (fields) + ')' + });}, + get __eq__ () {return __get__ (this, function (self, other) { + let names = self.__comparefields__.values (); + let selfFields = []; + let otherFields = []; + for (let name of names) { + selfFields.push (self [name]); + otherFields.push (other [name]); + } + return list (selfFields).__eq__(list (otherFields)); + });}, + get __ne__ () {return __get__ (this, function (self, other) { + let names = self.__comparefields__.values (); + let selfFields = []; + let otherFields = []; + for (let name of names) { + selfFields.push (self [name]); + otherFields.push (other [name]); + } + return list (selfFields).__ne__(list (otherFields)); + });}, + get __lt__ () {return __get__ (this, function (self, other) { + let names = self.__comparefields__.values (); + let selfFields = []; + let otherFields = []; + for (let name of names) { + selfFields.push (self [name]); + otherFields.push (other [name]); + } + return list (selfFields).__lt__(list (otherFields)); + });}, + get __le__ () {return __get__ (this, function (self, other) { + let names = self.__comparefields__.values (); + let selfFields = []; + let otherFields = []; + for (let name of names) { + selfFields.push (self [name]); + otherFields.push (other [name]); + } + return list (selfFields).__le__(list (otherFields)); + });}, + get __gt__ () {return __get__ (this, function (self, other) { + let names = self.__comparefields__.values (); + let selfFields = []; + let otherFields = []; + for (let name of names) { + selfFields.push (self [name]); + otherFields.push (other [name]); + } + return list (selfFields).__gt__(list (otherFields)); + });}, + get __ge__ () {return __get__ (this, function (self, other) { + let names = self.__comparefields__.values (); + let selfFields = []; + let otherFields = []; + for (let name of names) { + selfFields.push (self [name]); + otherFields.push (other [name]); + } + return list (selfFields).__ge__(list (otherFields)); + });}, + CC: __class__ ('CC', [B], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self) { + var kwargs = dict (); + if (arguments.length) { + var __ilastarg0__ = arguments.length - 1; + if (arguments [__ilastarg0__] && arguments [__ilastarg0__].hasOwnProperty ("__kwargtrans__")) { + var __allkwargs0__ = arguments [__ilastarg0__--]; + for (var __attrib0__ in __allkwargs0__) { + switch (__attrib0__) { + case 'self': var self = __allkwargs0__ [__attrib0__]; break; + default: kwargs [__attrib0__] = __allkwargs0__ [__attrib0__]; + } + } + delete kwargs.__kwargtrans__; + } + var args = tuple ([].slice.apply (arguments).slice (1, __ilastarg0__ + 1)); + } + else { + var args = tuple (); + } + let names = self.__initfields__.values (); + for (let arg of args) { + self [names.next () .value] = arg; + } + for (let name of kwargs.py_keys ()) { + self [name] = kwargs [name]; + } + });}, + get __repr__ () {return __get__ (this, function (self) { + let names = self.__reprfields__.values (); + let fields = []; + for (let name of names) {{ + fields.push (name + '=' + repr (self [name])); + }} + return self.__name__ + '(' + ', '.join (fields) + ')' + });}, + get __eq__ () {return __get__ (this, function (self, other) { + let names = self.__comparefields__.values (); + let selfFields = []; + let otherFields = []; + for (let name of names) { + selfFields.push (self [name]); + otherFields.push (other [name]); + } + return list (selfFields).__eq__(list (otherFields)); + });}, + get __ne__ () {return __get__ (this, function (self, other) { + let names = self.__comparefields__.values (); + let selfFields = []; + let otherFields = []; + for (let name of names) { + selfFields.push (self [name]); + otherFields.push (other [name]); + } + return list (selfFields).__ne__(list (otherFields)); + });}, + get __lt__ () {return __get__ (this, function (self, other) { + let names = self.__comparefields__.values (); + let selfFields = []; + let otherFields = []; + for (let name of names) { + selfFields.push (self [name]); + otherFields.push (other [name]); + } + return list (selfFields).__lt__(list (otherFields)); + });}, + get __le__ () {return __get__ (this, function (self, other) { + let names = self.__comparefields__.values (); + let selfFields = []; + let otherFields = []; + for (let name of names) { + selfFields.push (self [name]); + otherFields.push (other [name]); + } + return list (selfFields).__le__(list (otherFields)); + });}, + get __gt__ () {return __get__ (this, function (self, other) { + let names = self.__comparefields__.values (); + let selfFields = []; + let otherFields = []; + for (let name of names) { + selfFields.push (self [name]); + otherFields.push (other [name]); + } + return list (selfFields).__gt__(list (otherFields)); + });}, + get __ge__ () {return __get__ (this, function (self, other) { + let names = self.__comparefields__.values (); + let selfFields = []; + let otherFields = []; + for (let name of names) { + selfFields.push (self [name]); + otherFields.push (other [name]); + } + return list (selfFields).__ge__(list (otherFields)); + });}, + k: 40, + l: 55.5, + j: 60 + }), + x: 10, + y: 20, + yy: 22, + z: 30, + zz: 33, + t: 40, + g: 100000, + h: 100001, + i: 100002, + get getV () {return __get__ (this, function (self) { + return 3; + });}, + get setV () {return __get__ (this, function (self, value) { + // pass; + });}, + get getW () {return __get__ (this, function (self) { + return 4; + });}, + get setW () {return __get__ (this, function (self, value) { + // pass; + });}, + get f () {return __get__ (this, function (self, p, autoTester) { + self.a = p; + self.b = 2000; + autoTester.check (self.x, self.y, self.a); + return 'something(a: {}, b: {})'.format (self.a, self.b); + });} +}); +Object.defineProperty (C, 'v', property.call (C, C.getV, C.setV)); +Object.defineProperty (C, 'w', property.call (C, C.getW, C.setW)) +for (let aClass of C.CC.__bases__) { + __mergefields__ (C.CC, aClass); +}; +__mergefields__ (C.CC, {__reprfields__: new Set (['k', 'l']), __comparefields__: new Set (['k', 'l']), __initfields__: new Set (['k', 'l'])}) +for (let aClass of C.__bases__) { + __mergefields__ (C, aClass); +}; +__mergefields__ (C, {__reprfields__: new Set (['y', 'yy', 'z', 'zz', 'w']), __comparefields__: new Set (['y', 'yy', 'z', 'zz', 'w']), __initfields__: new Set (['y', 'yy', 'z', 'zz'])}); +export var D = __class__ ('D', [object], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self) { + var kwargs = dict (); + if (arguments.length) { + var __ilastarg0__ = arguments.length - 1; + if (arguments [__ilastarg0__] && arguments [__ilastarg0__].hasOwnProperty ("__kwargtrans__")) { + var __allkwargs0__ = arguments [__ilastarg0__--]; + for (var __attrib0__ in __allkwargs0__) { + switch (__attrib0__) { + case 'self': var self = __allkwargs0__ [__attrib0__]; break; + default: kwargs [__attrib0__] = __allkwargs0__ [__attrib0__]; + } + } + delete kwargs.__kwargtrans__; + } + var args = tuple ([].slice.apply (arguments).slice (1, __ilastarg0__ + 1)); + } + else { + var args = tuple (); + } + let names = self.__initfields__.values (); + for (let arg of args) { + self [names.next () .value] = arg; + } + for (let name of kwargs.py_keys ()) { + self [name] = kwargs [name]; + } + });}, + get __repr__ () {return __get__ (this, function (self) { + let names = self.__reprfields__.values (); + let fields = []; + for (let name of names) {{ + fields.push (name + '=' + repr (self [name])); + }} + return self.__name__ + '(' + ', '.join (fields) + ')' + });}, + get __eq__ () {return __get__ (this, function (self, other) { + let names = self.__comparefields__.values (); + let selfFields = []; + let otherFields = []; + for (let name of names) { + selfFields.push (self [name]); + otherFields.push (other [name]); + } + return list (selfFields).__eq__(list (otherFields)); + });}, + get __ne__ () {return __get__ (this, function (self, other) { + let names = self.__comparefields__.values (); + let selfFields = []; + let otherFields = []; + for (let name of names) { + selfFields.push (self [name]); + otherFields.push (other [name]); + } + return list (selfFields).__ne__(list (otherFields)); + });}, + get __lt__ () {return __get__ (this, function (self, other) { + let names = self.__comparefields__.values (); + let selfFields = []; + let otherFields = []; + for (let name of names) { + selfFields.push (self [name]); + otherFields.push (other [name]); + } + return list (selfFields).__lt__(list (otherFields)); + });}, + get __le__ () {return __get__ (this, function (self, other) { + let names = self.__comparefields__.values (); + let selfFields = []; + let otherFields = []; + for (let name of names) { + selfFields.push (self [name]); + otherFields.push (other [name]); + } + return list (selfFields).__le__(list (otherFields)); + });}, + get __gt__ () {return __get__ (this, function (self, other) { + let names = self.__comparefields__.values (); + let selfFields = []; + let otherFields = []; + for (let name of names) { + selfFields.push (self [name]); + otherFields.push (other [name]); + } + return list (selfFields).__gt__(list (otherFields)); + });}, + get __ge__ () {return __get__ (this, function (self, other) { + let names = self.__comparefields__.values (); + let selfFields = []; + let otherFields = []; + for (let name of names) { + selfFields.push (self [name]); + otherFields.push (other [name]); + } + return list (selfFields).__ge__(list (otherFields)); + });}, + _p: 3, + get setP () {return __get__ (this, function (self, value) { + // pass; + });}, + get getP () {return __get__ (this, function (self) { + return 20; + });} +}); +Object.defineProperty (D, 'p', property.call (D, D.getP, D.setP)) +for (let aClass of D.__bases__) { + __mergefields__ (D, aClass); +}; +__mergefields__ (D, {__reprfields__: new Set (['_p', 'p']), __comparefields__: new Set (['_p', 'p']), __initfields__: new Set (['_p'])}); +export var run = function (autoTester) { + var c = C (__kwargtrans__ ({y: 200, zz: 330})); + var cc = C (__kwargtrans__ ({y: 10200})); + c.f (123, autoTester); + c.t = 400; + cc.f (456, autoTester); + cc.t = 4000; + for (var obj of tuple ([c, cc])) { + autoTester.check (obj.x, obj.y, obj.yy, obj.z, obj.zz, obj.t, obj.a, obj.b); + } + autoTester.check (repr (c)); + autoTester.check (repr (cc)); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __eq__ (c, cc)); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __ne__ (c, cc)); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __lt__ (c, cc)); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __gt__ (c, cc)); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __le__ (c, cc)); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __ge__ (c, cc)); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __eq__ (c, c)); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __ne__ (c, c)); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __lt__ (c, c)); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __gt__ (c, c)); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __le__ (c, c)); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __ge__ (c, c)); + }) (); + var d3 = __call__ (D, null); + var d1 = __call__ (D, null); + var d2 = __call__ (D, null); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __call__ (repr, null, d1)); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, d3, d1, __gt__ (d3, d1)); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, d2, d1, __gt__ (d2, d1)); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, d3, d2, __gt__ (d3, d2)); + }) (); + var ccc = (function () { + var __accu0__ = C; + return __call__ (__accu0__.CC, __accu0__); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, ccc.n, ccc.p, ccc.q, ccc.k, ccc.l); + }) (); +}; + +//# sourceMappingURL=data_classes.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/data_classes.tree b/transcrypt/development/automated_tests/transcrypt/__target__38/data_classes.tree new file mode 100644 index 000000000..4763dcffa --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/data_classes.tree @@ -0,0 +1,1246 @@ +file: Module + body: list + element: ImportFrom + module: str = dataclasses + names: list + element: alias + name: str = dataclass + asname: NoneType = None + level: int = 0 + element: ImportFrom + module: str = typing + names: list + element: alias + name: str = ClassVar + asname: NoneType = None + level: int = 0 + element: FunctionDef + name: str = getQ + args: arguments + posonlyargs: list + args: list + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Constant + value: int = 1002 + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: ClassDef + name: str = A + bases: list + keywords: list + body: list + element: Assign + targets: list + element: Name + id: str = m + ctx: Store + value: Constant + value: int = 101010 + kind: NoneType = None + type_comment: NoneType = None + element: AnnAssign + target: Name + id: str = n + ctx: Store + annotation: Name + id: str = int + ctx: Load + value: Constant + value: int = 202020 + kind: NoneType = None + simple: int = 1 + decorator_list: list + element: Name + id: str = dataclass + ctx: Load + element: ClassDef + name: str = B + bases: list + element: Name + id: str = A + ctx: Load + keywords: list + body: list + element: AnnAssign + target: Name + id: str = p + ctx: Store + annotation: Name + id: str = int + ctx: Load + value: Constant + value: int = 1001 + kind: NoneType = None + simple: int = 1 + element: AnnAssign + target: Name + id: str = q + ctx: Store + annotation: Name + id: str = int + ctx: Load + value: Constant + value: int = 1002 + kind: NoneType = None + simple: int = 1 + decorator_list: list + element: Name + id: str = dataclass + ctx: Load + element: ClassDef + name: str = C + bases: list + element: Name + id: str = B + ctx: Load + keywords: list + body: list + element: ClassDef + name: str = CC + bases: list + element: Name + id: str = B + ctx: Load + keywords: list + body: list + element: AnnAssign + target: Name + id: str = k + ctx: Store + annotation: Name + id: str = int + ctx: Load + value: Constant + value: int = 40 + kind: NoneType = None + simple: int = 1 + element: AnnAssign + target: Name + id: str = l + ctx: Store + annotation: Name + id: str = float + ctx: Load + value: Constant + value: float = 55.5 + kind: NoneType = None + simple: int = 1 + element: Assign + targets: list + element: Name + id: str = j + ctx: Store + value: Constant + value: int = 60 + kind: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: Name + id: str = dataclass + ctx: Load + element: AnnAssign + target: Name + id: str = x + ctx: Store + annotation: Name + id: str = ClassVar + ctx: Load + value: Constant + value: int = 10 + kind: NoneType = None + simple: int = 1 + element: AnnAssign + target: Name + id: str = y + ctx: Store + annotation: Name + id: str = int + ctx: Load + value: Constant + value: int = 20 + kind: NoneType = None + simple: int = 1 + element: AnnAssign + target: Name + id: str = yy + ctx: Store + annotation: Name + id: str = int + ctx: Load + value: Constant + value: int = 22 + kind: NoneType = None + simple: int = 1 + element: AnnAssign + target: Name + id: str = z + ctx: Store + annotation: Name + id: str = int + ctx: Load + value: Constant + value: int = 30 + kind: NoneType = None + simple: int = 1 + element: AnnAssign + target: Name + id: str = zz + ctx: Store + annotation: Name + id: str = int + ctx: Load + value: Constant + value: int = 33 + kind: NoneType = None + simple: int = 1 + element: AnnAssign + target: Name + id: str = t + ctx: Store + annotation: Name + id: str = ClassVar + ctx: Load + value: Constant + value: int = 40 + kind: NoneType = None + simple: int = 1 + element: Assign + targets: list + element: Name + id: str = g + ctx: Store + value: Constant + value: int = 100000 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = h + ctx: Store + value: Constant + value: int = 100001 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = i + ctx: Store + value: Constant + value: int = 100002 + kind: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = getV + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Constant + value: int = 3 + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = setV + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = value + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Pass + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = v + ctx: Store + value: Call + func: Name + id: str = property + ctx: Load + args: list + element: Name + id: str = getV + ctx: Load + element: Name + id: str = setV + ctx: Load + keywords: list + type_comment: NoneType = None + element: FunctionDef + name: str = getW + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Constant + value: int = 4 + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = setW + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = value + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Pass + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: AnnAssign + target: Name + id: str = w + ctx: Store + annotation: Name + id: str = int + ctx: Load + value: Call + func: Name + id: str = property + ctx: Load + args: list + element: Name + id: str = getW + ctx: Load + element: Name + id: str = setW + ctx: Load + keywords: list + simple: int = 1 + element: FunctionDef + name: str = f + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = p + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = autoTester + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = a + ctx: Store + value: Name + id: str = p + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = b + ctx: Store + value: Constant + value: int = 2000 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = x + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = y + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = a + ctx: Load + keywords: list + element: Return + value: JoinedStr + values: list + element: Constant + value: str = something(a: + kind: NoneType = None + element: FormattedValue + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = a + ctx: Load + conversion: int = -1 + format_spec: NoneType = None + element: Constant + value: str = , b: + kind: NoneType = None + element: FormattedValue + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = b + ctx: Load + conversion: int = -1 + format_spec: NoneType = None + element: Constant + value: str = ) + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: Call + func: Name + id: str = dataclass + ctx: Load + args: list + keywords: list + element: keyword + arg: str = order + value: Constant + value: bool = True + kind: NoneType = None + element: ClassDef + name: str = D + bases: list + keywords: list + body: list + element: AnnAssign + target: Name + id: str = _p + ctx: Store + annotation: Name + id: str = int + ctx: Load + value: Constant + value: int = 3 + kind: NoneType = None + simple: int = 1 + element: FunctionDef + name: str = setP + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = value + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Pass + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = getP + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Constant + value: int = 20 + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: AnnAssign + target: Name + id: str = p + ctx: Store + annotation: Name + id: str = int + ctx: Load + value: Call + func: Name + id: str = property + ctx: Load + args: list + element: Name + id: str = getP + ctx: Load + element: Name + id: str = setP + ctx: Load + keywords: list + simple: int = 1 + decorator_list: list + element: Call + func: Name + id: str = dataclass + ctx: Load + args: list + keywords: list + element: keyword + arg: str = order + value: Constant + value: bool = True + kind: NoneType = None + element: FunctionDef + name: str = run + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = autoTester + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Name + id: str = c + ctx: Store + value: Call + func: Name + id: str = C + ctx: Load + args: list + keywords: list + element: keyword + arg: str = y + value: Constant + value: int = 200 + kind: NoneType = None + element: keyword + arg: str = zz + value: Constant + value: int = 330 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = cc + ctx: Store + value: Call + func: Name + id: str = C + ctx: Load + args: list + keywords: list + element: keyword + arg: str = y + value: Constant + value: int = 10200 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = c + ctx: Load + attr: str = f + ctx: Load + args: list + element: Constant + value: int = 123 + kind: NoneType = None + element: Name + id: str = autoTester + ctx: Load + keywords: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = c + ctx: Load + attr: str = t + ctx: Store + value: Constant + value: int = 400 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = cc + ctx: Load + attr: str = f + ctx: Load + args: list + element: Constant + value: int = 456 + kind: NoneType = None + element: Name + id: str = autoTester + ctx: Load + keywords: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = cc + ctx: Load + attr: str = t + ctx: Store + value: Constant + value: int = 4000 + kind: NoneType = None + type_comment: NoneType = None + element: For + target: Name + id: str = obj + ctx: Store + iter: Tuple + elts: list + element: Name + id: str = c + ctx: Load + element: Name + id: str = cc + ctx: Load + ctx: Load + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = obj + ctx: Load + attr: str = x + ctx: Load + element: Attribute + value: Name + id: str = obj + ctx: Load + attr: str = y + ctx: Load + element: Attribute + value: Name + id: str = obj + ctx: Load + attr: str = yy + ctx: Load + element: Attribute + value: Name + id: str = obj + ctx: Load + attr: str = z + ctx: Load + element: Attribute + value: Name + id: str = obj + ctx: Load + attr: str = zz + ctx: Load + element: Attribute + value: Name + id: str = obj + ctx: Load + attr: str = t + ctx: Load + element: Attribute + value: Name + id: str = obj + ctx: Load + attr: str = a + ctx: Load + element: Attribute + value: Name + id: str = obj + ctx: Load + attr: str = b + ctx: Load + keywords: list + orelse: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Name + id: str = c + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Name + id: str = cc + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = opov + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Name + id: str = c + ctx: Load + ops: list + element: Eq + comparators: list + element: Name + id: str = cc + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Name + id: str = c + ctx: Load + ops: list + element: NotEq + comparators: list + element: Name + id: str = cc + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Name + id: str = c + ctx: Load + ops: list + element: Lt + comparators: list + element: Name + id: str = cc + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Name + id: str = c + ctx: Load + ops: list + element: Gt + comparators: list + element: Name + id: str = cc + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Name + id: str = c + ctx: Load + ops: list + element: LtE + comparators: list + element: Name + id: str = cc + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Name + id: str = c + ctx: Load + ops: list + element: GtE + comparators: list + element: Name + id: str = cc + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Name + id: str = c + ctx: Load + ops: list + element: Eq + comparators: list + element: Name + id: str = c + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Name + id: str = c + ctx: Load + ops: list + element: NotEq + comparators: list + element: Name + id: str = c + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Name + id: str = c + ctx: Load + ops: list + element: Lt + comparators: list + element: Name + id: str = c + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Name + id: str = c + ctx: Load + ops: list + element: Gt + comparators: list + element: Name + id: str = c + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Name + id: str = c + ctx: Load + ops: list + element: LtE + comparators: list + element: Name + id: str = c + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Name + id: str = c + ctx: Load + ops: list + element: GtE + comparators: list + element: Name + id: str = c + ctx: Load + keywords: list + element: Assign + targets: list + element: Name + id: str = d3 + ctx: Store + value: Call + func: Name + id: str = D + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = d1 + ctx: Store + value: Call + func: Name + id: str = D + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = d2 + ctx: Store + value: Call + func: Name + id: str = D + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Name + id: str = d1 + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = d3 + ctx: Load + element: Name + id: str = d1 + ctx: Load + element: Compare + left: Name + id: str = d3 + ctx: Load + ops: list + element: Gt + comparators: list + element: Name + id: str = d1 + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = d2 + ctx: Load + element: Name + id: str = d1 + ctx: Load + element: Compare + left: Name + id: str = d2 + ctx: Load + ops: list + element: Gt + comparators: list + element: Name + id: str = d1 + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = d3 + ctx: Load + element: Name + id: str = d2 + ctx: Load + element: Compare + left: Name + id: str = d3 + ctx: Load + ops: list + element: Gt + comparators: list + element: Name + id: str = d2 + ctx: Load + keywords: list + element: Assign + targets: list + element: Name + id: str = ccc + ctx: Store + value: Call + func: Attribute + value: Name + id: str = C + ctx: Load + attr: str = CC + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = ccc + ctx: Load + attr: str = n + ctx: Load + element: Attribute + value: Name + id: str = ccc + ctx: Load + attr: str = p + ctx: Load + element: Attribute + value: Name + id: str = ccc + ctx: Load + attr: str = q + ctx: Load + element: Attribute + value: Name + id: str = ccc + ctx: Load + attr: str = k + ctx: Load + element: Attribute + value: Name + id: str = ccc + ctx: Load + attr: str = l + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/data_structures.js b/transcrypt/development/automated_tests/transcrypt/__target__38/data_structures.js new file mode 100644 index 000000000..a7a6b2b3d --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/data_structures.js @@ -0,0 +1,54 @@ +// Transcrypt'ed from Python, 2021-05-14 15:00:25 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get run () {return run;}, set run (value) {run = value;}}); +var __name__ = 'data_structures'; +export var run = function (autoTester) { + var aList = [1, 2, 3, 'moon', 'stars']; + autoTester.check (aList); + aList.insert (3, 'sun'); + autoTester.check (aList); + autoTester.check (aList.__getslice__ (2, 4, 1)); + autoTester.check (aList.__getslice__ (0, null, 1)); + autoTester.check (aList.__getslice__ (2, null, 1)); + autoTester.check (len (aList)); + aList.append ('milkyway'); + autoTester.check (aList); + aList.extend (['m1', 'm31']); + autoTester.check (aList); + var anotherList = list (tuple (['a', 'b', 'c'])); + autoTester.check (anotherList); + autoTester.check (__in__ ('b', anotherList)); + autoTester.check (__in__ ('d', anotherList)); + var aDict = dict ({1: 'plant', 'animal': 2}); + autoTester.check (aDict); + autoTester.check (aDict [1], aDict ['animal']); + var p = function () { + return 3; + }; + var q = 4; + autoTester.check (dict ([[p (), 'three'], [q, 'four']])); + var aTuple = tuple ([1, 2, 3, 4, 5]); + autoTester.check (aTuple); + autoTester.check (len (aTuple)); + var anotherTuple = tuple ([1]); + autoTester.check (anotherTuple); + var aSet = new set ([1, 2, 2, 3]); + autoTester.check (aSet); + autoTester.check (len (aSet)); + autoTester.check (__in__ (2, aSet)); + autoTester.check (__in__ (4, aSet)); + aSet.py_clear (); + autoTester.check (aSet); + var anotherSet = set (tuple ([4, 5, 5, 6])); + autoTester.check (anotherSet); + var emptySet = set (); + autoTester.check (emptySet); + autoTester.check (len (emptySet)); + var aString = 'c_cis_d_dis_e_f_fis_g_gis_a_ais_b_c'; + autoTester.check (__in__ ('cis', aString)); + autoTester.check (__in__ ('g', aString)); + autoTester.check (__in__ ('bes', aString)); + autoTester.check (__in__ ('z', aString)); +}; + +//# sourceMappingURL=data_structures.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/data_structures.tree b/transcrypt/development/automated_tests/transcrypt/__target__38/data_structures.tree new file mode 100644 index 000000000..0dab3aded --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/data_structures.tree @@ -0,0 +1,792 @@ +file: Module + body: list + element: FunctionDef + name: str = run + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = autoTester + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Name + id: str = aList + ctx: Store + value: List + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + element: Constant + value: str = moon + kind: NoneType = None + element: Constant + value: str = stars + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = aList + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = aList + ctx: Load + attr: str = insert + ctx: Load + args: list + element: Constant + value: int = 3 + kind: NoneType = None + element: Constant + value: str = sun + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = aList + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Subscript + value: Name + id: str = aList + ctx: Load + slice: Slice + lower: Constant + value: int = 2 + kind: NoneType = None + upper: Constant + value: int = 4 + kind: NoneType = None + step: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Subscript + value: Name + id: str = aList + ctx: Load + slice: Slice + lower: NoneType = None + upper: NoneType = None + step: NoneType = None + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Subscript + value: Name + id: str = aList + ctx: Load + slice: Slice + lower: Constant + value: int = 2 + kind: NoneType = None + upper: NoneType = None + step: NoneType = None + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = len + ctx: Load + args: list + element: Name + id: str = aList + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = aList + ctx: Load + attr: str = append + ctx: Load + args: list + element: Constant + value: str = milkyway + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = aList + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = aList + ctx: Load + attr: str = extend + ctx: Load + args: list + element: List + elts: list + element: Constant + value: str = m1 + kind: NoneType = None + element: Constant + value: str = m31 + kind: NoneType = None + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = aList + ctx: Load + keywords: list + element: Assign + targets: list + element: Name + id: str = anotherList + ctx: Store + value: Call + func: Name + id: str = list + ctx: Load + args: list + element: Tuple + elts: list + element: Constant + value: str = a + kind: NoneType = None + element: Constant + value: str = b + kind: NoneType = None + element: Constant + value: str = c + kind: NoneType = None + ctx: Load + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = anotherList + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Constant + value: str = b + kind: NoneType = None + ops: list + element: In + comparators: list + element: Name + id: str = anotherList + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Constant + value: str = d + kind: NoneType = None + ops: list + element: In + comparators: list + element: Name + id: str = anotherList + ctx: Load + keywords: list + element: Assign + targets: list + element: Name + id: str = aDict + ctx: Store + value: Dict + keys: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: str = animal + kind: NoneType = None + values: list + element: Constant + value: str = plant + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = aDict + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Subscript + value: Name + id: str = aDict + ctx: Load + slice: Index + value: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + element: Subscript + value: Name + id: str = aDict + ctx: Load + slice: Index + value: Constant + value: str = animal + kind: NoneType = None + ctx: Load + keywords: list + element: FunctionDef + name: str = p + args: arguments + posonlyargs: list + args: list + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Constant + value: int = 3 + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = q + ctx: Store + value: Constant + value: int = 4 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Dict + keys: list + element: Call + func: Name + id: str = p + ctx: Load + args: list + keywords: list + element: Name + id: str = q + ctx: Load + values: list + element: Constant + value: str = three + kind: NoneType = None + element: Constant + value: str = four + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = aTuple + ctx: Store + value: Tuple + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + element: Constant + value: int = 4 + kind: NoneType = None + element: Constant + value: int = 5 + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = aTuple + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = len + ctx: Load + args: list + element: Name + id: str = aTuple + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = anotherTuple + ctx: Store + value: Tuple + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = anotherTuple + ctx: Load + keywords: list + element: Assign + targets: list + element: Name + id: str = aSet + ctx: Store + value: Set + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = aSet + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = len + ctx: Load + args: list + element: Name + id: str = aSet + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Constant + value: int = 2 + kind: NoneType = None + ops: list + element: In + comparators: list + element: Name + id: str = aSet + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Constant + value: int = 4 + kind: NoneType = None + ops: list + element: In + comparators: list + element: Name + id: str = aSet + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = aSet + ctx: Load + attr: str = clear + ctx: Load + args: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = aSet + ctx: Load + keywords: list + element: Assign + targets: list + element: Name + id: str = anotherSet + ctx: Store + value: Call + func: Name + id: str = set + ctx: Load + args: list + element: Tuple + elts: list + element: Constant + value: int = 4 + kind: NoneType = None + element: Constant + value: int = 5 + kind: NoneType = None + element: Constant + value: int = 5 + kind: NoneType = None + element: Constant + value: int = 6 + kind: NoneType = None + ctx: Load + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = anotherSet + ctx: Load + keywords: list + element: Assign + targets: list + element: Name + id: str = emptySet + ctx: Store + value: Call + func: Name + id: str = set + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = emptySet + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = len + ctx: Load + args: list + element: Name + id: str = emptySet + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = aString + ctx: Store + value: Constant + value: str = c_cis_d_dis_e_f_fis_g_gis_a_ais_b_c + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Constant + value: str = cis + kind: NoneType = None + ops: list + element: In + comparators: list + element: Name + id: str = aString + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Constant + value: str = g + kind: NoneType = None + ops: list + element: In + comparators: list + element: Name + id: str = aString + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Constant + value: str = bes + kind: NoneType = None + ops: list + element: In + comparators: list + element: Name + id: str = aString + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Constant + value: str = z + kind: NoneType = None + ops: list + element: In + comparators: list + element: Name + id: str = aString + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/dataclasses.js b/transcrypt/development/automated_tests/transcrypt/__target__38/dataclasses.js new file mode 100644 index 000000000..d632a7c4f --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/dataclasses.js @@ -0,0 +1,7 @@ +// Transcrypt'ed from Python, 2021-05-14 15:00:25 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get dataclass () {return dataclass;}, set dataclass (value) {dataclass = value;}}); +var __name__ = 'dataclasses'; +export var dataclass = null; + +//# sourceMappingURL=dataclasses.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/dataclasses.tree b/transcrypt/development/automated_tests/transcrypt/__target__38/dataclasses.tree new file mode 100644 index 000000000..b8f71fe6c --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/dataclasses.tree @@ -0,0 +1,12 @@ +file: Module + body: list + element: Assign + targets: list + element: Name + id: str = dataclass + ctx: Store + value: Constant + value: NoneType = None + kind: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/datetime.js b/transcrypt/development/automated_tests/transcrypt/__target__38/datetime.js new file mode 100644 index 000000000..e02dc1089 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/datetime.js @@ -0,0 +1,1994 @@ +// Transcrypt'ed from Python, 2021-05-14 15:00:24 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +import * as _math from './math.js'; +import * as _time from './time.js'; +export {_math, _time}; +var __all__ = dict ({get MAXYEAR () {return MAXYEAR;}, set MAXYEAR (value) {MAXYEAR = value;}, get MINYEAR () {return MINYEAR;}, set MINYEAR (value) {MINYEAR = value;}, get _DAYNAMES () {return _DAYNAMES;}, set _DAYNAMES (value) {_DAYNAMES = value;}, get _DAYS_BEFORE_MONTH () {return _DAYS_BEFORE_MONTH;}, set _DAYS_BEFORE_MONTH (value) {_DAYS_BEFORE_MONTH = value;}, get _DAYS_IN_MONTH () {return _DAYS_IN_MONTH;}, set _DAYS_IN_MONTH (value) {_DAYS_IN_MONTH = value;}, get _DI100Y () {return _DI100Y;}, set _DI100Y (value) {_DI100Y = value;}, get _DI400Y () {return _DI400Y;}, set _DI400Y (value) {_DI400Y = value;}, get _DI4Y () {return _DI4Y;}, set _DI4Y (value) {_DI4Y = value;}, get _EPOCH () {return _EPOCH;}, set _EPOCH (value) {_EPOCH = value;}, get _MAXORDINAL () {return _MAXORDINAL;}, set _MAXORDINAL (value) {_MAXORDINAL = value;}, get _MONTHNAMES () {return _MONTHNAMES;}, set _MONTHNAMES (value) {_MONTHNAMES = value;}, get _Omitted () {return _Omitted;}, set _Omitted (value) {_Omitted = value;}, get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get _build_struct_time () {return _build_struct_time;}, set _build_struct_time (value) {_build_struct_time = value;}, get _check_date_fields () {return _check_date_fields;}, set _check_date_fields (value) {_check_date_fields = value;}, get _check_int_field () {return _check_int_field;}, set _check_int_field (value) {_check_int_field = value;}, get _check_time_fields () {return _check_time_fields;}, set _check_time_fields (value) {_check_time_fields = value;}, get _check_tzinfo_arg () {return _check_tzinfo_arg;}, set _check_tzinfo_arg (value) {_check_tzinfo_arg = value;}, get _check_tzname () {return _check_tzname;}, set _check_tzname (value) {_check_tzname = value;}, get _check_utc_offset () {return _check_utc_offset;}, set _check_utc_offset (value) {_check_utc_offset = value;}, get _cmp () {return _cmp;}, set _cmp (value) {_cmp = value;}, get _cmperror () {return _cmperror;}, set _cmperror (value) {_cmperror = value;}, get _d_max () {return _d_max;}, set _d_max (value) {_d_max = value;}, get _d_min () {return _d_min;}, set _d_min (value) {_d_min = value;}, get _date_class () {return _date_class;}, set _date_class (value) {_date_class = value;}, get _days_before_month () {return _days_before_month;}, set _days_before_month (value) {_days_before_month = value;}, get _days_before_year () {return _days_before_year;}, set _days_before_year (value) {_days_before_year = value;}, get _days_in_month () {return _days_in_month;}, set _days_in_month (value) {_days_in_month = value;}, get _divide_and_round () {return _divide_and_round;}, set _divide_and_round (value) {_divide_and_round = value;}, get _dt_max () {return _dt_max;}, set _dt_max (value) {_dt_max = value;}, get _dt_min () {return _dt_min;}, set _dt_min (value) {_dt_min = value;}, get _format_time () {return _format_time;}, set _format_time (value) {_format_time = value;}, get _is_leap () {return _is_leap;}, set _is_leap (value) {_is_leap = value;}, get _isoweek1monday () {return _isoweek1monday;}, set _isoweek1monday (value) {_isoweek1monday = value;}, get _ord2ymd () {return _ord2ymd;}, set _ord2ymd (value) {_ord2ymd = value;}, get _td_max () {return _td_max;}, set _td_max (value) {_td_max = value;}, get _td_min () {return _td_min;}, set _td_min (value) {_td_min = value;}, get _td_resolution () {return _td_resolution;}, set _td_resolution (value) {_td_resolution = value;}, get _time_class () {return _time_class;}, set _time_class (value) {_time_class = value;}, get _tm_max () {return _tm_max;}, set _tm_max (value) {_tm_max = value;}, get _tm_min () {return _tm_min;}, set _tm_min (value) {_tm_min = value;}, get _tz_max () {return _tz_max;}, set _tz_max (value) {_tz_max = value;}, get _tz_min () {return _tz_min;}, set _tz_min (value) {_tz_min = value;}, get _tz_utc () {return _tz_utc;}, set _tz_utc (value) {_tz_utc = value;}, get _tzinfo_class () {return _tzinfo_class;}, set _tzinfo_class (value) {_tzinfo_class = value;}, get _wrap_strftime () {return _wrap_strftime;}, set _wrap_strftime (value) {_wrap_strftime = value;}, get _ymd2ord () {return _ymd2ord;}, set _ymd2ord (value) {_ymd2ord = value;}, get date () {return date;}, set date (value) {date = value;}, get datetime () {return datetime;}, set datetime (value) {datetime = value;}, get dbm () {return dbm;}, set dbm (value) {dbm = value;}, get dim () {return dim;}, set dim (value) {dim = value;}, get rjust () {return rjust;}, set rjust (value) {rjust = value;}, get time () {return time;}, set time (value) {time = value;}, get timedelta () {return timedelta;}, set timedelta (value) {timedelta = value;}, get timezone () {return timezone;}, set timezone (value) {timezone = value;}, get tzinfo () {return tzinfo;}, set tzinfo (value) {tzinfo = value;}, get zfill () {return zfill;}, set zfill (value) {zfill = value;}}); +var __name__ = 'datetime'; +export var zfill = function (s, c) { + var s = str (s); + if (len (s) < c) { + return __add__ (__mul__ ('0', __sub__ (c, __call__ (len, null, s))), s); + } + else { + return s; + } +}; +export var rjust = function (s, c) { + var s = str (s); + if (len (s) < c) { + return __add__ (__mul__ (' ', __sub__ (c, __call__ (len, null, s))), s); + } + else { + return s; + } +}; +export var _cmp = function (x, y) { + return (x == y ? 0 : (x > y ? 1 : -(1))); +}; +export var MINYEAR = 1; +export var MAXYEAR = 9999; +export var _MAXORDINAL = 3652059; +export var _DAYS_IN_MONTH = [-(1), 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; +export var _DAYS_BEFORE_MONTH = [-(1)]; +export var dbm = 0; +for (var dim of _DAYS_IN_MONTH.__getslice__ (1, null, 1)) { + _DAYS_BEFORE_MONTH.append (dbm); + dbm += dim; +} +export var _is_leap = function (year) { + return __mod__ (year, 4) == 0 && (__mod__ (year, 100) != 0 || __mod__ (year, 400) == 0); +}; +export var _days_before_year = function (year) { + var y = year - 1; + return ((y * 365 + Math.floor (y / 4)) - Math.floor (y / 100)) + Math.floor (y / 400); +}; +export var _days_in_month = function (year, month) { + assert ((1 <= month && month <= 12), month); + if (month == 2 && _is_leap (year)) { + return 29; + } + return _DAYS_IN_MONTH [month]; +}; +export var _days_before_month = function (year, month) { + assert ((1 <= month && month <= 12), 'month must be in 1..12'); + return _DAYS_BEFORE_MONTH [month] + (month > 2 && _is_leap (year)); +}; +export var _ymd2ord = function (year, month, day) { + assert ((1 <= month && month <= 12), 'month must be in 1..12'); + var dim = _days_in_month (year, month); + assert ((1 <= day && day <= dim), __mod__ ('day must be in 1..%d', dim)); + return (_days_before_year (year) + _days_before_month (year, month)) + day; +}; +export var _DI400Y = _days_before_year (401); +export var _DI100Y = _days_before_year (101); +export var _DI4Y = _days_before_year (5); +assert (_DI4Y == 4 * 365 + 1); +assert (_DI400Y == 4 * _DI100Y + 1); +assert (_DI100Y == 25 * _DI4Y - 1); +export var _ord2ymd = function (n) { + n--; + var __left0__ = divmod (n, _DI400Y); + var n400 = __left0__ [0]; + var n = __left0__ [1]; + var year = n400 * 400 + 1; + var __left0__ = divmod (n, _DI100Y); + var n100 = __left0__ [0]; + var n = __left0__ [1]; + var __left0__ = divmod (n, _DI4Y); + var n4 = __left0__ [0]; + var n = __left0__ [1]; + var __left0__ = divmod (n, 365); + var n1 = __left0__ [0]; + var n = __left0__ [1]; + year += (n100 * 100 + n4 * 4) + n1; + if (n1 == 4 || n100 == 4) { + assert (n == 0); + return tuple ([year - 1, 12, 31]); + } + var leapyear = n1 == 3 && (n4 != 24 || n100 == 3); + assert (leapyear == _is_leap (year)); + var month = n + 50 >> 5; + var preceding = _DAYS_BEFORE_MONTH [month] + (month > 2 && leapyear); + if (preceding > n) { + month--; + preceding -= _DAYS_IN_MONTH [month] + (month == 2 && leapyear); + } + n -= preceding; + assert ((0 <= n && n < _days_in_month (year, month))); + return tuple ([year, month, n + 1]); +}; +export var _MONTHNAMES = [null, 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']; +export var _DAYNAMES = [null, 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']; +export var _build_struct_time = function (y, m, d, hh, mm, ss, dstflag) { + var wday = __mod__ (_ymd2ord (y, m, d) + 6, 7); + var dnum = _days_before_month (y, m) + d; + return tuple ([y, m, d, hh, mm, ss, wday, dnum, dstflag]); +}; +export var _format_time = function (hh, mm, ss, us) { + var result = '{}:{}:{}'.format (zfill (hh, 2), zfill (mm, 2), zfill (ss, 2)); + if (us) { + result += '.{}'.format (zfill (us, 6)); + } + return result; +}; +export var _wrap_strftime = function (object, format, timetuple) { + var freplace = null; + var zreplace = null; + var Zreplace = null; + var newformat = []; + var __left0__ = tuple ([0, len (format)]); + var i = __left0__ [0]; + var n = __left0__ [1]; + while (i < n) { + var ch = format [i]; + i++; + if (ch == '%') { + if (i < n) { + var ch = format [i]; + i++; + if (ch == 'f') { + if (freplace === null) { + var freplace = '{}'.format (zfill (getattr (object, 'microsecond', 0), 6)); + } + newformat.append (freplace); + } + else if (ch == 'z') { + if (zreplace === null) { + var zreplace = ''; + if (hasattr (object, 'utcoffset')) { + var offset = object.utcoffset (); + if (offset !== null) { + var sign = '+'; + if (offset.days < 0) { + var offset = -(offset); + var sign = '-'; + } + var __left0__ = divmod (offset, timedelta (__kwargtrans__ ({hours: 1}))); + var h = __left0__ [0]; + var m = __left0__ [1]; + assert (!(__mod__ (m, timedelta (__kwargtrans__ ({minutes: 1})))), 'whole minute'); + var m = Math.floor (m / timedelta (__kwargtrans__ ({minutes: 1}))); + var zreplace = '{}{}{}'.format (sign, zfill (h, 2), zfill (m, 2)); + } + } + } + assert (!__in__ ('%', zreplace)); + newformat.append (zreplace); + } + else if (ch == 'Z') { + if (Zreplace === null) { + var Zreplace = ''; + if (hasattr (object, 'tzname')) { + var s = object.tzname (); + if (s !== null) { + var Zreplace = s.py_replace ('%', '%%'); + } + } + } + newformat.append (Zreplace); + } + else { + newformat.append ('%'); + newformat.append (ch); + } + } + else { + newformat.append ('%'); + } + } + else { + newformat.append (ch); + } + } + var newformat = ''.join (newformat); + return _time.strftime (newformat, timetuple); +}; +export var _check_tzname = function (py_name) { + if (py_name !== null && !(isinstance (py_name, str))) { + var __except0__ = py_TypeError ("tzinfo.tzname() must return None or string, not '{}'".format (py_typeof (py_name))); + __except0__.__cause__ = null; + throw __except0__; + } +}; +export var _check_utc_offset = function (py_name, offset) { + assert (__in__ (py_name, tuple (['utcoffset', 'dst']))); + if (offset === null) { + return ; + } + if (!(isinstance (offset, timedelta))) { + var __except0__ = py_TypeError ("tzinfo.{}() must return None or timedelta, not '{}'".format (py_name, py_typeof (offset))); + __except0__.__cause__ = null; + throw __except0__; + } + if (offset.__mod__ (timedelta (__kwargtrans__ ({minutes: 1}))).microseconds || offset.microseconds) { + var __except0__ = ValueError ('tzinfo.{}() must return a whole number of minutes, got {}'.format (py_name, offset)); + __except0__.__cause__ = null; + throw __except0__; + } + if (!((__lt__ (__neg__ (__call__ (timedelta, null, 1)), offset) && __lt__ (offset, __call__ (timedelta, null, 1))))) { + var __except0__ = __call__ (ValueError, null, (function () { + var __accu0__ = '{}()={}, must be must be strictly between -timedelta(hours=24) and timedelta(hours=24)'; + return __call__ (__accu0__.format, __accu0__, py_name, offset); + }) ()); + __except0__.__cause__ = null; + throw __except0__; + } +}; +export var _check_int_field = function (value) { + var _type = py_typeof (value); + if (_type == int) { + return value; + } + if (!(_type == float)) { + try { + var value = value.__int__ (); + try { + if (py_typeof (value) == int) { + return value; + } + var __except0__ = py_TypeError ('__int__ returned non-int (type {})'.format (py_typeof (value).__name__)); + __except0__.__cause__ = null; + throw __except0__; + } + catch (__except0__) { + } + } + catch (__except0__) { + if (isinstance (__except0__, AttributeError)) { + // pass; + } + else { + throw __except0__; + } + } + var __except0__ = py_TypeError ('an integer is required (got type {})'.format (py_typeof (value).__name__)); + __except0__.__cause__ = null; + throw __except0__; + } + var __except0__ = py_TypeError ('integer argument expected, got float'); + __except0__.__cause__ = null; + throw __except0__; +}; +export var _check_date_fields = function (year, month, day) { + var year = _check_int_field (year); + var month = _check_int_field (month); + var day = _check_int_field (day); + if (!((MINYEAR <= year && year <= MAXYEAR))) { + var __except0__ = ValueError ('year must be in {}..{}'.format (MINYEAR, MAXYEAR), year); + __except0__.__cause__ = null; + throw __except0__; + } + if (!((1 <= month && month <= 12))) { + var __except0__ = ValueError ('month must be in 1..12', month); + __except0__.__cause__ = null; + throw __except0__; + } + var dim = _days_in_month (year, month); + if (!((1 <= day && day <= dim))) { + var __except0__ = ValueError ('day must be in 1..{}'.format (dim), day); + __except0__.__cause__ = null; + throw __except0__; + } + return tuple ([year, month, day]); +}; +export var _check_time_fields = function (hour, minute, second, microsecond) { + var hour = _check_int_field (hour); + var minute = _check_int_field (minute); + var second = _check_int_field (second); + var microsecond = _check_int_field (microsecond); + if (!((0 <= hour && hour <= 23))) { + var __except0__ = ValueError ('hour must be in 0..23', hour); + __except0__.__cause__ = null; + throw __except0__; + } + if (!((0 <= minute && minute <= 59))) { + var __except0__ = ValueError ('minute must be in 0..59', minute); + __except0__.__cause__ = null; + throw __except0__; + } + if (!((0 <= second && second <= 59))) { + var __except0__ = ValueError ('second must be in 0..59', second); + __except0__.__cause__ = null; + throw __except0__; + } + if (!((0 <= microsecond && microsecond <= 999999))) { + var __except0__ = ValueError ('microsecond must be in 0..999999', microsecond); + __except0__.__cause__ = null; + throw __except0__; + } + return tuple ([hour, minute, second, microsecond]); +}; +export var _check_tzinfo_arg = function (tz) { + if (tz !== null && !(isinstance (tz, tzinfo))) { + var __except0__ = py_TypeError ('tzinfo argument must be None or of a tzinfo subclass'); + __except0__.__cause__ = null; + throw __except0__; + } +}; +export var _cmperror = function (x, y) { + var __except0__ = py_TypeError ("can't compare '{}' to '{}'".format (py_typeof (x).__name__, py_typeof (y).__name__)); + __except0__.__cause__ = null; + throw __except0__; +}; +export var _divide_and_round = function (a, b) { + var __left0__ = divmod (a, b); + var q = __left0__ [0]; + var r = __left0__ [1]; + r *= 2; + var greater_than_half = (b > 0 ? r > b : r < b); + if (greater_than_half || r == b && __mod__ (q, 2) == 1) { + q++; + } + return q; +}; +export var timedelta = __class__ ('timedelta', [object], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self, days, seconds, microseconds, milliseconds, minutes, hours, weeks) { + if (typeof days == 'undefined' || (days != null && days.hasOwnProperty ("__kwargtrans__"))) {; + var days = 0; + }; + if (typeof seconds == 'undefined' || (seconds != null && seconds.hasOwnProperty ("__kwargtrans__"))) {; + var seconds = 0; + }; + if (typeof microseconds == 'undefined' || (microseconds != null && microseconds.hasOwnProperty ("__kwargtrans__"))) {; + var microseconds = 0; + }; + if (typeof milliseconds == 'undefined' || (milliseconds != null && milliseconds.hasOwnProperty ("__kwargtrans__"))) {; + var milliseconds = 0; + }; + if (typeof minutes == 'undefined' || (minutes != null && minutes.hasOwnProperty ("__kwargtrans__"))) {; + var minutes = 0; + }; + if (typeof hours == 'undefined' || (hours != null && hours.hasOwnProperty ("__kwargtrans__"))) {; + var hours = 0; + }; + if (typeof weeks == 'undefined' || (weeks != null && weeks.hasOwnProperty ("__kwargtrans__"))) {; + var weeks = 0; + }; + if (arguments.length) { + var __ilastarg0__ = arguments.length - 1; + if (arguments [__ilastarg0__] && arguments [__ilastarg0__].hasOwnProperty ("__kwargtrans__")) { + var __allkwargs0__ = arguments [__ilastarg0__--]; + for (var __attrib0__ in __allkwargs0__) { + switch (__attrib0__) { + case 'self': var self = __allkwargs0__ [__attrib0__]; break; + case 'days': var days = __allkwargs0__ [__attrib0__]; break; + case 'seconds': var seconds = __allkwargs0__ [__attrib0__]; break; + case 'microseconds': var microseconds = __allkwargs0__ [__attrib0__]; break; + case 'milliseconds': var milliseconds = __allkwargs0__ [__attrib0__]; break; + case 'minutes': var minutes = __allkwargs0__ [__attrib0__]; break; + case 'hours': var hours = __allkwargs0__ [__attrib0__]; break; + case 'weeks': var weeks = __allkwargs0__ [__attrib0__]; break; + } + } + } + } + else { + } + var __left0__ = 0; + var d = __left0__; + var s = __left0__; + var us = __left0__; + days += weeks * 7; + seconds += minutes * 60 + hours * 3600; + microseconds += milliseconds * 1000; + if (isinstance (days, float)) { + var __left0__ = _math.modf (days); + var dayfrac = __left0__ [0]; + var days = __left0__ [1]; + var __left0__ = _math.modf (dayfrac * (24.0 * 3600.0)); + var daysecondsfrac = __left0__ [0]; + var daysecondswhole = __left0__ [1]; + assert (daysecondswhole == int (daysecondswhole)); + var s = int (daysecondswhole); + assert (days == int (days)); + var d = int (days); + } + else { + var daysecondsfrac = 0.0; + var d = days; + } + assert (isinstance (daysecondsfrac, tuple ([float, int]))); + assert (abs (daysecondsfrac) <= 1.0); + assert (isinstance (d, int)); + assert (abs (s) <= 24 * 3600); + if (isinstance (seconds, float)) { + var __left0__ = _math.modf (seconds); + var secondsfrac = __left0__ [0]; + var seconds = __left0__ [1]; + assert (seconds == int (seconds)); + var seconds = int (seconds); + secondsfrac += daysecondsfrac; + assert (abs (secondsfrac) <= 2.0); + } + else { + var secondsfrac = daysecondsfrac; + } + assert (isinstance (secondsfrac, tuple ([float, int]))); + assert (abs (secondsfrac) <= 2.0); + assert (isinstance (seconds, int)); + var __left0__ = divmod (seconds, 24 * 3600); + var days = __left0__ [0]; + var seconds = __left0__ [1]; + d += days; + s += int (seconds); + assert (isinstance (s, int)); + assert (abs (s) <= (2 * 24) * 3600); + var usdouble = secondsfrac * 1000000.0; + assert (abs (usdouble) < 2100000.0); + if (isinstance (microseconds, float)) { + var microseconds = round (microseconds + usdouble); + var __left0__ = divmod (microseconds, 1000000); + var seconds = __left0__ [0]; + var microseconds = __left0__ [1]; + var __left0__ = divmod (seconds, 24 * 3600); + var days = __left0__ [0]; + var seconds = __left0__ [1]; + d += days; + s += seconds; + } + else { + var microseconds = int (microseconds); + var __left0__ = divmod (microseconds, 1000000); + var seconds = __left0__ [0]; + var microseconds = __left0__ [1]; + var __left0__ = divmod (seconds, 24 * 3600); + var days = __left0__ [0]; + var seconds = __left0__ [1]; + d += days; + s += seconds; + var microseconds = round (microseconds + usdouble); + } + assert (isinstance (s, int)); + assert (isinstance (microseconds, int)); + assert (abs (s) <= (3 * 24) * 3600); + assert (abs (microseconds) < 3100000.0); + var __left0__ = divmod (microseconds, 1000000); + var seconds = __left0__ [0]; + var us = __left0__ [1]; + s += seconds; + var __left0__ = divmod (s, 24 * 3600); + var days = __left0__ [0]; + var s = __left0__ [1]; + d += days; + assert (isinstance (d, int)); + assert (isinstance (s, int) && (0 <= s && s < 24 * 3600)); + assert (isinstance (us, int) && (0 <= us && us < 1000000)); + if (abs (d) > 999999999) { + var __except0__ = OverflowError (__mod__ ('timedelta # of days is too large: %d', d)); + __except0__.__cause__ = null; + throw __except0__; + } + self._days = d; + self._seconds = s; + self._microseconds = us; + });}, + get __repr__ () {return __get__ (this, function (self) { + if (self._microseconds) { + return 'datetime.timedelta(days={}, seconds={}, microseconds={})'.format (self._days, self._seconds, self._microseconds); + } + if (self._seconds) { + return 'datetime.timedelta(days={}, seconds={})'.format (self._days, self._seconds); + } + return 'datetime.timedelta(days={})'.format (self._days); + });}, + get __str__ () {return __get__ (this, function (self) { + var __left0__ = divmod (self._seconds, 60); + var mm = __left0__ [0]; + var ss = __left0__ [1]; + var __left0__ = divmod (mm, 60); + var hh = __left0__ [0]; + var mm = __left0__ [1]; + var s = '{}:{}:{}'.format (hh, zfill (mm, 2), zfill (ss, 2)); + if (self._days) { + var plural = function (n) { + return tuple ([n, abs (n) != 1 && 's' || '']); + }; + var s = '{} day{}, '.format (plural (self._days)) + s; + } + if (self._microseconds) { + var s = s + '.{}'.format (zfill (self._microseconds, 6)); + } + return s; + });}, + get total_seconds () {return __get__ (this, function (self) { + return ((self.days * 86400 + self.seconds) * Math.pow (10, 6) + self.microseconds) / Math.pow (10, 6); + });}, + get _get_days () {return __get__ (this, function (self) { + return self._days; + });}, + get _get_seconds () {return __get__ (this, function (self) { + return self._seconds; + });}, + get _get_microseconds () {return __get__ (this, function (self) { + return self._microseconds; + });}, + get __add__ () {return __get__ (this, function (self, other) { + if (isinstance (other, timedelta)) { + return timedelta (self._days + other._days, self._seconds + other._seconds, self._microseconds + other._microseconds); + } + return NotImplemented; + });}, + get __radd__ () {return __get__ (this, function (self, other) { + return self.__add__ (other); + });}, + get __sub__ () {return __get__ (this, function (self, other) { + if (isinstance (other, timedelta)) { + return timedelta (self._days - other._days, self._seconds - other._seconds, self._microseconds - other._microseconds); + } + return NotImplemented; + });}, + get __rsub__ () {return __get__ (this, function (self, other) { + if (isinstance (other, timedelta)) { + return -(self) + other; + } + return NotImplemented; + });}, + get __neg__ () {return __get__ (this, function (self) { + return timedelta (-(self._days), -(self._seconds), -(self._microseconds)); + });}, + get __pos__ () {return __get__ (this, function (self) { + return self; + });}, + get __abs__ () {return __get__ (this, function (self) { + if (self._days < 0) { + return __neg__ (self); + } + else { + return self; + } + });}, + get __mul__ () {return __get__ (this, function (self, other) { + if (isinstance (other, int)) { + return timedelta (self._days * other, self._seconds * other, self._microseconds * other); + } + if (isinstance (other, float)) { + var usec = self._to_microseconds (); + var __left0__ = other.as_integer_ratio (); + var a = __left0__ [0]; + var b = __left0__ [1]; + return timedelta (0, 0, _divide_and_round (usec * a, b)); + } + return NotImplemented; + });}, + get __rmul__ () {return __get__ (this, function (self, other) { + return self.__mul__ (other); + });}, + get _to_microseconds () {return __get__ (this, function (self) { + return (self._days * (24 * 3600) + self._seconds) * 1000000 + self._microseconds; + });}, + get __floordiv__ () {return __get__ (this, function (self, other) { + if (!(isinstance (other, tuple ([int, timedelta])))) { + return NotImplemented; + } + var usec = self._to_microseconds (); + if (isinstance (other, timedelta)) { + return Math.floor (usec / other._to_microseconds ()); + } + if (isinstance (other, int)) { + return timedelta (0, 0, Math.floor (usec / other)); + } + });}, + get __truediv__ () {return __get__ (this, function (self, other) { + if (!(isinstance (other, tuple ([int, float, timedelta])))) { + return NotImplemented; + } + var usec = self._to_microseconds (); + if (isinstance (other, timedelta)) { + return usec / other._to_microseconds (); + } + if (isinstance (other, int)) { + return timedelta (0, 0, _divide_and_round (usec, other)); + } + if (isinstance (other, float)) { + var __left0__ = other.as_integer_ratio (); + var a = __left0__ [0]; + var b = __left0__ [1]; + return timedelta (0, 0, _divide_and_round (b * usec, a)); + } + });}, + get __mod__ () {return __get__ (this, function (self, other) { + if (isinstance (other, timedelta)) { + var r = __mod__ (self._to_microseconds (), other._to_microseconds ()); + return timedelta (0, 0, r); + } + return NotImplemented; + });}, + get __divmod__ () {return __get__ (this, function (self, other) { + if (isinstance (other, timedelta)) { + var __left0__ = divmod (self._to_microseconds (), other._to_microseconds ()); + var q = __left0__ [0]; + var r = __left0__ [1]; + return tuple ([q, timedelta (0, 0, r)]); + } + return NotImplemented; + });}, + get __eq__ () {return __get__ (this, function (self, other) { + if (isinstance (other, timedelta)) { + return self._cmp (other) == 0; + } + else { + return false; + } + });}, + get __le__ () {return __get__ (this, function (self, other) { + if (isinstance (other, timedelta)) { + return self._cmp (other) <= 0; + } + else { + _cmperror (self, other); + } + });}, + get __lt__ () {return __get__ (this, function (self, other) { + if (isinstance (other, timedelta)) { + return self._cmp (other) < 0; + } + else { + _cmperror (self, other); + } + });}, + get __ge__ () {return __get__ (this, function (self, other) { + if (isinstance (other, timedelta)) { + return self._cmp (other) >= 0; + } + else { + _cmperror (self, other); + } + });}, + get __gt__ () {return __get__ (this, function (self, other) { + if (isinstance (other, timedelta)) { + return self._cmp (other) > 0; + } + else { + _cmperror (self, other); + } + });}, + get _cmp () {return __get__ (this, function (self, other) { + assert (isinstance (other, timedelta)); + return _cmp (self._to_microseconds (), other._to_microseconds ()); + });}, + get __bool__ () {return __get__ (this, function (self) { + return self._days != 0 || self._seconds != 0 || self._microseconds != 0; + });} +}); +Object.defineProperty (timedelta, 'microseconds', property.call (timedelta, timedelta._get_microseconds)); +Object.defineProperty (timedelta, 'seconds', property.call (timedelta, timedelta._get_seconds)); +Object.defineProperty (timedelta, 'days', property.call (timedelta, timedelta._get_days));; +export var _td_min = timedelta (-(999999999)); +export var _td_max = timedelta (__kwargtrans__ ({days: 999999999, hours: 23, minutes: 59, seconds: 59, microseconds: 999999})); +export var _td_resolution = timedelta (__kwargtrans__ ({microseconds: 1})); +Object.defineProperty (timedelta, 'min', {get: function () {return _td_min;}}) +Object.defineProperty (timedelta, 'max', {get: function () {return _td_max;}}) +Object.defineProperty (timedelta, 'resolution', {get: function () {return _td_resolution;}}) +export var date = __class__ ('date', [object], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self, year, month, day) { + if (typeof month == 'undefined' || (month != null && month.hasOwnProperty ("__kwargtrans__"))) {; + var month = null; + }; + if (typeof day == 'undefined' || (day != null && day.hasOwnProperty ("__kwargtrans__"))) {; + var day = null; + }; + if (arguments.length) { + var __ilastarg0__ = arguments.length - 1; + if (arguments [__ilastarg0__] && arguments [__ilastarg0__].hasOwnProperty ("__kwargtrans__")) { + var __allkwargs0__ = arguments [__ilastarg0__--]; + for (var __attrib0__ in __allkwargs0__) { + switch (__attrib0__) { + case 'self': var self = __allkwargs0__ [__attrib0__]; break; + case 'year': var year = __allkwargs0__ [__attrib0__]; break; + case 'month': var month = __allkwargs0__ [__attrib0__]; break; + case 'day': var day = __allkwargs0__ [__attrib0__]; break; + } + } + } + } + else { + } + var __left0__ = _check_date_fields (year, month, day); + var year = __left0__ [0]; + var month = __left0__ [1]; + var day = __left0__ [2]; + self._year = year; + self._month = month; + self._day = day; + });}, + get fromtimestamp () {return __getcm__ (this, function (cls, t) { + var __left0__ = _time.localtime (t); + var y = __left0__ [0]; + var m = __left0__ [1]; + var d = __left0__ [2]; + var hh = __left0__ [3]; + var mm = __left0__ [4]; + var ss = __left0__ [5]; + var weekday = __left0__ [6]; + var jday = __left0__ [7]; + var dst = __left0__ [8]; + return cls (y, m, d); + });}, + get today () {return __getcm__ (this, function (cls) { + var t = _time.time (); + return cls.fromtimestamp (t); + });}, + get fromordinal () {return __getcm__ (this, function (cls, n) { + var __left0__ = _ord2ymd (n); + var y = __left0__ [0]; + var m = __left0__ [1]; + var d = __left0__ [2]; + return cls (y, m, d); + });}, + get __repr__ () {return __get__ (this, function (self) { + return 'datetime.date({}, {}, {})'.format (self._year, self._month, self._day); + });}, + get ctime () {return __get__ (this, function (self) { + var weekday = __mod__ (self.toordinal (), 7) || 7; + return '{} {} {} 00:00:00 {}'.format (_DAYNAMES [weekday], _MONTHNAMES [self._month], rjust (self._day, 2), zfill (self._year, 4)); + });}, + get strftime () {return __get__ (this, function (self, fmt) { + return _wrap_strftime (self, fmt, self.timetuple ()); + });}, + get __format__ () {return __get__ (this, function (self, fmt) { + if (!(isinstance (fmt, str))) { + var __except0__ = py_TypeError ('must be str, not {}'.format (py_typeof (fmt).__name__)); + __except0__.__cause__ = null; + throw __except0__; + } + if (len (fmt) != 0) { + return self.strftime (fmt); + } + return str (self); + });}, + get isoformat () {return __get__ (this, function (self) { + return '{}-{}-{}'.format (zfill (self._year, 4), zfill (self._month, 2), zfill (self._day, 2)); + });}, + get __str__ () {return __get__ (this, function (self) { + return self.isoformat (); + });}, + get _get_year () {return __get__ (this, function (self) { + return self._year; + });}, + get _get_month () {return __get__ (this, function (self) { + return self._month; + });}, + get _get_day () {return __get__ (this, function (self) { + return self._day; + });}, + get timetuple () {return __get__ (this, function (self) { + return _build_struct_time (self._year, self._month, self._day, 0, 0, 0, -(1)); + });}, + get toordinal () {return __get__ (this, function (self) { + return _ymd2ord (self._year, self._month, self._day); + });}, + get py_replace () {return __get__ (this, function (self, year, month, day) { + if (typeof year == 'undefined' || (year != null && year.hasOwnProperty ("__kwargtrans__"))) {; + var year = null; + }; + if (typeof month == 'undefined' || (month != null && month.hasOwnProperty ("__kwargtrans__"))) {; + var month = null; + }; + if (typeof day == 'undefined' || (day != null && day.hasOwnProperty ("__kwargtrans__"))) {; + var day = null; + }; + if (arguments.length) { + var __ilastarg0__ = arguments.length - 1; + if (arguments [__ilastarg0__] && arguments [__ilastarg0__].hasOwnProperty ("__kwargtrans__")) { + var __allkwargs0__ = arguments [__ilastarg0__--]; + for (var __attrib0__ in __allkwargs0__) { + switch (__attrib0__) { + case 'self': var self = __allkwargs0__ [__attrib0__]; break; + case 'year': var year = __allkwargs0__ [__attrib0__]; break; + case 'month': var month = __allkwargs0__ [__attrib0__]; break; + case 'day': var day = __allkwargs0__ [__attrib0__]; break; + } + } + } + } + else { + } + if (year === null) { + var year = self._year; + } + if (month === null) { + var month = self._month; + } + if (day === null) { + var day = self._day; + } + return date (year, month, day); + });}, + get __eq__ () {return __get__ (this, function (self, other) { + if (isinstance (other, date)) { + return self._cmp (other) == 0; + } + return NotImplemented; + });}, + get __le__ () {return __get__ (this, function (self, other) { + if (isinstance (other, date)) { + return self._cmp (other) <= 0; + } + return NotImplemented; + });}, + get __lt__ () {return __get__ (this, function (self, other) { + if (isinstance (other, date)) { + return self._cmp (other) < 0; + } + return NotImplemented; + });}, + get __ge__ () {return __get__ (this, function (self, other) { + if (isinstance (other, date)) { + return self._cmp (other) >= 0; + } + return NotImplemented; + });}, + get __gt__ () {return __get__ (this, function (self, other) { + if (isinstance (other, date)) { + return self._cmp (other) > 0; + } + return NotImplemented; + });}, + get _cmp () {return __get__ (this, function (self, other) { + assert (isinstance (other, date)); + var __left0__ = tuple ([self._year, self._month, self._day]); + var y = __left0__ [0]; + var m = __left0__ [1]; + var d = __left0__ [2]; + var __left0__ = tuple ([other._year, other._month, other._day]); + var y2 = __left0__ [0]; + var m2 = __left0__ [1]; + var d2 = __left0__ [2]; + return _cmp ('{}{}{}'.format (zfill (y, 4), zfill (m, 2), zfill (d, 2)), '{}{}{}'.format (zfill (y2, 4), zfill (m2, 2), zfill (d2, 2))); + });}, + get __add__ () {return __get__ (this, function (self, other) { + if (isinstance (other, timedelta)) { + var o = self.toordinal () + other.days; + if ((0 < o && o <= _MAXORDINAL)) { + return date.fromordinal (o); + } + var __except0__ = OverflowError ('result out of range'); + __except0__.__cause__ = null; + throw __except0__; + } + return NotImplemented; + });}, + get __radd__ () {return __get__ (this, function (self, other) { + return self.__add__ (other); + });}, + get __sub__ () {return __get__ (this, function (self, other) { + if (isinstance (other, timedelta)) { + return __add__ (self, __call__ (timedelta, null, __neg__ (other.days))); + } + if (isinstance (other, date)) { + var days1 = self.toordinal (); + var days2 = other.toordinal (); + return __call__ (timedelta, null, __sub__ (days1, days2)); + } + return NotImplemented; + });}, + get weekday () {return __get__ (this, function (self) { + return __mod__ (self.toordinal () + 6, 7); + });}, + get isoweekday () {return __get__ (this, function (self) { + return __mod__ (self.toordinal (), 7) || 7; + });}, + get isocalendar () {return __get__ (this, function (self) { + var year = self._year; + var week1monday = _isoweek1monday (year); + var today = _ymd2ord (self._year, self._month, self._day); + var __left0__ = divmod (today - week1monday, 7); + var week = __left0__ [0]; + var day = __left0__ [1]; + if (week < 0) { + year--; + var week1monday = _isoweek1monday (year); + var __left0__ = divmod (today - week1monday, 7); + var week = __left0__ [0]; + var day = __left0__ [1]; + } + else if (week >= 52) { + if (today >= _isoweek1monday (year + 1)) { + year++; + var week = 0; + } + } + return tuple ([year, week + 1, day + 1]); + });}, + resolution: timedelta (__kwargtrans__ ({days: 1})) +}); +Object.defineProperty (date, 'day', property.call (date, date._get_day)); +Object.defineProperty (date, 'month', property.call (date, date._get_month)); +Object.defineProperty (date, 'year', property.call (date, date._get_year));; +export var _date_class = date; +export var _d_min = date (1, 1, 1); +export var _d_max = date (9999, 12, 31); +Object.defineProperty (date, 'min', {get: function () {return _d_min;}}) +Object.defineProperty (date, 'max', {get: function () {return _d_max;}}) +export var tzinfo = __class__ ('tzinfo', [object], { + __module__: __name__, + get tzname () {return __get__ (this, function (self, dt) { + var __except0__ = NotImplementedError ('tzinfo subclass must override tzname()'); + __except0__.__cause__ = null; + throw __except0__; + });}, + get utcoffset () {return __get__ (this, function (self, dt) { + var __except0__ = NotImplementedError ('tzinfo subclass must override utcoffset()'); + __except0__.__cause__ = null; + throw __except0__; + });}, + get dst () {return __get__ (this, function (self, dt) { + var __except0__ = NotImplementedError ('tzinfo subclass must override dst()'); + __except0__.__cause__ = null; + throw __except0__; + });}, + get fromutc () {return __get__ (this, function (self, dt) { + if (!(isinstance (dt, datetime))) { + var __except0__ = py_TypeError ('fromutc() requires a datetime argument'); + __except0__.__cause__ = null; + throw __except0__; + } + if (dt.tzinfo !== self) { + var __except0__ = ValueError ('dt.tzinfo is not self'); + __except0__.__cause__ = null; + throw __except0__; + } + var dtoff = dt.utcoffset (); + if (dtoff === null) { + var __except0__ = ValueError ('fromutc() requires a non-None utcoffset() result'); + __except0__.__cause__ = null; + throw __except0__; + } + var dtdst = dt.dst (); + if (dtdst === null) { + var __except0__ = ValueError ('fromutc() requires a non-None dst() result'); + __except0__.__cause__ = null; + throw __except0__; + } + var delta = dtoff - dtdst; + if (delta) { + dt += delta; + var dtdst = dt.dst (); + if (dtdst === null) { + var __except0__ = ValueError ('fromutc(): dt.dst gave inconsistent results; cannot convert'); + __except0__.__cause__ = null; + throw __except0__; + } + } + return dt + dtdst; + });} +}); +export var _tzinfo_class = tzinfo; +export var time = __class__ ('time', [object], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self, hour, minute, second, microsecond, tzinfo) { + if (typeof hour == 'undefined' || (hour != null && hour.hasOwnProperty ("__kwargtrans__"))) {; + var hour = 0; + }; + if (typeof minute == 'undefined' || (minute != null && minute.hasOwnProperty ("__kwargtrans__"))) {; + var minute = 0; + }; + if (typeof second == 'undefined' || (second != null && second.hasOwnProperty ("__kwargtrans__"))) {; + var second = 0; + }; + if (typeof microsecond == 'undefined' || (microsecond != null && microsecond.hasOwnProperty ("__kwargtrans__"))) {; + var microsecond = 0; + }; + if (typeof tzinfo == 'undefined' || (tzinfo != null && tzinfo.hasOwnProperty ("__kwargtrans__"))) {; + var tzinfo = null; + }; + if (arguments.length) { + var __ilastarg0__ = arguments.length - 1; + if (arguments [__ilastarg0__] && arguments [__ilastarg0__].hasOwnProperty ("__kwargtrans__")) { + var __allkwargs0__ = arguments [__ilastarg0__--]; + for (var __attrib0__ in __allkwargs0__) { + switch (__attrib0__) { + case 'self': var self = __allkwargs0__ [__attrib0__]; break; + case 'hour': var hour = __allkwargs0__ [__attrib0__]; break; + case 'minute': var minute = __allkwargs0__ [__attrib0__]; break; + case 'second': var second = __allkwargs0__ [__attrib0__]; break; + case 'microsecond': var microsecond = __allkwargs0__ [__attrib0__]; break; + case 'tzinfo': var tzinfo = __allkwargs0__ [__attrib0__]; break; + } + } + } + } + else { + } + var __left0__ = _check_time_fields (hour, minute, second, microsecond); + var hour = __left0__ [0]; + var minute = __left0__ [1]; + var second = __left0__ [2]; + var microsecond = __left0__ [3]; + _check_tzinfo_arg (tzinfo); + self._hour = hour; + self._minute = minute; + self._second = second; + self._microsecond = microsecond; + self._tzinfo = tzinfo; + });}, + get _get_hour () {return __get__ (this, function (self) { + return self._hour; + });}, + get _get_minute () {return __get__ (this, function (self) { + return self._minute; + });}, + get _get_second () {return __get__ (this, function (self) { + return self._second; + });}, + get _get_microsecond () {return __get__ (this, function (self) { + return self._microsecond; + });}, + get _get_tzinfo () {return __get__ (this, function (self) { + return self._tzinfo; + });}, + get __eq__ () {return __get__ (this, function (self, other) { + if (isinstance (other, time)) { + return self._cmp (other, __kwargtrans__ ({allow_mixed: true})) == 0; + } + else { + return false; + } + });}, + get __le__ () {return __get__ (this, function (self, other) { + if (isinstance (other, time)) { + return self._cmp (other) <= 0; + } + else { + _cmperror (self, other); + } + });}, + get __lt__ () {return __get__ (this, function (self, other) { + if (isinstance (other, time)) { + return self._cmp (other) < 0; + } + else { + _cmperror (self, other); + } + });}, + get __ge__ () {return __get__ (this, function (self, other) { + if (isinstance (other, time)) { + return self._cmp (other) >= 0; + } + else { + _cmperror (self, other); + } + });}, + get __gt__ () {return __get__ (this, function (self, other) { + if (isinstance (other, time)) { + return self._cmp (other) > 0; + } + else { + _cmperror (self, other); + } + });}, + get _cmp () {return __get__ (this, function (self, other, allow_mixed) { + if (typeof allow_mixed == 'undefined' || (allow_mixed != null && allow_mixed.hasOwnProperty ("__kwargtrans__"))) {; + var allow_mixed = false; + }; + if (arguments.length) { + var __ilastarg0__ = arguments.length - 1; + if (arguments [__ilastarg0__] && arguments [__ilastarg0__].hasOwnProperty ("__kwargtrans__")) { + var __allkwargs0__ = arguments [__ilastarg0__--]; + for (var __attrib0__ in __allkwargs0__) { + switch (__attrib0__) { + case 'self': var self = __allkwargs0__ [__attrib0__]; break; + case 'other': var other = __allkwargs0__ [__attrib0__]; break; + case 'allow_mixed': var allow_mixed = __allkwargs0__ [__attrib0__]; break; + } + } + } + } + else { + } + assert (isinstance (other, time)); + var mytz = self._tzinfo; + var ottz = other._tzinfo; + var __left0__ = null; + var myoff = __left0__; + var otoff = __left0__; + if (mytz === ottz) { + var base_compare = true; + } + else { + var myoff = self.utcoffset (); + var otoff = other.utcoffset (); + var base_compare = myoff == otoff; + } + if (base_compare) { + return _cmp (tuple ([self._hour, self._minute, self._second, self._microsecond]), tuple ([other._hour, other._minute, other._second, other._microsecond])); + } + if (myoff === null || otoff === null) { + if (allow_mixed) { + return 2; + } + else { + var __except0__ = py_TypeError ('cannot compare naive and aware times'); + __except0__.__cause__ = null; + throw __except0__; + } + } + var myhhmm = __sub__ (__add__ (__mul__ (self._hour, 60), self._minute), __floordiv__ (myoff, __call__ (timedelta, null, __kwargtrans__ ({minutes: 1})))); + var othhmm = __sub__ (__add__ (__mul__ (other._hour, 60), other._minute), __floordiv__ (otoff, __call__ (timedelta, null, __kwargtrans__ ({minutes: 1})))); + return _cmp (tuple ([myhhmm, self._second, self._microsecond]), tuple ([othhmm, other._second, other._microsecond])); + });}, + get _tzstr () {return __get__ (this, function (self, sep) { + if (typeof sep == 'undefined' || (sep != null && sep.hasOwnProperty ("__kwargtrans__"))) {; + var sep = ':'; + }; + var off = self.utcoffset (); + if (off !== null) { + if (off.days < 0) { + var sign = '-'; + var off = -(off); + } + else { + var sign = '+'; + } + var __left0__ = divmod (off, timedelta (__kwargtrans__ ({hours: 1}))); + var hh = __left0__ [0]; + var mm = __left0__ [1]; + assert (!(__mod__ (mm, timedelta (__kwargtrans__ ({minutes: 1})))), 'whole minute'); + var mm = Math.floor (mm / timedelta (__kwargtrans__ ({minutes: 1}))); + assert ((0 <= hh && hh < 24)); + var off = '{}{}{}{}'.format (sign, zfill (hh, 2), sep, zfill (mm, 2)); + } + return off; + });}, + get __repr__ () {return __get__ (this, function (self) { + if (self._microsecond != 0) { + var s = ', {}, {}'.format (self._second, self._microsecond); + } + else if (self._second != 0) { + var s = ', {}'.format (self._second); + } + else { + var s = ''; + } + var s = 'datetime.time({}, {}{})'.format (self._hour, self._minute, s); + if (self._tzinfo !== null) { + assert (s.__getslice__ (-(1), null, 1) == ')'); + var s = (s.__getslice__ (0, len (s) - 1, 1) + ', tzinfo={}'.format (self._tzinfo.__repr__ ())) + ')'; + } + return s; + });}, + get isoformat () {return __get__ (this, function (self) { + var s = _format_time (self._hour, self._minute, self._second, self._microsecond); + var tz = self._tzstr (); + if (tz) { + s += tz; + } + return s; + });}, + get __str__ () {return __get__ (this, function (self) { + return self.isoformat (); + });}, + get strftime () {return __get__ (this, function (self, fmt) { + var timetuple = tuple ([1900, 1, 1, self._hour, self._minute, self._second, 0, 1, -(1)]); + return _wrap_strftime (self, fmt, timetuple); + });}, + get __format__ () {return __get__ (this, function (self, fmt) { + if (!(isinstance (fmt, str))) { + var __except0__ = py_TypeError (__mod__ ('must be str, not %s', py_typeof (fmt).__name__)); + __except0__.__cause__ = null; + throw __except0__; + } + if (len (fmt) != 0) { + return self.strftime (fmt); + } + return str (self); + });}, + get utcoffset () {return __get__ (this, function (self) { + if (self._tzinfo === null) { + return null; + } + var offset = self._tzinfo.utcoffset (null); + _check_utc_offset ('utcoffset', offset); + return offset; + });}, + get tzname () {return __get__ (this, function (self) { + if (self._tzinfo === null) { + return null; + } + var py_name = self._tzinfo.tzname (null); + _check_tzname (py_name); + return py_name; + });}, + get dst () {return __get__ (this, function (self) { + if (self._tzinfo === null) { + return null; + } + var offset = self._tzinfo.dst (null); + _check_utc_offset ('dst', offset); + return offset; + });}, + get py_replace () {return __get__ (this, function (self, hour, minute, second, microsecond, tzinfo) { + if (typeof hour == 'undefined' || (hour != null && hour.hasOwnProperty ("__kwargtrans__"))) {; + var hour = null; + }; + if (typeof minute == 'undefined' || (minute != null && minute.hasOwnProperty ("__kwargtrans__"))) {; + var minute = null; + }; + if (typeof second == 'undefined' || (second != null && second.hasOwnProperty ("__kwargtrans__"))) {; + var second = null; + }; + if (typeof microsecond == 'undefined' || (microsecond != null && microsecond.hasOwnProperty ("__kwargtrans__"))) {; + var microsecond = null; + }; + if (typeof tzinfo == 'undefined' || (tzinfo != null && tzinfo.hasOwnProperty ("__kwargtrans__"))) {; + var tzinfo = true; + }; + if (arguments.length) { + var __ilastarg0__ = arguments.length - 1; + if (arguments [__ilastarg0__] && arguments [__ilastarg0__].hasOwnProperty ("__kwargtrans__")) { + var __allkwargs0__ = arguments [__ilastarg0__--]; + for (var __attrib0__ in __allkwargs0__) { + switch (__attrib0__) { + case 'self': var self = __allkwargs0__ [__attrib0__]; break; + case 'hour': var hour = __allkwargs0__ [__attrib0__]; break; + case 'minute': var minute = __allkwargs0__ [__attrib0__]; break; + case 'second': var second = __allkwargs0__ [__attrib0__]; break; + case 'microsecond': var microsecond = __allkwargs0__ [__attrib0__]; break; + case 'tzinfo': var tzinfo = __allkwargs0__ [__attrib0__]; break; + } + } + } + } + else { + } + if (hour === null) { + var hour = self.hour; + } + if (minute === null) { + var minute = self.minute; + } + if (second === null) { + var second = self.second; + } + if (microsecond === null) { + var microsecond = self.microsecond; + } + if (tzinfo === true) { + var tzinfo = self.tzinfo; + } + return time (hour, minute, second, microsecond, tzinfo); + });}, + resolution: timedelta (__kwargtrans__ ({microseconds: 1})) +}); +Object.defineProperty (time, 'tzinfo', property.call (time, time._get_tzinfo)); +Object.defineProperty (time, 'microsecond', property.call (time, time._get_microsecond)); +Object.defineProperty (time, 'second', property.call (time, time._get_second)); +Object.defineProperty (time, 'minute', property.call (time, time._get_minute)); +Object.defineProperty (time, 'hour', property.call (time, time._get_hour));; +export var _time_class = time; +export var _tm_min = time (0, 0, 0); +export var _tm_max = time (23, 59, 59, 999999); +Object.defineProperty (time, 'min', {get: function () {return _tm_min;}}) +Object.defineProperty (time, 'max', {get: function () {return _tm_max;}}) +export var datetime = __class__ ('datetime', [date], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self, year, month, day, hour, minute, second, microsecond, tzinfo) { + if (typeof month == 'undefined' || (month != null && month.hasOwnProperty ("__kwargtrans__"))) {; + var month = null; + }; + if (typeof day == 'undefined' || (day != null && day.hasOwnProperty ("__kwargtrans__"))) {; + var day = null; + }; + if (typeof hour == 'undefined' || (hour != null && hour.hasOwnProperty ("__kwargtrans__"))) {; + var hour = 0; + }; + if (typeof minute == 'undefined' || (minute != null && minute.hasOwnProperty ("__kwargtrans__"))) {; + var minute = 0; + }; + if (typeof second == 'undefined' || (second != null && second.hasOwnProperty ("__kwargtrans__"))) {; + var second = 0; + }; + if (typeof microsecond == 'undefined' || (microsecond != null && microsecond.hasOwnProperty ("__kwargtrans__"))) {; + var microsecond = 0; + }; + if (typeof tzinfo == 'undefined' || (tzinfo != null && tzinfo.hasOwnProperty ("__kwargtrans__"))) {; + var tzinfo = null; + }; + if (arguments.length) { + var __ilastarg0__ = arguments.length - 1; + if (arguments [__ilastarg0__] && arguments [__ilastarg0__].hasOwnProperty ("__kwargtrans__")) { + var __allkwargs0__ = arguments [__ilastarg0__--]; + for (var __attrib0__ in __allkwargs0__) { + switch (__attrib0__) { + case 'self': var self = __allkwargs0__ [__attrib0__]; break; + case 'year': var year = __allkwargs0__ [__attrib0__]; break; + case 'month': var month = __allkwargs0__ [__attrib0__]; break; + case 'day': var day = __allkwargs0__ [__attrib0__]; break; + case 'hour': var hour = __allkwargs0__ [__attrib0__]; break; + case 'minute': var minute = __allkwargs0__ [__attrib0__]; break; + case 'second': var second = __allkwargs0__ [__attrib0__]; break; + case 'microsecond': var microsecond = __allkwargs0__ [__attrib0__]; break; + case 'tzinfo': var tzinfo = __allkwargs0__ [__attrib0__]; break; + } + } + } + } + else { + } + var __left0__ = _check_date_fields (year, month, day); + var year = __left0__ [0]; + var month = __left0__ [1]; + var day = __left0__ [2]; + var __left0__ = _check_time_fields (hour, minute, second, microsecond); + var hour = __left0__ [0]; + var minute = __left0__ [1]; + var second = __left0__ [2]; + var microsecond = __left0__ [3]; + _check_tzinfo_arg (tzinfo); + self._year = year; + self._month = month; + self._day = day; + self._hour = hour; + self._minute = minute; + self._second = second; + self._microsecond = microsecond; + self._tzinfo = tzinfo; + });}, + get _get_hour () {return __get__ (this, function (self) { + return self._hour; + });}, + get _get_minute () {return __get__ (this, function (self) { + return self._minute; + });}, + get _get_second () {return __get__ (this, function (self) { + return self._second; + });}, + get _get_microsecond () {return __get__ (this, function (self) { + return self._microsecond; + });}, + get _get_tzinfo () {return __get__ (this, function (self) { + return self._tzinfo; + });}, + get _fromtimestamp () {return __getcm__ (this, function (cls, t, utc, tz) { + var __left0__ = _math.modf (t); + var frac = __left0__ [0]; + var t = __left0__ [1]; + var us = round (frac * 1000000.0); + if (us >= 1000000) { + t++; + us -= 1000000; + } + else if (us < 0) { + t--; + us += 1000000; + } + var converter = (utc ? _time.gmtime : _time.localtime); + var __left0__ = converter (t); + var y = __left0__ [0]; + var m = __left0__ [1]; + var d = __left0__ [2]; + var hh = __left0__ [3]; + var mm = __left0__ [4]; + var ss = __left0__ [5]; + var weekday = __left0__ [6]; + var jday = __left0__ [7]; + var dst = __left0__ [8]; + var ss = min (ss, 59); + return cls (y, m, d, hh, mm, ss, us, tz); + });}, + get fromtimestamp () {return __getcm__ (this, function (cls, t, tz) { + if (typeof tz == 'undefined' || (tz != null && tz.hasOwnProperty ("__kwargtrans__"))) {; + var tz = null; + }; + _check_tzinfo_arg (tz); + var result = cls._fromtimestamp (t, tz !== null, tz); + if (tz !== null) { + var result = tz.fromutc (result); + } + return result; + });}, + get utcfromtimestamp () {return __getcm__ (this, function (cls, t) { + return cls._fromtimestamp (t, true, null); + });}, + get now () {return __getcm__ (this, function (cls, tz) { + if (typeof tz == 'undefined' || (tz != null && tz.hasOwnProperty ("__kwargtrans__"))) {; + var tz = null; + }; + var t = _time.time (); + return cls.fromtimestamp (t, tz); + });}, + get utcnow () {return __getcm__ (this, function (cls) { + var t = _time.time (); + return cls.utcfromtimestamp (t); + });}, + get combine () {return __getcm__ (this, function (cls, date, time) { + if (!(isinstance (date, _date_class))) { + var __except0__ = py_TypeError ('date argument must be a date instance'); + __except0__.__cause__ = null; + throw __except0__; + } + if (!(isinstance (time, _time_class))) { + var __except0__ = py_TypeError ('time argument must be a time instance'); + __except0__.__cause__ = null; + throw __except0__; + } + return cls (date.year, date.month, date.day, time.hour, time.minute, time.second, time.microsecond, time.tzinfo); + });}, + get timetuple () {return __get__ (this, function (self) { + var dst = self.dst (); + if (dst === null) { + var dst = -(1); + } + else if (dst) { + var dst = 1; + } + else { + var dst = 0; + } + return _build_struct_time (self.year, self.month, self.day, self.hour, self.minute, self.second, dst); + });}, + get timestamp () {return __get__ (this, function (self) { + if (self._tzinfo === null) { + return _time.mktime (tuple ([self.year, self.month, self.day, self.hour, self.minute, self.second, -(1), -(1), -(1)])) + self.microsecond / 1000000.0; + } + else { + return (function () { + var __accu0__ = __sub__ (self, _EPOCH); + return __call__ (__accu0__.total_seconds, __accu0__); + }) (); + } + });}, + get utctimetuple () {return __get__ (this, function (self) { + var offset = self.utcoffset (); + if (offset) { + var self = __call__ (__isub__, null, self, offset); + } + var __left0__ = tuple ([self.year, self.month, self.day]); + var y = __left0__ [0]; + var m = __left0__ [1]; + var d = __left0__ [2]; + var __left0__ = tuple ([self.hour, self.minute, self.second]); + var hh = __left0__ [0]; + var mm = __left0__ [1]; + var ss = __left0__ [2]; + return _build_struct_time (y, m, d, hh, mm, ss, 0); + });}, + get date () {return __get__ (this, function (self) { + return date (self._year, self._month, self._day); + });}, + get time () {return __get__ (this, function (self) { + return time (self.hour, self.minute, self.second, self.microsecond); + });}, + get timetz () {return __get__ (this, function (self) { + return time (self.hour, self.minute, self.second, self.microsecond, self._tzinfo); + });}, + get py_replace () {return __get__ (this, function (self, year, month, day, hour, minute, second, microsecond, tzinfo) { + if (typeof year == 'undefined' || (year != null && year.hasOwnProperty ("__kwargtrans__"))) {; + var year = null; + }; + if (typeof month == 'undefined' || (month != null && month.hasOwnProperty ("__kwargtrans__"))) {; + var month = null; + }; + if (typeof day == 'undefined' || (day != null && day.hasOwnProperty ("__kwargtrans__"))) {; + var day = null; + }; + if (typeof hour == 'undefined' || (hour != null && hour.hasOwnProperty ("__kwargtrans__"))) {; + var hour = null; + }; + if (typeof minute == 'undefined' || (minute != null && minute.hasOwnProperty ("__kwargtrans__"))) {; + var minute = null; + }; + if (typeof second == 'undefined' || (second != null && second.hasOwnProperty ("__kwargtrans__"))) {; + var second = null; + }; + if (typeof microsecond == 'undefined' || (microsecond != null && microsecond.hasOwnProperty ("__kwargtrans__"))) {; + var microsecond = null; + }; + if (typeof tzinfo == 'undefined' || (tzinfo != null && tzinfo.hasOwnProperty ("__kwargtrans__"))) {; + var tzinfo = true; + }; + if (arguments.length) { + var __ilastarg0__ = arguments.length - 1; + if (arguments [__ilastarg0__] && arguments [__ilastarg0__].hasOwnProperty ("__kwargtrans__")) { + var __allkwargs0__ = arguments [__ilastarg0__--]; + for (var __attrib0__ in __allkwargs0__) { + switch (__attrib0__) { + case 'self': var self = __allkwargs0__ [__attrib0__]; break; + case 'year': var year = __allkwargs0__ [__attrib0__]; break; + case 'month': var month = __allkwargs0__ [__attrib0__]; break; + case 'day': var day = __allkwargs0__ [__attrib0__]; break; + case 'hour': var hour = __allkwargs0__ [__attrib0__]; break; + case 'minute': var minute = __allkwargs0__ [__attrib0__]; break; + case 'second': var second = __allkwargs0__ [__attrib0__]; break; + case 'microsecond': var microsecond = __allkwargs0__ [__attrib0__]; break; + case 'tzinfo': var tzinfo = __allkwargs0__ [__attrib0__]; break; + } + } + } + } + else { + } + if (year === null) { + var year = self.year; + } + if (month === null) { + var month = self.month; + } + if (day === null) { + var day = self.day; + } + if (hour === null) { + var hour = self.hour; + } + if (minute === null) { + var minute = self.minute; + } + if (second === null) { + var second = self.second; + } + if (microsecond === null) { + var microsecond = self.microsecond; + } + if (tzinfo === true) { + var tzinfo = self.tzinfo; + } + return datetime (year, month, day, hour, minute, second, microsecond, tzinfo); + });}, + get astimezone () {return __get__ (this, function (self, tz) { + if (typeof tz == 'undefined' || (tz != null && tz.hasOwnProperty ("__kwargtrans__"))) {; + var tz = null; + }; + if (arguments.length) { + var __ilastarg0__ = arguments.length - 1; + if (arguments [__ilastarg0__] && arguments [__ilastarg0__].hasOwnProperty ("__kwargtrans__")) { + var __allkwargs0__ = arguments [__ilastarg0__--]; + for (var __attrib0__ in __allkwargs0__) { + switch (__attrib0__) { + case 'self': var self = __allkwargs0__ [__attrib0__]; break; + case 'tz': var tz = __allkwargs0__ [__attrib0__]; break; + } + } + } + } + else { + } + if (tz === null) { + if (self.tzinfo === null) { + var __except0__ = ValueError ('astimezone() requires an aware datetime'); + __except0__.__cause__ = null; + throw __except0__; + } + var ts = __floordiv__ ((__sub__ (self, _EPOCH)), __call__ (timedelta, null, __kwargtrans__ ({seconds: 1}))); + var localtm = _time.localtime (ts); + var local = datetime (...localtm.__getslice__ (0, 6, 1)); + if (len (localtm) > 9) { + var gmtoff = localtm [10]; + var zone = localtm [9]; + var tz = timezone (timedelta (__kwargtrans__ ({seconds: gmtoff})), zone); + } + else { + var delta = __sub__ (local, __call__ (datetime, null, ...__getslice__ ((function () { + var __accu0__ = _time; + return __call__ (__accu0__.gmtime, __accu0__, ts); + }) (), 0, 6, 1))); + var dst = _time.daylight && __gt__ (__getitem__ (localtm, 8), 0); + var gmtoff = __neg__ ((dst ? _time.altzone : _time.timezone)); + if (__eq__ (delta, __call__ (timedelta, null, __kwargtrans__ ({seconds: gmtoff})))) { + var tz = __call__ (timezone, null, delta, __getitem__ (_time.tzname, dst)); + } + else { + var tz = __call__ (timezone, null, delta); + } + } + } + else if (!(isinstance (tz, tzinfo))) { + var __except0__ = py_TypeError ('tz argument must be an instance of tzinfo'); + __except0__.__cause__ = null; + throw __except0__; + } + var mytz = self.tzinfo; + if (mytz === null) { + var __except0__ = ValueError ('astimezone() requires an aware datetime'); + __except0__.__cause__ = null; + throw __except0__; + } + if (tz === mytz) { + return self; + } + var myoffset = self.utcoffset (); + if (myoffset === null) { + var __except0__ = ValueError ('astimezone() requires an aware datetime'); + __except0__.__cause__ = null; + throw __except0__; + } + var utc = (function () { + var __accu0__ = __sub__ (self, myoffset); + return __call__ (__accu0__.py_replace, __accu0__, __kwargtrans__ ({tzinfo: tz})); + }) (); + return tz.fromutc (utc); + });}, + get ctime () {return __get__ (this, function (self) { + var weekday = __mod__ (self.toordinal (), 7) || 7; + return '{} {} {} {}:{}:{} {}'.format (_DAYNAMES [weekday], _MONTHNAMES [self._month], zfill (self._day, 2), zfill (self._hour, 2), zfill (self._minute, 2), zfill (self._second, 2), zfill (self._year, 4)); + });}, + get isoformat () {return __get__ (this, function (self, sep) { + if (typeof sep == 'undefined' || (sep != null && sep.hasOwnProperty ("__kwargtrans__"))) {; + var sep = 'T'; + }; + var s = '{}-{}-{}{}'.format (zfill (self._year, 4), zfill (self._month, 2), zfill (self._day, 2), sep) + _format_time (self._hour, self._minute, self._second, self._microsecond); + var off = self.utcoffset (); + if (off !== null) { + if (off.days < 0) { + var sign = '-'; + var off = -(off); + } + else { + var sign = '+'; + } + var __left0__ = divmod (off, timedelta (__kwargtrans__ ({hours: 1}))); + var hh = __left0__ [0]; + var mm = __left0__ [1]; + assert (!(__mod__ (mm, timedelta (__kwargtrans__ ({minutes: 1})))), 'whole minute'); + var mm = Math.floor (mm / timedelta (__kwargtrans__ ({minutes: 1}))); + s += '{}{}:{}'.format (sign, zfill (hh, 2), zfill (mm, 2)); + } + return s; + });}, + get __repr__ () {return __get__ (this, function (self) { + var L = [self._year, self._month, self._day, self._hour, self._minute, self._second, self._microsecond]; + if (L [len (L) - 1] == 0) { + L.py_pop (); + } + if (L [len (L) - 1] == 0) { + L.py_pop (); + } + var s = 'datetime.datetime({})'.format (', '.join (map (str, L))); + if (self._tzinfo !== null) { + assert (s.__getslice__ (-(1), null, 1) == ')'); + var s = (s.__getslice__ (0, len (s) - 1, 1) + ', tzinfo={}'.format (self._tzinfo.__repr__ ())) + ')'; + } + return s; + });}, + get __str__ () {return __get__ (this, function (self) { + return self.isoformat (__kwargtrans__ ({sep: ' '})); + });}, + get strptime () {return __getcm__ (this, function (cls, date_string, format) { + return cls (..._time.strptime (date_string, format).__getslice__ (0, 6, 1)); + });}, + get utcoffset () {return __get__ (this, function (self) { + if (self._tzinfo === null) { + return null; + } + var offset = self._tzinfo.utcoffset (self); + _check_utc_offset ('utcoffset', offset); + return offset; + });}, + get tzname () {return __get__ (this, function (self) { + if (self._tzinfo === null) { + return null; + } + var py_name = self._tzinfo.tzname (self); + _check_tzname (py_name); + return py_name; + });}, + get dst () {return __get__ (this, function (self) { + if (self._tzinfo === null) { + return null; + } + var offset = self._tzinfo.dst (self); + _check_utc_offset ('dst', offset); + return offset; + });}, + get __eq__ () {return __get__ (this, function (self, other) { + if (isinstance (other, datetime)) { + return self._cmp (other, __kwargtrans__ ({allow_mixed: true})) == 0; + } + else if (!(isinstance (other, date))) { + return NotImplemented; + } + else { + return false; + } + });}, + get __le__ () {return __get__ (this, function (self, other) { + if (isinstance (other, datetime)) { + return self._cmp (other) <= 0; + } + else if (!(isinstance (other, date))) { + return NotImplemented; + } + else { + _cmperror (self, other); + } + });}, + get __lt__ () {return __get__ (this, function (self, other) { + if (isinstance (other, datetime)) { + return self._cmp (other) < 0; + } + else if (!(isinstance (other, date))) { + return NotImplemented; + } + else { + _cmperror (self, other); + } + });}, + get __ge__ () {return __get__ (this, function (self, other) { + if (isinstance (other, datetime)) { + return self._cmp (other) >= 0; + } + else if (!(isinstance (other, date))) { + return NotImplemented; + } + else { + _cmperror (self, other); + } + });}, + get __gt__ () {return __get__ (this, function (self, other) { + if (isinstance (other, datetime)) { + return self._cmp (other) > 0; + } + else if (!(isinstance (other, date))) { + return NotImplemented; + } + else { + _cmperror (self, other); + } + });}, + get _cmp () {return __get__ (this, function (self, other, allow_mixed) { + if (typeof allow_mixed == 'undefined' || (allow_mixed != null && allow_mixed.hasOwnProperty ("__kwargtrans__"))) {; + var allow_mixed = false; + }; + assert (isinstance (other, datetime)); + var mytz = self._tzinfo; + var ottz = other._tzinfo; + var __left0__ = null; + var myoff = __left0__; + var otoff = __left0__; + if (mytz === ottz) { + var base_compare = true; + } + else { + var myoff = self.utcoffset (); + var otoff = other.utcoffset (); + var base_compare = myoff == otoff; + } + if (base_compare) { + var s1 = '{}{}{}{}{}{}{}'.format (zfill (self._year, 4), zfill (self._month, 2), zfill (self._day, 2), zfill (self._hour, 2), zfill (self._minute, 2), zfill (self._second, 2), zfill (self._microsecond, 6)); + var s2 = '{}{}{}{}{}{}{}'.format (zfill (other._year, 4), zfill (other._month, 2), zfill (other._day, 2), zfill (other._hour, 2), zfill (other._minute, 2), zfill (other._second, 2), zfill (other._microsecond, 6)); + return _cmp (s1, s2); + } + if (myoff === null || otoff === null) { + if (allow_mixed) { + return 2; + } + else { + var __except0__ = py_TypeError ('cannot compare naive and aware datetimes'); + __except0__.__cause__ = null; + throw __except0__; + } + } + var diff = __sub__ (self, other); + if (diff.days < 0) { + return -(1); + } + return diff && 1 || 0; + });}, + get __add__ () {return __get__ (this, function (self, other) { + if (!(isinstance (other, timedelta))) { + return NotImplemented; + } + var delta = timedelta (self.toordinal (), __kwargtrans__ ({hours: self._hour, minutes: self._minute, seconds: self._second, microseconds: self._microsecond})); + var delta = __call__ (__iadd__, null, delta, other); + var __left0__ = divmod (delta.seconds, 3600); + var hour = __left0__ [0]; + var rem = __left0__ [1]; + var __left0__ = divmod (rem, 60); + var minute = __left0__ [0]; + var second = __left0__ [1]; + if ((0 < delta.days && delta.days <= _MAXORDINAL)) { + return datetime.combine (date.fromordinal (delta.days), time (hour, minute, second, delta.microseconds, __kwargtrans__ ({tzinfo: self._tzinfo}))); + } + var __except0__ = OverflowError ('result out of range'); + __except0__.__cause__ = null; + throw __except0__; + });}, + get __radd__ () {return __get__ (this, function (self, other) { + return self.__add__ (other); + });}, + get __sub__ () {return __get__ (this, function (self, other) { + if (!(isinstance (other, datetime))) { + if (isinstance (other, timedelta)) { + return __add__ (self, __neg__ (other)); + } + return NotImplemented; + } + var days1 = self.toordinal (); + var days2 = other.toordinal (); + var secs1 = (self._second + self._minute * 60) + self._hour * 3600; + var secs2 = (other._second + other._minute * 60) + other._hour * 3600; + var base = timedelta (days1 - days2, secs1 - secs2, self._microsecond - other._microsecond); + if (self._tzinfo === other._tzinfo) { + return base; + } + var myoff = self.utcoffset (); + var otoff = other.utcoffset (); + if (myoff == otoff) { + return base; + } + if (myoff === null || otoff === null) { + var __except0__ = py_TypeError ('cannot mix naive and timezone-aware time'); + __except0__.__cause__ = null; + throw __except0__; + } + return __sub__ (__add__ (base, otoff), myoff); + });}, + resolution: timedelta (__kwargtrans__ ({microseconds: 1})) +}); +Object.defineProperty (datetime, 'tzinfo', property.call (datetime, datetime._get_tzinfo)); +Object.defineProperty (datetime, 'microsecond', property.call (datetime, datetime._get_microsecond)); +Object.defineProperty (datetime, 'second', property.call (datetime, datetime._get_second)); +Object.defineProperty (datetime, 'minute', property.call (datetime, datetime._get_minute)); +Object.defineProperty (datetime, 'hour', property.call (datetime, datetime._get_hour));; +export var _dt_min = datetime (1, 1, 1); +export var _dt_max = datetime (9999, 12, 31, 23, 59, 59, 999999); +Object.defineProperty (datetime, 'min', {get: function () {return _dt_min;}}) +Object.defineProperty (datetime, 'max', {get: function () {return _dt_max;}}) +export var _isoweek1monday = function (year) { + var THURSDAY = 3; + var firstday = _ymd2ord (year, 1, 1); + var firstweekday = __mod__ (firstday + 6, 7); + var week1monday = firstday - firstweekday; + if (firstweekday > THURSDAY) { + week1monday += 7; + } + return week1monday; +}; +export var _Omitted = '@#$^&$^'; +export var timezone = __class__ ('timezone', [tzinfo], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self, offset, py_name) { + if (typeof py_name == 'undefined' || (py_name != null && py_name.hasOwnProperty ("__kwargtrans__"))) {; + var py_name = _Omitted; + }; + if (arguments.length) { + var __ilastarg0__ = arguments.length - 1; + if (arguments [__ilastarg0__] && arguments [__ilastarg0__].hasOwnProperty ("__kwargtrans__")) { + var __allkwargs0__ = arguments [__ilastarg0__--]; + for (var __attrib0__ in __allkwargs0__) { + switch (__attrib0__) { + case 'self': var self = __allkwargs0__ [__attrib0__]; break; + case 'offset': var offset = __allkwargs0__ [__attrib0__]; break; + case 'py_name': var py_name = __allkwargs0__ [__attrib0__]; break; + } + } + } + } + else { + } + if (!(isinstance (offset, timedelta))) { + var __except0__ = py_TypeError ('offset must be a timedelta'); + __except0__.__cause__ = null; + throw __except0__; + } + if (py_name === _Omitted) { + if (!(offset)) { + var offset = self.utc; + } + var py_name = null; + } + else if (!(isinstance (py_name, str))) { + var __except0__ = py_TypeError ('name must be a string'); + __except0__.__cause__ = null; + throw __except0__; + } + if (!((__le__ (self._minoffset, offset) && __le__ (offset, self._maxoffset)))) { + var __except0__ = __call__ (ValueError, null, 'offset must be a timedelta strictly between -timedelta(hours=24) and timedelta(hours=24).'); + __except0__.__cause__ = null; + throw __except0__; + } + if (offset.microseconds != 0 || __mod__ (offset.seconds, 60) != 0) { + var __except0__ = ValueError ('offset must be a timedelta representing a whole number of minutes'); + __except0__.__cause__ = null; + throw __except0__; + } + self._offset = offset; + self._name = py_name; + });}, + get _create () {return __getcm__ (this, function (cls, offset, py_name) { + if (typeof py_name == 'undefined' || (py_name != null && py_name.hasOwnProperty ("__kwargtrans__"))) {; + var py_name = _Omitted; + }; + if (arguments.length) { + var __ilastarg0__ = arguments.length - 1; + if (arguments [__ilastarg0__] && arguments [__ilastarg0__].hasOwnProperty ("__kwargtrans__")) { + var __allkwargs0__ = arguments [__ilastarg0__--]; + for (var __attrib0__ in __allkwargs0__) { + switch (__attrib0__) { + case 'cls': var cls = __allkwargs0__ [__attrib0__]; break; + case 'offset': var offset = __allkwargs0__ [__attrib0__]; break; + case 'py_name': var py_name = __allkwargs0__ [__attrib0__]; break; + } + } + } + } + else { + } + return cls (offset, py_name); + });}, + get __eq__ () {return __get__ (this, function (self, other) { + if (py_typeof (other) != timezone) { + return false; + } + return self._offset == other._offset; + });}, + get __repr__ () {return __get__ (this, function (self) { + if (self === self.utc) { + return 'datetime.timezone.utc'; + } + if (self._name === null) { + return 'datetime.timezone({})'.format (self._offset.__repr__ ()); + } + return 'datetime.timezone({}, {})'.format (self._offset.__repr__ (), self._name.__repr__ ()); + });}, + get __str__ () {return __get__ (this, function (self) { + return self.tzname (null); + });}, + get utcoffset () {return __get__ (this, function (self, dt) { + if (isinstance (dt, datetime) || dt === null) { + return self._offset; + } + var __except0__ = py_TypeError ('utcoffset() argument must be a datetime instance or None'); + __except0__.__cause__ = null; + throw __except0__; + });}, + get tzname () {return __get__ (this, function (self, dt) { + if (isinstance (dt, datetime) || dt === null) { + if (self._name === null) { + return self._name_from_offset (self._offset); + } + return self._name; + } + var __except0__ = py_TypeError ('tzname() argument must be a datetime instance or None'); + __except0__.__cause__ = null; + throw __except0__; + });}, + get dst () {return __get__ (this, function (self, dt) { + if (isinstance (dt, datetime) || dt === null) { + return null; + } + var __except0__ = py_TypeError ('dst() argument must be a datetime instance or None'); + __except0__.__cause__ = null; + throw __except0__; + });}, + get fromutc () {return __get__ (this, function (self, dt) { + if (isinstance (dt, datetime)) { + if (dt.tzinfo !== self) { + var __except0__ = ValueError ('fromutc: dt.tzinfo is not self'); + __except0__.__cause__ = null; + throw __except0__; + } + return __add__ (dt, self._offset); + } + var __except0__ = py_TypeError ('fromutc() argument must be a datetime instance or None'); + __except0__.__cause__ = null; + throw __except0__; + });}, + _maxoffset: timedelta (__kwargtrans__ ({hours: 23, minutes: 59})), + _minoffset: __neg__ (__call__ (timedelta, null, __kwargtrans__ ({hours: 23, minutes: 59}))), + get _name_from_offset () {return function (delta) { + if (__lt__ (delta, __call__ (timedelta, null, 0))) { + var sign = '-'; + var delta = __neg__ (delta); + } + else { + var sign = '+'; + } + var __left0__ = __call__ (divmod, null, delta, __call__ (timedelta, null, __kwargtrans__ ({hours: 1}))); + var hours = __left0__ [0]; + var rest = __left0__ [1]; + var minutes = __floordiv__ (rest, __call__ (timedelta, null, __kwargtrans__ ({minutes: 1}))); + return 'UTC{}{}:{}'.format (sign, zfill (hours, 2), zfill (minutes, 2)); + };} +}); +export var _tz_utc = timezone._create (timedelta (0)); +export var _tz_min = timezone._create (timezone._minoffset); +export var _tz_max = timezone._create (timezone._maxoffset); +Object.defineProperty (timezone, 'utc', {get: function () {return _tz_utc;}}) +Object.defineProperty (timezone, 'min', {get: function () {return _tz_min;}}) +Object.defineProperty (timezone, 'max', {get: function () {return _tz_max;}}) +export var _EPOCH = datetime (1970, 1, 1, __kwargtrans__ ({tzinfo: timezone.utc})); + +//# sourceMappingURL=datetime.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/datetime.tree b/transcrypt/development/automated_tests/transcrypt/__target__38/datetime.tree new file mode 100644 index 000000000..af8e253cb --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/datetime.tree @@ -0,0 +1,19447 @@ +file: Module + body: list + element: Expr + value: Constant + value: str = Concrete date/time and related types. + +See http://www.iana.org/time-zones/repository/tz-link.html for +time zone and DST data sources. + + kind: NoneType = None + element: Import + names: list + element: alias + name: str = time + asname: str = _time + element: Import + names: list + element: alias + name: str = math + asname: str = _math + element: ImportFrom + module: str = org.transcrypt.stubs.browser + names: list + element: alias + name: str = __envir__ + asname: NoneType = None + level: int = 0 + element: FunctionDef + name: str = zfill + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = s + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = c + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Name + id: str = s + ctx: Store + value: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = s + ctx: Load + keywords: list + type_comment: NoneType = None + element: If + test: Compare + left: Call + func: Name + id: str = len + ctx: Load + args: list + element: Name + id: str = s + ctx: Load + keywords: list + ops: list + element: Lt + comparators: list + element: Name + id: str = c + ctx: Load + body: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = opov + kind: NoneType = None + keywords: list + element: Return + value: BinOp + left: BinOp + left: Constant + value: str = 0 + kind: NoneType = None + op: Mult + right: BinOp + left: Name + id: str = c + ctx: Load + op: Sub + right: Call + func: Name + id: str = len + ctx: Load + args: list + element: Name + id: str = s + ctx: Load + keywords: list + op: Add + right: Name + id: str = s + ctx: Load + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = noopov + kind: NoneType = None + keywords: list + orelse: list + element: Return + value: Name + id: str = s + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = rjust + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = s + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = c + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Name + id: str = s + ctx: Store + value: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = s + ctx: Load + keywords: list + type_comment: NoneType = None + element: If + test: Compare + left: Call + func: Name + id: str = len + ctx: Load + args: list + element: Name + id: str = s + ctx: Load + keywords: list + ops: list + element: Lt + comparators: list + element: Name + id: str = c + ctx: Load + body: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = opov + kind: NoneType = None + keywords: list + element: Return + value: BinOp + left: BinOp + left: Constant + value: str = + kind: NoneType = None + op: Mult + right: BinOp + left: Name + id: str = c + ctx: Load + op: Sub + right: Call + func: Name + id: str = len + ctx: Load + args: list + element: Name + id: str = s + ctx: Load + keywords: list + op: Add + right: Name + id: str = s + ctx: Load + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = noopov + kind: NoneType = None + keywords: list + orelse: list + element: Return + value: Name + id: str = s + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = _cmp + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = y + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: IfExp + test: Compare + left: Name + id: str = x + ctx: Load + ops: list + element: Eq + comparators: list + element: Name + id: str = y + ctx: Load + body: Constant + value: int = 0 + kind: NoneType = None + orelse: IfExp + test: Compare + left: Name + id: str = x + ctx: Load + ops: list + element: Gt + comparators: list + element: Name + id: str = y + ctx: Load + body: Constant + value: int = 1 + kind: NoneType = None + orelse: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = MINYEAR + ctx: Store + value: Constant + value: int = 1 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = MAXYEAR + ctx: Store + value: Constant + value: int = 9999 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = _MAXORDINAL + ctx: Store + value: Constant + value: int = 3652059 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = _DAYS_IN_MONTH + ctx: Store + value: List + elts: list + element: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 31 + kind: NoneType = None + element: Constant + value: int = 28 + kind: NoneType = None + element: Constant + value: int = 31 + kind: NoneType = None + element: Constant + value: int = 30 + kind: NoneType = None + element: Constant + value: int = 31 + kind: NoneType = None + element: Constant + value: int = 30 + kind: NoneType = None + element: Constant + value: int = 31 + kind: NoneType = None + element: Constant + value: int = 31 + kind: NoneType = None + element: Constant + value: int = 30 + kind: NoneType = None + element: Constant + value: int = 31 + kind: NoneType = None + element: Constant + value: int = 30 + kind: NoneType = None + element: Constant + value: int = 31 + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = _DAYS_BEFORE_MONTH + ctx: Store + value: List + elts: list + element: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = dbm + ctx: Store + value: Constant + value: int = 0 + kind: NoneType = None + type_comment: NoneType = None + element: For + target: Name + id: str = dim + ctx: Store + iter: Subscript + value: Name + id: str = _DAYS_IN_MONTH + ctx: Load + slice: Slice + lower: Constant + value: int = 1 + kind: NoneType = None + upper: NoneType = None + step: NoneType = None + ctx: Load + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = _DAYS_BEFORE_MONTH + ctx: Load + attr: str = append + ctx: Load + args: list + element: Name + id: str = dbm + ctx: Load + keywords: list + element: AugAssign + target: Name + id: str = dbm + ctx: Store + op: Add + value: Name + id: str = dim + ctx: Load + orelse: list + type_comment: NoneType = None + element: Delete + targets: list + element: Name + id: str = dbm + ctx: Del + element: Name + id: str = dim + ctx: Del + element: FunctionDef + name: str = _is_leap + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = year + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = year -> 1 if leap year, else 0. + kind: NoneType = None + element: Return + value: BoolOp + op: And + values: list + element: Compare + left: BinOp + left: Name + id: str = year + ctx: Load + op: Mod + right: Constant + value: int = 4 + kind: NoneType = None + ops: list + element: Eq + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + element: BoolOp + op: Or + values: list + element: Compare + left: BinOp + left: Name + id: str = year + ctx: Load + op: Mod + right: Constant + value: int = 100 + kind: NoneType = None + ops: list + element: NotEq + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + element: Compare + left: BinOp + left: Name + id: str = year + ctx: Load + op: Mod + right: Constant + value: int = 400 + kind: NoneType = None + ops: list + element: Eq + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = _days_before_year + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = year + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = year -> number of days before January 1st of year. + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = y + ctx: Store + value: BinOp + left: Name + id: str = year + ctx: Load + op: Sub + right: Constant + value: int = 1 + kind: NoneType = None + type_comment: NoneType = None + element: Return + value: BinOp + left: BinOp + left: BinOp + left: BinOp + left: Name + id: str = y + ctx: Load + op: Mult + right: Constant + value: int = 365 + kind: NoneType = None + op: Add + right: BinOp + left: Name + id: str = y + ctx: Load + op: FloorDiv + right: Constant + value: int = 4 + kind: NoneType = None + op: Sub + right: BinOp + left: Name + id: str = y + ctx: Load + op: FloorDiv + right: Constant + value: int = 100 + kind: NoneType = None + op: Add + right: BinOp + left: Name + id: str = y + ctx: Load + op: FloorDiv + right: Constant + value: int = 400 + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = _days_in_month + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = year + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = month + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = year, month -> number of days in that month in that year. + kind: NoneType = None + element: Assert + test: Compare + left: Constant + value: int = 1 + kind: NoneType = None + ops: list + element: LtE + element: LtE + comparators: list + element: Name + id: str = month + ctx: Load + element: Constant + value: int = 12 + kind: NoneType = None + msg: Name + id: str = month + ctx: Load + element: If + test: BoolOp + op: And + values: list + element: Compare + left: Name + id: str = month + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: int = 2 + kind: NoneType = None + element: Call + func: Name + id: str = _is_leap + ctx: Load + args: list + element: Name + id: str = year + ctx: Load + keywords: list + body: list + element: Return + value: Constant + value: int = 29 + kind: NoneType = None + orelse: list + element: Return + value: Subscript + value: Name + id: str = _DAYS_IN_MONTH + ctx: Load + slice: Index + value: Name + id: str = month + ctx: Load + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = _days_before_month + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = year + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = month + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = year, month -> number of days in year preceding first day of month. + kind: NoneType = None + element: Assert + test: Compare + left: Constant + value: int = 1 + kind: NoneType = None + ops: list + element: LtE + element: LtE + comparators: list + element: Name + id: str = month + ctx: Load + element: Constant + value: int = 12 + kind: NoneType = None + msg: Constant + value: str = month must be in 1..12 + kind: NoneType = None + element: Return + value: BinOp + left: Subscript + value: Name + id: str = _DAYS_BEFORE_MONTH + ctx: Load + slice: Index + value: Name + id: str = month + ctx: Load + ctx: Load + op: Add + right: BoolOp + op: And + values: list + element: Compare + left: Name + id: str = month + ctx: Load + ops: list + element: Gt + comparators: list + element: Constant + value: int = 2 + kind: NoneType = None + element: Call + func: Name + id: str = _is_leap + ctx: Load + args: list + element: Name + id: str = year + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = _ymd2ord + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = year + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = month + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = day + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = year, month, day -> ordinal, considering 01-Jan-0001 as day 1. + kind: NoneType = None + element: Assert + test: Compare + left: Constant + value: int = 1 + kind: NoneType = None + ops: list + element: LtE + element: LtE + comparators: list + element: Name + id: str = month + ctx: Load + element: Constant + value: int = 12 + kind: NoneType = None + msg: Constant + value: str = month must be in 1..12 + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = dim + ctx: Store + value: Call + func: Name + id: str = _days_in_month + ctx: Load + args: list + element: Name + id: str = year + ctx: Load + element: Name + id: str = month + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assert + test: Compare + left: Constant + value: int = 1 + kind: NoneType = None + ops: list + element: LtE + element: LtE + comparators: list + element: Name + id: str = day + ctx: Load + element: Name + id: str = dim + ctx: Load + msg: BinOp + left: Constant + value: str = day must be in 1..%d + kind: NoneType = None + op: Mod + right: Name + id: str = dim + ctx: Load + element: Return + value: BinOp + left: BinOp + left: Call + func: Name + id: str = _days_before_year + ctx: Load + args: list + element: Name + id: str = year + ctx: Load + keywords: list + op: Add + right: Call + func: Name + id: str = _days_before_month + ctx: Load + args: list + element: Name + id: str = year + ctx: Load + element: Name + id: str = month + ctx: Load + keywords: list + op: Add + right: Name + id: str = day + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = _DI400Y + ctx: Store + value: Call + func: Name + id: str = _days_before_year + ctx: Load + args: list + element: Constant + value: int = 401 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = _DI100Y + ctx: Store + value: Call + func: Name + id: str = _days_before_year + ctx: Load + args: list + element: Constant + value: int = 101 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = _DI4Y + ctx: Store + value: Call + func: Name + id: str = _days_before_year + ctx: Load + args: list + element: Constant + value: int = 5 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Assert + test: Compare + left: Name + id: str = _DI4Y + ctx: Load + ops: list + element: Eq + comparators: list + element: BinOp + left: BinOp + left: Constant + value: int = 4 + kind: NoneType = None + op: Mult + right: Constant + value: int = 365 + kind: NoneType = None + op: Add + right: Constant + value: int = 1 + kind: NoneType = None + msg: NoneType = None + element: Assert + test: Compare + left: Name + id: str = _DI400Y + ctx: Load + ops: list + element: Eq + comparators: list + element: BinOp + left: BinOp + left: Constant + value: int = 4 + kind: NoneType = None + op: Mult + right: Name + id: str = _DI100Y + ctx: Load + op: Add + right: Constant + value: int = 1 + kind: NoneType = None + msg: NoneType = None + element: Assert + test: Compare + left: Name + id: str = _DI100Y + ctx: Load + ops: list + element: Eq + comparators: list + element: BinOp + left: BinOp + left: Constant + value: int = 25 + kind: NoneType = None + op: Mult + right: Name + id: str = _DI4Y + ctx: Load + op: Sub + right: Constant + value: int = 1 + kind: NoneType = None + msg: NoneType = None + element: FunctionDef + name: str = _ord2ymd + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = n + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = ordinal -> (year, month, day), considering 01-Jan-0001 as day 1. + kind: NoneType = None + element: AugAssign + target: Name + id: str = n + ctx: Store + op: Sub + value: Constant + value: int = 1 + kind: NoneType = None + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = n400 + ctx: Store + element: Name + id: str = n + ctx: Store + ctx: Store + value: Call + func: Name + id: str = divmod + ctx: Load + args: list + element: Name + id: str = n + ctx: Load + element: Name + id: str = _DI400Y + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = year + ctx: Store + value: BinOp + left: BinOp + left: Name + id: str = n400 + ctx: Load + op: Mult + right: Constant + value: int = 400 + kind: NoneType = None + op: Add + right: Constant + value: int = 1 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = n100 + ctx: Store + element: Name + id: str = n + ctx: Store + ctx: Store + value: Call + func: Name + id: str = divmod + ctx: Load + args: list + element: Name + id: str = n + ctx: Load + element: Name + id: str = _DI100Y + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = n4 + ctx: Store + element: Name + id: str = n + ctx: Store + ctx: Store + value: Call + func: Name + id: str = divmod + ctx: Load + args: list + element: Name + id: str = n + ctx: Load + element: Name + id: str = _DI4Y + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = n1 + ctx: Store + element: Name + id: str = n + ctx: Store + ctx: Store + value: Call + func: Name + id: str = divmod + ctx: Load + args: list + element: Name + id: str = n + ctx: Load + element: Constant + value: int = 365 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: AugAssign + target: Name + id: str = year + ctx: Store + op: Add + value: BinOp + left: BinOp + left: BinOp + left: Name + id: str = n100 + ctx: Load + op: Mult + right: Constant + value: int = 100 + kind: NoneType = None + op: Add + right: BinOp + left: Name + id: str = n4 + ctx: Load + op: Mult + right: Constant + value: int = 4 + kind: NoneType = None + op: Add + right: Name + id: str = n1 + ctx: Load + element: If + test: BoolOp + op: Or + values: list + element: Compare + left: Name + id: str = n1 + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: int = 4 + kind: NoneType = None + element: Compare + left: Name + id: str = n100 + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: int = 4 + kind: NoneType = None + body: list + element: Assert + test: Compare + left: Name + id: str = n + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + msg: NoneType = None + element: Return + value: Tuple + elts: list + element: BinOp + left: Name + id: str = year + ctx: Load + op: Sub + right: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 12 + kind: NoneType = None + element: Constant + value: int = 31 + kind: NoneType = None + ctx: Load + orelse: list + element: Assign + targets: list + element: Name + id: str = leapyear + ctx: Store + value: BoolOp + op: And + values: list + element: Compare + left: Name + id: str = n1 + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: int = 3 + kind: NoneType = None + element: BoolOp + op: Or + values: list + element: Compare + left: Name + id: str = n4 + ctx: Load + ops: list + element: NotEq + comparators: list + element: Constant + value: int = 24 + kind: NoneType = None + element: Compare + left: Name + id: str = n100 + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: int = 3 + kind: NoneType = None + type_comment: NoneType = None + element: Assert + test: Compare + left: Name + id: str = leapyear + ctx: Load + ops: list + element: Eq + comparators: list + element: Call + func: Name + id: str = _is_leap + ctx: Load + args: list + element: Name + id: str = year + ctx: Load + keywords: list + msg: NoneType = None + element: Assign + targets: list + element: Name + id: str = month + ctx: Store + value: BinOp + left: BinOp + left: Name + id: str = n + ctx: Load + op: Add + right: Constant + value: int = 50 + kind: NoneType = None + op: RShift + right: Constant + value: int = 5 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = preceding + ctx: Store + value: BinOp + left: Subscript + value: Name + id: str = _DAYS_BEFORE_MONTH + ctx: Load + slice: Index + value: Name + id: str = month + ctx: Load + ctx: Load + op: Add + right: BoolOp + op: And + values: list + element: Compare + left: Name + id: str = month + ctx: Load + ops: list + element: Gt + comparators: list + element: Constant + value: int = 2 + kind: NoneType = None + element: Name + id: str = leapyear + ctx: Load + type_comment: NoneType = None + element: If + test: Compare + left: Name + id: str = preceding + ctx: Load + ops: list + element: Gt + comparators: list + element: Name + id: str = n + ctx: Load + body: list + element: AugAssign + target: Name + id: str = month + ctx: Store + op: Sub + value: Constant + value: int = 1 + kind: NoneType = None + element: AugAssign + target: Name + id: str = preceding + ctx: Store + op: Sub + value: BinOp + left: Subscript + value: Name + id: str = _DAYS_IN_MONTH + ctx: Load + slice: Index + value: Name + id: str = month + ctx: Load + ctx: Load + op: Add + right: BoolOp + op: And + values: list + element: Compare + left: Name + id: str = month + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: int = 2 + kind: NoneType = None + element: Name + id: str = leapyear + ctx: Load + orelse: list + element: AugAssign + target: Name + id: str = n + ctx: Store + op: Sub + value: Name + id: str = preceding + ctx: Load + element: Assert + test: Compare + left: Constant + value: int = 0 + kind: NoneType = None + ops: list + element: LtE + element: Lt + comparators: list + element: Name + id: str = n + ctx: Load + element: Call + func: Name + id: str = _days_in_month + ctx: Load + args: list + element: Name + id: str = year + ctx: Load + element: Name + id: str = month + ctx: Load + keywords: list + msg: NoneType = None + element: Return + value: Tuple + elts: list + element: Name + id: str = year + ctx: Load + element: Name + id: str = month + ctx: Load + element: BinOp + left: Name + id: str = n + ctx: Load + op: Add + right: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = _MONTHNAMES + ctx: Store + value: List + elts: list + element: Constant + value: NoneType = None + kind: NoneType = None + element: Constant + value: str = Jan + kind: NoneType = None + element: Constant + value: str = Feb + kind: NoneType = None + element: Constant + value: str = Mar + kind: NoneType = None + element: Constant + value: str = Apr + kind: NoneType = None + element: Constant + value: str = May + kind: NoneType = None + element: Constant + value: str = Jun + kind: NoneType = None + element: Constant + value: str = Jul + kind: NoneType = None + element: Constant + value: str = Aug + kind: NoneType = None + element: Constant + value: str = Sep + kind: NoneType = None + element: Constant + value: str = Oct + kind: NoneType = None + element: Constant + value: str = Nov + kind: NoneType = None + element: Constant + value: str = Dec + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = _DAYNAMES + ctx: Store + value: List + elts: list + element: Constant + value: NoneType = None + kind: NoneType = None + element: Constant + value: str = Mon + kind: NoneType = None + element: Constant + value: str = Tue + kind: NoneType = None + element: Constant + value: str = Wed + kind: NoneType = None + element: Constant + value: str = Thu + kind: NoneType = None + element: Constant + value: str = Fri + kind: NoneType = None + element: Constant + value: str = Sat + kind: NoneType = None + element: Constant + value: str = Sun + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: FunctionDef + name: str = _build_struct_time + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = y + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = m + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = d + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = hh + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = mm + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = ss + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = dstflag + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Name + id: str = wday + ctx: Store + value: BinOp + left: BinOp + left: Call + func: Name + id: str = _ymd2ord + ctx: Load + args: list + element: Name + id: str = y + ctx: Load + element: Name + id: str = m + ctx: Load + element: Name + id: str = d + ctx: Load + keywords: list + op: Add + right: Constant + value: int = 6 + kind: NoneType = None + op: Mod + right: Constant + value: int = 7 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = dnum + ctx: Store + value: BinOp + left: Call + func: Name + id: str = _days_before_month + ctx: Load + args: list + element: Name + id: str = y + ctx: Load + element: Name + id: str = m + ctx: Load + keywords: list + op: Add + right: Name + id: str = d + ctx: Load + type_comment: NoneType = None + element: Return + value: Tuple + elts: list + element: Name + id: str = y + ctx: Load + element: Name + id: str = m + ctx: Load + element: Name + id: str = d + ctx: Load + element: Name + id: str = hh + ctx: Load + element: Name + id: str = mm + ctx: Load + element: Name + id: str = ss + ctx: Load + element: Name + id: str = wday + ctx: Load + element: Name + id: str = dnum + ctx: Load + element: Name + id: str = dstflag + ctx: Load + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = _format_time + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = hh + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = mm + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = ss + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = us + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Name + id: str = result + ctx: Store + value: Call + func: Attribute + value: Constant + value: str = {}:{}:{} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Call + func: Name + id: str = zfill + ctx: Load + args: list + element: Name + id: str = hh + ctx: Load + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = zfill + ctx: Load + args: list + element: Name + id: str = mm + ctx: Load + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = zfill + ctx: Load + args: list + element: Name + id: str = ss + ctx: Load + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + keywords: list + type_comment: NoneType = None + element: If + test: Name + id: str = us + ctx: Load + body: list + element: AugAssign + target: Name + id: str = result + ctx: Store + op: Add + value: Call + func: Attribute + value: Constant + value: str = .{} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Call + func: Name + id: str = zfill + ctx: Load + args: list + element: Name + id: str = us + ctx: Load + element: Constant + value: int = 6 + kind: NoneType = None + keywords: list + keywords: list + orelse: list + element: Return + value: Name + id: str = result + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = _wrap_strftime + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = object + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = format + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = timetuple + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Name + id: str = freplace + ctx: Store + value: Constant + value: NoneType = None + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = zreplace + ctx: Store + value: Constant + value: NoneType = None + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = Zreplace + ctx: Store + value: Constant + value: NoneType = None + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = newformat + ctx: Store + value: List + elts: list + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = i + ctx: Store + element: Name + id: str = n + ctx: Store + ctx: Store + value: Tuple + elts: list + element: Constant + value: int = 0 + kind: NoneType = None + element: Call + func: Name + id: str = len + ctx: Load + args: list + element: Name + id: str = format + ctx: Load + keywords: list + ctx: Load + type_comment: NoneType = None + element: While + test: Compare + left: Name + id: str = i + ctx: Load + ops: list + element: Lt + comparators: list + element: Name + id: str = n + ctx: Load + body: list + element: Assign + targets: list + element: Name + id: str = ch + ctx: Store + value: Subscript + value: Name + id: str = format + ctx: Load + slice: Index + value: Name + id: str = i + ctx: Load + ctx: Load + type_comment: NoneType = None + element: AugAssign + target: Name + id: str = i + ctx: Store + op: Add + value: Constant + value: int = 1 + kind: NoneType = None + element: If + test: Compare + left: Name + id: str = ch + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = % + kind: NoneType = None + body: list + element: If + test: Compare + left: Name + id: str = i + ctx: Load + ops: list + element: Lt + comparators: list + element: Name + id: str = n + ctx: Load + body: list + element: Assign + targets: list + element: Name + id: str = ch + ctx: Store + value: Subscript + value: Name + id: str = format + ctx: Load + slice: Index + value: Name + id: str = i + ctx: Load + ctx: Load + type_comment: NoneType = None + element: AugAssign + target: Name + id: str = i + ctx: Store + op: Add + value: Constant + value: int = 1 + kind: NoneType = None + element: If + test: Compare + left: Name + id: str = ch + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = f + kind: NoneType = None + body: list + element: If + test: Compare + left: Name + id: str = freplace + ctx: Load + ops: list + element: Is + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = freplace + ctx: Store + value: Call + func: Attribute + value: Constant + value: str = {} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Call + func: Name + id: str = zfill + ctx: Load + args: list + element: Call + func: Name + id: str = getattr + ctx: Load + args: list + element: Name + id: str = object + ctx: Load + element: Constant + value: str = microsecond + kind: NoneType = None + element: Constant + value: int = 0 + kind: NoneType = None + keywords: list + element: Constant + value: int = 6 + kind: NoneType = None + keywords: list + keywords: list + type_comment: NoneType = None + orelse: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = newformat + ctx: Load + attr: str = append + ctx: Load + args: list + element: Name + id: str = freplace + ctx: Load + keywords: list + orelse: list + element: If + test: Compare + left: Name + id: str = ch + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = z + kind: NoneType = None + body: list + element: If + test: Compare + left: Name + id: str = zreplace + ctx: Load + ops: list + element: Is + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = zreplace + ctx: Store + value: Constant + value: str = + kind: NoneType = None + type_comment: NoneType = None + element: If + test: Call + func: Name + id: str = hasattr + ctx: Load + args: list + element: Name + id: str = object + ctx: Load + element: Constant + value: str = utcoffset + kind: NoneType = None + keywords: list + body: list + element: Assign + targets: list + element: Name + id: str = offset + ctx: Store + value: Call + func: Attribute + value: Name + id: str = object + ctx: Load + attr: str = utcoffset + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: If + test: Compare + left: Name + id: str = offset + ctx: Load + ops: list + element: IsNot + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = sign + ctx: Store + value: Constant + value: str = + + kind: NoneType = None + type_comment: NoneType = None + element: If + test: Compare + left: Attribute + value: Name + id: str = offset + ctx: Load + attr: str = days + ctx: Load + ops: list + element: Lt + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = offset + ctx: Store + value: UnaryOp + op: USub + operand: Name + id: str = offset + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = sign + ctx: Store + value: Constant + value: str = - + kind: NoneType = None + type_comment: NoneType = None + orelse: list + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = h + ctx: Store + element: Name + id: str = m + ctx: Store + ctx: Store + value: Call + func: Name + id: str = divmod + ctx: Load + args: list + element: Name + id: str = offset + ctx: Load + element: Call + func: Name + id: str = timedelta + ctx: Load + args: list + keywords: list + element: keyword + arg: str = hours + value: Constant + value: int = 1 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Assert + test: UnaryOp + op: Not + operand: BinOp + left: Name + id: str = m + ctx: Load + op: Mod + right: Call + func: Name + id: str = timedelta + ctx: Load + args: list + keywords: list + element: keyword + arg: str = minutes + value: Constant + value: int = 1 + kind: NoneType = None + msg: Constant + value: str = whole minute + kind: NoneType = None + element: AugAssign + target: Name + id: str = m + ctx: Store + op: FloorDiv + value: Call + func: Name + id: str = timedelta + ctx: Load + args: list + keywords: list + element: keyword + arg: str = minutes + value: Constant + value: int = 1 + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = zreplace + ctx: Store + value: Call + func: Attribute + value: Constant + value: str = {}{}{} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Name + id: str = sign + ctx: Load + element: Call + func: Name + id: str = zfill + ctx: Load + args: list + element: Name + id: str = h + ctx: Load + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = zfill + ctx: Load + args: list + element: Name + id: str = m + ctx: Load + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + keywords: list + type_comment: NoneType = None + orelse: list + orelse: list + orelse: list + element: Assert + test: Compare + left: Constant + value: str = % + kind: NoneType = None + ops: list + element: NotIn + comparators: list + element: Name + id: str = zreplace + ctx: Load + msg: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = newformat + ctx: Load + attr: str = append + ctx: Load + args: list + element: Name + id: str = zreplace + ctx: Load + keywords: list + orelse: list + element: If + test: Compare + left: Name + id: str = ch + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = Z + kind: NoneType = None + body: list + element: If + test: Compare + left: Name + id: str = Zreplace + ctx: Load + ops: list + element: Is + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = Zreplace + ctx: Store + value: Constant + value: str = + kind: NoneType = None + type_comment: NoneType = None + element: If + test: Call + func: Name + id: str = hasattr + ctx: Load + args: list + element: Name + id: str = object + ctx: Load + element: Constant + value: str = tzname + kind: NoneType = None + keywords: list + body: list + element: Assign + targets: list + element: Name + id: str = s + ctx: Store + value: Call + func: Attribute + value: Name + id: str = object + ctx: Load + attr: str = tzname + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: If + test: Compare + left: Name + id: str = s + ctx: Load + ops: list + element: IsNot + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = Zreplace + ctx: Store + value: Call + func: Attribute + value: Name + id: str = s + ctx: Load + attr: str = replace + ctx: Load + args: list + element: Constant + value: str = % + kind: NoneType = None + element: Constant + value: str = %% + kind: NoneType = None + keywords: list + type_comment: NoneType = None + orelse: list + orelse: list + orelse: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = newformat + ctx: Load + attr: str = append + ctx: Load + args: list + element: Name + id: str = Zreplace + ctx: Load + keywords: list + orelse: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = newformat + ctx: Load + attr: str = append + ctx: Load + args: list + element: Constant + value: str = % + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = newformat + ctx: Load + attr: str = append + ctx: Load + args: list + element: Name + id: str = ch + ctx: Load + keywords: list + orelse: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = newformat + ctx: Load + attr: str = append + ctx: Load + args: list + element: Constant + value: str = % + kind: NoneType = None + keywords: list + orelse: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = newformat + ctx: Load + attr: str = append + ctx: Load + args: list + element: Name + id: str = ch + ctx: Load + keywords: list + orelse: list + element: Assign + targets: list + element: Name + id: str = newformat + ctx: Store + value: Call + func: Attribute + value: Constant + value: str = + kind: NoneType = None + attr: str = join + ctx: Load + args: list + element: Name + id: str = newformat + ctx: Load + keywords: list + type_comment: NoneType = None + element: Return + value: Call + func: Attribute + value: Name + id: str = _time + ctx: Load + attr: str = strftime + ctx: Load + args: list + element: Name + id: str = newformat + ctx: Load + element: Name + id: str = timetuple + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = _check_tzname + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = name + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: BoolOp + op: And + values: list + element: Compare + left: Name + id: str = name + ctx: Load + ops: list + element: IsNot + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + element: UnaryOp + op: Not + operand: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = name + ctx: Load + element: Name + id: str = str + ctx: Load + keywords: list + body: list + element: Raise + exc: Call + func: Name + id: str = TypeError + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = tzinfo.tzname() must return None or string, not '{}' + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Call + func: Name + id: str = type + ctx: Load + args: list + element: Name + id: str = name + ctx: Load + keywords: list + keywords: list + keywords: list + cause: NoneType = None + orelse: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = _check_utc_offset + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = name + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = offset + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assert + test: Compare + left: Name + id: str = name + ctx: Load + ops: list + element: In + comparators: list + element: Tuple + elts: list + element: Constant + value: str = utcoffset + kind: NoneType = None + element: Constant + value: str = dst + kind: NoneType = None + ctx: Load + msg: NoneType = None + element: If + test: Compare + left: Name + id: str = offset + ctx: Load + ops: list + element: Is + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Return + value: NoneType = None + orelse: list + element: If + test: UnaryOp + op: Not + operand: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = offset + ctx: Load + element: Name + id: str = timedelta + ctx: Load + keywords: list + body: list + element: Raise + exc: Call + func: Name + id: str = TypeError + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = tzinfo.{}() must return None or timedelta, not '{}' + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Name + id: str = name + ctx: Load + element: Call + func: Name + id: str = type + ctx: Load + args: list + element: Name + id: str = offset + ctx: Load + keywords: list + keywords: list + keywords: list + cause: NoneType = None + orelse: list + element: If + test: BoolOp + op: Or + values: list + element: Attribute + value: Call + func: Attribute + value: Name + id: str = offset + ctx: Load + attr: str = __mod__ + ctx: Load + args: list + element: Call + func: Name + id: str = timedelta + ctx: Load + args: list + keywords: list + element: keyword + arg: str = minutes + value: Constant + value: int = 1 + kind: NoneType = None + keywords: list + attr: str = microseconds + ctx: Load + element: Attribute + value: Name + id: str = offset + ctx: Load + attr: str = microseconds + ctx: Load + body: list + element: Raise + exc: Call + func: Name + id: str = ValueError + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = tzinfo.{}() must return a whole number of minutes, got {} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Name + id: str = name + ctx: Load + element: Name + id: str = offset + ctx: Load + keywords: list + keywords: list + cause: NoneType = None + orelse: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = opov + kind: NoneType = None + keywords: list + element: If + test: UnaryOp + op: Not + operand: Compare + left: UnaryOp + op: USub + operand: Call + func: Name + id: str = timedelta + ctx: Load + args: list + element: Constant + value: int = 1 + kind: NoneType = None + keywords: list + ops: list + element: Lt + element: Lt + comparators: list + element: Name + id: str = offset + ctx: Load + element: Call + func: Name + id: str = timedelta + ctx: Load + args: list + element: Constant + value: int = 1 + kind: NoneType = None + keywords: list + body: list + element: Raise + exc: Call + func: Name + id: str = ValueError + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = {}()={}, must be must be strictly between -timedelta(hours=24) and timedelta(hours=24) + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Name + id: str = name + ctx: Load + element: Name + id: str = offset + ctx: Load + keywords: list + keywords: list + cause: NoneType = None + orelse: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = noopov + kind: NoneType = None + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = _check_int_field + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = value + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Name + id: str = _type + ctx: Store + value: Call + func: Name + id: str = type + ctx: Load + args: list + element: Name + id: str = value + ctx: Load + keywords: list + type_comment: NoneType = None + element: If + test: Compare + left: Name + id: str = _type + ctx: Load + ops: list + element: Eq + comparators: list + element: Name + id: str = int + ctx: Load + body: list + element: Return + value: Name + id: str = value + ctx: Load + orelse: list + element: If + test: UnaryOp + op: Not + operand: Compare + left: Name + id: str = _type + ctx: Load + ops: list + element: Eq + comparators: list + element: Name + id: str = float + ctx: Load + body: list + element: Try + body: list + element: Assign + targets: list + element: Name + id: str = value + ctx: Store + value: Call + func: Attribute + value: Name + id: str = value + ctx: Load + attr: str = __int__ + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + handlers: list + element: ExceptHandler + type: Name + id: str = AttributeError + ctx: Load + name: NoneType = None + body: list + element: Pass + orelse: list + element: If + test: Compare + left: Call + func: Name + id: str = type + ctx: Load + args: list + element: Name + id: str = value + ctx: Load + keywords: list + ops: list + element: Eq + comparators: list + element: Name + id: str = int + ctx: Load + body: list + element: Return + value: Name + id: str = value + ctx: Load + orelse: list + element: Raise + exc: Call + func: Name + id: str = TypeError + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = __int__ returned non-int (type {}) + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Attribute + value: Call + func: Name + id: str = type + ctx: Load + args: list + element: Name + id: str = value + ctx: Load + keywords: list + attr: str = __name__ + ctx: Load + keywords: list + keywords: list + cause: NoneType = None + finalbody: list + element: Raise + exc: Call + func: Name + id: str = TypeError + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = an integer is required (got type {}) + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Attribute + value: Call + func: Name + id: str = type + ctx: Load + args: list + element: Name + id: str = value + ctx: Load + keywords: list + attr: str = __name__ + ctx: Load + keywords: list + keywords: list + cause: NoneType = None + orelse: list + element: Raise + exc: Call + func: Name + id: str = TypeError + ctx: Load + args: list + element: Constant + value: str = integer argument expected, got float + kind: NoneType = None + keywords: list + cause: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = _check_date_fields + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = year + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = month + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = day + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Name + id: str = year + ctx: Store + value: Call + func: Name + id: str = _check_int_field + ctx: Load + args: list + element: Name + id: str = year + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = month + ctx: Store + value: Call + func: Name + id: str = _check_int_field + ctx: Load + args: list + element: Name + id: str = month + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = day + ctx: Store + value: Call + func: Name + id: str = _check_int_field + ctx: Load + args: list + element: Name + id: str = day + ctx: Load + keywords: list + type_comment: NoneType = None + element: If + test: UnaryOp + op: Not + operand: Compare + left: Name + id: str = MINYEAR + ctx: Load + ops: list + element: LtE + element: LtE + comparators: list + element: Name + id: str = year + ctx: Load + element: Name + id: str = MAXYEAR + ctx: Load + body: list + element: Raise + exc: Call + func: Name + id: str = ValueError + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = year must be in {}..{} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Name + id: str = MINYEAR + ctx: Load + element: Name + id: str = MAXYEAR + ctx: Load + keywords: list + element: Name + id: str = year + ctx: Load + keywords: list + cause: NoneType = None + orelse: list + element: If + test: UnaryOp + op: Not + operand: Compare + left: Constant + value: int = 1 + kind: NoneType = None + ops: list + element: LtE + element: LtE + comparators: list + element: Name + id: str = month + ctx: Load + element: Constant + value: int = 12 + kind: NoneType = None + body: list + element: Raise + exc: Call + func: Name + id: str = ValueError + ctx: Load + args: list + element: Constant + value: str = month must be in 1..12 + kind: NoneType = None + element: Name + id: str = month + ctx: Load + keywords: list + cause: NoneType = None + orelse: list + element: Assign + targets: list + element: Name + id: str = dim + ctx: Store + value: Call + func: Name + id: str = _days_in_month + ctx: Load + args: list + element: Name + id: str = year + ctx: Load + element: Name + id: str = month + ctx: Load + keywords: list + type_comment: NoneType = None + element: If + test: UnaryOp + op: Not + operand: Compare + left: Constant + value: int = 1 + kind: NoneType = None + ops: list + element: LtE + element: LtE + comparators: list + element: Name + id: str = day + ctx: Load + element: Name + id: str = dim + ctx: Load + body: list + element: Raise + exc: Call + func: Name + id: str = ValueError + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = day must be in 1..{} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Name + id: str = dim + ctx: Load + keywords: list + element: Name + id: str = day + ctx: Load + keywords: list + cause: NoneType = None + orelse: list + element: Return + value: Tuple + elts: list + element: Name + id: str = year + ctx: Load + element: Name + id: str = month + ctx: Load + element: Name + id: str = day + ctx: Load + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = _check_time_fields + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = hour + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = minute + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = second + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = microsecond + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Name + id: str = hour + ctx: Store + value: Call + func: Name + id: str = _check_int_field + ctx: Load + args: list + element: Name + id: str = hour + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = minute + ctx: Store + value: Call + func: Name + id: str = _check_int_field + ctx: Load + args: list + element: Name + id: str = minute + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = second + ctx: Store + value: Call + func: Name + id: str = _check_int_field + ctx: Load + args: list + element: Name + id: str = second + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = microsecond + ctx: Store + value: Call + func: Name + id: str = _check_int_field + ctx: Load + args: list + element: Name + id: str = microsecond + ctx: Load + keywords: list + type_comment: NoneType = None + element: If + test: UnaryOp + op: Not + operand: Compare + left: Constant + value: int = 0 + kind: NoneType = None + ops: list + element: LtE + element: LtE + comparators: list + element: Name + id: str = hour + ctx: Load + element: Constant + value: int = 23 + kind: NoneType = None + body: list + element: Raise + exc: Call + func: Name + id: str = ValueError + ctx: Load + args: list + element: Constant + value: str = hour must be in 0..23 + kind: NoneType = None + element: Name + id: str = hour + ctx: Load + keywords: list + cause: NoneType = None + orelse: list + element: If + test: UnaryOp + op: Not + operand: Compare + left: Constant + value: int = 0 + kind: NoneType = None + ops: list + element: LtE + element: LtE + comparators: list + element: Name + id: str = minute + ctx: Load + element: Constant + value: int = 59 + kind: NoneType = None + body: list + element: Raise + exc: Call + func: Name + id: str = ValueError + ctx: Load + args: list + element: Constant + value: str = minute must be in 0..59 + kind: NoneType = None + element: Name + id: str = minute + ctx: Load + keywords: list + cause: NoneType = None + orelse: list + element: If + test: UnaryOp + op: Not + operand: Compare + left: Constant + value: int = 0 + kind: NoneType = None + ops: list + element: LtE + element: LtE + comparators: list + element: Name + id: str = second + ctx: Load + element: Constant + value: int = 59 + kind: NoneType = None + body: list + element: Raise + exc: Call + func: Name + id: str = ValueError + ctx: Load + args: list + element: Constant + value: str = second must be in 0..59 + kind: NoneType = None + element: Name + id: str = second + ctx: Load + keywords: list + cause: NoneType = None + orelse: list + element: If + test: UnaryOp + op: Not + operand: Compare + left: Constant + value: int = 0 + kind: NoneType = None + ops: list + element: LtE + element: LtE + comparators: list + element: Name + id: str = microsecond + ctx: Load + element: Constant + value: int = 999999 + kind: NoneType = None + body: list + element: Raise + exc: Call + func: Name + id: str = ValueError + ctx: Load + args: list + element: Constant + value: str = microsecond must be in 0..999999 + kind: NoneType = None + element: Name + id: str = microsecond + ctx: Load + keywords: list + cause: NoneType = None + orelse: list + element: Return + value: Tuple + elts: list + element: Name + id: str = hour + ctx: Load + element: Name + id: str = minute + ctx: Load + element: Name + id: str = second + ctx: Load + element: Name + id: str = microsecond + ctx: Load + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = _check_tzinfo_arg + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = tz + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: BoolOp + op: And + values: list + element: Compare + left: Name + id: str = tz + ctx: Load + ops: list + element: IsNot + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + element: UnaryOp + op: Not + operand: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = tz + ctx: Load + element: Name + id: str = tzinfo + ctx: Load + keywords: list + body: list + element: Raise + exc: Call + func: Name + id: str = TypeError + ctx: Load + args: list + element: Constant + value: str = tzinfo argument must be None or of a tzinfo subclass + kind: NoneType = None + keywords: list + cause: NoneType = None + orelse: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = _cmperror + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = y + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Raise + exc: Call + func: Name + id: str = TypeError + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = can't compare '{}' to '{}' + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Attribute + value: Call + func: Name + id: str = type + ctx: Load + args: list + element: Name + id: str = x + ctx: Load + keywords: list + attr: str = __name__ + ctx: Load + element: Attribute + value: Call + func: Name + id: str = type + ctx: Load + args: list + element: Name + id: str = y + ctx: Load + keywords: list + attr: str = __name__ + ctx: Load + keywords: list + keywords: list + cause: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = _divide_and_round + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = a + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = b + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = divide a by b and round result to the nearest integer + + When the ratio is exactly half-way between two integers, + the even integer is returned. + + kind: NoneType = None + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = q + ctx: Store + element: Name + id: str = r + ctx: Store + ctx: Store + value: Call + func: Name + id: str = divmod + ctx: Load + args: list + element: Name + id: str = a + ctx: Load + element: Name + id: str = b + ctx: Load + keywords: list + type_comment: NoneType = None + element: AugAssign + target: Name + id: str = r + ctx: Store + op: Mult + value: Constant + value: int = 2 + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = greater_than_half + ctx: Store + value: IfExp + test: Compare + left: Name + id: str = b + ctx: Load + ops: list + element: Gt + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + body: Compare + left: Name + id: str = r + ctx: Load + ops: list + element: Gt + comparators: list + element: Name + id: str = b + ctx: Load + orelse: Compare + left: Name + id: str = r + ctx: Load + ops: list + element: Lt + comparators: list + element: Name + id: str = b + ctx: Load + type_comment: NoneType = None + element: If + test: BoolOp + op: Or + values: list + element: Name + id: str = greater_than_half + ctx: Load + element: BoolOp + op: And + values: list + element: Compare + left: Name + id: str = r + ctx: Load + ops: list + element: Eq + comparators: list + element: Name + id: str = b + ctx: Load + element: Compare + left: BinOp + left: Name + id: str = q + ctx: Load + op: Mod + right: Constant + value: int = 2 + kind: NoneType = None + ops: list + element: Eq + comparators: list + element: Constant + value: int = 1 + kind: NoneType = None + body: list + element: AugAssign + target: Name + id: str = q + ctx: Store + op: Add + value: Constant + value: int = 1 + kind: NoneType = None + orelse: list + element: Return + value: Name + id: str = q + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: ClassDef + name: str = timedelta + bases: list + keywords: list + body: list + element: Expr + value: Constant + value: str = Represent the difference between two datetime objects. + + Supported operators: + + - add, subtract timedelta + - unary plus, minus, abs + - compare to timedelta + - multiply, divide by int + + In addition, datetime supports subtraction of two datetime objects + returning a timedelta, and addition or subtraction of a datetime + and a timedelta giving a datetime. + + Representation: (days, seconds, microseconds). Why? Because I + felt like it. + + kind: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = kwargs + kind: NoneType = None + keywords: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = days + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = seconds + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = microseconds + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = milliseconds + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = minutes + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = hours + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = weeks + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + element: Constant + value: int = 0 + kind: NoneType = None + element: Constant + value: int = 0 + kind: NoneType = None + element: Constant + value: int = 0 + kind: NoneType = None + element: Constant + value: int = 0 + kind: NoneType = None + element: Constant + value: int = 0 + kind: NoneType = None + element: Constant + value: int = 0 + kind: NoneType = None + element: Constant + value: int = 0 + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = d + ctx: Store + element: Name + id: str = s + ctx: Store + element: Name + id: str = us + ctx: Store + value: Constant + value: int = 0 + kind: NoneType = None + type_comment: NoneType = None + element: AugAssign + target: Name + id: str = days + ctx: Store + op: Add + value: BinOp + left: Name + id: str = weeks + ctx: Load + op: Mult + right: Constant + value: int = 7 + kind: NoneType = None + element: AugAssign + target: Name + id: str = seconds + ctx: Store + op: Add + value: BinOp + left: BinOp + left: Name + id: str = minutes + ctx: Load + op: Mult + right: Constant + value: int = 60 + kind: NoneType = None + op: Add + right: BinOp + left: Name + id: str = hours + ctx: Load + op: Mult + right: Constant + value: int = 3600 + kind: NoneType = None + element: AugAssign + target: Name + id: str = microseconds + ctx: Store + op: Add + value: BinOp + left: Name + id: str = milliseconds + ctx: Load + op: Mult + right: Constant + value: int = 1000 + kind: NoneType = None + element: If + test: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = days + ctx: Load + element: Name + id: str = float + ctx: Load + keywords: list + body: list + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = dayfrac + ctx: Store + element: Name + id: str = days + ctx: Store + ctx: Store + value: Call + func: Attribute + value: Name + id: str = _math + ctx: Load + attr: str = modf + ctx: Load + args: list + element: Name + id: str = days + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = daysecondsfrac + ctx: Store + element: Name + id: str = daysecondswhole + ctx: Store + ctx: Store + value: Call + func: Attribute + value: Name + id: str = _math + ctx: Load + attr: str = modf + ctx: Load + args: list + element: BinOp + left: Name + id: str = dayfrac + ctx: Load + op: Mult + right: BinOp + left: Constant + value: float = 24.0 + kind: NoneType = None + op: Mult + right: Constant + value: float = 3600.0 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Assert + test: Compare + left: Name + id: str = daysecondswhole + ctx: Load + ops: list + element: Eq + comparators: list + element: Call + func: Name + id: str = int + ctx: Load + args: list + element: Name + id: str = daysecondswhole + ctx: Load + keywords: list + msg: NoneType = None + element: Assign + targets: list + element: Name + id: str = s + ctx: Store + value: Call + func: Name + id: str = int + ctx: Load + args: list + element: Name + id: str = daysecondswhole + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assert + test: Compare + left: Name + id: str = days + ctx: Load + ops: list + element: Eq + comparators: list + element: Call + func: Name + id: str = int + ctx: Load + args: list + element: Name + id: str = days + ctx: Load + keywords: list + msg: NoneType = None + element: Assign + targets: list + element: Name + id: str = d + ctx: Store + value: Call + func: Name + id: str = int + ctx: Load + args: list + element: Name + id: str = days + ctx: Load + keywords: list + type_comment: NoneType = None + orelse: list + element: Assign + targets: list + element: Name + id: str = daysecondsfrac + ctx: Store + value: Constant + value: float = 0.0 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = d + ctx: Store + value: Name + id: str = days + ctx: Load + type_comment: NoneType = None + element: Assert + test: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = daysecondsfrac + ctx: Load + element: Tuple + elts: list + element: Name + id: str = float + ctx: Load + element: Name + id: str = int + ctx: Load + ctx: Load + keywords: list + msg: NoneType = None + element: Assert + test: Compare + left: Call + func: Name + id: str = abs + ctx: Load + args: list + element: Name + id: str = daysecondsfrac + ctx: Load + keywords: list + ops: list + element: LtE + comparators: list + element: Constant + value: float = 1.0 + kind: NoneType = None + msg: NoneType = None + element: Assert + test: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = d + ctx: Load + element: Name + id: str = int + ctx: Load + keywords: list + msg: NoneType = None + element: Assert + test: Compare + left: Call + func: Name + id: str = abs + ctx: Load + args: list + element: Name + id: str = s + ctx: Load + keywords: list + ops: list + element: LtE + comparators: list + element: BinOp + left: Constant + value: int = 24 + kind: NoneType = None + op: Mult + right: Constant + value: int = 3600 + kind: NoneType = None + msg: NoneType = None + element: If + test: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = seconds + ctx: Load + element: Name + id: str = float + ctx: Load + keywords: list + body: list + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = secondsfrac + ctx: Store + element: Name + id: str = seconds + ctx: Store + ctx: Store + value: Call + func: Attribute + value: Name + id: str = _math + ctx: Load + attr: str = modf + ctx: Load + args: list + element: Name + id: str = seconds + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assert + test: Compare + left: Name + id: str = seconds + ctx: Load + ops: list + element: Eq + comparators: list + element: Call + func: Name + id: str = int + ctx: Load + args: list + element: Name + id: str = seconds + ctx: Load + keywords: list + msg: NoneType = None + element: Assign + targets: list + element: Name + id: str = seconds + ctx: Store + value: Call + func: Name + id: str = int + ctx: Load + args: list + element: Name + id: str = seconds + ctx: Load + keywords: list + type_comment: NoneType = None + element: AugAssign + target: Name + id: str = secondsfrac + ctx: Store + op: Add + value: Name + id: str = daysecondsfrac + ctx: Load + element: Assert + test: Compare + left: Call + func: Name + id: str = abs + ctx: Load + args: list + element: Name + id: str = secondsfrac + ctx: Load + keywords: list + ops: list + element: LtE + comparators: list + element: Constant + value: float = 2.0 + kind: NoneType = None + msg: NoneType = None + orelse: list + element: Assign + targets: list + element: Name + id: str = secondsfrac + ctx: Store + value: Name + id: str = daysecondsfrac + ctx: Load + type_comment: NoneType = None + element: Assert + test: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = secondsfrac + ctx: Load + element: Tuple + elts: list + element: Name + id: str = float + ctx: Load + element: Name + id: str = int + ctx: Load + ctx: Load + keywords: list + msg: NoneType = None + element: Assert + test: Compare + left: Call + func: Name + id: str = abs + ctx: Load + args: list + element: Name + id: str = secondsfrac + ctx: Load + keywords: list + ops: list + element: LtE + comparators: list + element: Constant + value: float = 2.0 + kind: NoneType = None + msg: NoneType = None + element: Assert + test: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = seconds + ctx: Load + element: Name + id: str = int + ctx: Load + keywords: list + msg: NoneType = None + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = days + ctx: Store + element: Name + id: str = seconds + ctx: Store + ctx: Store + value: Call + func: Name + id: str = divmod + ctx: Load + args: list + element: Name + id: str = seconds + ctx: Load + element: BinOp + left: Constant + value: int = 24 + kind: NoneType = None + op: Mult + right: Constant + value: int = 3600 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: AugAssign + target: Name + id: str = d + ctx: Store + op: Add + value: Name + id: str = days + ctx: Load + element: AugAssign + target: Name + id: str = s + ctx: Store + op: Add + value: Call + func: Name + id: str = int + ctx: Load + args: list + element: Name + id: str = seconds + ctx: Load + keywords: list + element: Assert + test: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = s + ctx: Load + element: Name + id: str = int + ctx: Load + keywords: list + msg: NoneType = None + element: Assert + test: Compare + left: Call + func: Name + id: str = abs + ctx: Load + args: list + element: Name + id: str = s + ctx: Load + keywords: list + ops: list + element: LtE + comparators: list + element: BinOp + left: BinOp + left: Constant + value: int = 2 + kind: NoneType = None + op: Mult + right: Constant + value: int = 24 + kind: NoneType = None + op: Mult + right: Constant + value: int = 3600 + kind: NoneType = None + msg: NoneType = None + element: Assign + targets: list + element: Name + id: str = usdouble + ctx: Store + value: BinOp + left: Name + id: str = secondsfrac + ctx: Load + op: Mult + right: Constant + value: float = 1000000.0 + kind: NoneType = None + type_comment: NoneType = None + element: Assert + test: Compare + left: Call + func: Name + id: str = abs + ctx: Load + args: list + element: Name + id: str = usdouble + ctx: Load + keywords: list + ops: list + element: Lt + comparators: list + element: Constant + value: float = 2100000.0 + kind: NoneType = None + msg: NoneType = None + element: If + test: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = microseconds + ctx: Load + element: Name + id: str = float + ctx: Load + keywords: list + body: list + element: Assign + targets: list + element: Name + id: str = microseconds + ctx: Store + value: Call + func: Name + id: str = round + ctx: Load + args: list + element: BinOp + left: Name + id: str = microseconds + ctx: Load + op: Add + right: Name + id: str = usdouble + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = seconds + ctx: Store + element: Name + id: str = microseconds + ctx: Store + ctx: Store + value: Call + func: Name + id: str = divmod + ctx: Load + args: list + element: Name + id: str = microseconds + ctx: Load + element: Constant + value: int = 1000000 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = days + ctx: Store + element: Name + id: str = seconds + ctx: Store + ctx: Store + value: Call + func: Name + id: str = divmod + ctx: Load + args: list + element: Name + id: str = seconds + ctx: Load + element: BinOp + left: Constant + value: int = 24 + kind: NoneType = None + op: Mult + right: Constant + value: int = 3600 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: AugAssign + target: Name + id: str = d + ctx: Store + op: Add + value: Name + id: str = days + ctx: Load + element: AugAssign + target: Name + id: str = s + ctx: Store + op: Add + value: Name + id: str = seconds + ctx: Load + orelse: list + element: Assign + targets: list + element: Name + id: str = microseconds + ctx: Store + value: Call + func: Name + id: str = int + ctx: Load + args: list + element: Name + id: str = microseconds + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = seconds + ctx: Store + element: Name + id: str = microseconds + ctx: Store + ctx: Store + value: Call + func: Name + id: str = divmod + ctx: Load + args: list + element: Name + id: str = microseconds + ctx: Load + element: Constant + value: int = 1000000 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = days + ctx: Store + element: Name + id: str = seconds + ctx: Store + ctx: Store + value: Call + func: Name + id: str = divmod + ctx: Load + args: list + element: Name + id: str = seconds + ctx: Load + element: BinOp + left: Constant + value: int = 24 + kind: NoneType = None + op: Mult + right: Constant + value: int = 3600 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: AugAssign + target: Name + id: str = d + ctx: Store + op: Add + value: Name + id: str = days + ctx: Load + element: AugAssign + target: Name + id: str = s + ctx: Store + op: Add + value: Name + id: str = seconds + ctx: Load + element: Assign + targets: list + element: Name + id: str = microseconds + ctx: Store + value: Call + func: Name + id: str = round + ctx: Load + args: list + element: BinOp + left: Name + id: str = microseconds + ctx: Load + op: Add + right: Name + id: str = usdouble + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assert + test: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = s + ctx: Load + element: Name + id: str = int + ctx: Load + keywords: list + msg: NoneType = None + element: Assert + test: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = microseconds + ctx: Load + element: Name + id: str = int + ctx: Load + keywords: list + msg: NoneType = None + element: Assert + test: Compare + left: Call + func: Name + id: str = abs + ctx: Load + args: list + element: Name + id: str = s + ctx: Load + keywords: list + ops: list + element: LtE + comparators: list + element: BinOp + left: BinOp + left: Constant + value: int = 3 + kind: NoneType = None + op: Mult + right: Constant + value: int = 24 + kind: NoneType = None + op: Mult + right: Constant + value: int = 3600 + kind: NoneType = None + msg: NoneType = None + element: Assert + test: Compare + left: Call + func: Name + id: str = abs + ctx: Load + args: list + element: Name + id: str = microseconds + ctx: Load + keywords: list + ops: list + element: Lt + comparators: list + element: Constant + value: float = 3100000.0 + kind: NoneType = None + msg: NoneType = None + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = seconds + ctx: Store + element: Name + id: str = us + ctx: Store + ctx: Store + value: Call + func: Name + id: str = divmod + ctx: Load + args: list + element: Name + id: str = microseconds + ctx: Load + element: Constant + value: int = 1000000 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: AugAssign + target: Name + id: str = s + ctx: Store + op: Add + value: Name + id: str = seconds + ctx: Load + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = days + ctx: Store + element: Name + id: str = s + ctx: Store + ctx: Store + value: Call + func: Name + id: str = divmod + ctx: Load + args: list + element: Name + id: str = s + ctx: Load + element: BinOp + left: Constant + value: int = 24 + kind: NoneType = None + op: Mult + right: Constant + value: int = 3600 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: AugAssign + target: Name + id: str = d + ctx: Store + op: Add + value: Name + id: str = days + ctx: Load + element: Assert + test: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = d + ctx: Load + element: Name + id: str = int + ctx: Load + keywords: list + msg: NoneType = None + element: Assert + test: BoolOp + op: And + values: list + element: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = s + ctx: Load + element: Name + id: str = int + ctx: Load + keywords: list + element: Compare + left: Constant + value: int = 0 + kind: NoneType = None + ops: list + element: LtE + element: Lt + comparators: list + element: Name + id: str = s + ctx: Load + element: BinOp + left: Constant + value: int = 24 + kind: NoneType = None + op: Mult + right: Constant + value: int = 3600 + kind: NoneType = None + msg: NoneType = None + element: Assert + test: BoolOp + op: And + values: list + element: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = us + ctx: Load + element: Name + id: str = int + ctx: Load + keywords: list + element: Compare + left: Constant + value: int = 0 + kind: NoneType = None + ops: list + element: LtE + element: Lt + comparators: list + element: Name + id: str = us + ctx: Load + element: Constant + value: int = 1000000 + kind: NoneType = None + msg: NoneType = None + element: If + test: Compare + left: Call + func: Name + id: str = abs + ctx: Load + args: list + element: Name + id: str = d + ctx: Load + keywords: list + ops: list + element: Gt + comparators: list + element: Constant + value: int = 999999999 + kind: NoneType = None + body: list + element: Raise + exc: Call + func: Name + id: str = OverflowError + ctx: Load + args: list + element: BinOp + left: Constant + value: str = timedelta # of days is too large: %d + kind: NoneType = None + op: Mod + right: Name + id: str = d + ctx: Load + keywords: list + cause: NoneType = None + orelse: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _days + ctx: Store + value: Name + id: str = d + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _seconds + ctx: Store + value: Name + id: str = s + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _microseconds + ctx: Store + value: Name + id: str = us + ctx: Load + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = nokwargs + kind: NoneType = None + keywords: list + element: FunctionDef + name: str = __repr__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _microseconds + ctx: Load + body: list + element: Return + value: Call + func: Attribute + value: Constant + value: str = datetime.timedelta(days={}, seconds={}, microseconds={}) + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _days + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _seconds + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _microseconds + ctx: Load + keywords: list + orelse: list + element: If + test: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _seconds + ctx: Load + body: list + element: Return + value: Call + func: Attribute + value: Constant + value: str = datetime.timedelta(days={}, seconds={}) + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _days + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _seconds + ctx: Load + keywords: list + orelse: list + element: Return + value: Call + func: Attribute + value: Constant + value: str = datetime.timedelta(days={}) + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _days + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __str__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = mm + ctx: Store + element: Name + id: str = ss + ctx: Store + ctx: Store + value: Call + func: Name + id: str = divmod + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _seconds + ctx: Load + element: Constant + value: int = 60 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = hh + ctx: Store + element: Name + id: str = mm + ctx: Store + ctx: Store + value: Call + func: Name + id: str = divmod + ctx: Load + args: list + element: Name + id: str = mm + ctx: Load + element: Constant + value: int = 60 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = s + ctx: Store + value: Call + func: Attribute + value: Constant + value: str = {}:{}:{} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Name + id: str = hh + ctx: Load + element: Call + func: Name + id: str = zfill + ctx: Load + args: list + element: Name + id: str = mm + ctx: Load + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = zfill + ctx: Load + args: list + element: Name + id: str = ss + ctx: Load + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + keywords: list + type_comment: NoneType = None + element: If + test: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _days + ctx: Load + body: list + element: FunctionDef + name: str = plural + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = n + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Tuple + elts: list + element: Name + id: str = n + ctx: Load + element: BoolOp + op: Or + values: list + element: BoolOp + op: And + values: list + element: Compare + left: Call + func: Name + id: str = abs + ctx: Load + args: list + element: Name + id: str = n + ctx: Load + keywords: list + ops: list + element: NotEq + comparators: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: str = s + kind: NoneType = None + element: Constant + value: str = + kind: NoneType = None + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = s + ctx: Store + value: BinOp + left: Call + func: Attribute + value: Constant + value: str = {} day{}, + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Call + func: Name + id: str = plural + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _days + ctx: Load + keywords: list + keywords: list + op: Add + right: Name + id: str = s + ctx: Load + type_comment: NoneType = None + orelse: list + element: If + test: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _microseconds + ctx: Load + body: list + element: Assign + targets: list + element: Name + id: str = s + ctx: Store + value: BinOp + left: Name + id: str = s + ctx: Load + op: Add + right: Call + func: Attribute + value: Constant + value: str = .{} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Call + func: Name + id: str = zfill + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _microseconds + ctx: Load + element: Constant + value: int = 6 + kind: NoneType = None + keywords: list + keywords: list + type_comment: NoneType = None + orelse: list + element: Return + value: Name + id: str = s + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = total_seconds + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = Total seconds in the duration. + kind: NoneType = None + element: Return + value: BinOp + left: BinOp + left: BinOp + left: BinOp + left: BinOp + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = days + ctx: Load + op: Mult + right: Constant + value: int = 86400 + kind: NoneType = None + op: Add + right: Attribute + value: Name + id: str = self + ctx: Load + attr: str = seconds + ctx: Load + op: Mult + right: BinOp + left: Constant + value: int = 10 + kind: NoneType = None + op: Pow + right: Constant + value: int = 6 + kind: NoneType = None + op: Add + right: Attribute + value: Name + id: str = self + ctx: Load + attr: str = microseconds + ctx: Load + op: Div + right: BinOp + left: Constant + value: int = 10 + kind: NoneType = None + op: Pow + right: Constant + value: int = 6 + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = days + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = days + kind: NoneType = None + element: Return + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _days + ctx: Load + decorator_list: list + element: Name + id: str = property + ctx: Load + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = seconds + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = seconds + kind: NoneType = None + element: Return + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _seconds + ctx: Load + decorator_list: list + element: Name + id: str = property + ctx: Load + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = microseconds + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = microseconds + kind: NoneType = None + element: Return + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _microseconds + ctx: Load + decorator_list: list + element: Name + id: str = property + ctx: Load + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __add__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + element: Name + id: str = timedelta + ctx: Load + keywords: list + body: list + element: Return + value: Call + func: Name + id: str = timedelta + ctx: Load + args: list + element: BinOp + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _days + ctx: Load + op: Add + right: Attribute + value: Name + id: str = other + ctx: Load + attr: str = _days + ctx: Load + element: BinOp + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _seconds + ctx: Load + op: Add + right: Attribute + value: Name + id: str = other + ctx: Load + attr: str = _seconds + ctx: Load + element: BinOp + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _microseconds + ctx: Load + op: Add + right: Attribute + value: Name + id: str = other + ctx: Load + attr: str = _microseconds + ctx: Load + keywords: list + orelse: list + element: Return + value: Name + id: str = NotImplemented + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __radd__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = __add__ + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __sub__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + element: Name + id: str = timedelta + ctx: Load + keywords: list + body: list + element: Return + value: Call + func: Name + id: str = timedelta + ctx: Load + args: list + element: BinOp + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _days + ctx: Load + op: Sub + right: Attribute + value: Name + id: str = other + ctx: Load + attr: str = _days + ctx: Load + element: BinOp + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _seconds + ctx: Load + op: Sub + right: Attribute + value: Name + id: str = other + ctx: Load + attr: str = _seconds + ctx: Load + element: BinOp + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _microseconds + ctx: Load + op: Sub + right: Attribute + value: Name + id: str = other + ctx: Load + attr: str = _microseconds + ctx: Load + keywords: list + orelse: list + element: Return + value: Name + id: str = NotImplemented + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __rsub__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + element: Name + id: str = timedelta + ctx: Load + keywords: list + body: list + element: Return + value: BinOp + left: UnaryOp + op: USub + operand: Name + id: str = self + ctx: Load + op: Add + right: Name + id: str = other + ctx: Load + orelse: list + element: Return + value: Name + id: str = NotImplemented + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __neg__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Call + func: Name + id: str = timedelta + ctx: Load + args: list + element: UnaryOp + op: USub + operand: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _days + ctx: Load + element: UnaryOp + op: USub + operand: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _seconds + ctx: Load + element: UnaryOp + op: USub + operand: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _microseconds + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __pos__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Name + id: str = self + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __abs__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: Compare + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _days + ctx: Load + ops: list + element: Lt + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + body: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = opov + kind: NoneType = None + keywords: list + element: Return + value: UnaryOp + op: USub + operand: Name + id: str = self + ctx: Load + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = noopov + kind: NoneType = None + keywords: list + orelse: list + element: Return + value: Name + id: str = self + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __mul__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + element: Name + id: str = int + ctx: Load + keywords: list + body: list + element: Return + value: Call + func: Name + id: str = timedelta + ctx: Load + args: list + element: BinOp + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _days + ctx: Load + op: Mult + right: Name + id: str = other + ctx: Load + element: BinOp + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _seconds + ctx: Load + op: Mult + right: Name + id: str = other + ctx: Load + element: BinOp + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _microseconds + ctx: Load + op: Mult + right: Name + id: str = other + ctx: Load + keywords: list + orelse: list + element: If + test: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + element: Name + id: str = float + ctx: Load + keywords: list + body: list + element: Assign + targets: list + element: Name + id: str = usec + ctx: Store + value: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _to_microseconds + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = a + ctx: Store + element: Name + id: str = b + ctx: Store + ctx: Store + value: Call + func: Attribute + value: Name + id: str = other + ctx: Load + attr: str = as_integer_ratio + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Return + value: Call + func: Name + id: str = timedelta + ctx: Load + args: list + element: Constant + value: int = 0 + kind: NoneType = None + element: Constant + value: int = 0 + kind: NoneType = None + element: Call + func: Name + id: str = _divide_and_round + ctx: Load + args: list + element: BinOp + left: Name + id: str = usec + ctx: Load + op: Mult + right: Name + id: str = a + ctx: Load + element: Name + id: str = b + ctx: Load + keywords: list + keywords: list + orelse: list + element: Return + value: Name + id: str = NotImplemented + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __rmul__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = __mul__ + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = _to_microseconds + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: BinOp + left: BinOp + left: BinOp + left: BinOp + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _days + ctx: Load + op: Mult + right: BinOp + left: Constant + value: int = 24 + kind: NoneType = None + op: Mult + right: Constant + value: int = 3600 + kind: NoneType = None + op: Add + right: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _seconds + ctx: Load + op: Mult + right: Constant + value: int = 1000000 + kind: NoneType = None + op: Add + right: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _microseconds + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __floordiv__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: UnaryOp + op: Not + operand: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + element: Tuple + elts: list + element: Name + id: str = int + ctx: Load + element: Name + id: str = timedelta + ctx: Load + ctx: Load + keywords: list + body: list + element: Return + value: Name + id: str = NotImplemented + ctx: Load + orelse: list + element: Assign + targets: list + element: Name + id: str = usec + ctx: Store + value: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _to_microseconds + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: If + test: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + element: Name + id: str = timedelta + ctx: Load + keywords: list + body: list + element: Return + value: BinOp + left: Name + id: str = usec + ctx: Load + op: FloorDiv + right: Call + func: Attribute + value: Name + id: str = other + ctx: Load + attr: str = _to_microseconds + ctx: Load + args: list + keywords: list + orelse: list + element: If + test: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + element: Name + id: str = int + ctx: Load + keywords: list + body: list + element: Return + value: Call + func: Name + id: str = timedelta + ctx: Load + args: list + element: Constant + value: int = 0 + kind: NoneType = None + element: Constant + value: int = 0 + kind: NoneType = None + element: BinOp + left: Name + id: str = usec + ctx: Load + op: FloorDiv + right: Name + id: str = other + ctx: Load + keywords: list + orelse: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __truediv__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: UnaryOp + op: Not + operand: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + element: Tuple + elts: list + element: Name + id: str = int + ctx: Load + element: Name + id: str = float + ctx: Load + element: Name + id: str = timedelta + ctx: Load + ctx: Load + keywords: list + body: list + element: Return + value: Name + id: str = NotImplemented + ctx: Load + orelse: list + element: Assign + targets: list + element: Name + id: str = usec + ctx: Store + value: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _to_microseconds + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: If + test: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + element: Name + id: str = timedelta + ctx: Load + keywords: list + body: list + element: Return + value: BinOp + left: Name + id: str = usec + ctx: Load + op: Div + right: Call + func: Attribute + value: Name + id: str = other + ctx: Load + attr: str = _to_microseconds + ctx: Load + args: list + keywords: list + orelse: list + element: If + test: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + element: Name + id: str = int + ctx: Load + keywords: list + body: list + element: Return + value: Call + func: Name + id: str = timedelta + ctx: Load + args: list + element: Constant + value: int = 0 + kind: NoneType = None + element: Constant + value: int = 0 + kind: NoneType = None + element: Call + func: Name + id: str = _divide_and_round + ctx: Load + args: list + element: Name + id: str = usec + ctx: Load + element: Name + id: str = other + ctx: Load + keywords: list + keywords: list + orelse: list + element: If + test: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + element: Name + id: str = float + ctx: Load + keywords: list + body: list + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = a + ctx: Store + element: Name + id: str = b + ctx: Store + ctx: Store + value: Call + func: Attribute + value: Name + id: str = other + ctx: Load + attr: str = as_integer_ratio + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Return + value: Call + func: Name + id: str = timedelta + ctx: Load + args: list + element: Constant + value: int = 0 + kind: NoneType = None + element: Constant + value: int = 0 + kind: NoneType = None + element: Call + func: Name + id: str = _divide_and_round + ctx: Load + args: list + element: BinOp + left: Name + id: str = b + ctx: Load + op: Mult + right: Name + id: str = usec + ctx: Load + element: Name + id: str = a + ctx: Load + keywords: list + keywords: list + orelse: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __mod__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + element: Name + id: str = timedelta + ctx: Load + keywords: list + body: list + element: Assign + targets: list + element: Name + id: str = r + ctx: Store + value: BinOp + left: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _to_microseconds + ctx: Load + args: list + keywords: list + op: Mod + right: Call + func: Attribute + value: Name + id: str = other + ctx: Load + attr: str = _to_microseconds + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Return + value: Call + func: Name + id: str = timedelta + ctx: Load + args: list + element: Constant + value: int = 0 + kind: NoneType = None + element: Constant + value: int = 0 + kind: NoneType = None + element: Name + id: str = r + ctx: Load + keywords: list + orelse: list + element: Return + value: Name + id: str = NotImplemented + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __divmod__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + element: Name + id: str = timedelta + ctx: Load + keywords: list + body: list + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = q + ctx: Store + element: Name + id: str = r + ctx: Store + ctx: Store + value: Call + func: Name + id: str = divmod + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _to_microseconds + ctx: Load + args: list + keywords: list + element: Call + func: Attribute + value: Name + id: str = other + ctx: Load + attr: str = _to_microseconds + ctx: Load + args: list + keywords: list + keywords: list + type_comment: NoneType = None + element: Return + value: Tuple + elts: list + element: Name + id: str = q + ctx: Load + element: Call + func: Name + id: str = timedelta + ctx: Load + args: list + element: Constant + value: int = 0 + kind: NoneType = None + element: Constant + value: int = 0 + kind: NoneType = None + element: Name + id: str = r + ctx: Load + keywords: list + ctx: Load + orelse: list + element: Return + value: Name + id: str = NotImplemented + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __eq__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + element: Name + id: str = timedelta + ctx: Load + keywords: list + body: list + element: Return + value: Compare + left: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _cmp + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + keywords: list + ops: list + element: Eq + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + orelse: list + element: Return + value: Constant + value: bool = False + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __le__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + element: Name + id: str = timedelta + ctx: Load + keywords: list + body: list + element: Return + value: Compare + left: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _cmp + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + keywords: list + ops: list + element: LtE + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + orelse: list + element: Expr + value: Call + func: Name + id: str = _cmperror + ctx: Load + args: list + element: Name + id: str = self + ctx: Load + element: Name + id: str = other + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __lt__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + element: Name + id: str = timedelta + ctx: Load + keywords: list + body: list + element: Return + value: Compare + left: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _cmp + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + keywords: list + ops: list + element: Lt + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + orelse: list + element: Expr + value: Call + func: Name + id: str = _cmperror + ctx: Load + args: list + element: Name + id: str = self + ctx: Load + element: Name + id: str = other + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __ge__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + element: Name + id: str = timedelta + ctx: Load + keywords: list + body: list + element: Return + value: Compare + left: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _cmp + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + keywords: list + ops: list + element: GtE + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + orelse: list + element: Expr + value: Call + func: Name + id: str = _cmperror + ctx: Load + args: list + element: Name + id: str = self + ctx: Load + element: Name + id: str = other + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __gt__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + element: Name + id: str = timedelta + ctx: Load + keywords: list + body: list + element: Return + value: Compare + left: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _cmp + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + keywords: list + ops: list + element: Gt + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + orelse: list + element: Expr + value: Call + func: Name + id: str = _cmperror + ctx: Load + args: list + element: Name + id: str = self + ctx: Load + element: Name + id: str = other + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = _cmp + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assert + test: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + element: Name + id: str = timedelta + ctx: Load + keywords: list + msg: NoneType = None + element: Return + value: Call + func: Name + id: str = _cmp + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _to_microseconds + ctx: Load + args: list + keywords: list + element: Call + func: Attribute + value: Name + id: str = other + ctx: Load + attr: str = _to_microseconds + ctx: Load + args: list + keywords: list + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __bool__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: BoolOp + op: Or + values: list + element: Compare + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _days + ctx: Load + ops: list + element: NotEq + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + element: Compare + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _seconds + ctx: Load + ops: list + element: NotEq + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + element: Compare + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _microseconds + ctx: Load + ops: list + element: NotEq + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: Assign + targets: list + element: Name + id: str = _td_min + ctx: Store + value: Call + func: Name + id: str = timedelta + ctx: Load + args: list + element: UnaryOp + op: USub + operand: Constant + value: int = 999999999 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = _td_max + ctx: Store + value: Call + func: Name + id: str = timedelta + ctx: Load + args: list + keywords: list + element: keyword + arg: str = days + value: Constant + value: int = 999999999 + kind: NoneType = None + element: keyword + arg: str = hours + value: Constant + value: int = 23 + kind: NoneType = None + element: keyword + arg: str = minutes + value: Constant + value: int = 59 + kind: NoneType = None + element: keyword + arg: str = seconds + value: Constant + value: int = 59 + kind: NoneType = None + element: keyword + arg: str = microseconds + value: Constant + value: int = 999999 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = _td_resolution + ctx: Store + value: Call + func: Name + id: str = timedelta + ctx: Load + args: list + keywords: list + element: keyword + arg: str = microseconds + value: Constant + value: int = 1 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = js + kind: NoneType = None + element: Constant + value: str = {} + kind: NoneType = None + element: Constant + value: str = Object.defineProperty (timedelta, 'min', {get: function () {return _td_min;}}) + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = js + kind: NoneType = None + element: Constant + value: str = {} + kind: NoneType = None + element: Constant + value: str = Object.defineProperty (timedelta, 'max', {get: function () {return _td_max;}}) + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = js + kind: NoneType = None + element: Constant + value: str = {} + kind: NoneType = None + element: Constant + value: str = Object.defineProperty (timedelta, 'resolution', {get: function () {return _td_resolution;}}) + kind: NoneType = None + keywords: list + element: ClassDef + name: str = date + bases: list + keywords: list + body: list + element: Expr + value: Constant + value: str = Concrete date type. + + Constructors: + + __new__() + fromtimestamp() + today() + fromordinal() + + Operators: + + __repr__, __str__ + __eq__, __le__, __lt__, __ge__, __gt__, + __add__, __radd__, __sub__ (add/radd only with timedelta arg) + + Methods: + + timetuple() + toordinal() + weekday() + isoweekday(), isocalendar(), isoformat() + ctime() + strftime() + + Properties (readonly): + year, month, day + + kind: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = kwargs + kind: NoneType = None + keywords: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = year + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = month + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = day + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + element: Constant + value: NoneType = None + kind: NoneType = None + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Expr + value: Constant + value: str = Constructor. + + Arguments: + + year, month, day (required, base 1) + + kind: NoneType = None + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = year + ctx: Store + element: Name + id: str = month + ctx: Store + element: Name + id: str = day + ctx: Store + ctx: Store + value: Call + func: Name + id: str = _check_date_fields + ctx: Load + args: list + element: Name + id: str = year + ctx: Load + element: Name + id: str = month + ctx: Load + element: Name + id: str = day + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _year + ctx: Store + value: Name + id: str = year + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _month + ctx: Store + value: Name + id: str = month + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _day + ctx: Store + value: Name + id: str = day + ctx: Load + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = nokwargs + kind: NoneType = None + keywords: list + element: FunctionDef + name: str = fromtimestamp + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = cls + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = t + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = Construct a date from a POSIX timestamp (like time.time()). + kind: NoneType = None + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = y + ctx: Store + element: Name + id: str = m + ctx: Store + element: Name + id: str = d + ctx: Store + element: Name + id: str = hh + ctx: Store + element: Name + id: str = mm + ctx: Store + element: Name + id: str = ss + ctx: Store + element: Name + id: str = weekday + ctx: Store + element: Name + id: str = jday + ctx: Store + element: Name + id: str = dst + ctx: Store + ctx: Store + value: Call + func: Attribute + value: Name + id: str = _time + ctx: Load + attr: str = localtime + ctx: Load + args: list + element: Name + id: str = t + ctx: Load + keywords: list + type_comment: NoneType = None + element: Return + value: Call + func: Name + id: str = cls + ctx: Load + args: list + element: Name + id: str = y + ctx: Load + element: Name + id: str = m + ctx: Load + element: Name + id: str = d + ctx: Load + keywords: list + decorator_list: list + element: Name + id: str = classmethod + ctx: Load + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = today + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = cls + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = Construct a date from time.time(). + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = t + ctx: Store + value: Call + func: Attribute + value: Name + id: str = _time + ctx: Load + attr: str = time + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Return + value: Call + func: Attribute + value: Name + id: str = cls + ctx: Load + attr: str = fromtimestamp + ctx: Load + args: list + element: Name + id: str = t + ctx: Load + keywords: list + decorator_list: list + element: Name + id: str = classmethod + ctx: Load + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = fromordinal + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = cls + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = n + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = Contruct a date from a proleptic Gregorian ordinal. + + January 1 of year 1 is day 1. Only the year, month and day are + non-zero in the result. + + kind: NoneType = None + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = y + ctx: Store + element: Name + id: str = m + ctx: Store + element: Name + id: str = d + ctx: Store + ctx: Store + value: Call + func: Name + id: str = _ord2ymd + ctx: Load + args: list + element: Name + id: str = n + ctx: Load + keywords: list + type_comment: NoneType = None + element: Return + value: Call + func: Name + id: str = cls + ctx: Load + args: list + element: Name + id: str = y + ctx: Load + element: Name + id: str = m + ctx: Load + element: Name + id: str = d + ctx: Load + keywords: list + decorator_list: list + element: Name + id: str = classmethod + ctx: Load + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __repr__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = Convert to formal string, for repr(). + + >>> dt = datetime(2010, 1, 1) + >>> repr(dt) + 'datetime.datetime(2010, 1, 1, 0, 0)' + + >>> dt = datetime(2010, 1, 1, tzinfo=timezone.utc) + >>> repr(dt) + 'datetime.datetime(2010, 1, 1, 0, 0, tzinfo=datetime.timezone.utc)' + + kind: NoneType = None + element: Return + value: Call + func: Attribute + value: Constant + value: str = datetime.date({}, {}, {}) + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _year + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _month + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _day + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = ctime + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = Return ctime() style string. + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = weekday + ctx: Store + value: BoolOp + op: Or + values: list + element: BinOp + left: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = toordinal + ctx: Load + args: list + keywords: list + op: Mod + right: Constant + value: int = 7 + kind: NoneType = None + element: Constant + value: int = 7 + kind: NoneType = None + type_comment: NoneType = None + element: Return + value: Call + func: Attribute + value: Constant + value: str = {} {} {} 00:00:00 {} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Subscript + value: Name + id: str = _DAYNAMES + ctx: Load + slice: Index + value: Name + id: str = weekday + ctx: Load + ctx: Load + element: Subscript + value: Name + id: str = _MONTHNAMES + ctx: Load + slice: Index + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _month + ctx: Load + ctx: Load + element: Call + func: Name + id: str = rjust + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _day + ctx: Load + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = zfill + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _year + ctx: Load + element: Constant + value: int = 4 + kind: NoneType = None + keywords: list + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = strftime + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = fmt + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = Format using strftime(). + kind: NoneType = None + element: Return + value: Call + func: Name + id: str = _wrap_strftime + ctx: Load + args: list + element: Name + id: str = self + ctx: Load + element: Name + id: str = fmt + ctx: Load + element: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = timetuple + ctx: Load + args: list + keywords: list + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __format__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = fmt + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: UnaryOp + op: Not + operand: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = fmt + ctx: Load + element: Name + id: str = str + ctx: Load + keywords: list + body: list + element: Raise + exc: Call + func: Name + id: str = TypeError + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = must be str, not {} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Attribute + value: Call + func: Name + id: str = type + ctx: Load + args: list + element: Name + id: str = fmt + ctx: Load + keywords: list + attr: str = __name__ + ctx: Load + keywords: list + keywords: list + cause: NoneType = None + orelse: list + element: If + test: Compare + left: Call + func: Name + id: str = len + ctx: Load + args: list + element: Name + id: str = fmt + ctx: Load + keywords: list + ops: list + element: NotEq + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + body: list + element: Return + value: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = strftime + ctx: Load + args: list + element: Name + id: str = fmt + ctx: Load + keywords: list + orelse: list + element: Return + value: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = self + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = isoformat + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = Return the date formatted according to ISO. + + This is 'YYYY-MM-DD'. + + References: + - http://www.w3.org/TR/NOTE-datetime + - http://www.cl.cam.ac.uk/~mgk25/iso-time.html + + kind: NoneType = None + element: Return + value: Call + func: Attribute + value: Constant + value: str = {}-{}-{} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Call + func: Name + id: str = zfill + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _year + ctx: Load + element: Constant + value: int = 4 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = zfill + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _month + ctx: Load + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = zfill + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _day + ctx: Load + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __str__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = isoformat + ctx: Load + args: list + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = year + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = year (1-9999) + kind: NoneType = None + element: Return + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _year + ctx: Load + decorator_list: list + element: Name + id: str = property + ctx: Load + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = month + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = month (1-12) + kind: NoneType = None + element: Return + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _month + ctx: Load + decorator_list: list + element: Name + id: str = property + ctx: Load + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = day + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = day (1-31) + kind: NoneType = None + element: Return + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _day + ctx: Load + decorator_list: list + element: Name + id: str = property + ctx: Load + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = timetuple + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = Return local time tuple compatible with time.localtime(). + kind: NoneType = None + element: Return + value: Call + func: Name + id: str = _build_struct_time + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _year + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _month + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _day + ctx: Load + element: Constant + value: int = 0 + kind: NoneType = None + element: Constant + value: int = 0 + kind: NoneType = None + element: Constant + value: int = 0 + kind: NoneType = None + element: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = toordinal + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = Return proleptic Gregorian ordinal for the year, month and day. + + January 1 of year 1 is day 1. Only the year, month and day values + contribute to the result. + + kind: NoneType = None + element: Return + value: Call + func: Name + id: str = _ymd2ord + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _year + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _month + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _day + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = kwargs + kind: NoneType = None + keywords: list + element: FunctionDef + name: str = replace + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = year + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = month + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = day + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + element: Constant + value: NoneType = None + kind: NoneType = None + element: Constant + value: NoneType = None + kind: NoneType = None + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Expr + value: Constant + value: str = Return a new date with new values for the specified fields. + kind: NoneType = None + element: If + test: Compare + left: Name + id: str = year + ctx: Load + ops: list + element: Is + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = year + ctx: Store + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _year + ctx: Load + type_comment: NoneType = None + orelse: list + element: If + test: Compare + left: Name + id: str = month + ctx: Load + ops: list + element: Is + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = month + ctx: Store + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _month + ctx: Load + type_comment: NoneType = None + orelse: list + element: If + test: Compare + left: Name + id: str = day + ctx: Load + ops: list + element: Is + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = day + ctx: Store + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _day + ctx: Load + type_comment: NoneType = None + orelse: list + element: Return + value: Call + func: Name + id: str = date + ctx: Load + args: list + element: Name + id: str = year + ctx: Load + element: Name + id: str = month + ctx: Load + element: Name + id: str = day + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = nokwargs + kind: NoneType = None + keywords: list + element: FunctionDef + name: str = __eq__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + element: Name + id: str = date + ctx: Load + keywords: list + body: list + element: Return + value: Compare + left: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _cmp + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + keywords: list + ops: list + element: Eq + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + orelse: list + element: Return + value: Name + id: str = NotImplemented + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __le__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + element: Name + id: str = date + ctx: Load + keywords: list + body: list + element: Return + value: Compare + left: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _cmp + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + keywords: list + ops: list + element: LtE + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + orelse: list + element: Return + value: Name + id: str = NotImplemented + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __lt__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + element: Name + id: str = date + ctx: Load + keywords: list + body: list + element: Return + value: Compare + left: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _cmp + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + keywords: list + ops: list + element: Lt + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + orelse: list + element: Return + value: Name + id: str = NotImplemented + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __ge__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + element: Name + id: str = date + ctx: Load + keywords: list + body: list + element: Return + value: Compare + left: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _cmp + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + keywords: list + ops: list + element: GtE + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + orelse: list + element: Return + value: Name + id: str = NotImplemented + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __gt__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + element: Name + id: str = date + ctx: Load + keywords: list + body: list + element: Return + value: Compare + left: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _cmp + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + keywords: list + ops: list + element: Gt + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + orelse: list + element: Return + value: Name + id: str = NotImplemented + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = _cmp + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assert + test: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + element: Name + id: str = date + ctx: Load + keywords: list + msg: NoneType = None + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = y + ctx: Store + element: Name + id: str = m + ctx: Store + element: Name + id: str = d + ctx: Store + ctx: Store + value: Tuple + elts: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _year + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _month + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _day + ctx: Load + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = y2 + ctx: Store + element: Name + id: str = m2 + ctx: Store + element: Name + id: str = d2 + ctx: Store + ctx: Store + value: Tuple + elts: list + element: Attribute + value: Name + id: str = other + ctx: Load + attr: str = _year + ctx: Load + element: Attribute + value: Name + id: str = other + ctx: Load + attr: str = _month + ctx: Load + element: Attribute + value: Name + id: str = other + ctx: Load + attr: str = _day + ctx: Load + ctx: Load + type_comment: NoneType = None + element: Return + value: Call + func: Name + id: str = _cmp + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = {}{}{} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Call + func: Name + id: str = zfill + ctx: Load + args: list + element: Name + id: str = y + ctx: Load + element: Constant + value: int = 4 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = zfill + ctx: Load + args: list + element: Name + id: str = m + ctx: Load + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = zfill + ctx: Load + args: list + element: Name + id: str = d + ctx: Load + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + keywords: list + element: Call + func: Attribute + value: Constant + value: str = {}{}{} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Call + func: Name + id: str = zfill + ctx: Load + args: list + element: Name + id: str = y2 + ctx: Load + element: Constant + value: int = 4 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = zfill + ctx: Load + args: list + element: Name + id: str = m2 + ctx: Load + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = zfill + ctx: Load + args: list + element: Name + id: str = d2 + ctx: Load + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + keywords: list + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __add__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = Add a date to a timedelta. + kind: NoneType = None + element: If + test: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + element: Name + id: str = timedelta + ctx: Load + keywords: list + body: list + element: Assign + targets: list + element: Name + id: str = o + ctx: Store + value: BinOp + left: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = toordinal + ctx: Load + args: list + keywords: list + op: Add + right: Attribute + value: Name + id: str = other + ctx: Load + attr: str = days + ctx: Load + type_comment: NoneType = None + element: If + test: Compare + left: Constant + value: int = 0 + kind: NoneType = None + ops: list + element: Lt + element: LtE + comparators: list + element: Name + id: str = o + ctx: Load + element: Name + id: str = _MAXORDINAL + ctx: Load + body: list + element: Return + value: Call + func: Attribute + value: Name + id: str = date + ctx: Load + attr: str = fromordinal + ctx: Load + args: list + element: Name + id: str = o + ctx: Load + keywords: list + orelse: list + element: Raise + exc: Call + func: Name + id: str = OverflowError + ctx: Load + args: list + element: Constant + value: str = result out of range + kind: NoneType = None + keywords: list + cause: NoneType = None + orelse: list + element: Return + value: Name + id: str = NotImplemented + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __radd__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = __add__ + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __sub__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = Subtract two dates, or a date and a timedelta. + kind: NoneType = None + element: If + test: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + element: Name + id: str = timedelta + ctx: Load + keywords: list + body: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = opov + kind: NoneType = None + keywords: list + element: Return + value: BinOp + left: Name + id: str = self + ctx: Load + op: Add + right: Call + func: Name + id: str = timedelta + ctx: Load + args: list + element: UnaryOp + op: USub + operand: Attribute + value: Name + id: str = other + ctx: Load + attr: str = days + ctx: Load + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = noopov + kind: NoneType = None + keywords: list + orelse: list + element: If + test: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + element: Name + id: str = date + ctx: Load + keywords: list + body: list + element: Assign + targets: list + element: Name + id: str = days1 + ctx: Store + value: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = toordinal + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = days2 + ctx: Store + value: Call + func: Attribute + value: Name + id: str = other + ctx: Load + attr: str = toordinal + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = opov + kind: NoneType = None + keywords: list + element: Return + value: Call + func: Name + id: str = timedelta + ctx: Load + args: list + element: BinOp + left: Name + id: str = days1 + ctx: Load + op: Sub + right: Name + id: str = days2 + ctx: Load + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = noopov + kind: NoneType = None + keywords: list + orelse: list + element: Return + value: Name + id: str = NotImplemented + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = weekday + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = Return day of the week, where Monday == 0 ... Sunday == 6. + kind: NoneType = None + element: Return + value: BinOp + left: BinOp + left: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = toordinal + ctx: Load + args: list + keywords: list + op: Add + right: Constant + value: int = 6 + kind: NoneType = None + op: Mod + right: Constant + value: int = 7 + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = isoweekday + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = Return day of the week, where Monday == 1 ... Sunday == 7. + kind: NoneType = None + element: Return + value: BoolOp + op: Or + values: list + element: BinOp + left: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = toordinal + ctx: Load + args: list + keywords: list + op: Mod + right: Constant + value: int = 7 + kind: NoneType = None + element: Constant + value: int = 7 + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = isocalendar + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = Return a 3-tuple containing ISO year, week number, and weekday. + + The first ISO week of the year is the (Mon-Sun) week + containing the year's first Thursday; everything else derives + from that. + + The first week is 1; Monday is 1 ... Sunday is 7. + + ISO calendar algorithm taken from + http://www.phys.uu.nl/~vgent/calendar/isocalendar.htm + (used with permission) + + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = year + ctx: Store + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _year + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = week1monday + ctx: Store + value: Call + func: Name + id: str = _isoweek1monday + ctx: Load + args: list + element: Name + id: str = year + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = today + ctx: Store + value: Call + func: Name + id: str = _ymd2ord + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _year + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _month + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _day + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = week + ctx: Store + element: Name + id: str = day + ctx: Store + ctx: Store + value: Call + func: Name + id: str = divmod + ctx: Load + args: list + element: BinOp + left: Name + id: str = today + ctx: Load + op: Sub + right: Name + id: str = week1monday + ctx: Load + element: Constant + value: int = 7 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: If + test: Compare + left: Name + id: str = week + ctx: Load + ops: list + element: Lt + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + body: list + element: AugAssign + target: Name + id: str = year + ctx: Store + op: Sub + value: Constant + value: int = 1 + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = week1monday + ctx: Store + value: Call + func: Name + id: str = _isoweek1monday + ctx: Load + args: list + element: Name + id: str = year + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = week + ctx: Store + element: Name + id: str = day + ctx: Store + ctx: Store + value: Call + func: Name + id: str = divmod + ctx: Load + args: list + element: BinOp + left: Name + id: str = today + ctx: Load + op: Sub + right: Name + id: str = week1monday + ctx: Load + element: Constant + value: int = 7 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + orelse: list + element: If + test: Compare + left: Name + id: str = week + ctx: Load + ops: list + element: GtE + comparators: list + element: Constant + value: int = 52 + kind: NoneType = None + body: list + element: If + test: Compare + left: Name + id: str = today + ctx: Load + ops: list + element: GtE + comparators: list + element: Call + func: Name + id: str = _isoweek1monday + ctx: Load + args: list + element: BinOp + left: Name + id: str = year + ctx: Load + op: Add + right: Constant + value: int = 1 + kind: NoneType = None + keywords: list + body: list + element: AugAssign + target: Name + id: str = year + ctx: Store + op: Add + value: Constant + value: int = 1 + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = week + ctx: Store + value: Constant + value: int = 0 + kind: NoneType = None + type_comment: NoneType = None + orelse: list + orelse: list + element: Return + value: Tuple + elts: list + element: Name + id: str = year + ctx: Load + element: BinOp + left: Name + id: str = week + ctx: Load + op: Add + right: Constant + value: int = 1 + kind: NoneType = None + element: BinOp + left: Name + id: str = day + ctx: Load + op: Add + right: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = resolution + ctx: Store + value: Call + func: Name + id: str = timedelta + ctx: Load + args: list + keywords: list + element: keyword + arg: str = days + value: Constant + value: int = 1 + kind: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: Assign + targets: list + element: Name + id: str = _date_class + ctx: Store + value: Name + id: str = date + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = _d_min + ctx: Store + value: Call + func: Name + id: str = date + ctx: Load + args: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 1 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = _d_max + ctx: Store + value: Call + func: Name + id: str = date + ctx: Load + args: list + element: Constant + value: int = 9999 + kind: NoneType = None + element: Constant + value: int = 12 + kind: NoneType = None + element: Constant + value: int = 31 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = js + kind: NoneType = None + element: Constant + value: str = {} + kind: NoneType = None + element: Constant + value: str = Object.defineProperty (date, 'min', {get: function () {return _d_min;}}) + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = js + kind: NoneType = None + element: Constant + value: str = {} + kind: NoneType = None + element: Constant + value: str = Object.defineProperty (date, 'max', {get: function () {return _d_max;}}) + kind: NoneType = None + keywords: list + element: ClassDef + name: str = tzinfo + bases: list + keywords: list + body: list + element: Expr + value: Constant + value: str = Abstract base class for time zone info classes. + + Subclasses must override the name(), utcoffset() and dst() methods. + + kind: NoneType = None + element: FunctionDef + name: str = tzname + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = dt + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = datetime -> string name of time zone. + kind: NoneType = None + element: Raise + exc: Call + func: Name + id: str = NotImplementedError + ctx: Load + args: list + element: Constant + value: str = tzinfo subclass must override tzname() + kind: NoneType = None + keywords: list + cause: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = utcoffset + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = dt + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = datetime -> minutes east of UTC (negative for west of UTC) + kind: NoneType = None + element: Raise + exc: Call + func: Name + id: str = NotImplementedError + ctx: Load + args: list + element: Constant + value: str = tzinfo subclass must override utcoffset() + kind: NoneType = None + keywords: list + cause: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = dst + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = dt + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = datetime -> DST offset in minutes east of UTC. + + Return 0 if DST not in effect. utcoffset() must include the DST + offset. + + kind: NoneType = None + element: Raise + exc: Call + func: Name + id: str = NotImplementedError + ctx: Load + args: list + element: Constant + value: str = tzinfo subclass must override dst() + kind: NoneType = None + keywords: list + cause: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = fromutc + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = dt + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = datetime in UTC -> datetime in local time. + kind: NoneType = None + element: If + test: UnaryOp + op: Not + operand: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = dt + ctx: Load + element: Name + id: str = datetime + ctx: Load + keywords: list + body: list + element: Raise + exc: Call + func: Name + id: str = TypeError + ctx: Load + args: list + element: Constant + value: str = fromutc() requires a datetime argument + kind: NoneType = None + keywords: list + cause: NoneType = None + orelse: list + element: If + test: Compare + left: Attribute + value: Name + id: str = dt + ctx: Load + attr: str = tzinfo + ctx: Load + ops: list + element: IsNot + comparators: list + element: Name + id: str = self + ctx: Load + body: list + element: Raise + exc: Call + func: Name + id: str = ValueError + ctx: Load + args: list + element: Constant + value: str = dt.tzinfo is not self + kind: NoneType = None + keywords: list + cause: NoneType = None + orelse: list + element: Assign + targets: list + element: Name + id: str = dtoff + ctx: Store + value: Call + func: Attribute + value: Name + id: str = dt + ctx: Load + attr: str = utcoffset + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: If + test: Compare + left: Name + id: str = dtoff + ctx: Load + ops: list + element: Is + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Raise + exc: Call + func: Name + id: str = ValueError + ctx: Load + args: list + element: Constant + value: str = fromutc() requires a non-None utcoffset() result + kind: NoneType = None + keywords: list + cause: NoneType = None + orelse: list + element: Assign + targets: list + element: Name + id: str = dtdst + ctx: Store + value: Call + func: Attribute + value: Name + id: str = dt + ctx: Load + attr: str = dst + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: If + test: Compare + left: Name + id: str = dtdst + ctx: Load + ops: list + element: Is + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Raise + exc: Call + func: Name + id: str = ValueError + ctx: Load + args: list + element: Constant + value: str = fromutc() requires a non-None dst() result + kind: NoneType = None + keywords: list + cause: NoneType = None + orelse: list + element: Assign + targets: list + element: Name + id: str = delta + ctx: Store + value: BinOp + left: Name + id: str = dtoff + ctx: Load + op: Sub + right: Name + id: str = dtdst + ctx: Load + type_comment: NoneType = None + element: If + test: Name + id: str = delta + ctx: Load + body: list + element: AugAssign + target: Name + id: str = dt + ctx: Store + op: Add + value: Name + id: str = delta + ctx: Load + element: Assign + targets: list + element: Name + id: str = dtdst + ctx: Store + value: Call + func: Attribute + value: Name + id: str = dt + ctx: Load + attr: str = dst + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: If + test: Compare + left: Name + id: str = dtdst + ctx: Load + ops: list + element: Is + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Raise + exc: Call + func: Name + id: str = ValueError + ctx: Load + args: list + element: Constant + value: str = fromutc(): dt.dst gave inconsistent results; cannot convert + kind: NoneType = None + keywords: list + cause: NoneType = None + orelse: list + orelse: list + element: Return + value: BinOp + left: Name + id: str = dt + ctx: Load + op: Add + right: Name + id: str = dtdst + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: Assign + targets: list + element: Name + id: str = _tzinfo_class + ctx: Store + value: Name + id: str = tzinfo + ctx: Load + type_comment: NoneType = None + element: ClassDef + name: str = time + bases: list + keywords: list + body: list + element: Expr + value: Constant + value: str = Time with time zone. + + Constructors: + + __new__() + + Operators: + + __repr__, __str__ + __eq__, __le__, __lt__, __ge__, __gt__, + + Methods: + + strftime() + isoformat() + utcoffset() + tzname() + dst() + + Properties (readonly): + hour, minute, second, microsecond, tzinfo + + kind: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = kwargs + kind: NoneType = None + keywords: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = hour + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = minute + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = second + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = microsecond + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = tzinfo + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + element: Constant + value: int = 0 + kind: NoneType = None + element: Constant + value: int = 0 + kind: NoneType = None + element: Constant + value: int = 0 + kind: NoneType = None + element: Constant + value: int = 0 + kind: NoneType = None + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Expr + value: Constant + value: str = Constructor. + + Arguments: + + hour, minute (required) + second, microsecond (default to zero) + tzinfo (default to None) + + kind: NoneType = None + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = hour + ctx: Store + element: Name + id: str = minute + ctx: Store + element: Name + id: str = second + ctx: Store + element: Name + id: str = microsecond + ctx: Store + ctx: Store + value: Call + func: Name + id: str = _check_time_fields + ctx: Load + args: list + element: Name + id: str = hour + ctx: Load + element: Name + id: str = minute + ctx: Load + element: Name + id: str = second + ctx: Load + element: Name + id: str = microsecond + ctx: Load + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = _check_tzinfo_arg + ctx: Load + args: list + element: Name + id: str = tzinfo + ctx: Load + keywords: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _hour + ctx: Store + value: Name + id: str = hour + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _minute + ctx: Store + value: Name + id: str = minute + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _second + ctx: Store + value: Name + id: str = second + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _microsecond + ctx: Store + value: Name + id: str = microsecond + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _tzinfo + ctx: Store + value: Name + id: str = tzinfo + ctx: Load + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = nokwargs + kind: NoneType = None + keywords: list + element: FunctionDef + name: str = hour + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = hour (0-23) + kind: NoneType = None + element: Return + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _hour + ctx: Load + decorator_list: list + element: Name + id: str = property + ctx: Load + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = minute + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = minute (0-59) + kind: NoneType = None + element: Return + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _minute + ctx: Load + decorator_list: list + element: Name + id: str = property + ctx: Load + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = second + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = second (0-59) + kind: NoneType = None + element: Return + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _second + ctx: Load + decorator_list: list + element: Name + id: str = property + ctx: Load + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = microsecond + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = microsecond (0-999999) + kind: NoneType = None + element: Return + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _microsecond + ctx: Load + decorator_list: list + element: Name + id: str = property + ctx: Load + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = tzinfo + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = timezone info object + kind: NoneType = None + element: Return + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _tzinfo + ctx: Load + decorator_list: list + element: Name + id: str = property + ctx: Load + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __eq__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + element: Name + id: str = time + ctx: Load + keywords: list + body: list + element: Return + value: Compare + left: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _cmp + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + keywords: list + element: keyword + arg: str = allow_mixed + value: Constant + value: bool = True + kind: NoneType = None + ops: list + element: Eq + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + orelse: list + element: Return + value: Constant + value: bool = False + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __le__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + element: Name + id: str = time + ctx: Load + keywords: list + body: list + element: Return + value: Compare + left: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _cmp + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + keywords: list + ops: list + element: LtE + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + orelse: list + element: Expr + value: Call + func: Name + id: str = _cmperror + ctx: Load + args: list + element: Name + id: str = self + ctx: Load + element: Name + id: str = other + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __lt__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + element: Name + id: str = time + ctx: Load + keywords: list + body: list + element: Return + value: Compare + left: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _cmp + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + keywords: list + ops: list + element: Lt + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + orelse: list + element: Expr + value: Call + func: Name + id: str = _cmperror + ctx: Load + args: list + element: Name + id: str = self + ctx: Load + element: Name + id: str = other + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __ge__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + element: Name + id: str = time + ctx: Load + keywords: list + body: list + element: Return + value: Compare + left: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _cmp + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + keywords: list + ops: list + element: GtE + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + orelse: list + element: Expr + value: Call + func: Name + id: str = _cmperror + ctx: Load + args: list + element: Name + id: str = self + ctx: Load + element: Name + id: str = other + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __gt__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + element: Name + id: str = time + ctx: Load + keywords: list + body: list + element: Return + value: Compare + left: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _cmp + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + keywords: list + ops: list + element: Gt + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + orelse: list + element: Expr + value: Call + func: Name + id: str = _cmperror + ctx: Load + args: list + element: Name + id: str = self + ctx: Load + element: Name + id: str = other + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = kwargs + kind: NoneType = None + keywords: list + element: FunctionDef + name: str = _cmp + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = allow_mixed + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + element: Constant + value: bool = False + kind: NoneType = None + body: list + element: Assert + test: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + element: Name + id: str = time + ctx: Load + keywords: list + msg: NoneType = None + element: Assign + targets: list + element: Name + id: str = mytz + ctx: Store + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _tzinfo + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = ottz + ctx: Store + value: Attribute + value: Name + id: str = other + ctx: Load + attr: str = _tzinfo + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = myoff + ctx: Store + element: Name + id: str = otoff + ctx: Store + value: Constant + value: NoneType = None + kind: NoneType = None + type_comment: NoneType = None + element: If + test: Compare + left: Name + id: str = mytz + ctx: Load + ops: list + element: Is + comparators: list + element: Name + id: str = ottz + ctx: Load + body: list + element: Assign + targets: list + element: Name + id: str = base_compare + ctx: Store + value: Constant + value: bool = True + kind: NoneType = None + type_comment: NoneType = None + orelse: list + element: Assign + targets: list + element: Name + id: str = myoff + ctx: Store + value: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = utcoffset + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = otoff + ctx: Store + value: Call + func: Attribute + value: Name + id: str = other + ctx: Load + attr: str = utcoffset + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = base_compare + ctx: Store + value: Compare + left: Name + id: str = myoff + ctx: Load + ops: list + element: Eq + comparators: list + element: Name + id: str = otoff + ctx: Load + type_comment: NoneType = None + element: If + test: Name + id: str = base_compare + ctx: Load + body: list + element: Return + value: Call + func: Name + id: str = _cmp + ctx: Load + args: list + element: Tuple + elts: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _hour + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _minute + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _second + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _microsecond + ctx: Load + ctx: Load + element: Tuple + elts: list + element: Attribute + value: Name + id: str = other + ctx: Load + attr: str = _hour + ctx: Load + element: Attribute + value: Name + id: str = other + ctx: Load + attr: str = _minute + ctx: Load + element: Attribute + value: Name + id: str = other + ctx: Load + attr: str = _second + ctx: Load + element: Attribute + value: Name + id: str = other + ctx: Load + attr: str = _microsecond + ctx: Load + ctx: Load + keywords: list + orelse: list + element: If + test: BoolOp + op: Or + values: list + element: Compare + left: Name + id: str = myoff + ctx: Load + ops: list + element: Is + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + element: Compare + left: Name + id: str = otoff + ctx: Load + ops: list + element: Is + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: If + test: Name + id: str = allow_mixed + ctx: Load + body: list + element: Return + value: Constant + value: int = 2 + kind: NoneType = None + orelse: list + element: Raise + exc: Call + func: Name + id: str = TypeError + ctx: Load + args: list + element: Constant + value: str = cannot compare naive and aware times + kind: NoneType = None + keywords: list + cause: NoneType = None + orelse: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = opov + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = myhhmm + ctx: Store + value: BinOp + left: BinOp + left: BinOp + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _hour + ctx: Load + op: Mult + right: Constant + value: int = 60 + kind: NoneType = None + op: Add + right: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _minute + ctx: Load + op: Sub + right: BinOp + left: Name + id: str = myoff + ctx: Load + op: FloorDiv + right: Call + func: Name + id: str = timedelta + ctx: Load + args: list + keywords: list + element: keyword + arg: str = minutes + value: Constant + value: int = 1 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = othhmm + ctx: Store + value: BinOp + left: BinOp + left: BinOp + left: Attribute + value: Name + id: str = other + ctx: Load + attr: str = _hour + ctx: Load + op: Mult + right: Constant + value: int = 60 + kind: NoneType = None + op: Add + right: Attribute + value: Name + id: str = other + ctx: Load + attr: str = _minute + ctx: Load + op: Sub + right: BinOp + left: Name + id: str = otoff + ctx: Load + op: FloorDiv + right: Call + func: Name + id: str = timedelta + ctx: Load + args: list + keywords: list + element: keyword + arg: str = minutes + value: Constant + value: int = 1 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = noopov + kind: NoneType = None + keywords: list + element: Return + value: Call + func: Name + id: str = _cmp + ctx: Load + args: list + element: Tuple + elts: list + element: Name + id: str = myhhmm + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _second + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _microsecond + ctx: Load + ctx: Load + element: Tuple + elts: list + element: Name + id: str = othhmm + ctx: Load + element: Attribute + value: Name + id: str = other + ctx: Load + attr: str = _second + ctx: Load + element: Attribute + value: Name + id: str = other + ctx: Load + attr: str = _microsecond + ctx: Load + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = nokwargs + kind: NoneType = None + keywords: list + element: FunctionDef + name: str = _tzstr + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = sep + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + element: Constant + value: str = : + kind: NoneType = None + body: list + element: Expr + value: Constant + value: str = Return formatted timezone offset (+xx:xx) or None. + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = off + ctx: Store + value: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = utcoffset + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: If + test: Compare + left: Name + id: str = off + ctx: Load + ops: list + element: IsNot + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: If + test: Compare + left: Attribute + value: Name + id: str = off + ctx: Load + attr: str = days + ctx: Load + ops: list + element: Lt + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = sign + ctx: Store + value: Constant + value: str = - + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = off + ctx: Store + value: UnaryOp + op: USub + operand: Name + id: str = off + ctx: Load + type_comment: NoneType = None + orelse: list + element: Assign + targets: list + element: Name + id: str = sign + ctx: Store + value: Constant + value: str = + + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = hh + ctx: Store + element: Name + id: str = mm + ctx: Store + ctx: Store + value: Call + func: Name + id: str = divmod + ctx: Load + args: list + element: Name + id: str = off + ctx: Load + element: Call + func: Name + id: str = timedelta + ctx: Load + args: list + keywords: list + element: keyword + arg: str = hours + value: Constant + value: int = 1 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Assert + test: UnaryOp + op: Not + operand: BinOp + left: Name + id: str = mm + ctx: Load + op: Mod + right: Call + func: Name + id: str = timedelta + ctx: Load + args: list + keywords: list + element: keyword + arg: str = minutes + value: Constant + value: int = 1 + kind: NoneType = None + msg: Constant + value: str = whole minute + kind: NoneType = None + element: AugAssign + target: Name + id: str = mm + ctx: Store + op: FloorDiv + value: Call + func: Name + id: str = timedelta + ctx: Load + args: list + keywords: list + element: keyword + arg: str = minutes + value: Constant + value: int = 1 + kind: NoneType = None + element: Assert + test: Compare + left: Constant + value: int = 0 + kind: NoneType = None + ops: list + element: LtE + element: Lt + comparators: list + element: Name + id: str = hh + ctx: Load + element: Constant + value: int = 24 + kind: NoneType = None + msg: NoneType = None + element: Assign + targets: list + element: Name + id: str = off + ctx: Store + value: Call + func: Attribute + value: Constant + value: str = {}{}{}{} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Name + id: str = sign + ctx: Load + element: Call + func: Name + id: str = zfill + ctx: Load + args: list + element: Name + id: str = hh + ctx: Load + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + element: Name + id: str = sep + ctx: Load + element: Call + func: Name + id: str = zfill + ctx: Load + args: list + element: Name + id: str = mm + ctx: Load + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + keywords: list + type_comment: NoneType = None + orelse: list + element: Return + value: Name + id: str = off + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __repr__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = Convert to formal string, for repr(). + kind: NoneType = None + element: If + test: Compare + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _microsecond + ctx: Load + ops: list + element: NotEq + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = s + ctx: Store + value: Call + func: Attribute + value: Constant + value: str = , {}, {} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _second + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _microsecond + ctx: Load + keywords: list + type_comment: NoneType = None + orelse: list + element: If + test: Compare + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _second + ctx: Load + ops: list + element: NotEq + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = s + ctx: Store + value: Call + func: Attribute + value: Constant + value: str = , {} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _second + ctx: Load + keywords: list + type_comment: NoneType = None + orelse: list + element: Assign + targets: list + element: Name + id: str = s + ctx: Store + value: Constant + value: str = + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = s + ctx: Store + value: Call + func: Attribute + value: Constant + value: str = datetime.time({}, {}{}) + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _hour + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _minute + ctx: Load + element: Name + id: str = s + ctx: Load + keywords: list + type_comment: NoneType = None + element: If + test: Compare + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _tzinfo + ctx: Load + ops: list + element: IsNot + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Assert + test: Compare + left: Subscript + value: Name + id: str = s + ctx: Load + slice: Slice + lower: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + upper: NoneType = None + step: NoneType = None + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = ) + kind: NoneType = None + msg: NoneType = None + element: Assign + targets: list + element: Name + id: str = s + ctx: Store + value: BinOp + left: BinOp + left: Subscript + value: Name + id: str = s + ctx: Load + slice: Slice + lower: NoneType = None + upper: BinOp + left: Call + func: Name + id: str = len + ctx: Load + args: list + element: Name + id: str = s + ctx: Load + keywords: list + op: Sub + right: Constant + value: int = 1 + kind: NoneType = None + step: NoneType = None + ctx: Load + op: Add + right: Call + func: Attribute + value: Constant + value: str = , tzinfo={} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Call + func: Attribute + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _tzinfo + ctx: Load + attr: str = __repr__ + ctx: Load + args: list + keywords: list + keywords: list + op: Add + right: Constant + value: str = ) + kind: NoneType = None + type_comment: NoneType = None + orelse: list + element: Return + value: Name + id: str = s + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = isoformat + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = Return the time formatted according to ISO. + + This is 'HH:MM:SS.mmmmmm+zz:zz', or 'HH:MM:SS+zz:zz' if + self.microsecond == 0. + + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = s + ctx: Store + value: Call + func: Name + id: str = _format_time + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _hour + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _minute + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _second + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _microsecond + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = tz + ctx: Store + value: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _tzstr + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: If + test: Name + id: str = tz + ctx: Load + body: list + element: AugAssign + target: Name + id: str = s + ctx: Store + op: Add + value: Name + id: str = tz + ctx: Load + orelse: list + element: Return + value: Name + id: str = s + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __str__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = isoformat + ctx: Load + args: list + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = strftime + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = fmt + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = Format using strftime(). The date part of the timestamp passed + to underlying strftime should not be used. + + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = timetuple + ctx: Store + value: Tuple + elts: list + element: Constant + value: int = 1900 + kind: NoneType = None + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 1 + kind: NoneType = None + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _hour + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _minute + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _second + ctx: Load + element: Constant + value: int = 0 + kind: NoneType = None + element: Constant + value: int = 1 + kind: NoneType = None + element: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Return + value: Call + func: Name + id: str = _wrap_strftime + ctx: Load + args: list + element: Name + id: str = self + ctx: Load + element: Name + id: str = fmt + ctx: Load + element: Name + id: str = timetuple + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __format__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = fmt + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: UnaryOp + op: Not + operand: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = fmt + ctx: Load + element: Name + id: str = str + ctx: Load + keywords: list + body: list + element: Raise + exc: Call + func: Name + id: str = TypeError + ctx: Load + args: list + element: BinOp + left: Constant + value: str = must be str, not %s + kind: NoneType = None + op: Mod + right: Attribute + value: Call + func: Name + id: str = type + ctx: Load + args: list + element: Name + id: str = fmt + ctx: Load + keywords: list + attr: str = __name__ + ctx: Load + keywords: list + cause: NoneType = None + orelse: list + element: If + test: Compare + left: Call + func: Name + id: str = len + ctx: Load + args: list + element: Name + id: str = fmt + ctx: Load + keywords: list + ops: list + element: NotEq + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + body: list + element: Return + value: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = strftime + ctx: Load + args: list + element: Name + id: str = fmt + ctx: Load + keywords: list + orelse: list + element: Return + value: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = self + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = utcoffset + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = Return the timezone offset in minutes east of UTC (negative west of + UTC). + kind: NoneType = None + element: If + test: Compare + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _tzinfo + ctx: Load + ops: list + element: Is + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Return + value: Constant + value: NoneType = None + kind: NoneType = None + orelse: list + element: Assign + targets: list + element: Name + id: str = offset + ctx: Store + value: Call + func: Attribute + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _tzinfo + ctx: Load + attr: str = utcoffset + ctx: Load + args: list + element: Constant + value: NoneType = None + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = _check_utc_offset + ctx: Load + args: list + element: Constant + value: str = utcoffset + kind: NoneType = None + element: Name + id: str = offset + ctx: Load + keywords: list + element: Return + value: Name + id: str = offset + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = tzname + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = Return the timezone name. + + Note that the name is 100% informational -- there's no requirement that + it mean anything in particular. For example, "GMT", "UTC", "-500", + "-5:00", "EDT", "US/Eastern", "America/New York" are all valid replies. + + kind: NoneType = None + element: If + test: Compare + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _tzinfo + ctx: Load + ops: list + element: Is + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Return + value: Constant + value: NoneType = None + kind: NoneType = None + orelse: list + element: Assign + targets: list + element: Name + id: str = name + ctx: Store + value: Call + func: Attribute + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _tzinfo + ctx: Load + attr: str = tzname + ctx: Load + args: list + element: Constant + value: NoneType = None + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = _check_tzname + ctx: Load + args: list + element: Name + id: str = name + ctx: Load + keywords: list + element: Return + value: Name + id: str = name + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = dst + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = Return 0 if DST is not in effect, or the DST offset (in minutes + eastward) if DST is in effect. + + This is purely informational; the DST offset has already been added to + the UTC offset returned by utcoffset() if applicable, so there's no + need to consult dst() unless you're interested in displaying the DST + info. + + kind: NoneType = None + element: If + test: Compare + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _tzinfo + ctx: Load + ops: list + element: Is + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Return + value: Constant + value: NoneType = None + kind: NoneType = None + orelse: list + element: Assign + targets: list + element: Name + id: str = offset + ctx: Store + value: Call + func: Attribute + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _tzinfo + ctx: Load + attr: str = dst + ctx: Load + args: list + element: Constant + value: NoneType = None + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = _check_utc_offset + ctx: Load + args: list + element: Constant + value: str = dst + kind: NoneType = None + element: Name + id: str = offset + ctx: Load + keywords: list + element: Return + value: Name + id: str = offset + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = kwargs + kind: NoneType = None + keywords: list + element: FunctionDef + name: str = replace + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = hour + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = minute + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = second + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = microsecond + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = tzinfo + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + element: Constant + value: NoneType = None + kind: NoneType = None + element: Constant + value: NoneType = None + kind: NoneType = None + element: Constant + value: NoneType = None + kind: NoneType = None + element: Constant + value: NoneType = None + kind: NoneType = None + element: Constant + value: bool = True + kind: NoneType = None + body: list + element: Expr + value: Constant + value: str = Return a new time with new values for the specified fields. + kind: NoneType = None + element: If + test: Compare + left: Name + id: str = hour + ctx: Load + ops: list + element: Is + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = hour + ctx: Store + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = hour + ctx: Load + type_comment: NoneType = None + orelse: list + element: If + test: Compare + left: Name + id: str = minute + ctx: Load + ops: list + element: Is + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = minute + ctx: Store + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = minute + ctx: Load + type_comment: NoneType = None + orelse: list + element: If + test: Compare + left: Name + id: str = second + ctx: Load + ops: list + element: Is + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = second + ctx: Store + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = second + ctx: Load + type_comment: NoneType = None + orelse: list + element: If + test: Compare + left: Name + id: str = microsecond + ctx: Load + ops: list + element: Is + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = microsecond + ctx: Store + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = microsecond + ctx: Load + type_comment: NoneType = None + orelse: list + element: If + test: Compare + left: Name + id: str = tzinfo + ctx: Load + ops: list + element: Is + comparators: list + element: Constant + value: bool = True + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = tzinfo + ctx: Store + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = tzinfo + ctx: Load + type_comment: NoneType = None + orelse: list + element: Return + value: Call + func: Name + id: str = time + ctx: Load + args: list + element: Name + id: str = hour + ctx: Load + element: Name + id: str = minute + ctx: Load + element: Name + id: str = second + ctx: Load + element: Name + id: str = microsecond + ctx: Load + element: Name + id: str = tzinfo + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = nokwargs + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = resolution + ctx: Store + value: Call + func: Name + id: str = timedelta + ctx: Load + args: list + keywords: list + element: keyword + arg: str = microseconds + value: Constant + value: int = 1 + kind: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: Assign + targets: list + element: Name + id: str = _time_class + ctx: Store + value: Name + id: str = time + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = _tm_min + ctx: Store + value: Call + func: Name + id: str = time + ctx: Load + args: list + element: Constant + value: int = 0 + kind: NoneType = None + element: Constant + value: int = 0 + kind: NoneType = None + element: Constant + value: int = 0 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = _tm_max + ctx: Store + value: Call + func: Name + id: str = time + ctx: Load + args: list + element: Constant + value: int = 23 + kind: NoneType = None + element: Constant + value: int = 59 + kind: NoneType = None + element: Constant + value: int = 59 + kind: NoneType = None + element: Constant + value: int = 999999 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = js + kind: NoneType = None + element: Constant + value: str = {} + kind: NoneType = None + element: Constant + value: str = Object.defineProperty (time, 'min', {get: function () {return _tm_min;}}) + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = js + kind: NoneType = None + element: Constant + value: str = {} + kind: NoneType = None + element: Constant + value: str = Object.defineProperty (time, 'max', {get: function () {return _tm_max;}}) + kind: NoneType = None + keywords: list + element: ClassDef + name: str = datetime + bases: list + element: Name + id: str = date + ctx: Load + keywords: list + body: list + element: Expr + value: Constant + value: str = datetime(year, month, day[, hour[, minute[, second[, microsecond[,tzinfo]]]]]) + + The year, month and day arguments are required. tzinfo may be None, or an + instance of a tzinfo subclass. The remaining arguments may be ints. + + kind: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = kwargs + kind: NoneType = None + keywords: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = year + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = month + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = day + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = hour + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = minute + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = second + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = microsecond + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = tzinfo + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + element: Constant + value: NoneType = None + kind: NoneType = None + element: Constant + value: NoneType = None + kind: NoneType = None + element: Constant + value: int = 0 + kind: NoneType = None + element: Constant + value: int = 0 + kind: NoneType = None + element: Constant + value: int = 0 + kind: NoneType = None + element: Constant + value: int = 0 + kind: NoneType = None + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = year + ctx: Store + element: Name + id: str = month + ctx: Store + element: Name + id: str = day + ctx: Store + ctx: Store + value: Call + func: Name + id: str = _check_date_fields + ctx: Load + args: list + element: Name + id: str = year + ctx: Load + element: Name + id: str = month + ctx: Load + element: Name + id: str = day + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = hour + ctx: Store + element: Name + id: str = minute + ctx: Store + element: Name + id: str = second + ctx: Store + element: Name + id: str = microsecond + ctx: Store + ctx: Store + value: Call + func: Name + id: str = _check_time_fields + ctx: Load + args: list + element: Name + id: str = hour + ctx: Load + element: Name + id: str = minute + ctx: Load + element: Name + id: str = second + ctx: Load + element: Name + id: str = microsecond + ctx: Load + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = _check_tzinfo_arg + ctx: Load + args: list + element: Name + id: str = tzinfo + ctx: Load + keywords: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _year + ctx: Store + value: Name + id: str = year + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _month + ctx: Store + value: Name + id: str = month + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _day + ctx: Store + value: Name + id: str = day + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _hour + ctx: Store + value: Name + id: str = hour + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _minute + ctx: Store + value: Name + id: str = minute + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _second + ctx: Store + value: Name + id: str = second + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _microsecond + ctx: Store + value: Name + id: str = microsecond + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _tzinfo + ctx: Store + value: Name + id: str = tzinfo + ctx: Load + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = nokwargs + kind: NoneType = None + keywords: list + element: FunctionDef + name: str = hour + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = hour (0-23) + kind: NoneType = None + element: Return + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _hour + ctx: Load + decorator_list: list + element: Name + id: str = property + ctx: Load + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = minute + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = minute (0-59) + kind: NoneType = None + element: Return + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _minute + ctx: Load + decorator_list: list + element: Name + id: str = property + ctx: Load + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = second + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = second (0-59) + kind: NoneType = None + element: Return + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _second + ctx: Load + decorator_list: list + element: Name + id: str = property + ctx: Load + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = microsecond + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = microsecond (0-999999) + kind: NoneType = None + element: Return + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _microsecond + ctx: Load + decorator_list: list + element: Name + id: str = property + ctx: Load + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = tzinfo + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = timezone info object + kind: NoneType = None + element: Return + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _tzinfo + ctx: Load + decorator_list: list + element: Name + id: str = property + ctx: Load + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = _fromtimestamp + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = cls + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = t + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = utc + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = tz + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = Construct a datetime from a POSIX timestamp (like time.time()). + + A timezone info object may be passed in as well. + + kind: NoneType = None + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = frac + ctx: Store + element: Name + id: str = t + ctx: Store + ctx: Store + value: Call + func: Attribute + value: Name + id: str = _math + ctx: Load + attr: str = modf + ctx: Load + args: list + element: Name + id: str = t + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = us + ctx: Store + value: Call + func: Name + id: str = round + ctx: Load + args: list + element: BinOp + left: Name + id: str = frac + ctx: Load + op: Mult + right: Constant + value: float = 1000000.0 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: If + test: Compare + left: Name + id: str = us + ctx: Load + ops: list + element: GtE + comparators: list + element: Constant + value: int = 1000000 + kind: NoneType = None + body: list + element: AugAssign + target: Name + id: str = t + ctx: Store + op: Add + value: Constant + value: int = 1 + kind: NoneType = None + element: AugAssign + target: Name + id: str = us + ctx: Store + op: Sub + value: Constant + value: int = 1000000 + kind: NoneType = None + orelse: list + element: If + test: Compare + left: Name + id: str = us + ctx: Load + ops: list + element: Lt + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + body: list + element: AugAssign + target: Name + id: str = t + ctx: Store + op: Sub + value: Constant + value: int = 1 + kind: NoneType = None + element: AugAssign + target: Name + id: str = us + ctx: Store + op: Add + value: Constant + value: int = 1000000 + kind: NoneType = None + orelse: list + element: Assign + targets: list + element: Name + id: str = converter + ctx: Store + value: IfExp + test: Name + id: str = utc + ctx: Load + body: Attribute + value: Name + id: str = _time + ctx: Load + attr: str = gmtime + ctx: Load + orelse: Attribute + value: Name + id: str = _time + ctx: Load + attr: str = localtime + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = y + ctx: Store + element: Name + id: str = m + ctx: Store + element: Name + id: str = d + ctx: Store + element: Name + id: str = hh + ctx: Store + element: Name + id: str = mm + ctx: Store + element: Name + id: str = ss + ctx: Store + element: Name + id: str = weekday + ctx: Store + element: Name + id: str = jday + ctx: Store + element: Name + id: str = dst + ctx: Store + ctx: Store + value: Call + func: Name + id: str = converter + ctx: Load + args: list + element: Name + id: str = t + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = ss + ctx: Store + value: Call + func: Name + id: str = min + ctx: Load + args: list + element: Name + id: str = ss + ctx: Load + element: Constant + value: int = 59 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Return + value: Call + func: Name + id: str = cls + ctx: Load + args: list + element: Name + id: str = y + ctx: Load + element: Name + id: str = m + ctx: Load + element: Name + id: str = d + ctx: Load + element: Name + id: str = hh + ctx: Load + element: Name + id: str = mm + ctx: Load + element: Name + id: str = ss + ctx: Load + element: Name + id: str = us + ctx: Load + element: Name + id: str = tz + ctx: Load + keywords: list + decorator_list: list + element: Name + id: str = classmethod + ctx: Load + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = fromtimestamp + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = cls + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = t + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = tz + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Expr + value: Constant + value: str = Construct a datetime from a POSIX timestamp (like time.time()). + + A timezone info object may be passed in as well. + + kind: NoneType = None + element: Expr + value: Call + func: Name + id: str = _check_tzinfo_arg + ctx: Load + args: list + element: Name + id: str = tz + ctx: Load + keywords: list + element: Assign + targets: list + element: Name + id: str = result + ctx: Store + value: Call + func: Attribute + value: Name + id: str = cls + ctx: Load + attr: str = _fromtimestamp + ctx: Load + args: list + element: Name + id: str = t + ctx: Load + element: Compare + left: Name + id: str = tz + ctx: Load + ops: list + element: IsNot + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + element: Name + id: str = tz + ctx: Load + keywords: list + type_comment: NoneType = None + element: If + test: Compare + left: Name + id: str = tz + ctx: Load + ops: list + element: IsNot + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = result + ctx: Store + value: Call + func: Attribute + value: Name + id: str = tz + ctx: Load + attr: str = fromutc + ctx: Load + args: list + element: Name + id: str = result + ctx: Load + keywords: list + type_comment: NoneType = None + orelse: list + element: Return + value: Name + id: str = result + ctx: Load + decorator_list: list + element: Name + id: str = classmethod + ctx: Load + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = utcfromtimestamp + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = cls + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = t + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = Construct a naive UTC datetime from a POSIX timestamp. + kind: NoneType = None + element: Return + value: Call + func: Attribute + value: Name + id: str = cls + ctx: Load + attr: str = _fromtimestamp + ctx: Load + args: list + element: Name + id: str = t + ctx: Load + element: Constant + value: bool = True + kind: NoneType = None + element: Constant + value: NoneType = None + kind: NoneType = None + keywords: list + decorator_list: list + element: Name + id: str = classmethod + ctx: Load + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = now + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = cls + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = tz + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Expr + value: Constant + value: str = Construct a datetime from time.time() and optional time zone info. + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = t + ctx: Store + value: Call + func: Attribute + value: Name + id: str = _time + ctx: Load + attr: str = time + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Return + value: Call + func: Attribute + value: Name + id: str = cls + ctx: Load + attr: str = fromtimestamp + ctx: Load + args: list + element: Name + id: str = t + ctx: Load + element: Name + id: str = tz + ctx: Load + keywords: list + decorator_list: list + element: Name + id: str = classmethod + ctx: Load + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = utcnow + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = cls + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = Construct a UTC datetime from time.time(). + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = t + ctx: Store + value: Call + func: Attribute + value: Name + id: str = _time + ctx: Load + attr: str = time + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Return + value: Call + func: Attribute + value: Name + id: str = cls + ctx: Load + attr: str = utcfromtimestamp + ctx: Load + args: list + element: Name + id: str = t + ctx: Load + keywords: list + decorator_list: list + element: Name + id: str = classmethod + ctx: Load + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = combine + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = cls + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = date + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = time + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = Construct a datetime from a given date and a given time. + kind: NoneType = None + element: If + test: UnaryOp + op: Not + operand: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = date + ctx: Load + element: Name + id: str = _date_class + ctx: Load + keywords: list + body: list + element: Raise + exc: Call + func: Name + id: str = TypeError + ctx: Load + args: list + element: Constant + value: str = date argument must be a date instance + kind: NoneType = None + keywords: list + cause: NoneType = None + orelse: list + element: If + test: UnaryOp + op: Not + operand: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = time + ctx: Load + element: Name + id: str = _time_class + ctx: Load + keywords: list + body: list + element: Raise + exc: Call + func: Name + id: str = TypeError + ctx: Load + args: list + element: Constant + value: str = time argument must be a time instance + kind: NoneType = None + keywords: list + cause: NoneType = None + orelse: list + element: Return + value: Call + func: Name + id: str = cls + ctx: Load + args: list + element: Attribute + value: Name + id: str = date + ctx: Load + attr: str = year + ctx: Load + element: Attribute + value: Name + id: str = date + ctx: Load + attr: str = month + ctx: Load + element: Attribute + value: Name + id: str = date + ctx: Load + attr: str = day + ctx: Load + element: Attribute + value: Name + id: str = time + ctx: Load + attr: str = hour + ctx: Load + element: Attribute + value: Name + id: str = time + ctx: Load + attr: str = minute + ctx: Load + element: Attribute + value: Name + id: str = time + ctx: Load + attr: str = second + ctx: Load + element: Attribute + value: Name + id: str = time + ctx: Load + attr: str = microsecond + ctx: Load + element: Attribute + value: Name + id: str = time + ctx: Load + attr: str = tzinfo + ctx: Load + keywords: list + decorator_list: list + element: Name + id: str = classmethod + ctx: Load + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = timetuple + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = Return local time tuple compatible with time.localtime(). + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = dst + ctx: Store + value: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = dst + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: If + test: Compare + left: Name + id: str = dst + ctx: Load + ops: list + element: Is + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = dst + ctx: Store + value: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + type_comment: NoneType = None + orelse: list + element: If + test: Name + id: str = dst + ctx: Load + body: list + element: Assign + targets: list + element: Name + id: str = dst + ctx: Store + value: Constant + value: int = 1 + kind: NoneType = None + type_comment: NoneType = None + orelse: list + element: Assign + targets: list + element: Name + id: str = dst + ctx: Store + value: Constant + value: int = 0 + kind: NoneType = None + type_comment: NoneType = None + element: Return + value: Call + func: Name + id: str = _build_struct_time + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = year + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = month + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = day + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = hour + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = minute + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = second + ctx: Load + element: Name + id: str = dst + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = timestamp + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = Return POSIX timestamp as float + kind: NoneType = None + element: If + test: Compare + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _tzinfo + ctx: Load + ops: list + element: Is + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Return + value: BinOp + left: Call + func: Attribute + value: Name + id: str = _time + ctx: Load + attr: str = mktime + ctx: Load + args: list + element: Tuple + elts: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = year + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = month + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = day + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = hour + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = minute + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = second + ctx: Load + element: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + element: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + element: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + keywords: list + op: Add + right: BinOp + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = microsecond + ctx: Load + op: Div + right: Constant + value: float = 1000000.0 + kind: NoneType = None + orelse: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = opov + kind: NoneType = None + keywords: list + element: Return + value: Call + func: Attribute + value: BinOp + left: Name + id: str = self + ctx: Load + op: Sub + right: Name + id: str = _EPOCH + ctx: Load + attr: str = total_seconds + ctx: Load + args: list + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = noopov + kind: NoneType = None + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = utctimetuple + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = Return UTC time tuple compatible with time.gmtime(). + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = offset + ctx: Store + value: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = utcoffset + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: If + test: Name + id: str = offset + ctx: Load + body: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = opov + kind: NoneType = None + keywords: list + element: AugAssign + target: Name + id: str = self + ctx: Store + op: Sub + value: Name + id: str = offset + ctx: Load + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = noopov + kind: NoneType = None + keywords: list + orelse: list + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = y + ctx: Store + element: Name + id: str = m + ctx: Store + element: Name + id: str = d + ctx: Store + ctx: Store + value: Tuple + elts: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = year + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = month + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = day + ctx: Load + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = hh + ctx: Store + element: Name + id: str = mm + ctx: Store + element: Name + id: str = ss + ctx: Store + ctx: Store + value: Tuple + elts: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = hour + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = minute + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = second + ctx: Load + ctx: Load + type_comment: NoneType = None + element: Return + value: Call + func: Name + id: str = _build_struct_time + ctx: Load + args: list + element: Name + id: str = y + ctx: Load + element: Name + id: str = m + ctx: Load + element: Name + id: str = d + ctx: Load + element: Name + id: str = hh + ctx: Load + element: Name + id: str = mm + ctx: Load + element: Name + id: str = ss + ctx: Load + element: Constant + value: int = 0 + kind: NoneType = None + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = date + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = Return the date part. + kind: NoneType = None + element: Return + value: Call + func: Name + id: str = date + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _year + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _month + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _day + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = time + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = Return the time part, with tzinfo None. + kind: NoneType = None + element: Return + value: Call + func: Name + id: str = time + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = hour + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = minute + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = second + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = microsecond + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = timetz + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = Return the time part, with same tzinfo. + kind: NoneType = None + element: Return + value: Call + func: Name + id: str = time + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = hour + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = minute + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = second + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = microsecond + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _tzinfo + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = kwargs + kind: NoneType = None + keywords: list + element: FunctionDef + name: str = replace + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = year + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = month + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = day + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = hour + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = minute + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = second + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = microsecond + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = tzinfo + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + element: Constant + value: NoneType = None + kind: NoneType = None + element: Constant + value: NoneType = None + kind: NoneType = None + element: Constant + value: NoneType = None + kind: NoneType = None + element: Constant + value: NoneType = None + kind: NoneType = None + element: Constant + value: NoneType = None + kind: NoneType = None + element: Constant + value: NoneType = None + kind: NoneType = None + element: Constant + value: NoneType = None + kind: NoneType = None + element: Constant + value: bool = True + kind: NoneType = None + body: list + element: Expr + value: Constant + value: str = Return a new datetime with new values for the specified fields. + kind: NoneType = None + element: If + test: Compare + left: Name + id: str = year + ctx: Load + ops: list + element: Is + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = year + ctx: Store + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = year + ctx: Load + type_comment: NoneType = None + orelse: list + element: If + test: Compare + left: Name + id: str = month + ctx: Load + ops: list + element: Is + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = month + ctx: Store + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = month + ctx: Load + type_comment: NoneType = None + orelse: list + element: If + test: Compare + left: Name + id: str = day + ctx: Load + ops: list + element: Is + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = day + ctx: Store + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = day + ctx: Load + type_comment: NoneType = None + orelse: list + element: If + test: Compare + left: Name + id: str = hour + ctx: Load + ops: list + element: Is + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = hour + ctx: Store + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = hour + ctx: Load + type_comment: NoneType = None + orelse: list + element: If + test: Compare + left: Name + id: str = minute + ctx: Load + ops: list + element: Is + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = minute + ctx: Store + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = minute + ctx: Load + type_comment: NoneType = None + orelse: list + element: If + test: Compare + left: Name + id: str = second + ctx: Load + ops: list + element: Is + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = second + ctx: Store + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = second + ctx: Load + type_comment: NoneType = None + orelse: list + element: If + test: Compare + left: Name + id: str = microsecond + ctx: Load + ops: list + element: Is + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = microsecond + ctx: Store + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = microsecond + ctx: Load + type_comment: NoneType = None + orelse: list + element: If + test: Compare + left: Name + id: str = tzinfo + ctx: Load + ops: list + element: Is + comparators: list + element: Constant + value: bool = True + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = tzinfo + ctx: Store + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = tzinfo + ctx: Load + type_comment: NoneType = None + orelse: list + element: Return + value: Call + func: Name + id: str = datetime + ctx: Load + args: list + element: Name + id: str = year + ctx: Load + element: Name + id: str = month + ctx: Load + element: Name + id: str = day + ctx: Load + element: Name + id: str = hour + ctx: Load + element: Name + id: str = minute + ctx: Load + element: Name + id: str = second + ctx: Load + element: Name + id: str = microsecond + ctx: Load + element: Name + id: str = tzinfo + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = nokwargs + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = kwargs + kind: NoneType = None + keywords: list + element: FunctionDef + name: str = astimezone + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = tz + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: If + test: Compare + left: Name + id: str = tz + ctx: Load + ops: list + element: Is + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: If + test: Compare + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = tzinfo + ctx: Load + ops: list + element: Is + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Raise + exc: Call + func: Name + id: str = ValueError + ctx: Load + args: list + element: Constant + value: str = astimezone() requires an aware datetime + kind: NoneType = None + keywords: list + cause: NoneType = None + orelse: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = opov + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = ts + ctx: Store + value: BinOp + left: BinOp + left: Name + id: str = self + ctx: Load + op: Sub + right: Name + id: str = _EPOCH + ctx: Load + op: FloorDiv + right: Call + func: Name + id: str = timedelta + ctx: Load + args: list + keywords: list + element: keyword + arg: str = seconds + value: Constant + value: int = 1 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = noopov + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = localtm + ctx: Store + value: Call + func: Attribute + value: Name + id: str = _time + ctx: Load + attr: str = localtime + ctx: Load + args: list + element: Name + id: str = ts + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = local + ctx: Store + value: Call + func: Name + id: str = datetime + ctx: Load + args: list + element: Starred + value: Subscript + value: Name + id: str = localtm + ctx: Load + slice: Slice + lower: NoneType = None + upper: Constant + value: int = 6 + kind: NoneType = None + step: NoneType = None + ctx: Load + ctx: Load + keywords: list + type_comment: NoneType = None + element: If + test: Compare + left: Call + func: Name + id: str = len + ctx: Load + args: list + element: Name + id: str = localtm + ctx: Load + keywords: list + ops: list + element: Gt + comparators: list + element: Constant + value: int = 9 + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = gmtoff + ctx: Store + value: Subscript + value: Name + id: str = localtm + ctx: Load + slice: Index + value: Constant + value: int = 10 + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = zone + ctx: Store + value: Subscript + value: Name + id: str = localtm + ctx: Load + slice: Index + value: Constant + value: int = 9 + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = tz + ctx: Store + value: Call + func: Name + id: str = timezone + ctx: Load + args: list + element: Call + func: Name + id: str = timedelta + ctx: Load + args: list + keywords: list + element: keyword + arg: str = seconds + value: Name + id: str = gmtoff + ctx: Load + element: Name + id: str = zone + ctx: Load + keywords: list + type_comment: NoneType = None + orelse: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = opov + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = delta + ctx: Store + value: BinOp + left: Name + id: str = local + ctx: Load + op: Sub + right: Call + func: Name + id: str = datetime + ctx: Load + args: list + element: Starred + value: Subscript + value: Call + func: Attribute + value: Name + id: str = _time + ctx: Load + attr: str = gmtime + ctx: Load + args: list + element: Name + id: str = ts + ctx: Load + keywords: list + slice: Slice + lower: NoneType = None + upper: Constant + value: int = 6 + kind: NoneType = None + step: NoneType = None + ctx: Load + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = dst + ctx: Store + value: BoolOp + op: And + values: list + element: Attribute + value: Name + id: str = _time + ctx: Load + attr: str = daylight + ctx: Load + element: Compare + left: Subscript + value: Name + id: str = localtm + ctx: Load + slice: Index + value: Constant + value: int = 8 + kind: NoneType = None + ctx: Load + ops: list + element: Gt + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = gmtoff + ctx: Store + value: UnaryOp + op: USub + operand: IfExp + test: Name + id: str = dst + ctx: Load + body: Attribute + value: Name + id: str = _time + ctx: Load + attr: str = altzone + ctx: Load + orelse: Attribute + value: Name + id: str = _time + ctx: Load + attr: str = timezone + ctx: Load + type_comment: NoneType = None + element: If + test: Compare + left: Name + id: str = delta + ctx: Load + ops: list + element: Eq + comparators: list + element: Call + func: Name + id: str = timedelta + ctx: Load + args: list + keywords: list + element: keyword + arg: str = seconds + value: Name + id: str = gmtoff + ctx: Load + body: list + element: Assign + targets: list + element: Name + id: str = tz + ctx: Store + value: Call + func: Name + id: str = timezone + ctx: Load + args: list + element: Name + id: str = delta + ctx: Load + element: Subscript + value: Attribute + value: Name + id: str = _time + ctx: Load + attr: str = tzname + ctx: Load + slice: Index + value: Name + id: str = dst + ctx: Load + ctx: Load + keywords: list + type_comment: NoneType = None + orelse: list + element: Assign + targets: list + element: Name + id: str = tz + ctx: Store + value: Call + func: Name + id: str = timezone + ctx: Load + args: list + element: Name + id: str = delta + ctx: Load + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = noopov + kind: NoneType = None + keywords: list + orelse: list + element: If + test: UnaryOp + op: Not + operand: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = tz + ctx: Load + element: Name + id: str = tzinfo + ctx: Load + keywords: list + body: list + element: Raise + exc: Call + func: Name + id: str = TypeError + ctx: Load + args: list + element: Constant + value: str = tz argument must be an instance of tzinfo + kind: NoneType = None + keywords: list + cause: NoneType = None + orelse: list + element: Assign + targets: list + element: Name + id: str = mytz + ctx: Store + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = tzinfo + ctx: Load + type_comment: NoneType = None + element: If + test: Compare + left: Name + id: str = mytz + ctx: Load + ops: list + element: Is + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Raise + exc: Call + func: Name + id: str = ValueError + ctx: Load + args: list + element: Constant + value: str = astimezone() requires an aware datetime + kind: NoneType = None + keywords: list + cause: NoneType = None + orelse: list + element: If + test: Compare + left: Name + id: str = tz + ctx: Load + ops: list + element: Is + comparators: list + element: Name + id: str = mytz + ctx: Load + body: list + element: Return + value: Name + id: str = self + ctx: Load + orelse: list + element: Assign + targets: list + element: Name + id: str = myoffset + ctx: Store + value: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = utcoffset + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: If + test: Compare + left: Name + id: str = myoffset + ctx: Load + ops: list + element: Is + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Raise + exc: Call + func: Name + id: str = ValueError + ctx: Load + args: list + element: Constant + value: str = astimezone() requires an aware datetime + kind: NoneType = None + keywords: list + cause: NoneType = None + orelse: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = opov + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = utc + ctx: Store + value: Call + func: Attribute + value: BinOp + left: Name + id: str = self + ctx: Load + op: Sub + right: Name + id: str = myoffset + ctx: Load + attr: str = replace + ctx: Load + args: list + keywords: list + element: keyword + arg: str = tzinfo + value: Name + id: str = tz + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = noopov + kind: NoneType = None + keywords: list + element: Return + value: Call + func: Attribute + value: Name + id: str = tz + ctx: Load + attr: str = fromutc + ctx: Load + args: list + element: Name + id: str = utc + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = nokwargs + kind: NoneType = None + keywords: list + element: FunctionDef + name: str = ctime + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = Return ctime() style string. + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = weekday + ctx: Store + value: BoolOp + op: Or + values: list + element: BinOp + left: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = toordinal + ctx: Load + args: list + keywords: list + op: Mod + right: Constant + value: int = 7 + kind: NoneType = None + element: Constant + value: int = 7 + kind: NoneType = None + type_comment: NoneType = None + element: Return + value: Call + func: Attribute + value: Constant + value: str = {} {} {} {}:{}:{} {} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Subscript + value: Name + id: str = _DAYNAMES + ctx: Load + slice: Index + value: Name + id: str = weekday + ctx: Load + ctx: Load + element: Subscript + value: Name + id: str = _MONTHNAMES + ctx: Load + slice: Index + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _month + ctx: Load + ctx: Load + element: Call + func: Name + id: str = zfill + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _day + ctx: Load + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = zfill + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _hour + ctx: Load + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = zfill + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _minute + ctx: Load + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = zfill + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _second + ctx: Load + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = zfill + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _year + ctx: Load + element: Constant + value: int = 4 + kind: NoneType = None + keywords: list + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = isoformat + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = sep + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + element: Constant + value: str = T + kind: NoneType = None + body: list + element: Expr + value: Constant + value: str = Return the time formatted according to ISO. + + This is 'YYYY-MM-DD HH:MM:SS.mmmmmm', or 'YYYY-MM-DD HH:MM:SS' if + self.microsecond == 0. + + If self.tzinfo is not None, the UTC offset is also attached, giving + 'YYYY-MM-DD HH:MM:SS.mmmmmm+HH:MM' or 'YYYY-MM-DD HH:MM:SS+HH:MM'. + + Optional argument sep specifies the separator between date and + time, default 'T'. + + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = s + ctx: Store + value: BinOp + left: Call + func: Attribute + value: Constant + value: str = {}-{}-{}{} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Call + func: Name + id: str = zfill + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _year + ctx: Load + element: Constant + value: int = 4 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = zfill + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _month + ctx: Load + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = zfill + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _day + ctx: Load + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + element: Name + id: str = sep + ctx: Load + keywords: list + op: Add + right: Call + func: Name + id: str = _format_time + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _hour + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _minute + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _second + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _microsecond + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = off + ctx: Store + value: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = utcoffset + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: If + test: Compare + left: Name + id: str = off + ctx: Load + ops: list + element: IsNot + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: If + test: Compare + left: Attribute + value: Name + id: str = off + ctx: Load + attr: str = days + ctx: Load + ops: list + element: Lt + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = sign + ctx: Store + value: Constant + value: str = - + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = off + ctx: Store + value: UnaryOp + op: USub + operand: Name + id: str = off + ctx: Load + type_comment: NoneType = None + orelse: list + element: Assign + targets: list + element: Name + id: str = sign + ctx: Store + value: Constant + value: str = + + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = hh + ctx: Store + element: Name + id: str = mm + ctx: Store + ctx: Store + value: Call + func: Name + id: str = divmod + ctx: Load + args: list + element: Name + id: str = off + ctx: Load + element: Call + func: Name + id: str = timedelta + ctx: Load + args: list + keywords: list + element: keyword + arg: str = hours + value: Constant + value: int = 1 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Assert + test: UnaryOp + op: Not + operand: BinOp + left: Name + id: str = mm + ctx: Load + op: Mod + right: Call + func: Name + id: str = timedelta + ctx: Load + args: list + keywords: list + element: keyword + arg: str = minutes + value: Constant + value: int = 1 + kind: NoneType = None + msg: Constant + value: str = whole minute + kind: NoneType = None + element: AugAssign + target: Name + id: str = mm + ctx: Store + op: FloorDiv + value: Call + func: Name + id: str = timedelta + ctx: Load + args: list + keywords: list + element: keyword + arg: str = minutes + value: Constant + value: int = 1 + kind: NoneType = None + element: AugAssign + target: Name + id: str = s + ctx: Store + op: Add + value: Call + func: Attribute + value: Constant + value: str = {}{}:{} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Name + id: str = sign + ctx: Load + element: Call + func: Name + id: str = zfill + ctx: Load + args: list + element: Name + id: str = hh + ctx: Load + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = zfill + ctx: Load + args: list + element: Name + id: str = mm + ctx: Load + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + keywords: list + orelse: list + element: Return + value: Name + id: str = s + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __repr__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = Convert to formal string, for repr(). + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = L + ctx: Store + value: List + elts: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _year + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _month + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _day + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _hour + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _minute + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _second + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _microsecond + ctx: Load + ctx: Load + type_comment: NoneType = None + element: If + test: Compare + left: Subscript + value: Name + id: str = L + ctx: Load + slice: Index + value: BinOp + left: Call + func: Name + id: str = len + ctx: Load + args: list + element: Name + id: str = L + ctx: Load + keywords: list + op: Sub + right: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = L + ctx: Load + attr: str = pop + ctx: Load + args: list + keywords: list + orelse: list + element: If + test: Compare + left: Subscript + value: Name + id: str = L + ctx: Load + slice: Index + value: BinOp + left: Call + func: Name + id: str = len + ctx: Load + args: list + element: Name + id: str = L + ctx: Load + keywords: list + op: Sub + right: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = L + ctx: Load + attr: str = pop + ctx: Load + args: list + keywords: list + orelse: list + element: Assign + targets: list + element: Name + id: str = s + ctx: Store + value: Call + func: Attribute + value: Constant + value: str = datetime.datetime({}) + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = , + kind: NoneType = None + attr: str = join + ctx: Load + args: list + element: Call + func: Name + id: str = map + ctx: Load + args: list + element: Name + id: str = str + ctx: Load + element: Name + id: str = L + ctx: Load + keywords: list + keywords: list + keywords: list + type_comment: NoneType = None + element: If + test: Compare + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _tzinfo + ctx: Load + ops: list + element: IsNot + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Assert + test: Compare + left: Subscript + value: Name + id: str = s + ctx: Load + slice: Slice + lower: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + upper: NoneType = None + step: NoneType = None + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = ) + kind: NoneType = None + msg: NoneType = None + element: Assign + targets: list + element: Name + id: str = s + ctx: Store + value: BinOp + left: BinOp + left: Subscript + value: Name + id: str = s + ctx: Load + slice: Slice + lower: NoneType = None + upper: BinOp + left: Call + func: Name + id: str = len + ctx: Load + args: list + element: Name + id: str = s + ctx: Load + keywords: list + op: Sub + right: Constant + value: int = 1 + kind: NoneType = None + step: NoneType = None + ctx: Load + op: Add + right: Call + func: Attribute + value: Constant + value: str = , tzinfo={} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Call + func: Attribute + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _tzinfo + ctx: Load + attr: str = __repr__ + ctx: Load + args: list + keywords: list + keywords: list + op: Add + right: Constant + value: str = ) + kind: NoneType = None + type_comment: NoneType = None + orelse: list + element: Return + value: Name + id: str = s + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __str__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = Convert to string, for str(). + kind: NoneType = None + element: Return + value: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = isoformat + ctx: Load + args: list + keywords: list + element: keyword + arg: str = sep + value: Constant + value: str = + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = strptime + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = cls + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = date_string + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = format + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = string, format -> new datetime parsed from a string (like time.strptime()). + kind: NoneType = None + element: Return + value: Call + func: Name + id: str = cls + ctx: Load + args: list + element: Starred + value: Subscript + value: Call + func: Attribute + value: Name + id: str = _time + ctx: Load + attr: str = strptime + ctx: Load + args: list + element: Name + id: str = date_string + ctx: Load + element: Name + id: str = format + ctx: Load + keywords: list + slice: Slice + lower: NoneType = None + upper: Constant + value: int = 6 + kind: NoneType = None + step: NoneType = None + ctx: Load + ctx: Load + keywords: list + decorator_list: list + element: Name + id: str = classmethod + ctx: Load + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = utcoffset + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = Return the timezone offset in minutes east of UTC (negative west of + UTC). + kind: NoneType = None + element: If + test: Compare + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _tzinfo + ctx: Load + ops: list + element: Is + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Return + value: Constant + value: NoneType = None + kind: NoneType = None + orelse: list + element: Assign + targets: list + element: Name + id: str = offset + ctx: Store + value: Call + func: Attribute + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _tzinfo + ctx: Load + attr: str = utcoffset + ctx: Load + args: list + element: Name + id: str = self + ctx: Load + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = _check_utc_offset + ctx: Load + args: list + element: Constant + value: str = utcoffset + kind: NoneType = None + element: Name + id: str = offset + ctx: Load + keywords: list + element: Return + value: Name + id: str = offset + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = tzname + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = Return the timezone name. + + Note that the name is 100% informational -- there's no requirement that + it mean anything in particular. For example, "GMT", "UTC", "-500", + "-5:00", "EDT", "US/Eastern", "America/New York" are all valid replies. + + kind: NoneType = None + element: If + test: Compare + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _tzinfo + ctx: Load + ops: list + element: Is + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Return + value: Constant + value: NoneType = None + kind: NoneType = None + orelse: list + element: Assign + targets: list + element: Name + id: str = name + ctx: Store + value: Call + func: Attribute + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _tzinfo + ctx: Load + attr: str = tzname + ctx: Load + args: list + element: Name + id: str = self + ctx: Load + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = _check_tzname + ctx: Load + args: list + element: Name + id: str = name + ctx: Load + keywords: list + element: Return + value: Name + id: str = name + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = dst + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = Return 0 if DST is not in effect, or the DST offset (in minutes + eastward) if DST is in effect. + + This is purely informational; the DST offset has already been added to + the UTC offset returned by utcoffset() if applicable, so there's no + need to consult dst() unless you're interested in displaying the DST + info. + + kind: NoneType = None + element: If + test: Compare + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _tzinfo + ctx: Load + ops: list + element: Is + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Return + value: Constant + value: NoneType = None + kind: NoneType = None + orelse: list + element: Assign + targets: list + element: Name + id: str = offset + ctx: Store + value: Call + func: Attribute + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _tzinfo + ctx: Load + attr: str = dst + ctx: Load + args: list + element: Name + id: str = self + ctx: Load + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = _check_utc_offset + ctx: Load + args: list + element: Constant + value: str = dst + kind: NoneType = None + element: Name + id: str = offset + ctx: Load + keywords: list + element: Return + value: Name + id: str = offset + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __eq__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + element: Name + id: str = datetime + ctx: Load + keywords: list + body: list + element: Return + value: Compare + left: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _cmp + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + keywords: list + element: keyword + arg: str = allow_mixed + value: Constant + value: bool = True + kind: NoneType = None + ops: list + element: Eq + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + orelse: list + element: If + test: UnaryOp + op: Not + operand: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + element: Name + id: str = date + ctx: Load + keywords: list + body: list + element: Return + value: Name + id: str = NotImplemented + ctx: Load + orelse: list + element: Return + value: Constant + value: bool = False + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __le__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + element: Name + id: str = datetime + ctx: Load + keywords: list + body: list + element: Return + value: Compare + left: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _cmp + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + keywords: list + ops: list + element: LtE + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + orelse: list + element: If + test: UnaryOp + op: Not + operand: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + element: Name + id: str = date + ctx: Load + keywords: list + body: list + element: Return + value: Name + id: str = NotImplemented + ctx: Load + orelse: list + element: Expr + value: Call + func: Name + id: str = _cmperror + ctx: Load + args: list + element: Name + id: str = self + ctx: Load + element: Name + id: str = other + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __lt__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + element: Name + id: str = datetime + ctx: Load + keywords: list + body: list + element: Return + value: Compare + left: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _cmp + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + keywords: list + ops: list + element: Lt + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + orelse: list + element: If + test: UnaryOp + op: Not + operand: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + element: Name + id: str = date + ctx: Load + keywords: list + body: list + element: Return + value: Name + id: str = NotImplemented + ctx: Load + orelse: list + element: Expr + value: Call + func: Name + id: str = _cmperror + ctx: Load + args: list + element: Name + id: str = self + ctx: Load + element: Name + id: str = other + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __ge__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + element: Name + id: str = datetime + ctx: Load + keywords: list + body: list + element: Return + value: Compare + left: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _cmp + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + keywords: list + ops: list + element: GtE + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + orelse: list + element: If + test: UnaryOp + op: Not + operand: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + element: Name + id: str = date + ctx: Load + keywords: list + body: list + element: Return + value: Name + id: str = NotImplemented + ctx: Load + orelse: list + element: Expr + value: Call + func: Name + id: str = _cmperror + ctx: Load + args: list + element: Name + id: str = self + ctx: Load + element: Name + id: str = other + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __gt__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + element: Name + id: str = datetime + ctx: Load + keywords: list + body: list + element: Return + value: Compare + left: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _cmp + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + keywords: list + ops: list + element: Gt + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + orelse: list + element: If + test: UnaryOp + op: Not + operand: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + element: Name + id: str = date + ctx: Load + keywords: list + body: list + element: Return + value: Name + id: str = NotImplemented + ctx: Load + orelse: list + element: Expr + value: Call + func: Name + id: str = _cmperror + ctx: Load + args: list + element: Name + id: str = self + ctx: Load + element: Name + id: str = other + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = _cmp + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = allow_mixed + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + element: Constant + value: bool = False + kind: NoneType = None + body: list + element: Assert + test: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + element: Name + id: str = datetime + ctx: Load + keywords: list + msg: NoneType = None + element: Assign + targets: list + element: Name + id: str = mytz + ctx: Store + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _tzinfo + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = ottz + ctx: Store + value: Attribute + value: Name + id: str = other + ctx: Load + attr: str = _tzinfo + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = myoff + ctx: Store + element: Name + id: str = otoff + ctx: Store + value: Constant + value: NoneType = None + kind: NoneType = None + type_comment: NoneType = None + element: If + test: Compare + left: Name + id: str = mytz + ctx: Load + ops: list + element: Is + comparators: list + element: Name + id: str = ottz + ctx: Load + body: list + element: Assign + targets: list + element: Name + id: str = base_compare + ctx: Store + value: Constant + value: bool = True + kind: NoneType = None + type_comment: NoneType = None + orelse: list + element: Assign + targets: list + element: Name + id: str = myoff + ctx: Store + value: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = utcoffset + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = otoff + ctx: Store + value: Call + func: Attribute + value: Name + id: str = other + ctx: Load + attr: str = utcoffset + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = base_compare + ctx: Store + value: Compare + left: Name + id: str = myoff + ctx: Load + ops: list + element: Eq + comparators: list + element: Name + id: str = otoff + ctx: Load + type_comment: NoneType = None + element: If + test: Name + id: str = base_compare + ctx: Load + body: list + element: Assign + targets: list + element: Name + id: str = s1 + ctx: Store + value: Call + func: Attribute + value: Constant + value: str = {}{}{}{}{}{}{} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Call + func: Name + id: str = zfill + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _year + ctx: Load + element: Constant + value: int = 4 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = zfill + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _month + ctx: Load + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = zfill + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _day + ctx: Load + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = zfill + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _hour + ctx: Load + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = zfill + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _minute + ctx: Load + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = zfill + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _second + ctx: Load + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = zfill + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _microsecond + ctx: Load + element: Constant + value: int = 6 + kind: NoneType = None + keywords: list + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = s2 + ctx: Store + value: Call + func: Attribute + value: Constant + value: str = {}{}{}{}{}{}{} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Call + func: Name + id: str = zfill + ctx: Load + args: list + element: Attribute + value: Name + id: str = other + ctx: Load + attr: str = _year + ctx: Load + element: Constant + value: int = 4 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = zfill + ctx: Load + args: list + element: Attribute + value: Name + id: str = other + ctx: Load + attr: str = _month + ctx: Load + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = zfill + ctx: Load + args: list + element: Attribute + value: Name + id: str = other + ctx: Load + attr: str = _day + ctx: Load + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = zfill + ctx: Load + args: list + element: Attribute + value: Name + id: str = other + ctx: Load + attr: str = _hour + ctx: Load + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = zfill + ctx: Load + args: list + element: Attribute + value: Name + id: str = other + ctx: Load + attr: str = _minute + ctx: Load + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = zfill + ctx: Load + args: list + element: Attribute + value: Name + id: str = other + ctx: Load + attr: str = _second + ctx: Load + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = zfill + ctx: Load + args: list + element: Attribute + value: Name + id: str = other + ctx: Load + attr: str = _microsecond + ctx: Load + element: Constant + value: int = 6 + kind: NoneType = None + keywords: list + keywords: list + type_comment: NoneType = None + element: Return + value: Call + func: Name + id: str = _cmp + ctx: Load + args: list + element: Name + id: str = s1 + ctx: Load + element: Name + id: str = s2 + ctx: Load + keywords: list + orelse: list + element: If + test: BoolOp + op: Or + values: list + element: Compare + left: Name + id: str = myoff + ctx: Load + ops: list + element: Is + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + element: Compare + left: Name + id: str = otoff + ctx: Load + ops: list + element: Is + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: If + test: Name + id: str = allow_mixed + ctx: Load + body: list + element: Return + value: Constant + value: int = 2 + kind: NoneType = None + orelse: list + element: Raise + exc: Call + func: Name + id: str = TypeError + ctx: Load + args: list + element: Constant + value: str = cannot compare naive and aware datetimes + kind: NoneType = None + keywords: list + cause: NoneType = None + orelse: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = opov + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = diff + ctx: Store + value: BinOp + left: Name + id: str = self + ctx: Load + op: Sub + right: Name + id: str = other + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = noopov + kind: NoneType = None + keywords: list + element: If + test: Compare + left: Attribute + value: Name + id: str = diff + ctx: Load + attr: str = days + ctx: Load + ops: list + element: Lt + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + body: list + element: Return + value: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + orelse: list + element: Return + value: BoolOp + op: Or + values: list + element: BoolOp + op: And + values: list + element: Name + id: str = diff + ctx: Load + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 0 + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __add__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = Add a datetime and a timedelta. + kind: NoneType = None + element: If + test: UnaryOp + op: Not + operand: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + element: Name + id: str = timedelta + ctx: Load + keywords: list + body: list + element: Return + value: Name + id: str = NotImplemented + ctx: Load + orelse: list + element: Assign + targets: list + element: Name + id: str = delta + ctx: Store + value: Call + func: Name + id: str = timedelta + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = toordinal + ctx: Load + args: list + keywords: list + keywords: list + element: keyword + arg: str = hours + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _hour + ctx: Load + element: keyword + arg: str = minutes + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _minute + ctx: Load + element: keyword + arg: str = seconds + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _second + ctx: Load + element: keyword + arg: str = microseconds + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _microsecond + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = opov + kind: NoneType = None + keywords: list + element: AugAssign + target: Name + id: str = delta + ctx: Store + op: Add + value: Name + id: str = other + ctx: Load + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = noopov + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = hour + ctx: Store + element: Name + id: str = rem + ctx: Store + ctx: Store + value: Call + func: Name + id: str = divmod + ctx: Load + args: list + element: Attribute + value: Name + id: str = delta + ctx: Load + attr: str = seconds + ctx: Load + element: Constant + value: int = 3600 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = minute + ctx: Store + element: Name + id: str = second + ctx: Store + ctx: Store + value: Call + func: Name + id: str = divmod + ctx: Load + args: list + element: Name + id: str = rem + ctx: Load + element: Constant + value: int = 60 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: If + test: Compare + left: Constant + value: int = 0 + kind: NoneType = None + ops: list + element: Lt + element: LtE + comparators: list + element: Attribute + value: Name + id: str = delta + ctx: Load + attr: str = days + ctx: Load + element: Name + id: str = _MAXORDINAL + ctx: Load + body: list + element: Return + value: Call + func: Attribute + value: Name + id: str = datetime + ctx: Load + attr: str = combine + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = date + ctx: Load + attr: str = fromordinal + ctx: Load + args: list + element: Attribute + value: Name + id: str = delta + ctx: Load + attr: str = days + ctx: Load + keywords: list + element: Call + func: Name + id: str = time + ctx: Load + args: list + element: Name + id: str = hour + ctx: Load + element: Name + id: str = minute + ctx: Load + element: Name + id: str = second + ctx: Load + element: Attribute + value: Name + id: str = delta + ctx: Load + attr: str = microseconds + ctx: Load + keywords: list + element: keyword + arg: str = tzinfo + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _tzinfo + ctx: Load + keywords: list + orelse: list + element: Raise + exc: Call + func: Name + id: str = OverflowError + ctx: Load + args: list + element: Constant + value: str = result out of range + kind: NoneType = None + keywords: list + cause: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __radd__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = __add__ + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __sub__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = Subtract two datetimes, or a datetime and a timedelta. + kind: NoneType = None + element: If + test: UnaryOp + op: Not + operand: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + element: Name + id: str = datetime + ctx: Load + keywords: list + body: list + element: If + test: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + element: Name + id: str = timedelta + ctx: Load + keywords: list + body: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = opov + kind: NoneType = None + keywords: list + element: Return + value: BinOp + left: Name + id: str = self + ctx: Load + op: Add + right: UnaryOp + op: USub + operand: Name + id: str = other + ctx: Load + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = noopov + kind: NoneType = None + keywords: list + orelse: list + element: Return + value: Name + id: str = NotImplemented + ctx: Load + orelse: list + element: Assign + targets: list + element: Name + id: str = days1 + ctx: Store + value: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = toordinal + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = days2 + ctx: Store + value: Call + func: Attribute + value: Name + id: str = other + ctx: Load + attr: str = toordinal + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = secs1 + ctx: Store + value: BinOp + left: BinOp + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _second + ctx: Load + op: Add + right: BinOp + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _minute + ctx: Load + op: Mult + right: Constant + value: int = 60 + kind: NoneType = None + op: Add + right: BinOp + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _hour + ctx: Load + op: Mult + right: Constant + value: int = 3600 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = secs2 + ctx: Store + value: BinOp + left: BinOp + left: Attribute + value: Name + id: str = other + ctx: Load + attr: str = _second + ctx: Load + op: Add + right: BinOp + left: Attribute + value: Name + id: str = other + ctx: Load + attr: str = _minute + ctx: Load + op: Mult + right: Constant + value: int = 60 + kind: NoneType = None + op: Add + right: BinOp + left: Attribute + value: Name + id: str = other + ctx: Load + attr: str = _hour + ctx: Load + op: Mult + right: Constant + value: int = 3600 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = base + ctx: Store + value: Call + func: Name + id: str = timedelta + ctx: Load + args: list + element: BinOp + left: Name + id: str = days1 + ctx: Load + op: Sub + right: Name + id: str = days2 + ctx: Load + element: BinOp + left: Name + id: str = secs1 + ctx: Load + op: Sub + right: Name + id: str = secs2 + ctx: Load + element: BinOp + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _microsecond + ctx: Load + op: Sub + right: Attribute + value: Name + id: str = other + ctx: Load + attr: str = _microsecond + ctx: Load + keywords: list + type_comment: NoneType = None + element: If + test: Compare + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _tzinfo + ctx: Load + ops: list + element: Is + comparators: list + element: Attribute + value: Name + id: str = other + ctx: Load + attr: str = _tzinfo + ctx: Load + body: list + element: Return + value: Name + id: str = base + ctx: Load + orelse: list + element: Assign + targets: list + element: Name + id: str = myoff + ctx: Store + value: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = utcoffset + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = otoff + ctx: Store + value: Call + func: Attribute + value: Name + id: str = other + ctx: Load + attr: str = utcoffset + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: If + test: Compare + left: Name + id: str = myoff + ctx: Load + ops: list + element: Eq + comparators: list + element: Name + id: str = otoff + ctx: Load + body: list + element: Return + value: Name + id: str = base + ctx: Load + orelse: list + element: If + test: BoolOp + op: Or + values: list + element: Compare + left: Name + id: str = myoff + ctx: Load + ops: list + element: Is + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + element: Compare + left: Name + id: str = otoff + ctx: Load + ops: list + element: Is + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Raise + exc: Call + func: Name + id: str = TypeError + ctx: Load + args: list + element: Constant + value: str = cannot mix naive and timezone-aware time + kind: NoneType = None + keywords: list + cause: NoneType = None + orelse: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = opov + kind: NoneType = None + keywords: list + element: Return + value: BinOp + left: BinOp + left: Name + id: str = base + ctx: Load + op: Add + right: Name + id: str = otoff + ctx: Load + op: Sub + right: Name + id: str = myoff + ctx: Load + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = noopov + kind: NoneType = None + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = resolution + ctx: Store + value: Call + func: Name + id: str = timedelta + ctx: Load + args: list + keywords: list + element: keyword + arg: str = microseconds + value: Constant + value: int = 1 + kind: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: Assign + targets: list + element: Name + id: str = _dt_min + ctx: Store + value: Call + func: Name + id: str = datetime + ctx: Load + args: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 1 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = _dt_max + ctx: Store + value: Call + func: Name + id: str = datetime + ctx: Load + args: list + element: Constant + value: int = 9999 + kind: NoneType = None + element: Constant + value: int = 12 + kind: NoneType = None + element: Constant + value: int = 31 + kind: NoneType = None + element: Constant + value: int = 23 + kind: NoneType = None + element: Constant + value: int = 59 + kind: NoneType = None + element: Constant + value: int = 59 + kind: NoneType = None + element: Constant + value: int = 999999 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = js + kind: NoneType = None + element: Constant + value: str = {} + kind: NoneType = None + element: Constant + value: str = Object.defineProperty (datetime, 'min', {get: function () {return _dt_min;}}) + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = js + kind: NoneType = None + element: Constant + value: str = {} + kind: NoneType = None + element: Constant + value: str = Object.defineProperty (datetime, 'max', {get: function () {return _dt_max;}}) + kind: NoneType = None + keywords: list + element: FunctionDef + name: str = _isoweek1monday + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = year + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Name + id: str = THURSDAY + ctx: Store + value: Constant + value: int = 3 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = firstday + ctx: Store + value: Call + func: Name + id: str = _ymd2ord + ctx: Load + args: list + element: Name + id: str = year + ctx: Load + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 1 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = firstweekday + ctx: Store + value: BinOp + left: BinOp + left: Name + id: str = firstday + ctx: Load + op: Add + right: Constant + value: int = 6 + kind: NoneType = None + op: Mod + right: Constant + value: int = 7 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = week1monday + ctx: Store + value: BinOp + left: Name + id: str = firstday + ctx: Load + op: Sub + right: Name + id: str = firstweekday + ctx: Load + type_comment: NoneType = None + element: If + test: Compare + left: Name + id: str = firstweekday + ctx: Load + ops: list + element: Gt + comparators: list + element: Name + id: str = THURSDAY + ctx: Load + body: list + element: AugAssign + target: Name + id: str = week1monday + ctx: Store + op: Add + value: Constant + value: int = 7 + kind: NoneType = None + orelse: list + element: Return + value: Name + id: str = week1monday + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = _Omitted + ctx: Store + value: Constant + value: str = @#$^&$^ + kind: NoneType = None + type_comment: NoneType = None + element: ClassDef + name: str = timezone + bases: list + element: Name + id: str = tzinfo + ctx: Load + keywords: list + body: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = kwargs + kind: NoneType = None + keywords: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = offset + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = name + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + element: Name + id: str = _Omitted + ctx: Load + body: list + element: If + test: UnaryOp + op: Not + operand: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = offset + ctx: Load + element: Name + id: str = timedelta + ctx: Load + keywords: list + body: list + element: Raise + exc: Call + func: Name + id: str = TypeError + ctx: Load + args: list + element: Constant + value: str = offset must be a timedelta + kind: NoneType = None + keywords: list + cause: NoneType = None + orelse: list + element: If + test: Compare + left: Name + id: str = name + ctx: Load + ops: list + element: Is + comparators: list + element: Name + id: str = _Omitted + ctx: Load + body: list + element: If + test: UnaryOp + op: Not + operand: Name + id: str = offset + ctx: Load + body: list + element: Assign + targets: list + element: Name + id: str = offset + ctx: Store + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = utc + ctx: Load + type_comment: NoneType = None + orelse: list + element: Assign + targets: list + element: Name + id: str = name + ctx: Store + value: Constant + value: NoneType = None + kind: NoneType = None + type_comment: NoneType = None + orelse: list + element: If + test: UnaryOp + op: Not + operand: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = name + ctx: Load + element: Name + id: str = str + ctx: Load + keywords: list + body: list + element: Raise + exc: Call + func: Name + id: str = TypeError + ctx: Load + args: list + element: Constant + value: str = name must be a string + kind: NoneType = None + keywords: list + cause: NoneType = None + orelse: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = opov + kind: NoneType = None + keywords: list + element: If + test: UnaryOp + op: Not + operand: Compare + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _minoffset + ctx: Load + ops: list + element: LtE + element: LtE + comparators: list + element: Name + id: str = offset + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _maxoffset + ctx: Load + body: list + element: Raise + exc: Call + func: Name + id: str = ValueError + ctx: Load + args: list + element: Constant + value: str = offset must be a timedelta strictly between -timedelta(hours=24) and timedelta(hours=24). + kind: NoneType = None + keywords: list + cause: NoneType = None + orelse: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = noopov + kind: NoneType = None + keywords: list + element: If + test: BoolOp + op: Or + values: list + element: Compare + left: Attribute + value: Name + id: str = offset + ctx: Load + attr: str = microseconds + ctx: Load + ops: list + element: NotEq + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + element: Compare + left: BinOp + left: Attribute + value: Name + id: str = offset + ctx: Load + attr: str = seconds + ctx: Load + op: Mod + right: Constant + value: int = 60 + kind: NoneType = None + ops: list + element: NotEq + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + body: list + element: Raise + exc: Call + func: Name + id: str = ValueError + ctx: Load + args: list + element: Constant + value: str = offset must be a timedelta representing a whole number of minutes + kind: NoneType = None + keywords: list + cause: NoneType = None + orelse: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _offset + ctx: Store + value: Name + id: str = offset + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _name + ctx: Store + value: Name + id: str = name + ctx: Load + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = nokwargs + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = kwargs + kind: NoneType = None + keywords: list + element: FunctionDef + name: str = _create + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = cls + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = offset + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = name + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + element: Name + id: str = _Omitted + ctx: Load + body: list + element: Return + value: Call + func: Name + id: str = cls + ctx: Load + args: list + element: Name + id: str = offset + ctx: Load + element: Name + id: str = name + ctx: Load + keywords: list + decorator_list: list + element: Name + id: str = classmethod + ctx: Load + returns: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = nokwargs + kind: NoneType = None + keywords: list + element: FunctionDef + name: str = __eq__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: Compare + left: Call + func: Name + id: str = type + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + keywords: list + ops: list + element: NotEq + comparators: list + element: Name + id: str = timezone + ctx: Load + body: list + element: Return + value: Constant + value: bool = False + kind: NoneType = None + orelse: list + element: Return + value: Compare + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _offset + ctx: Load + ops: list + element: Eq + comparators: list + element: Attribute + value: Name + id: str = other + ctx: Load + attr: str = _offset + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __repr__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = Convert to formal string, for repr(). + + >>> tz = timezone.utc + >>> repr(tz) + 'datetime.timezone.utc' + >>> tz = timezone(timedelta(hours=-5), 'EST') + >>> repr(tz) + "datetime.timezone(datetime.timedelta(-1, 68400), 'EST')" + + kind: NoneType = None + element: If + test: Compare + left: Name + id: str = self + ctx: Load + ops: list + element: Is + comparators: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = utc + ctx: Load + body: list + element: Return + value: Constant + value: str = datetime.timezone.utc + kind: NoneType = None + orelse: list + element: If + test: Compare + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _name + ctx: Load + ops: list + element: Is + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Return + value: Call + func: Attribute + value: Constant + value: str = datetime.timezone({}) + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Call + func: Attribute + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _offset + ctx: Load + attr: str = __repr__ + ctx: Load + args: list + keywords: list + keywords: list + orelse: list + element: Return + value: Call + func: Attribute + value: Constant + value: str = datetime.timezone({}, {}) + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Call + func: Attribute + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _offset + ctx: Load + attr: str = __repr__ + ctx: Load + args: list + keywords: list + element: Call + func: Attribute + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _name + ctx: Load + attr: str = __repr__ + ctx: Load + args: list + keywords: list + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __str__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = tzname + ctx: Load + args: list + element: Constant + value: NoneType = None + kind: NoneType = None + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = utcoffset + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = dt + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: BoolOp + op: Or + values: list + element: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = dt + ctx: Load + element: Name + id: str = datetime + ctx: Load + keywords: list + element: Compare + left: Name + id: str = dt + ctx: Load + ops: list + element: Is + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Return + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _offset + ctx: Load + orelse: list + element: Raise + exc: Call + func: Name + id: str = TypeError + ctx: Load + args: list + element: Constant + value: str = utcoffset() argument must be a datetime instance or None + kind: NoneType = None + keywords: list + cause: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = tzname + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = dt + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: BoolOp + op: Or + values: list + element: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = dt + ctx: Load + element: Name + id: str = datetime + ctx: Load + keywords: list + element: Compare + left: Name + id: str = dt + ctx: Load + ops: list + element: Is + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: If + test: Compare + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _name + ctx: Load + ops: list + element: Is + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Return + value: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _name_from_offset + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _offset + ctx: Load + keywords: list + orelse: list + element: Return + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _name + ctx: Load + orelse: list + element: Raise + exc: Call + func: Name + id: str = TypeError + ctx: Load + args: list + element: Constant + value: str = tzname() argument must be a datetime instance or None + kind: NoneType = None + keywords: list + cause: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = dst + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = dt + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: BoolOp + op: Or + values: list + element: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = dt + ctx: Load + element: Name + id: str = datetime + ctx: Load + keywords: list + element: Compare + left: Name + id: str = dt + ctx: Load + ops: list + element: Is + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Return + value: Constant + value: NoneType = None + kind: NoneType = None + orelse: list + element: Raise + exc: Call + func: Name + id: str = TypeError + ctx: Load + args: list + element: Constant + value: str = dst() argument must be a datetime instance or None + kind: NoneType = None + keywords: list + cause: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = fromutc + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = dt + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = dt + ctx: Load + element: Name + id: str = datetime + ctx: Load + keywords: list + body: list + element: If + test: Compare + left: Attribute + value: Name + id: str = dt + ctx: Load + attr: str = tzinfo + ctx: Load + ops: list + element: IsNot + comparators: list + element: Name + id: str = self + ctx: Load + body: list + element: Raise + exc: Call + func: Name + id: str = ValueError + ctx: Load + args: list + element: Constant + value: str = fromutc: dt.tzinfo is not self + kind: NoneType = None + keywords: list + cause: NoneType = None + orelse: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = opov + kind: NoneType = None + keywords: list + element: Return + value: BinOp + left: Name + id: str = dt + ctx: Load + op: Add + right: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _offset + ctx: Load + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = noopov + kind: NoneType = None + keywords: list + orelse: list + element: Raise + exc: Call + func: Name + id: str = TypeError + ctx: Load + args: list + element: Constant + value: str = fromutc() argument must be a datetime instance or None + kind: NoneType = None + keywords: list + cause: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = _maxoffset + ctx: Store + value: Call + func: Name + id: str = timedelta + ctx: Load + args: list + keywords: list + element: keyword + arg: str = hours + value: Constant + value: int = 23 + kind: NoneType = None + element: keyword + arg: str = minutes + value: Constant + value: int = 59 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = opov + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = _minoffset + ctx: Store + value: UnaryOp + op: USub + operand: Call + func: Name + id: str = timedelta + ctx: Load + args: list + keywords: list + element: keyword + arg: str = hours + value: Constant + value: int = 23 + kind: NoneType = None + element: keyword + arg: str = minutes + value: Constant + value: int = 59 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = noopov + kind: NoneType = None + keywords: list + element: FunctionDef + name: str = _name_from_offset + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = delta + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = opov + kind: NoneType = None + keywords: list + element: If + test: Compare + left: Name + id: str = delta + ctx: Load + ops: list + element: Lt + comparators: list + element: Call + func: Name + id: str = timedelta + ctx: Load + args: list + element: Constant + value: int = 0 + kind: NoneType = None + keywords: list + body: list + element: Assign + targets: list + element: Name + id: str = sign + ctx: Store + value: Constant + value: str = - + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = delta + ctx: Store + value: UnaryOp + op: USub + operand: Name + id: str = delta + ctx: Load + type_comment: NoneType = None + orelse: list + element: Assign + targets: list + element: Name + id: str = sign + ctx: Store + value: Constant + value: str = + + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = hours + ctx: Store + element: Name + id: str = rest + ctx: Store + ctx: Store + value: Call + func: Name + id: str = divmod + ctx: Load + args: list + element: Name + id: str = delta + ctx: Load + element: Call + func: Name + id: str = timedelta + ctx: Load + args: list + keywords: list + element: keyword + arg: str = hours + value: Constant + value: int = 1 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = minutes + ctx: Store + value: BinOp + left: Name + id: str = rest + ctx: Load + op: FloorDiv + right: Call + func: Name + id: str = timedelta + ctx: Load + args: list + keywords: list + element: keyword + arg: str = minutes + value: Constant + value: int = 1 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = noopov + kind: NoneType = None + keywords: list + element: Return + value: Call + func: Attribute + value: Constant + value: str = UTC{}{}:{} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Name + id: str = sign + ctx: Load + element: Call + func: Name + id: str = zfill + ctx: Load + args: list + element: Name + id: str = hours + ctx: Load + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = zfill + ctx: Load + args: list + element: Name + id: str = minutes + ctx: Load + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + keywords: list + decorator_list: list + element: Name + id: str = staticmethod + ctx: Load + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: Assign + targets: list + element: Name + id: str = _tz_utc + ctx: Store + value: Call + func: Attribute + value: Name + id: str = timezone + ctx: Load + attr: str = _create + ctx: Load + args: list + element: Call + func: Name + id: str = timedelta + ctx: Load + args: list + element: Constant + value: int = 0 + kind: NoneType = None + keywords: list + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = _tz_min + ctx: Store + value: Call + func: Attribute + value: Name + id: str = timezone + ctx: Load + attr: str = _create + ctx: Load + args: list + element: Attribute + value: Name + id: str = timezone + ctx: Load + attr: str = _minoffset + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = _tz_max + ctx: Store + value: Call + func: Attribute + value: Name + id: str = timezone + ctx: Load + attr: str = _create + ctx: Load + args: list + element: Attribute + value: Name + id: str = timezone + ctx: Load + attr: str = _maxoffset + ctx: Load + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = js + kind: NoneType = None + element: Constant + value: str = {} + kind: NoneType = None + element: Constant + value: str = Object.defineProperty (timezone, 'utc', {get: function () {return _tz_utc;}}) + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = js + kind: NoneType = None + element: Constant + value: str = {} + kind: NoneType = None + element: Constant + value: str = Object.defineProperty (timezone, 'min', {get: function () {return _tz_min;}}) + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = js + kind: NoneType = None + element: Constant + value: str = {} + kind: NoneType = None + element: Constant + value: str = Object.defineProperty (timezone, 'max', {get: function () {return _tz_max;}}) + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = _EPOCH + ctx: Store + value: Call + func: Name + id: str = datetime + ctx: Load + args: list + element: Constant + value: int = 1970 + kind: NoneType = None + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 1 + kind: NoneType = None + keywords: list + element: keyword + arg: str = tzinfo + value: Attribute + value: Name + id: str = timezone + ctx: Load + attr: str = utc + ctx: Load + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/decorators.js b/transcrypt/development/automated_tests/transcrypt/__target__38/decorators.js new file mode 100644 index 000000000..f19695e71 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/decorators.js @@ -0,0 +1,179 @@ +// Transcrypt'ed from Python, 2021-05-14 15:00:25 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get run () {return run;}, set run (value) {run = value;}}); +var __name__ = 'decorators'; +export var run = function (autoTester) { + var repeat3 = function (bareFunc) { + var innerFunc = function () { + var kwargs = dict (); + if (arguments.length) { + var __ilastarg0__ = arguments.length - 1; + if (arguments [__ilastarg0__] && arguments [__ilastarg0__].hasOwnProperty ("__kwargtrans__")) { + var __allkwargs0__ = arguments [__ilastarg0__--]; + for (var __attrib0__ in __allkwargs0__) { + switch (__attrib0__) { + default: kwargs [__attrib0__] = __allkwargs0__ [__attrib0__]; + } + } + delete kwargs.__kwargtrans__; + } + var args = tuple ([].slice.apply (arguments).slice (0, __ilastarg0__ + 1)); + } + else { + var args = tuple (); + } + autoTester.check ('BEGIN repeat3'); + for (var i = 0; i < 3; i++) { + bareFunc (...args, __kwargtrans__ (kwargs)); + } + autoTester.check ('END repeat3'); + }; + return innerFunc; + }; + var repeatN = function (n) { + var repeat = function (bareFunc) { + var innerFunc = function () { + var kwargs = dict (); + if (arguments.length) { + var __ilastarg0__ = arguments.length - 1; + if (arguments [__ilastarg0__] && arguments [__ilastarg0__].hasOwnProperty ("__kwargtrans__")) { + var __allkwargs0__ = arguments [__ilastarg0__--]; + for (var __attrib0__ in __allkwargs0__) { + switch (__attrib0__) { + default: kwargs [__attrib0__] = __allkwargs0__ [__attrib0__]; + } + } + delete kwargs.__kwargtrans__; + } + var args = tuple ([].slice.apply (arguments).slice (0, __ilastarg0__ + 1)); + } + else { + var args = tuple (); + } + autoTester.check ('BEGIN repeatN ({})'.format (n)); + for (var i = 0; i < n; i++) { + bareFunc (...args, __kwargtrans__ (kwargs)); + } + autoTester.check ('END repeatN ({})'.format (n)); + }; + return innerFunc; + }; + return repeat; + }; + var Repeater = __class__ ('Repeater', [object], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self, n) { + self.n = n; + });}, + get __call__ () {return __get__ (this, function (self, bareFunc) { + var innerFunc = function () { + var kwargs = dict (); + if (arguments.length) { + var __ilastarg0__ = arguments.length - 1; + if (arguments [__ilastarg0__] && arguments [__ilastarg0__].hasOwnProperty ("__kwargtrans__")) { + var __allkwargs0__ = arguments [__ilastarg0__--]; + for (var __attrib0__ in __allkwargs0__) { + switch (__attrib0__) { + default: kwargs [__attrib0__] = __allkwargs0__ [__attrib0__]; + } + } + delete kwargs.__kwargtrans__; + } + var args = tuple ([].slice.apply (arguments).slice (0, __ilastarg0__ + 1)); + } + else { + var args = tuple (); + } + autoTester.check ('BEGIN repeat3'); + for (var i = 0; i < self.n; i++) { + bareFunc (...args, __kwargtrans__ (kwargs)); + } + autoTester.check ('END repeat3'); + }; + return innerFunc; + });} + }); + var funcNoArg = repeatN (4) (repeat3 (function () { + autoTester.check ('spam'); + })); + funcNoArg (); + autoTester.check (); + var funcArg = repeat3 (repeatN (2) (function (a) { + if (arguments.length) { + var __ilastarg0__ = arguments.length - 1; + if (arguments [__ilastarg0__] && arguments [__ilastarg0__].hasOwnProperty ("__kwargtrans__")) { + var __allkwargs0__ = arguments [__ilastarg0__--]; + for (var __attrib0__ in __allkwargs0__) { + switch (__attrib0__) { + case 'a': var a = __allkwargs0__ [__attrib0__]; break; + } + } + } + } + else { + } + autoTester.check ('eggs', a); + })); + funcArg (3); + autoTester.check (); + funcArg (__kwargtrans__ ({a: 4})); + autoTester.check (); + var funcNoArg2 = __call__ (__call__ (Repeater, null, 3), null, function () { + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, 'toast'); + }) (); + }); + funcNoArg2 (); + autoTester.check (); + var funcArg2 = __call__ (__call__ (Repeater, null, 5), null, function (a) { + if (arguments.length) { + var __ilastarg0__ = arguments.length - 1; + if (arguments [__ilastarg0__] && arguments [__ilastarg0__].hasOwnProperty ("__kwargtrans__")) { + var __allkwargs0__ = arguments [__ilastarg0__--]; + for (var __attrib0__ in __allkwargs0__) { + switch (__attrib0__) { + case 'a': var a = __allkwargs0__ [__attrib0__]; break; + } + } + } + } + else { + } + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, 'jam', a); + }) (); + }); + funcArg2 (3); + autoTester.check (); + funcArg2 (__kwargtrans__ ({a: 4})); + autoTester.check (); + var py_next = function (bareFunc) { + var innerFunc = function (value) { + return bareFunc (value + 1); + }; + return innerFunc; + }; + var Number = py_next ( __class__ ('Number', [object], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self, value) { + self.value = value; + });} + })); + autoTester.check ('two', Number (1).value); + var Test = __class__ ('Test', [object], { + __module__: __name__, + get f () {return __getcm__ (this, function (cls, x, y) { + autoTester.check (cls.__name__, x, y); + });}, + get g () {return __get__ (this, function (self, x, y) { + autoTester.check (self.__class__.__name__, x, y); + });} + }); + var test = Test (); + test.f (1, 2); + test.g (3, 4); +}; + +//# sourceMappingURL=decorators.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/decorators.tree b/transcrypt/development/automated_tests/transcrypt/__target__38/decorators.tree new file mode 100644 index 000000000..0d68f5cee --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/decorators.tree @@ -0,0 +1,1115 @@ +file: Module + body: list + element: ImportFrom + module: str = org.transcrypt.stubs.browser + names: list + element: alias + name: str = __pragma__ + asname: NoneType = None + level: int = 0 + element: FunctionDef + name: str = run + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = autoTester + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: FunctionDef + name: str = repeat3 + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = bareFunc + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = kwargs + kind: NoneType = None + keywords: list + element: FunctionDef + name: str = innerFunc + args: arguments + posonlyargs: list + args: list + vararg: arg + arg: str = args + annotation: NoneType = None + type_comment: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: arg + arg: str = kwargs + annotation: NoneType = None + type_comment: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = BEGIN repeat3 + kind: NoneType = None + keywords: list + element: For + target: Name + id: str = i + ctx: Store + iter: Call + func: Name + id: str = range + ctx: Load + args: list + element: Constant + value: int = 3 + kind: NoneType = None + keywords: list + body: list + element: Expr + value: Call + func: Name + id: str = bareFunc + ctx: Load + args: list + element: Starred + value: Name + id: str = args + ctx: Load + ctx: Load + keywords: list + element: keyword + arg: NoneType = None + value: Name + id: str = kwargs + ctx: Load + orelse: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = END repeat3 + kind: NoneType = None + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = nokwargs + kind: NoneType = None + keywords: list + element: Return + value: Name + id: str = innerFunc + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = repeatN + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = n + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: FunctionDef + name: str = repeat + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = bareFunc + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = kwargs + kind: NoneType = None + keywords: list + element: FunctionDef + name: str = innerFunc + args: arguments + posonlyargs: list + args: list + vararg: arg + arg: str = args + annotation: NoneType = None + type_comment: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: arg + arg: str = kwargs + annotation: NoneType = None + type_comment: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = BEGIN repeatN ({}) + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Name + id: str = n + ctx: Load + keywords: list + keywords: list + element: For + target: Name + id: str = i + ctx: Store + iter: Call + func: Name + id: str = range + ctx: Load + args: list + element: Name + id: str = n + ctx: Load + keywords: list + body: list + element: Expr + value: Call + func: Name + id: str = bareFunc + ctx: Load + args: list + element: Starred + value: Name + id: str = args + ctx: Load + ctx: Load + keywords: list + element: keyword + arg: NoneType = None + value: Name + id: str = kwargs + ctx: Load + orelse: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = END repeatN ({}) + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Name + id: str = n + ctx: Load + keywords: list + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = nokwargs + kind: NoneType = None + keywords: list + element: Return + value: Name + id: str = innerFunc + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Return + value: Name + id: str = repeat + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: ClassDef + name: str = Repeater + bases: list + keywords: list + body: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = n + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = n + ctx: Store + value: Name + id: str = n + ctx: Load + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __call__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = bareFunc + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = kwargs + kind: NoneType = None + keywords: list + element: FunctionDef + name: str = innerFunc + args: arguments + posonlyargs: list + args: list + vararg: arg + arg: str = args + annotation: NoneType = None + type_comment: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: arg + arg: str = kwargs + annotation: NoneType = None + type_comment: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = BEGIN repeat3 + kind: NoneType = None + keywords: list + element: For + target: Name + id: str = i + ctx: Store + iter: Call + func: Name + id: str = range + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = n + ctx: Load + keywords: list + body: list + element: Expr + value: Call + func: Name + id: str = bareFunc + ctx: Load + args: list + element: Starred + value: Name + id: str = args + ctx: Load + ctx: Load + keywords: list + element: keyword + arg: NoneType = None + value: Name + id: str = kwargs + ctx: Load + orelse: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = END repeat3 + kind: NoneType = None + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = nokwargs + kind: NoneType = None + keywords: list + element: Return + value: Name + id: str = innerFunc + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: FunctionDef + name: str = funcNoArg + args: arguments + posonlyargs: list + args: list + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = spam + kind: NoneType = None + keywords: list + decorator_list: list + element: Call + func: Name + id: str = repeatN + ctx: Load + args: list + element: Constant + value: int = 4 + kind: NoneType = None + keywords: list + element: Name + id: str = repeat3 + ctx: Load + returns: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = funcNoArg + ctx: Load + args: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = kwargs + kind: NoneType = None + keywords: list + element: FunctionDef + name: str = funcArg + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = a + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = eggs + kind: NoneType = None + element: Name + id: str = a + ctx: Load + keywords: list + decorator_list: list + element: Name + id: str = repeat3 + ctx: Load + element: Call + func: Name + id: str = repeatN + ctx: Load + args: list + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + returns: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = nokwargs + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Name + id: str = funcArg + ctx: Load + args: list + element: Constant + value: int = 3 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + keywords: list + element: Expr + value: Call + func: Name + id: str = funcArg + ctx: Load + args: list + keywords: list + element: keyword + arg: str = a + value: Constant + value: int = 4 + kind: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = opov + kind: NoneType = None + keywords: list + element: FunctionDef + name: str = funcNoArg2 + args: arguments + posonlyargs: list + args: list + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = toast + kind: NoneType = None + keywords: list + decorator_list: list + element: Call + func: Name + id: str = Repeater + ctx: Load + args: list + element: Constant + value: int = 3 + kind: NoneType = None + keywords: list + returns: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = noopov + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Name + id: str = funcNoArg2 + ctx: Load + args: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = opov + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = kwargs + kind: NoneType = None + keywords: list + element: FunctionDef + name: str = funcArg2 + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = a + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = jam + kind: NoneType = None + element: Name + id: str = a + ctx: Load + keywords: list + decorator_list: list + element: Call + func: Name + id: str = Repeater + ctx: Load + args: list + element: Constant + value: int = 5 + kind: NoneType = None + keywords: list + returns: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = nokwargs + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = noopov + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Name + id: str = funcArg2 + ctx: Load + args: list + element: Constant + value: int = 3 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + keywords: list + element: Expr + value: Call + func: Name + id: str = funcArg2 + ctx: Load + args: list + keywords: list + element: keyword + arg: str = a + value: Constant + value: int = 4 + kind: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + keywords: list + element: FunctionDef + name: str = next + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = bareFunc + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: FunctionDef + name: str = innerFunc + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = value + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Call + func: Name + id: str = bareFunc + ctx: Load + args: list + element: BinOp + left: Name + id: str = value + ctx: Load + op: Add + right: Constant + value: int = 1 + kind: NoneType = None + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Return + value: Name + id: str = innerFunc + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: ClassDef + name: str = Number + bases: list + keywords: list + body: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = value + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = value + ctx: Store + value: Name + id: str = value + ctx: Load + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: Name + id: str = next + ctx: Load + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = two + kind: NoneType = None + element: Attribute + value: Call + func: Name + id: str = Number + ctx: Load + args: list + element: Constant + value: int = 1 + kind: NoneType = None + keywords: list + attr: str = value + ctx: Load + keywords: list + element: ClassDef + name: str = Test + bases: list + keywords: list + body: list + element: FunctionDef + name: str = f + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = cls + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = y + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = cls + ctx: Load + attr: str = __name__ + ctx: Load + element: Name + id: str = x + ctx: Load + element: Name + id: str = y + ctx: Load + keywords: list + decorator_list: list + element: Name + id: str = classmethod + ctx: Load + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = g + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = y + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = __class__ + ctx: Load + attr: str = __name__ + ctx: Load + element: Name + id: str = x + ctx: Load + element: Name + id: str = y + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: Assign + targets: list + element: Name + id: str = test + ctx: Store + value: Call + func: Name + id: str = Test + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = f + ctx: Load + args: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = g + ctx: Load + args: list + element: Constant + value: int = 3 + kind: NoneType = None + element: Constant + value: int = 4 + kind: NoneType = None + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/dict_comprehensions.js b/transcrypt/development/automated_tests/transcrypt/__target__38/dict_comprehensions.js new file mode 100644 index 000000000..d6631f92a --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/dict_comprehensions.js @@ -0,0 +1,18 @@ +// Transcrypt'ed from Python, 2021-05-14 15:00:25 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get run () {return run;}, set run (value) {run = value;}}); +var __name__ = 'dict_comprehensions'; +export var run = function (autoTester) { + var original = dict ({'Isaac': 'Newton', 'Albert': 'Einstein', 'Paul': 'Dirac'}); + autoTester.check (original); + var inverted = (function () { + var __accu0__ = []; + for (var key of __i__ (original)) { + __accu0__.append ([original [key], key]); + } + return dict (__accu0__); + }) (); + autoTester.check (inverted); +}; + +//# sourceMappingURL=dict_comprehensions.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/dict_comprehensions.tree b/transcrypt/development/automated_tests/transcrypt/__target__38/dict_comprehensions.tree new file mode 100644 index 000000000..ec74b004c --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/dict_comprehensions.tree @@ -0,0 +1,120 @@ +file: Module + body: list + element: ImportFrom + module: str = org.transcrypt.stubs.browser + names: list + element: alias + name: str = __pragma__ + asname: NoneType = None + level: int = 0 + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = iconv + kind: NoneType = None + keywords: list + element: FunctionDef + name: str = run + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = autoTester + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Name + id: str = original + ctx: Store + value: Dict + keys: list + element: Constant + value: str = Isaac + kind: NoneType = None + element: Constant + value: str = Albert + kind: NoneType = None + element: Constant + value: str = Paul + kind: NoneType = None + values: list + element: Constant + value: str = Newton + kind: NoneType = None + element: Constant + value: str = Einstein + kind: NoneType = None + element: Constant + value: str = Dirac + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = original + ctx: Load + keywords: list + element: Assign + targets: list + element: Name + id: str = inverted + ctx: Store + value: DictComp + key: Subscript + value: Name + id: str = original + ctx: Load + slice: Index + value: Name + id: str = key + ctx: Load + ctx: Load + value: Name + id: str = key + ctx: Load + generators: list + element: comprehension + target: Name + id: str = key + ctx: Store + iter: Name + id: str = original + ctx: Load + ifs: list + is_async: int = 0 + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = inverted + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/dictionaries.js b/transcrypt/development/automated_tests/transcrypt/__target__38/dictionaries.js new file mode 100644 index 000000000..0602e3bdb --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/dictionaries.js @@ -0,0 +1,99 @@ +// Transcrypt'ed from Python, 2021-05-14 15:00:25 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get run () {return run;}, set run (value) {run = value;}}); +var __name__ = 'dictionaries'; +export var run = function (autoTester) { + var tel = dict ({'guido': 4127, 'jack': 4098}); + autoTester.check (len (tel)); + tel ['sape'] = 4139; + autoTester.check (tel); + autoTester.check (tel ['jack']); + delete tel ['sape']; + tel ['irv'] = 4127; + autoTester.check (tel); + autoTester.check (sorted (list (tel.py_keys ())), false); + autoTester.check (sorted (tel.py_keys ())); + autoTester.check (__in__ ('guido', tel)); + autoTester.check (!__in__ ('jack', tel)); + autoTester.check (dict ([tuple (['guido', 4127]), tuple (['jack', 4098]), tuple (['sape', 4139])])); + autoTester.check (autoTester.expectException ((function __lambda__ () { + return dict (1); + }))); + autoTester.check (autoTester.expectException ((function __lambda__ () { + return dict (134.34); + }))); + autoTester.check (autoTester.expectException ((function __lambda__ () { + return dict ('asdf'); + }))); + autoTester.check (autoTester.expectException ((function __lambda__ () { + return dict (['1234', 1]); + }))); + autoTester.check (dict ([])); + autoTester.check (dict (dict ({}))); + autoTester.check (dict (dict ({'asdf': 1, 'qwer': 2}))); + var b = dict ({'a': 2.01, 'b': -(3.3)}); + var d = dict (b); + autoTester.check (d); + var b = dict ({'a': 2, 'b': [1, 2, 3]}); + var d = dict (b); + autoTester.check (d); + var b = dict ({'a': null, 'b': set ([1, 2, 3])}); + var d = dict (b); + autoTester.check (d); + var b = dict ({'a': dict ({'c': 2}), 'b': tuple ([1, 2])}); + var d = dict (b); + autoTester.check (d); + autoTester.check (d ['a'] ['c']); + autoTester.check (d.py_get ('a').py_get ('c')); + autoTester.check (b.py_get ('a').py_get ('c')); + d ['a'] ['c'] = 3; + autoTester.check (d.py_get ('a').py_get ('c')); + autoTester.check (b.py_get ('a').py_get ('c')); + var knights = dict ({'robin': 'the brave', 'gallahad': 'the pure'}); + for (var [k, v] of __i__ (sorted (knights.py_items ()))) { + autoTester.check (k, v); + } + if (__in__ ('gallahad', knights)) { + autoTester.check ('gallahad is a knight'); + } + for (var k of __i__ (sorted (knights))) { + autoTester.check (k); + } + var knight = dict ({'rudolph': 'the righteous'}); + for (var k of __i__ (knight)) { + autoTester.check (k); + } + var tel = dict ({'guido': 123}); + tel.py_update (dict ({'edsger': 42})); + autoTester.check (tel.py_setdefault ('linus', 456)); + autoTester.check (tel ['linus']); + autoTester.check (tel.py_setdefault ('guido', 789)); + autoTester.check (tel.py_pop ('guido', 1)); + autoTester.check (tel.py_pop ('guido', 1)); + autoTester.check (tel.py_pop ('edsger', 2)); + autoTester.check (tel.py_pop ('foo', 'bar')); + autoTester.check (tel.py_pop ('foo', null)); + var d = dict ({}); + d ['a'] = 3777; + d.__setitem__ ([1, 2], 4777); + autoTester.check (d ['a'], d.__getitem__ ([1, 2])); + var d = dict ({}); + __setitem__ (d, 'a', 3777); + d.__setitem__ ([1, 2], 4777); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __getitem__ (d, 'a'), d.__getitem__ ([1, 2])); + }) (); + var knights = dict ({'robin': 'the brave', 'gallahad': 'the pure'}); + autoTester.check (autoTester.expectException ((function __lambda__ () { + return knights.py_pop ('batman'); + }))); + autoTester.check (autoTester.expectException ((function __lambda__ () { + return knights.py_pop ('batman', null); + }))); + autoTester.check (autoTester.expectException ((function __lambda__ () { + return knights.py_pop ('batman', 'the gullible'); + }))); +}; + +//# sourceMappingURL=dictionaries.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/dictionaries.tree b/transcrypt/development/automated_tests/transcrypt/__target__38/dictionaries.tree new file mode 100644 index 000000000..07d3e78d4 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/dictionaries.tree @@ -0,0 +1,1647 @@ +file: Module + body: list + element: ImportFrom + module: str = org.transcrypt.stubs.browser + names: list + element: alias + name: str = __pragma__ + asname: NoneType = None + level: int = 0 + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = iconv + kind: NoneType = None + keywords: list + element: FunctionDef + name: str = run + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = autoTester + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Name + id: str = tel + ctx: Store + value: Dict + keys: list + element: Constant + value: str = guido + kind: NoneType = None + element: Constant + value: str = jack + kind: NoneType = None + values: list + element: Constant + value: int = 4127 + kind: NoneType = None + element: Constant + value: int = 4098 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = len + ctx: Load + args: list + element: Name + id: str = tel + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Subscript + value: Name + id: str = tel + ctx: Load + slice: Index + value: Constant + value: str = sape + kind: NoneType = None + ctx: Store + value: Constant + value: int = 4139 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = tel + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Subscript + value: Name + id: str = tel + ctx: Load + slice: Index + value: Constant + value: str = jack + kind: NoneType = None + ctx: Load + keywords: list + element: Delete + targets: list + element: Subscript + value: Name + id: str = tel + ctx: Load + slice: Index + value: Constant + value: str = sape + kind: NoneType = None + ctx: Del + element: Assign + targets: list + element: Subscript + value: Name + id: str = tel + ctx: Load + slice: Index + value: Constant + value: str = irv + kind: NoneType = None + ctx: Store + value: Constant + value: int = 4127 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = tel + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = sorted + ctx: Load + args: list + element: Call + func: Name + id: str = list + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = tel + ctx: Load + attr: str = keys + ctx: Load + args: list + keywords: list + keywords: list + keywords: list + element: Constant + value: bool = False + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = sorted + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = tel + ctx: Load + attr: str = keys + ctx: Load + args: list + keywords: list + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Constant + value: str = guido + kind: NoneType = None + ops: list + element: In + comparators: list + element: Name + id: str = tel + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Constant + value: str = jack + kind: NoneType = None + ops: list + element: NotIn + comparators: list + element: Name + id: str = tel + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = dict + ctx: Load + args: list + element: List + elts: list + element: Tuple + elts: list + element: Constant + value: str = guido + kind: NoneType = None + element: Constant + value: int = 4127 + kind: NoneType = None + ctx: Load + element: Tuple + elts: list + element: Constant + value: str = jack + kind: NoneType = None + element: Constant + value: int = 4098 + kind: NoneType = None + ctx: Load + element: Tuple + elts: list + element: Constant + value: str = sape + kind: NoneType = None + element: Constant + value: int = 4139 + kind: NoneType = None + ctx: Load + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = expectException + ctx: Load + args: list + element: Lambda + args: arguments + posonlyargs: list + args: list + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: Call + func: Name + id: str = dict + ctx: Load + args: list + element: Constant + value: int = 1 + kind: NoneType = None + keywords: list + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = expectException + ctx: Load + args: list + element: Lambda + args: arguments + posonlyargs: list + args: list + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: Call + func: Name + id: str = dict + ctx: Load + args: list + element: Constant + value: float = 134.34 + kind: NoneType = None + keywords: list + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = expectException + ctx: Load + args: list + element: Lambda + args: arguments + posonlyargs: list + args: list + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: Call + func: Name + id: str = dict + ctx: Load + args: list + element: Constant + value: str = asdf + kind: NoneType = None + keywords: list + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = expectException + ctx: Load + args: list + element: Lambda + args: arguments + posonlyargs: list + args: list + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: Call + func: Name + id: str = dict + ctx: Load + args: list + element: List + elts: list + element: Constant + value: str = 1234 + kind: NoneType = None + element: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + keywords: list + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = dict + ctx: Load + args: list + element: List + elts: list + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = dict + ctx: Load + args: list + element: Dict + keys: list + values: list + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = dict + ctx: Load + args: list + element: Dict + keys: list + element: Constant + value: str = asdf + kind: NoneType = None + element: Constant + value: str = qwer + kind: NoneType = None + values: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = b + ctx: Store + value: Dict + keys: list + element: Constant + value: str = a + kind: NoneType = None + element: Constant + value: str = b + kind: NoneType = None + values: list + element: Constant + value: float = 2.01 + kind: NoneType = None + element: UnaryOp + op: USub + operand: Constant + value: float = 3.3 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = d + ctx: Store + value: Call + func: Name + id: str = dict + ctx: Load + args: list + element: Name + id: str = b + ctx: Load + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = d + ctx: Load + keywords: list + element: Assign + targets: list + element: Name + id: str = b + ctx: Store + value: Dict + keys: list + element: Constant + value: str = a + kind: NoneType = None + element: Constant + value: str = b + kind: NoneType = None + values: list + element: Constant + value: int = 2 + kind: NoneType = None + element: List + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = d + ctx: Store + value: Call + func: Name + id: str = dict + ctx: Load + args: list + element: Name + id: str = b + ctx: Load + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = d + ctx: Load + keywords: list + element: Assign + targets: list + element: Name + id: str = b + ctx: Store + value: Dict + keys: list + element: Constant + value: str = a + kind: NoneType = None + element: Constant + value: str = b + kind: NoneType = None + values: list + element: Constant + value: NoneType = None + kind: NoneType = None + element: Call + func: Name + id: str = set + ctx: Load + args: list + element: List + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = d + ctx: Store + value: Call + func: Name + id: str = dict + ctx: Load + args: list + element: Name + id: str = b + ctx: Load + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = d + ctx: Load + keywords: list + element: Assign + targets: list + element: Name + id: str = b + ctx: Store + value: Dict + keys: list + element: Constant + value: str = a + kind: NoneType = None + element: Constant + value: str = b + kind: NoneType = None + values: list + element: Dict + keys: list + element: Constant + value: str = c + kind: NoneType = None + values: list + element: Constant + value: int = 2 + kind: NoneType = None + element: Tuple + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = d + ctx: Store + value: Call + func: Name + id: str = dict + ctx: Load + args: list + element: Name + id: str = b + ctx: Load + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = d + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Subscript + value: Subscript + value: Name + id: str = d + ctx: Load + slice: Index + value: Constant + value: str = a + kind: NoneType = None + ctx: Load + slice: Index + value: Constant + value: str = c + kind: NoneType = None + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Call + func: Attribute + value: Name + id: str = d + ctx: Load + attr: str = get + ctx: Load + args: list + element: Constant + value: str = a + kind: NoneType = None + keywords: list + attr: str = get + ctx: Load + args: list + element: Constant + value: str = c + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Call + func: Attribute + value: Name + id: str = b + ctx: Load + attr: str = get + ctx: Load + args: list + element: Constant + value: str = a + kind: NoneType = None + keywords: list + attr: str = get + ctx: Load + args: list + element: Constant + value: str = c + kind: NoneType = None + keywords: list + keywords: list + element: Assign + targets: list + element: Subscript + value: Subscript + value: Name + id: str = d + ctx: Load + slice: Index + value: Constant + value: str = a + kind: NoneType = None + ctx: Load + slice: Index + value: Constant + value: str = c + kind: NoneType = None + ctx: Store + value: Constant + value: int = 3 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Call + func: Attribute + value: Name + id: str = d + ctx: Load + attr: str = get + ctx: Load + args: list + element: Constant + value: str = a + kind: NoneType = None + keywords: list + attr: str = get + ctx: Load + args: list + element: Constant + value: str = c + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Call + func: Attribute + value: Name + id: str = b + ctx: Load + attr: str = get + ctx: Load + args: list + element: Constant + value: str = a + kind: NoneType = None + keywords: list + attr: str = get + ctx: Load + args: list + element: Constant + value: str = c + kind: NoneType = None + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = knights + ctx: Store + value: Dict + keys: list + element: Constant + value: str = robin + kind: NoneType = None + element: Constant + value: str = gallahad + kind: NoneType = None + values: list + element: Constant + value: str = the brave + kind: NoneType = None + element: Constant + value: str = the pure + kind: NoneType = None + type_comment: NoneType = None + element: For + target: Tuple + elts: list + element: Name + id: str = k + ctx: Store + element: Name + id: str = v + ctx: Store + ctx: Store + iter: Call + func: Name + id: str = sorted + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = knights + ctx: Load + attr: str = items + ctx: Load + args: list + keywords: list + keywords: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = k + ctx: Load + element: Name + id: str = v + ctx: Load + keywords: list + orelse: list + type_comment: NoneType = None + element: If + test: Compare + left: Constant + value: str = gallahad + kind: NoneType = None + ops: list + element: In + comparators: list + element: Name + id: str = knights + ctx: Load + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = gallahad is a knight + kind: NoneType = None + keywords: list + orelse: list + element: For + target: Name + id: str = k + ctx: Store + iter: Call + func: Name + id: str = sorted + ctx: Load + args: list + element: Name + id: str = knights + ctx: Load + keywords: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = k + ctx: Load + keywords: list + orelse: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = knight + ctx: Store + value: Dict + keys: list + element: Constant + value: str = rudolph + kind: NoneType = None + values: list + element: Constant + value: str = the righteous + kind: NoneType = None + type_comment: NoneType = None + element: For + target: Name + id: str = k + ctx: Store + iter: Name + id: str = knight + ctx: Load + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = k + ctx: Load + keywords: list + orelse: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = tel + ctx: Store + value: Dict + keys: list + element: Constant + value: str = guido + kind: NoneType = None + values: list + element: Constant + value: int = 123 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = tel + ctx: Load + attr: str = update + ctx: Load + args: list + element: Dict + keys: list + element: Constant + value: str = edsger + kind: NoneType = None + values: list + element: Constant + value: int = 42 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = tel + ctx: Load + attr: str = setdefault + ctx: Load + args: list + element: Constant + value: str = linus + kind: NoneType = None + element: Constant + value: int = 456 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Subscript + value: Name + id: str = tel + ctx: Load + slice: Index + value: Constant + value: str = linus + kind: NoneType = None + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = tel + ctx: Load + attr: str = setdefault + ctx: Load + args: list + element: Constant + value: str = guido + kind: NoneType = None + element: Constant + value: int = 789 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = tel + ctx: Load + attr: str = pop + ctx: Load + args: list + element: Constant + value: str = guido + kind: NoneType = None + element: Constant + value: int = 1 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = tel + ctx: Load + attr: str = pop + ctx: Load + args: list + element: Constant + value: str = guido + kind: NoneType = None + element: Constant + value: int = 1 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = tel + ctx: Load + attr: str = pop + ctx: Load + args: list + element: Constant + value: str = edsger + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = tel + ctx: Load + attr: str = pop + ctx: Load + args: list + element: Constant + value: str = foo + kind: NoneType = None + element: Constant + value: str = bar + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = tel + ctx: Load + attr: str = pop + ctx: Load + args: list + element: Constant + value: str = foo + kind: NoneType = None + element: Constant + value: NoneType = None + kind: NoneType = None + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = d + ctx: Store + value: Dict + keys: list + values: list + type_comment: NoneType = None + element: Assign + targets: list + element: Subscript + value: Name + id: str = d + ctx: Load + slice: Index + value: Constant + value: str = a + kind: NoneType = None + ctx: Store + value: Constant + value: int = 3777 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Subscript + value: Name + id: str = d + ctx: Load + slice: Index + value: Tuple + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + ctx: Load + ctx: Store + value: Constant + value: int = 4777 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Subscript + value: Name + id: str = d + ctx: Load + slice: Index + value: Constant + value: str = a + kind: NoneType = None + ctx: Load + element: Subscript + value: Name + id: str = d + ctx: Load + slice: Index + value: Tuple + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + ctx: Load + ctx: Load + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = opov + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = d + ctx: Store + value: Dict + keys: list + values: list + type_comment: NoneType = None + element: Assign + targets: list + element: Subscript + value: Name + id: str = d + ctx: Load + slice: Index + value: Constant + value: str = a + kind: NoneType = None + ctx: Store + value: Constant + value: int = 3777 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Subscript + value: Name + id: str = d + ctx: Load + slice: Index + value: Tuple + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + ctx: Load + ctx: Store + value: Constant + value: int = 4777 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Subscript + value: Name + id: str = d + ctx: Load + slice: Index + value: Constant + value: str = a + kind: NoneType = None + ctx: Load + element: Subscript + value: Name + id: str = d + ctx: Load + slice: Index + value: Tuple + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + ctx: Load + ctx: Load + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = noopov + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = knights + ctx: Store + value: Dict + keys: list + element: Constant + value: str = robin + kind: NoneType = None + element: Constant + value: str = gallahad + kind: NoneType = None + values: list + element: Constant + value: str = the brave + kind: NoneType = None + element: Constant + value: str = the pure + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = expectException + ctx: Load + args: list + element: Lambda + args: arguments + posonlyargs: list + args: list + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: Call + func: Attribute + value: Name + id: str = knights + ctx: Load + attr: str = pop + ctx: Load + args: list + element: Constant + value: str = batman + kind: NoneType = None + keywords: list + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = expectException + ctx: Load + args: list + element: Lambda + args: arguments + posonlyargs: list + args: list + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: Call + func: Attribute + value: Name + id: str = knights + ctx: Load + attr: str = pop + ctx: Load + args: list + element: Constant + value: str = batman + kind: NoneType = None + element: Constant + value: NoneType = None + kind: NoneType = None + keywords: list + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = expectException + ctx: Load + args: list + element: Lambda + args: arguments + posonlyargs: list + args: list + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: Call + func: Attribute + value: Name + id: str = knights + ctx: Load + attr: str = pop + ctx: Load + args: list + element: Constant + value: str = batman + kind: NoneType = None + element: Constant + value: str = the gullible + kind: NoneType = None + keywords: list + keywords: list + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/div_issues.issue387.js b/transcrypt/development/automated_tests/transcrypt/__target__38/div_issues.issue387.js new file mode 100644 index 000000000..60cfe30a4 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/div_issues.issue387.js @@ -0,0 +1,21 @@ +// Transcrypt'ed from Python, 2021-05-14 15:00:25 +var div_issues = {}; +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +import * as __module_div_issues_issue387_test1_test2__ from './div_issues.issue387.test1.test2.js'; +__nest__ (div_issues, 'issue387.test1.test2', __module_div_issues_issue387_test1_test2__); +import * as __module_div_issues_issue387_test1__ from './div_issues.issue387.test1.js'; +__nest__ (div_issues, 'issue387.test1', __module_div_issues_issue387_test1__); +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get run387 () {return run387;}, set run387 (value) {run387 = value;}}); +var __name__ = 'div_issues.issue387'; +export var run387 = function (autoTester) { + autoTester.check (div_issues.issue387.test1.getReport ()); + autoTester.check ('From test: ', div_issues.issue387.test1.test2.C.__module__); + autoTester.check (__name__); + var D = __class__ ('D', [object], { + __module__: __name__, + }); + autoTester.check ('From test:', D.__module__); + autoTester.check (D.__name__); +}; + +//# sourceMappingURL=div_issues.issue387.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/div_issues.issue387.test1.js b/transcrypt/development/automated_tests/transcrypt/__target__38/div_issues.issue387.test1.js new file mode 100644 index 000000000..8992144ee --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/div_issues.issue387.test1.js @@ -0,0 +1,12 @@ +// Transcrypt'ed from Python, 2021-05-14 15:00:25 +var div_issues = {}; +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +import * as __module_div_issues_issue387_test1_test2__ from './div_issues.issue387.test1.test2.js'; +__nest__ (div_issues, 'issue387.test1.test2', __module_div_issues_issue387_test1_test2__); +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get getReport () {return getReport;}, set getReport (value) {getReport = value;}}); +var __name__ = 'div_issues.issue387.test1'; +export var getReport = function () { + return 'From test1: {}'.format (div_issues.issue387.test1.test2.C.__module__); +}; + +//# sourceMappingURL=div_issues.issue387.test1.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/div_issues.issue387.test1.test2.js b/transcrypt/development/automated_tests/transcrypt/__target__38/div_issues.issue387.test1.test2.js new file mode 100644 index 000000000..c831af782 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/div_issues.issue387.test1.test2.js @@ -0,0 +1,17 @@ +// Transcrypt'ed from Python, 2021-05-14 15:00:25 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +var __all__ = dict ({get C () {return C;}, set C (value) {C = value;}, get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get c () {return c;}, set c (value) {c = value;}}); +var __name__ = 'div_issues.issue387.test1.test2'; +export var C = __class__ ('C', [object], { + __module__: __name__, + get f () {return __get__ (this, function (self) { + var g = function () { + // pass; + }; + return 0; + });} +}); +export var c = C (); +c.f (); + +//# sourceMappingURL=div_issues.issue387.test1.test2.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/div_issues.issue387.test1.test2.tree b/transcrypt/development/automated_tests/transcrypt/__target__38/div_issues.issue387.test1.test2.tree new file mode 100644 index 000000000..be1d071c2 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/div_issues.issue387.test1.test2.tree @@ -0,0 +1,68 @@ +file: Module + body: list + element: ClassDef + name: str = C + bases: list + keywords: list + body: list + element: FunctionDef + name: str = f + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: FunctionDef + name: str = g + args: arguments + posonlyargs: list + args: list + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Pass + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Return + value: Constant + value: int = 0 + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: Assign + targets: list + element: Name + id: str = c + ctx: Store + value: Call + func: Name + id: str = C + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = c + ctx: Load + attr: str = f + ctx: Load + args: list + keywords: list + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/div_issues.issue387.test1.tree b/transcrypt/development/automated_tests/transcrypt/__target__38/div_issues.issue387.test1.tree new file mode 100644 index 000000000..11a7d1c08 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/div_issues.issue387.test1.tree @@ -0,0 +1,50 @@ +file: Module + body: list + element: Import + names: list + element: alias + name: str = div_issues.issue387.test1.test2 + asname: NoneType = None + element: FunctionDef + name: str = getReport + args: arguments + posonlyargs: list + args: list + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Call + func: Attribute + value: Constant + value: str = From test1: {} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Attribute + value: Attribute + value: Attribute + value: Attribute + value: Attribute + value: Name + id: str = div_issues + ctx: Load + attr: str = issue387 + ctx: Load + attr: str = test1 + ctx: Load + attr: str = test2 + ctx: Load + attr: str = C + ctx: Load + attr: str = __module__ + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/div_issues.issue387.tree b/transcrypt/development/automated_tests/transcrypt/__target__38/div_issues.issue387.tree new file mode 100644 index 000000000..5f72a1003 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/div_issues.issue387.tree @@ -0,0 +1,142 @@ +file: Module + body: list + element: Import + names: list + element: alias + name: str = div_issues.issue387.test1 + asname: NoneType = None + element: Import + names: list + element: alias + name: str = div_issues.issue387.test1.test2 + asname: NoneType = None + element: FunctionDef + name: str = run387 + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = autoTester + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Attribute + value: Attribute + value: Name + id: str = div_issues + ctx: Load + attr: str = issue387 + ctx: Load + attr: str = test1 + ctx: Load + attr: str = getReport + ctx: Load + args: list + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = From test: + kind: NoneType = None + element: Attribute + value: Attribute + value: Attribute + value: Attribute + value: Attribute + value: Name + id: str = div_issues + ctx: Load + attr: str = issue387 + ctx: Load + attr: str = test1 + ctx: Load + attr: str = test2 + ctx: Load + attr: str = C + ctx: Load + attr: str = __module__ + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = __name__ + ctx: Load + keywords: list + element: ClassDef + name: str = D + bases: list + keywords: list + body: list + element: Pass + decorator_list: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = From test: + kind: NoneType = None + element: Attribute + value: Name + id: str = D + ctx: Load + attr: str = __module__ + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = D + ctx: Load + attr: str = __name__ + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/div_issues.issue55.a.js b/transcrypt/development/automated_tests/transcrypt/__target__38/div_issues.issue55.a.js new file mode 100644 index 000000000..0dbd0dd19 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/div_issues.issue55.a.js @@ -0,0 +1,9 @@ +// Transcrypt'ed from Python, 2021-05-14 15:00:25 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get f1 () {return f1;}, set f1 (value) {f1 = value;}}); +var __name__ = 'div_issues.issue55.a'; +export var f1 = function () { + return 'f1'; +}; + +//# sourceMappingURL=div_issues.issue55.a.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/div_issues.issue55.a.tree b/transcrypt/development/automated_tests/transcrypt/__target__38/div_issues.issue55.a.tree new file mode 100644 index 000000000..7d8b68aac --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/div_issues.issue55.a.tree @@ -0,0 +1,21 @@ +file: Module + body: list + element: FunctionDef + name: str = f1 + args: arguments + posonlyargs: list + args: list + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Constant + value: str = f1 + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/div_issues.issue55.js b/transcrypt/development/automated_tests/transcrypt/__target__38/div_issues.issue55.js new file mode 100644 index 000000000..55e69f115 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/div_issues.issue55.js @@ -0,0 +1,11 @@ +// Transcrypt'ed from Python, 2021-05-14 15:00:25 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +import {x as y} from './div_issues.issue55.sub3.js'; +import {aB, anA} from './div_issues.issue55.sub2.js'; +import {p, q, r} from './div_issues.issue55.sub1.js'; +import {f1} from './div_issues.issue55.a.js'; +export {y, r, q, aB, p, anA, f1}; +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}}); +var __name__ = 'div_issues.issue55'; + +//# sourceMappingURL=div_issues.issue55.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/div_issues.issue55.sub1.js b/transcrypt/development/automated_tests/transcrypt/__target__38/div_issues.issue55.sub1.js new file mode 100644 index 000000000..42fdcfedc --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/div_issues.issue55.sub1.js @@ -0,0 +1,9 @@ +// Transcrypt'ed from Python, 2021-05-14 15:00:25 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get p () {return p;}, set p (value) {p = value;}, get q () {return q;}, set q (value) {q = value;}, get r () {return r;}, set r (value) {r = value;}}); +var __name__ = 'div_issues.issue55.sub1'; +export var p = 'p'; +export var q = 'q'; +export var r = 'r'; + +//# sourceMappingURL=div_issues.issue55.sub1.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/div_issues.issue55.sub1.tree b/transcrypt/development/automated_tests/transcrypt/__target__38/div_issues.issue55.sub1.tree new file mode 100644 index 000000000..b06546261 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/div_issues.issue55.sub1.tree @@ -0,0 +1,30 @@ +file: Module + body: list + element: Assign + targets: list + element: Name + id: str = p + ctx: Store + value: Constant + value: str = p + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = q + ctx: Store + value: Constant + value: str = q + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = r + ctx: Store + value: Constant + value: str = r + kind: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/div_issues.issue55.sub2.js b/transcrypt/development/automated_tests/transcrypt/__target__38/div_issues.issue55.sub2.js new file mode 100644 index 000000000..b2c418506 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/div_issues.issue55.sub2.js @@ -0,0 +1,8 @@ +// Transcrypt'ed from Python, 2021-05-14 15:00:25 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get aB () {return aB;}, set aB (value) {aB = value;}, get anA () {return anA;}, set anA (value) {anA = value;}}); +var __name__ = 'div_issues.issue55.sub2'; +export var anA = 'a'; +export var aB = 'b'; + +//# sourceMappingURL=div_issues.issue55.sub2.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/div_issues.issue55.sub2.tree b/transcrypt/development/automated_tests/transcrypt/__target__38/div_issues.issue55.sub2.tree new file mode 100644 index 000000000..3623685c1 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/div_issues.issue55.sub2.tree @@ -0,0 +1,21 @@ +file: Module + body: list + element: Assign + targets: list + element: Name + id: str = anA + ctx: Store + value: Constant + value: str = a + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = aB + ctx: Store + value: Constant + value: str = b + kind: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/div_issues.issue55.sub3.js b/transcrypt/development/automated_tests/transcrypt/__target__38/div_issues.issue55.sub3.js new file mode 100644 index 000000000..efc3ef7b6 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/div_issues.issue55.sub3.js @@ -0,0 +1,7 @@ +// Transcrypt'ed from Python, 2021-05-14 15:00:25 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get x () {return x;}, set x (value) {x = value;}}); +var __name__ = 'div_issues.issue55.sub3'; +export var x = 'x'; + +//# sourceMappingURL=div_issues.issue55.sub3.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/div_issues.issue55.sub3.tree b/transcrypt/development/automated_tests/transcrypt/__target__38/div_issues.issue55.sub3.tree new file mode 100644 index 000000000..db82b2801 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/div_issues.issue55.sub3.tree @@ -0,0 +1,12 @@ +file: Module + body: list + element: Assign + targets: list + element: Name + id: str = x + ctx: Store + value: Constant + value: str = x + kind: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/div_issues.issue55.tree b/transcrypt/development/automated_tests/transcrypt/__target__38/div_issues.issue55.tree new file mode 100644 index 000000000..f6d0e2e22 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/div_issues.issue55.tree @@ -0,0 +1,41 @@ +file: Module + body: list + element: Expr + value: Constant + value: str = +This sub-testlet only tests for error-free compilation. +It doesn't produce any output that's back to back checked with CPython output. + + kind: NoneType = None + element: ImportFrom + module: str = div_issues.issue55.a + names: list + element: alias + name: str = f1 + asname: NoneType = None + level: int = 0 + element: ImportFrom + module: str = div_issues.issue55.sub1 + names: list + element: alias + name: str = * + asname: NoneType = None + level: int = 0 + element: ImportFrom + module: str = div_issues.issue55.sub2 + names: list + element: alias + name: str = anA + asname: NoneType = None + element: alias + name: str = aB + asname: NoneType = None + level: int = 0 + element: ImportFrom + module: str = div_issues.issue55.sub3 + names: list + element: alias + name: str = x + asname: str = y + level: int = 0 + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/div_issues.issue559.js b/transcrypt/development/automated_tests/transcrypt/__target__38/div_issues.issue559.js new file mode 100644 index 000000000..690b39580 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/div_issues.issue559.js @@ -0,0 +1,13 @@ +// Transcrypt'ed from Python, 2021-05-14 15:00:25 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +import * as mylib from './div_issues.issue559.mylib.js'; +export {mylib}; +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get run559 () {return run559;}, set run559 (value) {run559 = value;}}); +var __name__ = 'div_issues.issue559'; +export var run559 = function (autoTester) { + mylib.mylibHello (autoTester); + var cl = mylib.mylibClass (autoTester); + cl.checkSymbols (); +}; + +//# sourceMappingURL=div_issues.issue559.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/div_issues.issue559.mylib.js b/transcrypt/development/automated_tests/transcrypt/__target__38/div_issues.issue559.mylib.js new file mode 100644 index 000000000..602cd796d --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/div_issues.issue559.mylib.js @@ -0,0 +1,8 @@ +// Transcrypt'ed from Python, 2021-05-14 15:00:25 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +import {mylibClass, mylibHello} from './div_issues.issue559.mylib.mylib.js'; +export {mylibHello, mylibClass}; +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}}); +var __name__ = 'div_issues.issue559.mylib'; + +//# sourceMappingURL=div_issues.issue559.mylib.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/div_issues.issue559.mylib.mylib.js b/transcrypt/development/automated_tests/transcrypt/__target__38/div_issues.issue559.mylib.mylib.js new file mode 100644 index 000000000..ffa4fd7c5 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/div_issues.issue559.mylib.mylib.js @@ -0,0 +1,27 @@ +// Transcrypt'ed from Python, 2021-05-14 15:00:25 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get mylibClass () {return mylibClass;}, set mylibClass (value) {mylibClass = value;}, get mylibHello () {return mylibHello;}, set mylibHello (value) {mylibHello = value;}}); +var __name__ = 'div_issues.issue559.mylib.mylib'; +export var mylibHello = function (autoTester) { + autoTester.check ('Hello World Function'); +}; +export var mylibClass = __class__ ('mylibClass', [object], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self, autoTester) { + self.autoTester = autoTester; + self.autoTester.check ('Hello World Class'); + });}, + get checkSymbols () {return __get__ (this, function (self) { + self.autoTester.check (sorted ((function () { + var __accu0__ = []; + for (var x of __i__ (__all__)) { + if (x.startswith ('my')) { + __accu0__.append (x); + } + } + return __accu0__; + }) ())); + });} +}); + +//# sourceMappingURL=div_issues.issue559.mylib.mylib.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/div_issues.issue559.mylib.mylib.tree b/transcrypt/development/automated_tests/transcrypt/__target__38/div_issues.issue559.mylib.mylib.tree new file mode 100644 index 000000000..ff5955d6d --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/div_issues.issue559.mylib.mylib.tree @@ -0,0 +1,176 @@ +file: Module + body: list + element: FunctionDef + name: str = mylibHello + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = autoTester + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Hello World Function + kind: NoneType = None + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: ClassDef + name: str = mylibClass + bases: list + keywords: list + body: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = autoTester + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = autoTester + ctx: Store + value: Name + id: str = autoTester + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Hello World Class + kind: NoneType = None + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = checkSymbols + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = iconv + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = sorted + ctx: Load + args: list + element: ListComp + elt: Name + id: str = x + ctx: Load + generators: list + element: comprehension + target: Name + id: str = x + ctx: Store + iter: Call + func: Name + id: str = globals + ctx: Load + args: list + keywords: list + ifs: list + element: Call + func: Attribute + value: Name + id: str = x + ctx: Load + attr: str = startswith + ctx: Load + args: list + element: Constant + value: str = my + kind: NoneType = None + keywords: list + is_async: int = 0 + keywords: list + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = noiconv + kind: NoneType = None + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/div_issues.issue559.mylib.tree b/transcrypt/development/automated_tests/transcrypt/__target__38/div_issues.issue559.mylib.tree new file mode 100644 index 000000000..07e34bda0 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/div_issues.issue559.mylib.tree @@ -0,0 +1,10 @@ +file: Module + body: list + element: ImportFrom + module: str = div_issues.issue559.mylib.mylib + names: list + element: alias + name: str = * + asname: NoneType = None + level: int = 0 + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/div_issues.issue559.tree b/transcrypt/development/automated_tests/transcrypt/__target__38/div_issues.issue559.tree new file mode 100644 index 000000000..25f86881b --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/div_issues.issue559.tree @@ -0,0 +1,79 @@ +file: Module + body: list + element: Import + names: list + element: alias + name: str = div_issues.issue559.mylib + asname: str = mylib + element: Expr + value: Constant + value: str = +There are two ways to make a module re-export everything imported: + +1. Name it __init__.py +2. Compile the whole application that it's part of, with the -xr / --xreex switch + +In this case, mylib deliberately has been given the role of the module with the reexporting __init__.py, +although this file has the same name and does the same thing. + + kind: NoneType = None + element: FunctionDef + name: str = run559 + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = autoTester + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = mylib + ctx: Load + attr: str = mylibHello + ctx: Load + args: list + element: Name + id: str = autoTester + ctx: Load + keywords: list + element: Assign + targets: list + element: Name + id: str = cl + ctx: Store + value: Call + func: Attribute + value: Name + id: str = mylib + ctx: Load + attr: str = mylibClass + ctx: Load + args: list + element: Name + id: str = autoTester + ctx: Load + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = cl + ctx: Load + attr: str = checkSymbols + ctx: Load + args: list + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/div_issues.js b/transcrypt/development/automated_tests/transcrypt/__target__38/div_issues.js new file mode 100644 index 000000000..69003d730 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/div_issues.js @@ -0,0 +1,686 @@ +// Transcrypt'ed from Python, 2021-05-14 15:00:25 +var re = {}; +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +import * as __module_re__ from './re.js'; +__nest__ (re, '', __module_re__); +import {run559} from './div_issues.issue559.js'; +import {run387} from './div_issues.issue387.js'; +import {aB, anA, f1, p, q, r, y} from './div_issues.issue55.js'; +export {y, r, aB, q, run559, p, anA, f1, run387}; +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get run () {return run;}, set run (value) {run = value;}}); +var __name__ = 'div_issues'; +export var run = function (autoTester) { + autoTester.check ('Issue 24'); + var py_switch = false; + autoTester.check (py_switch); + autoTester.check ('Issue 27'); + autoTester.check (['zero', 'one', 'two', 'three', 'four'].index ('three')); + autoTester.check ('Issue 36'); + var results = []; + for (var i = 0; i < 10; i++) { + results.append ((function __lambda__ (j) { + return (function __lambda__ () { + return j; + }); + }) (i)); + } + autoTester.check ((function () { + var __accu0__ = []; + for (var result of results) { + __accu0__.append (result ()); + } + return __accu0__; + }) ()); + autoTester.check ('Issue 37'); + autoTester.check (Math.floor (15 / 7)); + autoTester.check ('Issue 40'); + autoTester.check (65 / (5 * 2)); + autoTester.check ('Issue 50'); + autoTester.check ((Math.floor (((240 + 30) - 1) / 30)) * 30); + autoTester.check ('Issue 51'); + var a = 1; + var b = 1; + autoTester.check (a, b, new set ([a, b]) == new set ([1, 2])); + autoTester.check ('Issue 52'); + var __left0__ = tuple (['switch', 'case', 'default']); + var py_switch = __left0__ [0]; + var py_case = __left0__ [1]; + var py_default = __left0__ [2]; + autoTester.check (py_switch, py_case, py_default); + autoTester.check ('Issue 54'); + var aDict = dict ({1: 11, 2: 22, 3: 33}); + autoTester.check (aDict); + aDict.py_clear (); + autoTester.check (aDict); + autoTester.check ('Issue 60'); + var three = 3; + var one = three & 1; + var seven = three | 4; + var eight = one << 3; + var four = eight >> 1; + var aTrue = bool (three & one); + var aFalse = bool (three & four); + autoTester.check (3, three, 1, one, 7, seven, 8, eight, 4, four, true, aTrue, false, aFalse); + autoTester.check ('Issue 65'); + var aList = [4, 5, 6]; + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __add__ (__add__ ([1, 2, 3], aList), [4, 5, 6])); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __mul__ (3, [1, 2, 3])); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __mul__ ([1, 2, 3], 3)); + }) (); + var aString = 'Crocodile'; + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __add__ (__add__ ('Tiger', aString), 'Elephant')); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __mul__ (3, aString)); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __mul__ (aString, 3)); + }) (); + autoTester.check ('Issue 76'); + var initially17 = 17; + autoTester.check (initially17); + var initially17 = Math.floor (initially17 / 2); + autoTester.check (initially17); + var initially17 = Math.floor (initially17 / 2); + autoTester.check (initially17); + autoTester.check ('Issue 112'); + try { + if (__envir__.executor_name == __envir__.transpiler_name) { + var x = new Int8Array (2); + } + else { + var x = [null, null]; + } + x [0] = 3; + x [1] = 2; + for (var i of x) { + autoTester.check (i); + } + var y = 3; + for (var j of y) { + autoTester.check (j); + } + } + catch (__except0__) { + // pass; + } + autoTester.check ('Issue 122'); + var chunks = function* (aList, chunkLength) { + for (var index of range (0, len (aList), chunkLength)) { + yield aList.__getslice__ (index, index + chunkLength, 1); + } + }; + for (var chunk of chunks ((function () { + var __accu0__ = []; + for (var index = 0; index < 26; index++) { + __accu0__.append (chr (index + 97)); + } + return __accu0__; + }) (), 10)) { + autoTester.check (chunk); + } + autoTester.check ('Issue 123'); + autoTester.check (__mod__ (10, 3), __mod__ (10, -(3)), __mod__ (-(10), 3), __mod__ (-(10), -(3)), __mod__ (10, 10), __mod__ (10, -(10)), __mod__ (-(10), 10), __mod__ (-(10), -(10))); + autoTester.check ('Issue 125'); + var abc = 'abc'; + for (var index of abc) { + autoTester.check (abc); + } + autoTester.check ('Issue 127'); + autoTester.check (dict ({'include_docs': 'true', 'keys': ['key1', 'key2'], 'limit': 50})); + autoTester.check ('Issue 134'); + var __left0__ = tuple ([5, 12, -(5), -(5), 0, 0]); + var x0 = __left0__ [0]; + var x1 = __left0__ [1]; + var x2 = __left0__ [2]; + var x3 = __left0__ [3]; + var x4 = __left0__ [4]; + var x5 = __left0__ [5]; + var x0 = __mod__ (x0, 10); + var x1 = __mod__ (x1, 5); + var x2 = __mod__ (x2, 2); + var x3 = __mod__ (x3, -(3)); + var x4 = __mod__ (x4, 1); + var x5 = __mod__ (x5, -(1000)); + autoTester.check (x0, x1, x2, x3, x4); + autoTester.check ('Issue 136'); + var aDict = dict ({'a': 'ape', 'b': 'banana'}); + autoTester.check (aDict.py_get ('a', 'noApe'), aDict.py_get ('b'), aDict.py_get ('c', 'noCarot'), aDict.py_get ('d')); + autoTester.check ('Issue 144'); + var aList = (function () { + var __accu0__ = []; + var __iterable0__ = [1, 2, 3]; + for (var __index0__ = 0; __index0__ < len (__iterable0__); __index0__++) { + var x = __getitem__ (__iterable0__, __index0__); + (function () { + var __accu1__ = __accu0__; + return __call__ (__accu1__.append, __accu1__, x); + }) (); + } + return __accu0__; + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, aList); + }) (); + autoTester.check ('

Issue 145
'); + var SortTest = __class__ ('SortTest', [object], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self) { + self.alphabet = 'abcdefghijklmnopqrstuvwxyz'; + self.nChars = 10; + self.nCols = 10; + self.nRows = 30; + self.pseudoRandom = 0; + var randomWord = function () { + var word = ''; + for (var iChar = 0; iChar < self.nChars; iChar++) { + self.pseudoRandom = __mod__ (81212 * self.pseudoRandom + 28411, 134456); + word += self.alphabet [__mod__ (self.pseudoRandom, 26)]; + } + return word; + }; + self.rows = (function () { + var __accu0__ = []; + for (var iRow = 0; iRow < self.nRows; iRow++) { + __accu0__.append ((function () { + var __accu1__ = []; + for (var iCol = 0; iCol < self.nCols; iCol++) { + __accu1__.append (randomWord ()); + } + return __accu1__; + }) ()); + } + return __accu0__; + }) (); + });}, + get py_sort () {return __get__ (this, function (self) { + for (var iCol of py_reversed (range (self.nCols))) { + self.rows.py_sort (__kwargtrans__ ({key: (function __lambda__ (row) { + return row [iCol]; + })})); + } + });} + }); + var sortTest = SortTest (); + autoTester.check ('
Unsorted:
'); + for (var row of sortTest.rows) { + autoTester.check ('{}
'.format (','.join ((function () { + var __accu0__ = []; + for (var word of row) { + __accu0__.append (word); + } + return __accu0__; + }) ()))); + } + sortTest.py_sort (); + autoTester.check ('
Sorted:
'); + for (var row of sortTest.rows) { + autoTester.check ('{}
'.format (','.join ((function () { + var __accu0__ = []; + for (var word of row) { + __accu0__.append (word); + } + return __accu0__; + }) ()))); + } + autoTester.check ('

Issue 148
'); + var aDict = dict ({'items': [4, 5, 6]}); + for (var [aKey, aValue] of aDict.py_items ()) { + autoTester.check ('{}: {}'.format (aKey, aValue)); + } + autoTester.check ('

Issue 169
'); + autoTester.check (int (1 / float ('inf')), int (1 / float ('-inf'))); + autoTester.check ('

Issue 178
'); + var bitmaps = [tuple ([2, '']), tuple ([4, '']), tuple ([8, 'i']), tuple ([16, 'm']), tuple ([32, 'y']), tuple ([64, 'u']), tuple ([128, 'g'])]; + for (var flags of tuple ([122, 233, 11, 55, 79, 201, 23, 111, 200, 100, 50, 25, 12, 6])) { + autoTester.check (''.join ((function () { + var __accu0__ = []; + for (var x of bitmaps) { + if ((x [0] & flags) > 0) { + __accu0__.append (x [1]); + } + } + return __accu0__; + }) ())); + } + var issue256 = function () { + autoTester.check ('Issue 256'); + var C = __class__ ('C', [object], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self, value) { + self.value = value; + });} + }); + var f1 = function (value) { + return (C (value).value || 'second').capitalize () == 'First'; + }; + var f2 = function (value) { + return (C (value).value || 'second').capitalize () == 'Second'; + }; + var f3 = function (value) { + return C (value).value || 'second'; + }; + var f4 = function (value) { + return C (value).value || 'second'; + }; + autoTester.check (f1 ('first')); + autoTester.check (f1 ('')); + autoTester.check (f2 ('first')); + autoTester.check (f2 ('')); + autoTester.check (f3 ('first')); + autoTester.check (f4 ('')); + }; + issue256 (); + autoTester.check ('Issue 274'); + var a = 3; + autoTester.check ('Still alive'); + autoTester.check ('Issue 276'); + var a = 2; + var b = Math.pow (a, 3); + var a = Math.pow (a, 4); + autoTester.check (a, b); + autoTester.check ('Issue 277'); + var py_new = 3; + autoTester.check (py_new); + autoTester.check ('Issue 279'); + var A = __class__ ('A', [object], { + __module__: __name__, + py_TypeError: 111, + TypeError: 222 + }); + autoTester.check (A.py_TypeError, A.TypeError); + autoTester.check ('Still alive'); + autoTester.check ('Issue 301'); + var filter_word = function (word0, word1) { + if (len (word0) != len (word1)) { + return false; + } + for (var [char0, char1] of zip (word0, word1)) { + if (char0 != '_' && char0 != char1) { + return false; + } + } + return true; + }; + autoTester.check (filter_word ('bee', 'beer')); + autoTester.check (filter_word ('wine', 'wine')); + autoTester.check (filter_word ('win_', 'wind')); + autoTester.check (filter_word ('_in_', 'kind')); + autoTester.check (filter_word ('min_', 'kind')); + autoTester.check ('Issue 306'); + var dict_306 = dict ({'Abraham': 'Lincoln', 'Barack': "O'Bama", 'Thomas': 'Jefferson'}); + var results = []; + try { + while (true) { + results.append (dict_306.py_popitem ()); + } + } + catch (__except0__) { + if (isinstance (__except0__, Exception)) { + var exception = __except0__; + autoTester.check (sorted (results)); + autoTester.check ("That's it"); + } + else { + throw __except0__; + } + } + autoTester.check ('Issue 314'); + try { + autoTester.check (int (float (123))); + } + catch (__except0__) { + autoTester.check ('a'); + } + try { + autoTester.check (float (12.3)); + } + catch (__except0__) { + autoTester.check ('b'); + } + try { + autoTester.check (int (float ('123'))); + } + catch (__except0__) { + autoTester.check ('c'); + } + try { + autoTester.check (int (float (' 123'))); + } + catch (__except0__) { + autoTester.check ('d'); + } + try { + autoTester.check (float ('')); + } + catch (__except0__) { + autoTester.check ('e'); + } + try { + autoTester.check (float (' ')); + } + catch (__except0__) { + autoTester.check ('f'); + } + try { + autoTester.check (float ('drie')); + } + catch (__except0__) { + autoTester.check ('g'); + } + autoTester.check ('Issue 316'); + autoTester.check (list (filter (null, [[1, 2], [3], [], [4, 5], [6]]))); + autoTester.check (list (filter ((function __lambda__ (l) { + return len (l) >= 2; + }), [[1, 2], [3], [], [4, 5], [6]]))); + autoTester.check ('Issue 317'); + var mylist = []; + try { + mylist.remove ('value'); + } + catch (__except0__) { + if (isinstance (__except0__, ValueError)) { + var exception = __except0__; + autoTester.check (exception.__class__.__name__); + } + else { + throw __except0__; + } + } + autoTester.check ('Issue 331'); + autoTester.check (max (-(5), 4, 1, 2, -(3), 2)); + autoTester.check (max ([-(5), 4, 1, 2, -(3), 2])); + autoTester.check (max (tuple ([5, 6, 2, -(2), -(4)]))); + autoTester.check (min (-(5), 4, 1, 2, -(3), 2)); + autoTester.check (min ([-(5), 4, 1, 2, -(3), 2])); + autoTester.check (min (tuple ([5, 6, 2, -(2), -(4)]))); + autoTester.check ('issue 356'); + try { + var __except0__ = py_TypeError ('How are you?'); + __except0__.__cause__ = null; + throw __except0__; + } + catch (__except0__) { + if (isinstance (__except0__, py_TypeError)) { + var exception = __except0__; + autoTester.check (exception); + } + else { + throw __except0__; + } + } + autoTester.check ('Issue 369'); + var Vector = __class__ ('Vector', [object], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self) { + var py_values = tuple ([].slice.apply (arguments).slice (1)); + self.py_values = py_values; + });}, + get __iter__ () {return __get__ (this, function* (self) { + for (var item of self.py_values) { + yield item; + } + });}, + [Symbol.iterator] () {return this.__iter__ ()}, + get __add__ () {return __get__ (this, function (self, other) { + return Vector (...(function () { + var __accu0__ = []; + for (var [x, y] of zip (self, other)) { + __accu0__.append (x + y); + } + return py_iter (__accu0__); + }) ()); + });}, + get __str__ () {return __get__ (this, function (self) { + return str (list (self.py_values)); + });} + }); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __call__ (str, null, __add__ (__call__ (Vector, null, 1, 2, 3), __call__ (Vector, null, 3, 4, 5)))); + }) (); + autoTester.check ('Issue 387'); + run387 (autoTester); + autoTester.check ('Issue 391'); + autoTester.check (int (false)); + autoTester.check (int (true)); + autoTester.check (int (1 == 2)); + autoTester.check (int (1 != 2)); + autoTester.check ('Issue 392'); + var Example = __class__ ('Example', [object], { + __module__: __name__, + d: dict ({'A': 1, 'B': 2}), + rec: re.compile ('(?P\\d+)', re.ASCII), + get run () {return __get__ (this, function (self) { + var match = self.rec.match ('42'); + if (!(match)) { + print ('ERROR: RE does not match'); + } + var e = match.groupdict (); + autoTester.check ('before: self.d=', self.d); + autoTester.check ('before: e=', e); + self.d.py_update (e); + autoTester.check ('after: self.d=', self.d); + });} + }); + var example = Example (); + example.run (); + autoTester.check ('Issue 398'); + var Test398 = __class__ ('Test398', [object], { + __module__: __name__, + }); + var test398 = Test398 (); + autoTester.check ('Issue 399'); + try { + var surpressWarning = __k__ (dict ({'a': 5}), 'a'); + var surpressWarning = __k__ (dict ({'a': 5}), 'b'); + autoTester.check ('no problem'); + } + catch (__except0__) { + if (isinstance (__except0__, KeyError)) { + autoTester.check ('not found'); + } + else { + throw __except0__; + } + } + autoTester.check ('Issue 413'); + var Foo = __class__ ('Foo', [object], { + __module__: __name__, + get __len__ () {return __get__ (this, function (self) { + return 3; + });}, + get __getitem__ () {return __get__ (this, function (self, i) { + if (i >= 3) { + var __except0__ = IndexError; + __except0__.__cause__ = null; + throw __except0__; + } + return 'This is item ' + str (i); + });} + }); + var foo = Foo (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, 'Attempt 1:'); + }) (); + var __iterable0__ = foo; + for (var __index0__ = 0; __index0__ < len (__iterable0__); __index0__++) { + var i = __getitem__ (__iterable0__, __index0__); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, i); + }) (); + } + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, 'Attempt 2:'); + }) (); + for (var i = 0; i < __call__ (len, null, foo); i++) { + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __getitem__ (foo, i)); + }) (); + } + autoTester.check ('Issue 414'); + var Foo = __class__ ('Foo', [object], { + __module__: __name__, + }); + var foo = Foo (); + foo.bar = 'baz'; + foo.py_name = 'hello'; + foo.py_default = 'world'; + autoTester.check ((function () { + var __accu0__ = []; + for (var x of dir (foo)) { + if (!(x.startswith ('__'))) { + __accu0__.append (x); + } + } + return __accu0__; + }) ()); + var foo = function () { + var kwargs = dict (); + if (arguments.length) { + var __ilastarg0__ = arguments.length - 1; + if (arguments [__ilastarg0__] && arguments [__ilastarg0__].hasOwnProperty ("__kwargtrans__")) { + var __allkwargs0__ = arguments [__ilastarg0__--]; + for (var __attrib0__ in __allkwargs0__) { + switch (__attrib0__) { + default: kwargs [__attrib0__] = __allkwargs0__ [__attrib0__]; + } + } + delete kwargs.__kwargtrans__; + } + var args = tuple ([].slice.apply (arguments).slice (0, __ilastarg0__ + 1)); + } + else { + var args = tuple (); + } + var py_default = kwargs.py_get ('default', 'bar'); + return py_default; + }; + autoTester.check (foo ()); + autoTester.check (foo (__kwargtrans__ ({py_default: 'Hello World'}))); + autoTester.check ('Issue 460'); + var s460 = 'car'; + var l460 = [11, 22, 33]; + var t460 = tuple ([4, 5, 6]); + var d460 = dict ([[-(1), 'mmminusOne'], ['b', 'bbbike']]); + __setitem__ (l460, 0, 1); + __setitem__ (l460, __neg__ (2), 2); + __setitem__ (l460, __neg__ (1), 3); + __setitem__ (d460, __neg__ (1), 'minusOne'); + __setitem__ (d460, 'b', 'bike'); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __getitem__ (s460, 0), __getitem__ (s460, 1), __getitem__ (s460, 2), __getitem__ (s460, __neg__ (1)), __getitem__ (s460, __neg__ (2)), __getitem__ (s460, __neg__ (3))); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __getitem__ (l460, 0), __getitem__ (l460, 1), __getitem__ (l460, 2), __getitem__ (l460, __neg__ (1)), __getitem__ (l460, __neg__ (2)), __getitem__ (l460, __neg__ (3))); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __getitem__ (t460, 0), __getitem__ (t460, 1), __getitem__ (t460, 2), __getitem__ (t460, __neg__ (1)), __getitem__ (t460, __neg__ (2)), __getitem__ (t460, __neg__ (3))); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __getitem__ (d460, __neg__ (1)), __getitem__ (d460, 'b')); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __getitem__ (s460, 0), __getitem__ (s460, 1), __getitem__ (s460, 2), __getitem__ (s460, __neg__ (1)), __getitem__ (s460, __neg__ (2)), __getitem__ (s460, __neg__ (3))); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __getitem__ (l460, 0), __getitem__ (l460, 1), __getitem__ (l460, 2), __getitem__ (l460, __neg__ (1)), __getitem__ (l460, __neg__ (2)), __getitem__ (l460, __neg__ (3))); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __getitem__ (t460, 0), __getitem__ (t460, 1), __getitem__ (t460, 2), __getitem__ (t460, __neg__ (1)), __getitem__ (t460, __neg__ (2)), __getitem__ (t460, __neg__ (3))); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __getitem__ (d460, __neg__ (1)), __getitem__ (d460, 'b')); + }) (); + try { + autoTester.check (__k__ (d460, -(1)), __k__ (d460, 'c')); + } + catch (__except0__) { + autoTester.check (111); + } + try { + autoTester.check (__k__ (d460, -(2)), __k__ (d460, 'b')); + } + catch (__except0__) { + autoTester.check (222); + } + var a = [1, 2, 3]; + var b = [4, 5, 6]; + var c = '1,2,34,5,6'; + if (__envir__.executor_name == __envir__.transpiler_name) { + autoTester.check (a + b); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __add__ (a, b)); + }) (); + autoTester.check (a + b); + } + else { + autoTester.check (c); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __add__ (a, b)); + }) (); + autoTester.check (c); + } + if (__eq__ (__envir__.executor_name, __envir__.transpiler_name)) { + autoTester.check (a + b); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __add__ (a, b)); + }) (); + autoTester.check (a + b); + } + else { + autoTester.check (c); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __add__ (a, b)); + }) (); + autoTester.check (c); + } + autoTester.check ('Issue 494'); + var a = 1; + autoTester.check ('a={}'.format (a)); + var a = null; + autoTester.check ('a={}'.format (a)); + autoTester.check ('Issue 515'); + autoTester.check ('a: {}; b: {}'.format (null, 1)); + autoTester.check ('a: {}; b: {}'.format (1, null)); + autoTester.check ('a: {0}; b: {1}'.format (1, null)); + autoTester.check ('a: {0}; b: {1}'.format (1, [])); + autoTester.check ('a: {}; b: {}'.format (1, [])); + autoTester.check ('a: {0}; b: {1}'.format (1, dict ({}))); + autoTester.check ('a: {}; b: {}'.format (1, dict ({}))); + autoTester.check ('a: {0}; b: {1}'.format (1, 0)); + autoTester.check ('a: {}; b: {}'.format (1, 0)); + autoTester.check ('Issue 559'); + run559 (autoTester); +}; + +//# sourceMappingURL=div_issues.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/div_issues.tree b/transcrypt/development/automated_tests/transcrypt/__target__38/div_issues.tree new file mode 100644 index 000000000..d5d708198 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/div_issues.tree @@ -0,0 +1,7217 @@ +file: Module + body: list + element: ImportFrom + module: str = org.transcrypt.stubs.browser + names: list + element: alias + name: str = __pragma__ + asname: NoneType = None + element: alias + name: str = __new__ + asname: NoneType = None + element: alias + name: str = __envir__ + asname: NoneType = None + element: alias + name: str = __symbols__ + asname: NoneType = None + level: int = 0 + element: ImportFrom + module: str = div_issues.issue55 + names: list + element: alias + name: str = * + asname: NoneType = None + level: int = 0 + element: ImportFrom + module: str = div_issues.issue387 + names: list + element: alias + name: str = run387 + asname: NoneType = None + level: int = 0 + element: ImportFrom + module: str = div_issues.issue559 + names: list + element: alias + name: str = run559 + asname: NoneType = None + level: int = 0 + element: Import + names: list + element: alias + name: str = re + asname: NoneType = None + element: FunctionDef + name: str = run + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = autoTester + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Issue 24 + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = switch + ctx: Store + value: Constant + value: bool = False + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = switch + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Issue 27 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: List + elts: list + element: Constant + value: str = zero + kind: NoneType = None + element: Constant + value: str = one + kind: NoneType = None + element: Constant + value: str = two + kind: NoneType = None + element: Constant + value: str = three + kind: NoneType = None + element: Constant + value: str = four + kind: NoneType = None + ctx: Load + attr: str = index + ctx: Load + args: list + element: Constant + value: str = three + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Issue 36 + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = results + ctx: Store + value: List + elts: list + ctx: Load + type_comment: NoneType = None + element: For + target: Name + id: str = i + ctx: Store + iter: Call + func: Name + id: str = range + ctx: Load + args: list + element: Constant + value: int = 10 + kind: NoneType = None + keywords: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = results + ctx: Load + attr: str = append + ctx: Load + args: list + element: Call + func: Lambda + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = j + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: Lambda + args: arguments + posonlyargs: list + args: list + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: Name + id: str = j + ctx: Load + args: list + element: Name + id: str = i + ctx: Load + keywords: list + keywords: list + orelse: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: ListComp + elt: Call + func: Name + id: str = result + ctx: Load + args: list + keywords: list + generators: list + element: comprehension + target: Name + id: str = result + ctx: Store + iter: Name + id: str = results + ctx: Load + ifs: list + is_async: int = 0 + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Issue 37 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BinOp + left: Constant + value: int = 15 + kind: NoneType = None + op: FloorDiv + right: Constant + value: int = 7 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Issue 40 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BinOp + left: Constant + value: int = 65 + kind: NoneType = None + op: Div + right: BinOp + left: Constant + value: int = 5 + kind: NoneType = None + op: Mult + right: Constant + value: int = 2 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Issue 50 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BinOp + left: BinOp + left: BinOp + left: BinOp + left: Constant + value: int = 240 + kind: NoneType = None + op: Add + right: Constant + value: int = 30 + kind: NoneType = None + op: Sub + right: Constant + value: int = 1 + kind: NoneType = None + op: FloorDiv + right: Constant + value: int = 30 + kind: NoneType = None + op: Mult + right: Constant + value: int = 30 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Issue 51 + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = a + ctx: Store + value: Constant + value: int = 1 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = b + ctx: Store + value: Constant + value: int = 1 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = a + ctx: Load + element: Name + id: str = b + ctx: Load + element: Compare + left: Set + elts: list + element: Name + id: str = a + ctx: Load + element: Name + id: str = b + ctx: Load + ops: list + element: Eq + comparators: list + element: Set + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Issue 52 + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = switch + ctx: Store + element: Name + id: str = case + ctx: Store + element: Name + id: str = default + ctx: Store + ctx: Store + value: Tuple + elts: list + element: Constant + value: str = switch + kind: NoneType = None + element: Constant + value: str = case + kind: NoneType = None + element: Constant + value: str = default + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = switch + ctx: Load + element: Name + id: str = case + ctx: Load + element: Name + id: str = default + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Issue 54 + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = aDict + ctx: Store + value: Dict + keys: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + values: list + element: Constant + value: int = 11 + kind: NoneType = None + element: Constant + value: int = 22 + kind: NoneType = None + element: Constant + value: int = 33 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = aDict + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = aDict + ctx: Load + attr: str = clear + ctx: Load + args: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = aDict + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Issue 60 + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = three + ctx: Store + value: Constant + value: int = 3 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = one + ctx: Store + value: BinOp + left: Name + id: str = three + ctx: Load + op: BitAnd + right: Constant + value: int = 1 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = seven + ctx: Store + value: BinOp + left: Name + id: str = three + ctx: Load + op: BitOr + right: Constant + value: int = 4 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = eight + ctx: Store + value: BinOp + left: Name + id: str = one + ctx: Load + op: LShift + right: Constant + value: int = 3 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = four + ctx: Store + value: BinOp + left: Name + id: str = eight + ctx: Load + op: RShift + right: Constant + value: int = 1 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = aTrue + ctx: Store + value: Call + func: Name + id: str = bool + ctx: Load + args: list + element: BinOp + left: Name + id: str = three + ctx: Load + op: BitAnd + right: Name + id: str = one + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = aFalse + ctx: Store + value: Call + func: Name + id: str = bool + ctx: Load + args: list + element: BinOp + left: Name + id: str = three + ctx: Load + op: BitAnd + right: Name + id: str = four + ctx: Load + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: int = 3 + kind: NoneType = None + element: Name + id: str = three + ctx: Load + element: Constant + value: int = 1 + kind: NoneType = None + element: Name + id: str = one + ctx: Load + element: Constant + value: int = 7 + kind: NoneType = None + element: Name + id: str = seven + ctx: Load + element: Constant + value: int = 8 + kind: NoneType = None + element: Name + id: str = eight + ctx: Load + element: Constant + value: int = 4 + kind: NoneType = None + element: Name + id: str = four + ctx: Load + element: Constant + value: bool = True + kind: NoneType = None + element: Name + id: str = aTrue + ctx: Load + element: Constant + value: bool = False + kind: NoneType = None + element: Name + id: str = aFalse + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Issue 65 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = opov + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = aList + ctx: Store + value: List + elts: list + element: Constant + value: int = 4 + kind: NoneType = None + element: Constant + value: int = 5 + kind: NoneType = None + element: Constant + value: int = 6 + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BinOp + left: BinOp + left: List + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + op: Add + right: Name + id: str = aList + ctx: Load + op: Add + right: List + elts: list + element: Constant + value: int = 4 + kind: NoneType = None + element: Constant + value: int = 5 + kind: NoneType = None + element: Constant + value: int = 6 + kind: NoneType = None + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BinOp + left: Constant + value: int = 3 + kind: NoneType = None + op: Mult + right: List + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BinOp + left: List + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + op: Mult + right: Constant + value: int = 3 + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = aString + ctx: Store + value: Constant + value: str = Crocodile + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BinOp + left: BinOp + left: Constant + value: str = Tiger + kind: NoneType = None + op: Add + right: Name + id: str = aString + ctx: Load + op: Add + right: Constant + value: str = Elephant + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BinOp + left: Constant + value: int = 3 + kind: NoneType = None + op: Mult + right: Name + id: str = aString + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BinOp + left: Name + id: str = aString + ctx: Load + op: Mult + right: Constant + value: int = 3 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = noopov + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Issue 76 + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = initially17 + ctx: Store + value: Constant + value: int = 17 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = initially17 + ctx: Load + keywords: list + element: AugAssign + target: Name + id: str = initially17 + ctx: Store + op: FloorDiv + value: Constant + value: int = 2 + kind: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = initially17 + ctx: Load + keywords: list + element: AugAssign + target: Name + id: str = initially17 + ctx: Store + op: FloorDiv + value: Constant + value: int = 2 + kind: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = initially17 + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Issue 112 + kind: NoneType = None + keywords: list + element: Try + body: list + element: If + test: Compare + left: Attribute + value: Name + id: str = __envir__ + ctx: Load + attr: str = executor_name + ctx: Load + ops: list + element: Eq + comparators: list + element: Attribute + value: Name + id: str = __envir__ + ctx: Load + attr: str = transpiler_name + ctx: Load + body: list + element: Assign + targets: list + element: Name + id: str = x + ctx: Store + value: Call + func: Name + id: str = __new__ + ctx: Load + args: list + element: Call + func: Name + id: str = Int8Array + ctx: Load + args: list + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + keywords: list + type_comment: NoneType = None + orelse: list + element: Assign + targets: list + element: Name + id: str = x + ctx: Store + value: List + elts: list + element: Constant + value: NoneType = None + kind: NoneType = None + element: Constant + value: NoneType = None + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Subscript + value: Name + id: str = x + ctx: Load + slice: Index + value: Constant + value: int = 0 + kind: NoneType = None + ctx: Store + value: Constant + value: int = 3 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Subscript + value: Name + id: str = x + ctx: Load + slice: Index + value: Constant + value: int = 1 + kind: NoneType = None + ctx: Store + value: Constant + value: int = 2 + kind: NoneType = None + type_comment: NoneType = None + element: For + target: Name + id: str = i + ctx: Store + iter: Name + id: str = x + ctx: Load + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = i + ctx: Load + keywords: list + orelse: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = y + ctx: Store + value: Constant + value: int = 3 + kind: NoneType = None + type_comment: NoneType = None + element: For + target: Name + id: str = j + ctx: Store + iter: Name + id: str = y + ctx: Load + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = j + ctx: Load + keywords: list + orelse: list + type_comment: NoneType = None + handlers: list + element: ExceptHandler + type: NoneType = None + name: NoneType = None + body: list + element: Pass + orelse: list + finalbody: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Issue 122 + kind: NoneType = None + keywords: list + element: FunctionDef + name: str = chunks + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = aList + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = chunkLength + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: For + target: Name + id: str = index + ctx: Store + iter: Call + func: Name + id: str = range + ctx: Load + args: list + element: Constant + value: int = 0 + kind: NoneType = None + element: Call + func: Name + id: str = len + ctx: Load + args: list + element: Name + id: str = aList + ctx: Load + keywords: list + element: Name + id: str = chunkLength + ctx: Load + keywords: list + body: list + element: Expr + value: Yield + value: Subscript + value: Name + id: str = aList + ctx: Load + slice: Slice + lower: Name + id: str = index + ctx: Load + upper: BinOp + left: Name + id: str = index + ctx: Load + op: Add + right: Name + id: str = chunkLength + ctx: Load + step: NoneType = None + ctx: Load + orelse: list + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: For + target: Name + id: str = chunk + ctx: Store + iter: Call + func: Name + id: str = chunks + ctx: Load + args: list + element: ListComp + elt: Call + func: Name + id: str = chr + ctx: Load + args: list + element: BinOp + left: Name + id: str = index + ctx: Load + op: Add + right: Constant + value: int = 97 + kind: NoneType = None + keywords: list + generators: list + element: comprehension + target: Name + id: str = index + ctx: Store + iter: Call + func: Name + id: str = range + ctx: Load + args: list + element: Constant + value: int = 26 + kind: NoneType = None + keywords: list + ifs: list + is_async: int = 0 + element: Constant + value: int = 10 + kind: NoneType = None + keywords: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = chunk + ctx: Load + keywords: list + orelse: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Issue 123 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BinOp + left: Constant + value: int = 10 + kind: NoneType = None + op: Mod + right: Constant + value: int = 3 + kind: NoneType = None + element: BinOp + left: Constant + value: int = 10 + kind: NoneType = None + op: Mod + right: UnaryOp + op: USub + operand: Constant + value: int = 3 + kind: NoneType = None + element: BinOp + left: UnaryOp + op: USub + operand: Constant + value: int = 10 + kind: NoneType = None + op: Mod + right: Constant + value: int = 3 + kind: NoneType = None + element: BinOp + left: UnaryOp + op: USub + operand: Constant + value: int = 10 + kind: NoneType = None + op: Mod + right: UnaryOp + op: USub + operand: Constant + value: int = 3 + kind: NoneType = None + element: BinOp + left: Constant + value: int = 10 + kind: NoneType = None + op: Mod + right: Constant + value: int = 10 + kind: NoneType = None + element: BinOp + left: Constant + value: int = 10 + kind: NoneType = None + op: Mod + right: UnaryOp + op: USub + operand: Constant + value: int = 10 + kind: NoneType = None + element: BinOp + left: UnaryOp + op: USub + operand: Constant + value: int = 10 + kind: NoneType = None + op: Mod + right: Constant + value: int = 10 + kind: NoneType = None + element: BinOp + left: UnaryOp + op: USub + operand: Constant + value: int = 10 + kind: NoneType = None + op: Mod + right: UnaryOp + op: USub + operand: Constant + value: int = 10 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Issue 125 + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = abc + ctx: Store + value: Constant + value: str = abc + kind: NoneType = None + type_comment: NoneType = None + element: For + target: Name + id: str = index + ctx: Store + iter: Name + id: str = abc + ctx: Load + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = abc + ctx: Load + keywords: list + orelse: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Issue 127 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Dict + keys: list + element: Constant + value: str = include_docs + kind: NoneType = None + element: Constant + value: str = keys + kind: NoneType = None + element: Constant + value: str = limit + kind: NoneType = None + values: list + element: Constant + value: str = true + kind: NoneType = None + element: List + elts: list + element: Constant + value: str = key1 + kind: NoneType = None + element: Constant + value: str = key2 + kind: NoneType = None + ctx: Load + element: Constant + value: int = 50 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Issue 134 + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = x0 + ctx: Store + element: Name + id: str = x1 + ctx: Store + element: Name + id: str = x2 + ctx: Store + element: Name + id: str = x3 + ctx: Store + element: Name + id: str = x4 + ctx: Store + element: Name + id: str = x5 + ctx: Store + ctx: Store + value: Tuple + elts: list + element: Constant + value: int = 5 + kind: NoneType = None + element: Constant + value: int = 12 + kind: NoneType = None + element: UnaryOp + op: USub + operand: Constant + value: int = 5 + kind: NoneType = None + element: UnaryOp + op: USub + operand: Constant + value: int = 5 + kind: NoneType = None + element: Constant + value: int = 0 + kind: NoneType = None + element: Constant + value: int = 0 + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: AugAssign + target: Name + id: str = x0 + ctx: Store + op: Mod + value: Constant + value: int = 10 + kind: NoneType = None + element: AugAssign + target: Name + id: str = x1 + ctx: Store + op: Mod + value: Constant + value: int = 5 + kind: NoneType = None + element: AugAssign + target: Name + id: str = x2 + ctx: Store + op: Mod + value: Constant + value: int = 2 + kind: NoneType = None + element: AugAssign + target: Name + id: str = x3 + ctx: Store + op: Mod + value: UnaryOp + op: USub + operand: Constant + value: int = 3 + kind: NoneType = None + element: AugAssign + target: Name + id: str = x4 + ctx: Store + op: Mod + value: Constant + value: int = 1 + kind: NoneType = None + element: AugAssign + target: Name + id: str = x5 + ctx: Store + op: Mod + value: UnaryOp + op: USub + operand: Constant + value: int = 1000 + kind: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = x0 + ctx: Load + element: Name + id: str = x1 + ctx: Load + element: Name + id: str = x2 + ctx: Load + element: Name + id: str = x3 + ctx: Load + element: Name + id: str = x4 + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Issue 136 + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = aDict + ctx: Store + value: Dict + keys: list + element: Constant + value: str = a + kind: NoneType = None + element: Constant + value: str = b + kind: NoneType = None + values: list + element: Constant + value: str = ape + kind: NoneType = None + element: Constant + value: str = banana + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = aDict + ctx: Load + attr: str = get + ctx: Load + args: list + element: Constant + value: str = a + kind: NoneType = None + element: Constant + value: str = noApe + kind: NoneType = None + keywords: list + element: Call + func: Attribute + value: Name + id: str = aDict + ctx: Load + attr: str = get + ctx: Load + args: list + element: Constant + value: str = b + kind: NoneType = None + keywords: list + element: Call + func: Attribute + value: Name + id: str = aDict + ctx: Load + attr: str = get + ctx: Load + args: list + element: Constant + value: str = c + kind: NoneType = None + element: Constant + value: str = noCarot + kind: NoneType = None + keywords: list + element: Call + func: Attribute + value: Name + id: str = aDict + ctx: Load + attr: str = get + ctx: Load + args: list + element: Constant + value: str = d + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Issue 144 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = opov + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = aList + ctx: Store + value: ListComp + elt: Name + id: str = x + ctx: Load + generators: list + element: comprehension + target: Name + id: str = x + ctx: Store + iter: List + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + ifs: list + is_async: int = 0 + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = aList + ctx: Load + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = noopov + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str =

Issue 145
+ kind: NoneType = None + keywords: list + element: ClassDef + name: str = SortTest + bases: list + keywords: list + body: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = alphabet + ctx: Store + value: Constant + value: str = abcdefghijklmnopqrstuvwxyz + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = nChars + ctx: Store + value: Constant + value: int = 10 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = nCols + ctx: Store + value: Constant + value: int = 10 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = nRows + ctx: Store + value: Constant + value: int = 30 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = pseudoRandom + ctx: Store + value: Constant + value: int = 0 + kind: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = randomWord + args: arguments + posonlyargs: list + args: list + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Name + id: str = word + ctx: Store + value: Constant + value: str = + kind: NoneType = None + type_comment: NoneType = None + element: For + target: Name + id: str = iChar + ctx: Store + iter: Call + func: Name + id: str = range + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = nChars + ctx: Load + keywords: list + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = pseudoRandom + ctx: Store + value: BinOp + left: BinOp + left: BinOp + left: Constant + value: int = 81212 + kind: NoneType = None + op: Mult + right: Attribute + value: Name + id: str = self + ctx: Load + attr: str = pseudoRandom + ctx: Load + op: Add + right: Constant + value: int = 28411 + kind: NoneType = None + op: Mod + right: Constant + value: int = 134456 + kind: NoneType = None + type_comment: NoneType = None + element: AugAssign + target: Name + id: str = word + ctx: Store + op: Add + value: Subscript + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = alphabet + ctx: Load + slice: Index + value: BinOp + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = pseudoRandom + ctx: Load + op: Mod + right: Constant + value: int = 26 + kind: NoneType = None + ctx: Load + orelse: list + type_comment: NoneType = None + element: Return + value: Name + id: str = word + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = rows + ctx: Store + value: ListComp + elt: ListComp + elt: Call + func: Name + id: str = randomWord + ctx: Load + args: list + keywords: list + generators: list + element: comprehension + target: Name + id: str = iCol + ctx: Store + iter: Call + func: Name + id: str = range + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = nCols + ctx: Load + keywords: list + ifs: list + is_async: int = 0 + generators: list + element: comprehension + target: Name + id: str = iRow + ctx: Store + iter: Call + func: Name + id: str = range + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = nRows + ctx: Load + keywords: list + ifs: list + is_async: int = 0 + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = sort + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: For + target: Name + id: str = iCol + ctx: Store + iter: Call + func: Name + id: str = reversed + ctx: Load + args: list + element: Call + func: Name + id: str = range + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = nCols + ctx: Load + keywords: list + keywords: list + body: list + element: Expr + value: Call + func: Attribute + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = rows + ctx: Load + attr: str = sort + ctx: Load + args: list + keywords: list + element: keyword + arg: str = key + value: Lambda + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = row + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: Subscript + value: Name + id: str = row + ctx: Load + slice: Index + value: Name + id: str = iCol + ctx: Load + ctx: Load + orelse: list + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: Assign + targets: list + element: Name + id: str = sortTest + ctx: Store + value: Call + func: Name + id: str = SortTest + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str =
Unsorted:
+ kind: NoneType = None + keywords: list + element: For + target: Name + id: str = row + ctx: Store + iter: Attribute + value: Name + id: str = sortTest + ctx: Load + attr: str = rows + ctx: Load + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = {}
+ kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = , + kind: NoneType = None + attr: str = join + ctx: Load + args: list + element: ListComp + elt: Name + id: str = word + ctx: Load + generators: list + element: comprehension + target: Name + id: str = word + ctx: Store + iter: Name + id: str = row + ctx: Load + ifs: list + is_async: int = 0 + keywords: list + keywords: list + keywords: list + orelse: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = sortTest + ctx: Load + attr: str = sort + ctx: Load + args: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str =
Sorted:
+ kind: NoneType = None + keywords: list + element: For + target: Name + id: str = row + ctx: Store + iter: Attribute + value: Name + id: str = sortTest + ctx: Load + attr: str = rows + ctx: Load + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = {}
+ kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = , + kind: NoneType = None + attr: str = join + ctx: Load + args: list + element: ListComp + elt: Name + id: str = word + ctx: Load + generators: list + element: comprehension + target: Name + id: str = word + ctx: Store + iter: Name + id: str = row + ctx: Load + ifs: list + is_async: int = 0 + keywords: list + keywords: list + keywords: list + orelse: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str =

Issue 148
+ kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = aDict + ctx: Store + value: Dict + keys: list + element: Constant + value: str = items + kind: NoneType = None + values: list + element: List + elts: list + element: Constant + value: int = 4 + kind: NoneType = None + element: Constant + value: int = 5 + kind: NoneType = None + element: Constant + value: int = 6 + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: For + target: Tuple + elts: list + element: Name + id: str = aKey + ctx: Store + element: Name + id: str = aValue + ctx: Store + ctx: Store + iter: Call + func: Attribute + value: Name + id: str = aDict + ctx: Load + attr: str = items + ctx: Load + args: list + keywords: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = {}: {} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Name + id: str = aKey + ctx: Load + element: Name + id: str = aValue + ctx: Load + keywords: list + keywords: list + orelse: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str =

Issue 169
+ kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = int + ctx: Load + args: list + element: BinOp + left: Constant + value: int = 1 + kind: NoneType = None + op: Div + right: Call + func: Name + id: str = float + ctx: Load + args: list + element: Constant + value: str = inf + kind: NoneType = None + keywords: list + keywords: list + element: Call + func: Name + id: str = int + ctx: Load + args: list + element: BinOp + left: Constant + value: int = 1 + kind: NoneType = None + op: Div + right: Call + func: Name + id: str = float + ctx: Load + args: list + element: Constant + value: str = -inf + kind: NoneType = None + keywords: list + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str =

Issue 178
+ kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = bitmaps + ctx: Store + value: List + elts: list + element: Tuple + elts: list + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: str = + kind: NoneType = None + ctx: Load + element: Tuple + elts: list + element: Constant + value: int = 4 + kind: NoneType = None + element: Constant + value: str = + kind: NoneType = None + ctx: Load + element: Tuple + elts: list + element: Constant + value: int = 8 + kind: NoneType = None + element: Constant + value: str = i + kind: NoneType = None + ctx: Load + element: Tuple + elts: list + element: Constant + value: int = 16 + kind: NoneType = None + element: Constant + value: str = m + kind: NoneType = None + ctx: Load + element: Tuple + elts: list + element: Constant + value: int = 32 + kind: NoneType = None + element: Constant + value: str = y + kind: NoneType = None + ctx: Load + element: Tuple + elts: list + element: Constant + value: int = 64 + kind: NoneType = None + element: Constant + value: str = u + kind: NoneType = None + ctx: Load + element: Tuple + elts: list + element: Constant + value: int = 128 + kind: NoneType = None + element: Constant + value: str = g + kind: NoneType = None + ctx: Load + ctx: Load + type_comment: NoneType = None + element: For + target: Name + id: str = flags + ctx: Store + iter: Tuple + elts: list + element: Constant + value: int = 122 + kind: NoneType = None + element: Constant + value: int = 233 + kind: NoneType = None + element: Constant + value: int = 11 + kind: NoneType = None + element: Constant + value: int = 55 + kind: NoneType = None + element: Constant + value: int = 79 + kind: NoneType = None + element: Constant + value: int = 201 + kind: NoneType = None + element: Constant + value: int = 23 + kind: NoneType = None + element: Constant + value: int = 111 + kind: NoneType = None + element: Constant + value: int = 200 + kind: NoneType = None + element: Constant + value: int = 100 + kind: NoneType = None + element: Constant + value: int = 50 + kind: NoneType = None + element: Constant + value: int = 25 + kind: NoneType = None + element: Constant + value: int = 12 + kind: NoneType = None + element: Constant + value: int = 6 + kind: NoneType = None + ctx: Load + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = + kind: NoneType = None + attr: str = join + ctx: Load + args: list + element: ListComp + elt: Subscript + value: Name + id: str = x + ctx: Load + slice: Index + value: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + generators: list + element: comprehension + target: Name + id: str = x + ctx: Store + iter: Name + id: str = bitmaps + ctx: Load + ifs: list + element: Compare + left: BinOp + left: Subscript + value: Name + id: str = x + ctx: Load + slice: Index + value: Constant + value: int = 0 + kind: NoneType = None + ctx: Load + op: BitAnd + right: Name + id: str = flags + ctx: Load + ops: list + element: Gt + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + is_async: int = 0 + keywords: list + keywords: list + orelse: list + type_comment: NoneType = None + element: FunctionDef + name: str = issue256 + args: arguments + posonlyargs: list + args: list + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Issue 256 + kind: NoneType = None + keywords: list + element: ClassDef + name: str = C + bases: list + keywords: list + body: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = value + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = value + ctx: Store + value: Name + id: str = value + ctx: Load + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: FunctionDef + name: str = f1 + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = value + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Compare + left: Call + func: Attribute + value: BoolOp + op: Or + values: list + element: Attribute + value: Call + func: Name + id: str = C + ctx: Load + args: list + element: Name + id: str = value + ctx: Load + keywords: list + attr: str = value + ctx: Load + element: Constant + value: str = second + kind: NoneType = None + attr: str = capitalize + ctx: Load + args: list + keywords: list + ops: list + element: Eq + comparators: list + element: Constant + value: str = First + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = f2 + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = value + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Compare + left: Call + func: Attribute + value: BoolOp + op: Or + values: list + element: Attribute + value: Call + func: Name + id: str = C + ctx: Load + args: list + element: Name + id: str = value + ctx: Load + keywords: list + attr: str = value + ctx: Load + element: Constant + value: str = second + kind: NoneType = None + attr: str = capitalize + ctx: Load + args: list + keywords: list + ops: list + element: Eq + comparators: list + element: Constant + value: str = Second + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = f3 + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = value + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: BoolOp + op: Or + values: list + element: Attribute + value: Call + func: Name + id: str = C + ctx: Load + args: list + element: Name + id: str = value + ctx: Load + keywords: list + attr: str = value + ctx: Load + element: Constant + value: str = second + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = f4 + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = value + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: BoolOp + op: Or + values: list + element: Attribute + value: Call + func: Name + id: str = C + ctx: Load + args: list + element: Name + id: str = value + ctx: Load + keywords: list + attr: str = value + ctx: Load + element: Constant + value: str = second + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = f1 + ctx: Load + args: list + element: Constant + value: str = first + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = f1 + ctx: Load + args: list + element: Constant + value: str = + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = f2 + ctx: Load + args: list + element: Constant + value: str = first + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = f2 + ctx: Load + args: list + element: Constant + value: str = + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = f3 + ctx: Load + args: list + element: Constant + value: str = first + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = f4 + ctx: Load + args: list + element: Constant + value: str = + kind: NoneType = None + keywords: list + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = issue256 + ctx: Load + args: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Issue 274 + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = a + ctx: Store + value: Constant + value: int = 3 + kind: NoneType = None + type_comment: NoneType = None + element: Delete + targets: list + element: Name + id: str = a + ctx: Del + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Still alive + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Issue 276 + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = a + ctx: Store + value: Constant + value: int = 2 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = b + ctx: Store + value: BinOp + left: Name + id: str = a + ctx: Load + op: Pow + right: Constant + value: int = 3 + kind: NoneType = None + type_comment: NoneType = None + element: AugAssign + target: Name + id: str = a + ctx: Store + op: Pow + value: Constant + value: int = 4 + kind: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = a + ctx: Load + element: Name + id: str = b + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Issue 277 + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = new + ctx: Store + value: Constant + value: int = 3 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = new + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Issue 279 + kind: NoneType = None + keywords: list + element: ClassDef + name: str = A + bases: list + keywords: list + body: list + element: Assign + targets: list + element: Name + id: str = TypeError + ctx: Store + value: Constant + value: int = 111 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = js_TypeError + ctx: Store + value: Constant + value: int = 222 + kind: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = A + ctx: Load + attr: str = TypeError + ctx: Load + element: Attribute + value: Name + id: str = A + ctx: Load + attr: str = js_TypeError + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Still alive + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Issue 301 + kind: NoneType = None + keywords: list + element: FunctionDef + name: str = filter_word + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = word0 + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = word1 + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: Compare + left: Call + func: Name + id: str = len + ctx: Load + args: list + element: Name + id: str = word0 + ctx: Load + keywords: list + ops: list + element: NotEq + comparators: list + element: Call + func: Name + id: str = len + ctx: Load + args: list + element: Name + id: str = word1 + ctx: Load + keywords: list + body: list + element: Return + value: Constant + value: bool = False + kind: NoneType = None + orelse: list + element: For + target: Tuple + elts: list + element: Name + id: str = char0 + ctx: Store + element: Name + id: str = char1 + ctx: Store + ctx: Store + iter: Call + func: Name + id: str = zip + ctx: Load + args: list + element: Name + id: str = word0 + ctx: Load + element: Name + id: str = word1 + ctx: Load + keywords: list + body: list + element: If + test: BoolOp + op: And + values: list + element: Compare + left: Name + id: str = char0 + ctx: Load + ops: list + element: NotEq + comparators: list + element: Constant + value: str = _ + kind: NoneType = None + element: Compare + left: Name + id: str = char0 + ctx: Load + ops: list + element: NotEq + comparators: list + element: Name + id: str = char1 + ctx: Load + body: list + element: Return + value: Constant + value: bool = False + kind: NoneType = None + orelse: list + orelse: list + type_comment: NoneType = None + element: Return + value: Constant + value: bool = True + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = filter_word + ctx: Load + args: list + element: Constant + value: str = bee + kind: NoneType = None + element: Constant + value: str = beer + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = filter_word + ctx: Load + args: list + element: Constant + value: str = wine + kind: NoneType = None + element: Constant + value: str = wine + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = filter_word + ctx: Load + args: list + element: Constant + value: str = win_ + kind: NoneType = None + element: Constant + value: str = wind + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = filter_word + ctx: Load + args: list + element: Constant + value: str = _in_ + kind: NoneType = None + element: Constant + value: str = kind + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = filter_word + ctx: Load + args: list + element: Constant + value: str = min_ + kind: NoneType = None + element: Constant + value: str = kind + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Issue 306 + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = dict_306 + ctx: Store + value: Dict + keys: list + element: Constant + value: str = Abraham + kind: NoneType = None + element: Constant + value: str = Barack + kind: NoneType = None + element: Constant + value: str = Thomas + kind: NoneType = None + values: list + element: Constant + value: str = Lincoln + kind: NoneType = None + element: Constant + value: str = O'Bama + kind: NoneType = None + element: Constant + value: str = Jefferson + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = results + ctx: Store + value: List + elts: list + ctx: Load + type_comment: NoneType = None + element: Try + body: list + element: While + test: Constant + value: bool = True + kind: NoneType = None + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = results + ctx: Load + attr: str = append + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = dict_306 + ctx: Load + attr: str = popitem + ctx: Load + args: list + keywords: list + keywords: list + orelse: list + handlers: list + element: ExceptHandler + type: Name + id: str = Exception + ctx: Load + name: str = exception + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = sorted + ctx: Load + args: list + element: Name + id: str = results + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = That's it + kind: NoneType = None + keywords: list + orelse: list + finalbody: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Issue 314 + kind: NoneType = None + keywords: list + element: Try + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = int + ctx: Load + args: list + element: Call + func: Name + id: str = float + ctx: Load + args: list + element: Constant + value: int = 123 + kind: NoneType = None + keywords: list + keywords: list + keywords: list + handlers: list + element: ExceptHandler + type: NoneType = None + name: NoneType = None + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = a + kind: NoneType = None + keywords: list + orelse: list + finalbody: list + element: Try + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = float + ctx: Load + args: list + element: Constant + value: float = 12.3 + kind: NoneType = None + keywords: list + keywords: list + handlers: list + element: ExceptHandler + type: NoneType = None + name: NoneType = None + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = b + kind: NoneType = None + keywords: list + orelse: list + finalbody: list + element: Try + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = int + ctx: Load + args: list + element: Call + func: Name + id: str = float + ctx: Load + args: list + element: Constant + value: str = 123 + kind: NoneType = None + keywords: list + keywords: list + keywords: list + handlers: list + element: ExceptHandler + type: NoneType = None + name: NoneType = None + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = c + kind: NoneType = None + keywords: list + orelse: list + finalbody: list + element: Try + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = int + ctx: Load + args: list + element: Call + func: Name + id: str = float + ctx: Load + args: list + element: Constant + value: str = 123 + kind: NoneType = None + keywords: list + keywords: list + keywords: list + handlers: list + element: ExceptHandler + type: NoneType = None + name: NoneType = None + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = d + kind: NoneType = None + keywords: list + orelse: list + finalbody: list + element: Try + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = float + ctx: Load + args: list + element: Constant + value: str = + kind: NoneType = None + keywords: list + keywords: list + handlers: list + element: ExceptHandler + type: NoneType = None + name: NoneType = None + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = e + kind: NoneType = None + keywords: list + orelse: list + finalbody: list + element: Try + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = float + ctx: Load + args: list + element: Constant + value: str = + kind: NoneType = None + keywords: list + keywords: list + handlers: list + element: ExceptHandler + type: NoneType = None + name: NoneType = None + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = f + kind: NoneType = None + keywords: list + orelse: list + finalbody: list + element: Try + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = float + ctx: Load + args: list + element: Constant + value: str = drie + kind: NoneType = None + keywords: list + keywords: list + handlers: list + element: ExceptHandler + type: NoneType = None + name: NoneType = None + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = g + kind: NoneType = None + keywords: list + orelse: list + finalbody: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Issue 316 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = list + ctx: Load + args: list + element: Call + func: Name + id: str = filter + ctx: Load + args: list + element: Constant + value: NoneType = None + kind: NoneType = None + element: List + elts: list + element: List + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + ctx: Load + element: List + elts: list + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + element: List + elts: list + ctx: Load + element: List + elts: list + element: Constant + value: int = 4 + kind: NoneType = None + element: Constant + value: int = 5 + kind: NoneType = None + ctx: Load + element: List + elts: list + element: Constant + value: int = 6 + kind: NoneType = None + ctx: Load + ctx: Load + keywords: list + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = list + ctx: Load + args: list + element: Call + func: Name + id: str = filter + ctx: Load + args: list + element: Lambda + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = l + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: Compare + left: Call + func: Name + id: str = len + ctx: Load + args: list + element: Name + id: str = l + ctx: Load + keywords: list + ops: list + element: GtE + comparators: list + element: Constant + value: int = 2 + kind: NoneType = None + element: List + elts: list + element: List + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + ctx: Load + element: List + elts: list + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + element: List + elts: list + ctx: Load + element: List + elts: list + element: Constant + value: int = 4 + kind: NoneType = None + element: Constant + value: int = 5 + kind: NoneType = None + ctx: Load + element: List + elts: list + element: Constant + value: int = 6 + kind: NoneType = None + ctx: Load + ctx: Load + keywords: list + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Issue 317 + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = mylist + ctx: Store + value: List + elts: list + ctx: Load + type_comment: NoneType = None + element: Try + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = mylist + ctx: Load + attr: str = remove + ctx: Load + args: list + element: Constant + value: str = value + kind: NoneType = None + keywords: list + handlers: list + element: ExceptHandler + type: Name + id: str = ValueError + ctx: Load + name: str = exception + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Attribute + value: Name + id: str = exception + ctx: Load + attr: str = __class__ + ctx: Load + attr: str = __name__ + ctx: Load + keywords: list + orelse: list + finalbody: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Issue 331 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = max + ctx: Load + args: list + element: UnaryOp + op: USub + operand: Constant + value: int = 5 + kind: NoneType = None + element: Constant + value: int = 4 + kind: NoneType = None + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: UnaryOp + op: USub + operand: Constant + value: int = 3 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = max + ctx: Load + args: list + element: List + elts: list + element: UnaryOp + op: USub + operand: Constant + value: int = 5 + kind: NoneType = None + element: Constant + value: int = 4 + kind: NoneType = None + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: UnaryOp + op: USub + operand: Constant + value: int = 3 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = max + ctx: Load + args: list + element: Tuple + elts: list + element: Constant + value: int = 5 + kind: NoneType = None + element: Constant + value: int = 6 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: UnaryOp + op: USub + operand: Constant + value: int = 2 + kind: NoneType = None + element: UnaryOp + op: USub + operand: Constant + value: int = 4 + kind: NoneType = None + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = min + ctx: Load + args: list + element: UnaryOp + op: USub + operand: Constant + value: int = 5 + kind: NoneType = None + element: Constant + value: int = 4 + kind: NoneType = None + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: UnaryOp + op: USub + operand: Constant + value: int = 3 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = min + ctx: Load + args: list + element: List + elts: list + element: UnaryOp + op: USub + operand: Constant + value: int = 5 + kind: NoneType = None + element: Constant + value: int = 4 + kind: NoneType = None + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: UnaryOp + op: USub + operand: Constant + value: int = 3 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = min + ctx: Load + args: list + element: Tuple + elts: list + element: Constant + value: int = 5 + kind: NoneType = None + element: Constant + value: int = 6 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: UnaryOp + op: USub + operand: Constant + value: int = 2 + kind: NoneType = None + element: UnaryOp + op: USub + operand: Constant + value: int = 4 + kind: NoneType = None + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = issue 356 + kind: NoneType = None + keywords: list + element: Try + body: list + element: Raise + exc: Call + func: Name + id: str = TypeError + ctx: Load + args: list + element: Constant + value: str = How are you? + kind: NoneType = None + keywords: list + cause: NoneType = None + handlers: list + element: ExceptHandler + type: Name + id: str = TypeError + ctx: Load + name: str = exception + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = exception + ctx: Load + keywords: list + orelse: list + finalbody: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Issue 369 + kind: NoneType = None + keywords: list + element: ClassDef + name: str = Vector + bases: list + keywords: list + body: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: arg + arg: str = values + annotation: NoneType = None + type_comment: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = values + ctx: Store + value: Name + id: str = values + ctx: Load + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __iter__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: For + target: Name + id: str = item + ctx: Store + iter: Attribute + value: Name + id: str = self + ctx: Load + attr: str = values + ctx: Load + body: list + element: Expr + value: Yield + value: Name + id: str = item + ctx: Load + orelse: list + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __add__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Call + func: Name + id: str = Vector + ctx: Load + args: list + element: Starred + value: GeneratorExp + elt: BinOp + left: Name + id: str = x + ctx: Load + op: Add + right: Name + id: str = y + ctx: Load + generators: list + element: comprehension + target: Tuple + elts: list + element: Name + id: str = x + ctx: Store + element: Name + id: str = y + ctx: Store + ctx: Store + iter: Call + func: Name + id: str = zip + ctx: Load + args: list + element: Name + id: str = self + ctx: Load + element: Name + id: str = other + ctx: Load + keywords: list + ifs: list + is_async: int = 0 + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __str__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Call + func: Name + id: str = str + ctx: Load + args: list + element: Call + func: Name + id: str = list + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = values + ctx: Load + keywords: list + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = opov + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = str + ctx: Load + args: list + element: BinOp + left: Call + func: Name + id: str = Vector + ctx: Load + args: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + keywords: list + op: Add + right: Call + func: Name + id: str = Vector + ctx: Load + args: list + element: Constant + value: int = 3 + kind: NoneType = None + element: Constant + value: int = 4 + kind: NoneType = None + element: Constant + value: int = 5 + kind: NoneType = None + keywords: list + keywords: list + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = noopov + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Issue 387 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Name + id: str = run387 + ctx: Load + args: list + element: Name + id: str = autoTester + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Issue 391 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = int + ctx: Load + args: list + element: Constant + value: bool = False + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = int + ctx: Load + args: list + element: Constant + value: bool = True + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = int + ctx: Load + args: list + element: Compare + left: Constant + value: int = 1 + kind: NoneType = None + ops: list + element: Eq + comparators: list + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = int + ctx: Load + args: list + element: Compare + left: Constant + value: int = 1 + kind: NoneType = None + ops: list + element: NotEq + comparators: list + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Issue 392 + kind: NoneType = None + keywords: list + element: ClassDef + name: str = Example + bases: list + keywords: list + body: list + element: Assign + targets: list + element: Name + id: str = d + ctx: Store + value: Dict + keys: list + element: Constant + value: str = A + kind: NoneType = None + element: Constant + value: str = B + kind: NoneType = None + values: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = rec + ctx: Store + value: Call + func: Attribute + value: Name + id: str = re + ctx: Load + attr: str = compile + ctx: Load + args: list + element: Constant + value: str = (?P\d+) + kind: NoneType = None + element: Attribute + value: Name + id: str = re + ctx: Load + attr: str = ASCII + ctx: Load + keywords: list + type_comment: NoneType = None + element: FunctionDef + name: str = run + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Name + id: str = match + ctx: Store + value: Call + func: Attribute + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = rec + ctx: Load + attr: str = match + ctx: Load + args: list + element: Constant + value: str = 42 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: If + test: UnaryOp + op: Not + operand: Name + id: str = match + ctx: Load + body: list + element: Expr + value: Call + func: Name + id: str = print + ctx: Load + args: list + element: Constant + value: str = ERROR: RE does not match + kind: NoneType = None + keywords: list + orelse: list + element: Assign + targets: list + element: Name + id: str = e + ctx: Store + value: Call + func: Attribute + value: Name + id: str = match + ctx: Load + attr: str = groupdict + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = before: self.d= + kind: NoneType = None + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = d + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = before: e= + kind: NoneType = None + element: Name + id: str = e + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = d + ctx: Load + attr: str = update + ctx: Load + args: list + element: Name + id: str = e + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = after: self.d= + kind: NoneType = None + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = d + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: Assign + targets: list + element: Name + id: str = example + ctx: Store + value: Call + func: Name + id: str = Example + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = example + ctx: Load + attr: str = run + ctx: Load + args: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Issue 398 + kind: NoneType = None + keywords: list + element: ClassDef + name: str = Test398 + bases: list + element: Name + id: str = object + ctx: Load + keywords: list + body: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = skip + kind: NoneType = None + keywords: list + element: FunctionDef + name: str = method1 + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Pass + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = method2 + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Pass + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = noskip + kind: NoneType = None + keywords: list + element: Pass + decorator_list: list + element: Assign + targets: list + element: Name + id: str = test398 + ctx: Store + value: Call + func: Name + id: str = Test398 + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Issue 399 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = keycheck + kind: NoneType = None + keywords: list + element: Try + body: list + element: Assign + targets: list + element: Name + id: str = surpressWarning + ctx: Store + value: Subscript + value: Dict + keys: list + element: Constant + value: str = a + kind: NoneType = None + values: list + element: Constant + value: int = 5 + kind: NoneType = None + slice: Index + value: Constant + value: str = a + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = surpressWarning + ctx: Store + value: Subscript + value: Dict + keys: list + element: Constant + value: str = a + kind: NoneType = None + values: list + element: Constant + value: int = 5 + kind: NoneType = None + slice: Index + value: Constant + value: str = b + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = no problem + kind: NoneType = None + keywords: list + handlers: list + element: ExceptHandler + type: Name + id: str = KeyError + ctx: Load + name: NoneType = None + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = not found + kind: NoneType = None + keywords: list + orelse: list + finalbody: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Issue 413 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = nokeycheck + kind: NoneType = None + keywords: list + element: ClassDef + name: str = Foo + bases: list + keywords: list + body: list + element: FunctionDef + name: str = __len__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Constant + value: int = 3 + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __getitem__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = i + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: Compare + left: Name + id: str = i + ctx: Load + ops: list + element: GtE + comparators: list + element: Constant + value: int = 3 + kind: NoneType = None + body: list + element: Raise + exc: Name + id: str = IndexError + ctx: Load + cause: NoneType = None + orelse: list + element: Return + value: BinOp + left: Constant + value: str = This is item + kind: NoneType = None + op: Add + right: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = i + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: Assign + targets: list + element: Name + id: str = foo + ctx: Store + value: Call + func: Name + id: str = Foo + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = opov + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Attempt 1: + kind: NoneType = None + keywords: list + element: For + target: Name + id: str = i + ctx: Store + iter: Name + id: str = foo + ctx: Load + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = i + ctx: Load + keywords: list + orelse: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Attempt 2: + kind: NoneType = None + keywords: list + element: For + target: Name + id: str = i + ctx: Store + iter: Call + func: Name + id: str = range + ctx: Load + args: list + element: Call + func: Name + id: str = len + ctx: Load + args: list + element: Name + id: str = foo + ctx: Load + keywords: list + keywords: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Subscript + value: Name + id: str = foo + ctx: Load + slice: Index + value: Name + id: str = i + ctx: Load + ctx: Load + keywords: list + orelse: list + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = noopov + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Issue 414 + kind: NoneType = None + keywords: list + element: ClassDef + name: str = Foo + bases: list + keywords: list + body: list + element: Pass + decorator_list: list + element: Assign + targets: list + element: Name + id: str = foo + ctx: Store + value: Call + func: Name + id: str = Foo + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = foo + ctx: Load + attr: str = bar + ctx: Store + value: Constant + value: str = baz + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = foo + ctx: Load + attr: str = name + ctx: Store + value: Constant + value: str = hello + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = foo + ctx: Load + attr: str = default + ctx: Store + value: Constant + value: str = world + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: ListComp + elt: Name + id: str = x + ctx: Load + generators: list + element: comprehension + target: Name + id: str = x + ctx: Store + iter: Call + func: Name + id: str = dir + ctx: Load + args: list + element: Name + id: str = foo + ctx: Load + keywords: list + ifs: list + element: UnaryOp + op: Not + operand: Call + func: Attribute + value: Name + id: str = x + ctx: Load + attr: str = startswith + ctx: Load + args: list + element: Constant + value: str = __ + kind: NoneType = None + keywords: list + is_async: int = 0 + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = kwargs + kind: NoneType = None + keywords: list + element: FunctionDef + name: str = foo + args: arguments + posonlyargs: list + args: list + vararg: arg + arg: str = args + annotation: NoneType = None + type_comment: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: arg + arg: str = kwargs + annotation: NoneType = None + type_comment: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Name + id: str = default + ctx: Store + value: Call + func: Attribute + value: Name + id: str = kwargs + ctx: Load + attr: str = get + ctx: Load + args: list + element: Constant + value: str = default + kind: NoneType = None + element: Constant + value: str = bar + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Return + value: Name + id: str = default + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = foo + ctx: Load + args: list + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = foo + ctx: Load + args: list + keywords: list + element: keyword + arg: str = default + value: Constant + value: str = Hello World + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Issue 460 + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = s460 + ctx: Store + value: Constant + value: str = car + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = l460 + ctx: Store + value: List + elts: list + element: Constant + value: int = 11 + kind: NoneType = None + element: Constant + value: int = 22 + kind: NoneType = None + element: Constant + value: int = 33 + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = t460 + ctx: Store + value: Tuple + elts: list + element: Constant + value: int = 4 + kind: NoneType = None + element: Constant + value: int = 5 + kind: NoneType = None + element: Constant + value: int = 6 + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = d460 + ctx: Store + value: Dict + keys: list + element: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: str = b + kind: NoneType = None + values: list + element: Constant + value: str = mmminusOne + kind: NoneType = None + element: Constant + value: str = bbbike + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = opov + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Subscript + value: Name + id: str = l460 + ctx: Load + slice: Index + value: Constant + value: int = 0 + kind: NoneType = None + ctx: Store + value: Constant + value: int = 1 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Subscript + value: Name + id: str = l460 + ctx: Load + slice: Index + value: UnaryOp + op: USub + operand: Constant + value: int = 2 + kind: NoneType = None + ctx: Store + value: Constant + value: int = 2 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Subscript + value: Name + id: str = l460 + ctx: Load + slice: Index + value: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + ctx: Store + value: Constant + value: int = 3 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Subscript + value: Name + id: str = d460 + ctx: Load + slice: Index + value: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + ctx: Store + value: Constant + value: str = minusOne + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Subscript + value: Name + id: str = d460 + ctx: Load + slice: Index + value: Constant + value: str = b + kind: NoneType = None + ctx: Store + value: Constant + value: str = bike + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Subscript + value: Name + id: str = s460 + ctx: Load + slice: Index + value: Constant + value: int = 0 + kind: NoneType = None + ctx: Load + element: Subscript + value: Name + id: str = s460 + ctx: Load + slice: Index + value: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + element: Subscript + value: Name + id: str = s460 + ctx: Load + slice: Index + value: Constant + value: int = 2 + kind: NoneType = None + ctx: Load + element: Subscript + value: Name + id: str = s460 + ctx: Load + slice: Index + value: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + element: Subscript + value: Name + id: str = s460 + ctx: Load + slice: Index + value: UnaryOp + op: USub + operand: Constant + value: int = 2 + kind: NoneType = None + ctx: Load + element: Subscript + value: Name + id: str = s460 + ctx: Load + slice: Index + value: UnaryOp + op: USub + operand: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Subscript + value: Name + id: str = l460 + ctx: Load + slice: Index + value: Constant + value: int = 0 + kind: NoneType = None + ctx: Load + element: Subscript + value: Name + id: str = l460 + ctx: Load + slice: Index + value: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + element: Subscript + value: Name + id: str = l460 + ctx: Load + slice: Index + value: Constant + value: int = 2 + kind: NoneType = None + ctx: Load + element: Subscript + value: Name + id: str = l460 + ctx: Load + slice: Index + value: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + element: Subscript + value: Name + id: str = l460 + ctx: Load + slice: Index + value: UnaryOp + op: USub + operand: Constant + value: int = 2 + kind: NoneType = None + ctx: Load + element: Subscript + value: Name + id: str = l460 + ctx: Load + slice: Index + value: UnaryOp + op: USub + operand: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Subscript + value: Name + id: str = t460 + ctx: Load + slice: Index + value: Constant + value: int = 0 + kind: NoneType = None + ctx: Load + element: Subscript + value: Name + id: str = t460 + ctx: Load + slice: Index + value: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + element: Subscript + value: Name + id: str = t460 + ctx: Load + slice: Index + value: Constant + value: int = 2 + kind: NoneType = None + ctx: Load + element: Subscript + value: Name + id: str = t460 + ctx: Load + slice: Index + value: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + element: Subscript + value: Name + id: str = t460 + ctx: Load + slice: Index + value: UnaryOp + op: USub + operand: Constant + value: int = 2 + kind: NoneType = None + ctx: Load + element: Subscript + value: Name + id: str = t460 + ctx: Load + slice: Index + value: UnaryOp + op: USub + operand: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Subscript + value: Name + id: str = d460 + ctx: Load + slice: Index + value: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + element: Subscript + value: Name + id: str = d460 + ctx: Load + slice: Index + value: Constant + value: str = b + kind: NoneType = None + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Subscript + value: Name + id: str = s460 + ctx: Load + slice: Index + value: Constant + value: int = 0 + kind: NoneType = None + ctx: Load + element: Subscript + value: Name + id: str = s460 + ctx: Load + slice: Index + value: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + element: Subscript + value: Name + id: str = s460 + ctx: Load + slice: Index + value: Constant + value: int = 2 + kind: NoneType = None + ctx: Load + element: Subscript + value: Name + id: str = s460 + ctx: Load + slice: Index + value: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + element: Subscript + value: Name + id: str = s460 + ctx: Load + slice: Index + value: UnaryOp + op: USub + operand: Constant + value: int = 2 + kind: NoneType = None + ctx: Load + element: Subscript + value: Name + id: str = s460 + ctx: Load + slice: Index + value: UnaryOp + op: USub + operand: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Subscript + value: Name + id: str = l460 + ctx: Load + slice: Index + value: Constant + value: int = 0 + kind: NoneType = None + ctx: Load + element: Subscript + value: Name + id: str = l460 + ctx: Load + slice: Index + value: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + element: Subscript + value: Name + id: str = l460 + ctx: Load + slice: Index + value: Constant + value: int = 2 + kind: NoneType = None + ctx: Load + element: Subscript + value: Name + id: str = l460 + ctx: Load + slice: Index + value: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + element: Subscript + value: Name + id: str = l460 + ctx: Load + slice: Index + value: UnaryOp + op: USub + operand: Constant + value: int = 2 + kind: NoneType = None + ctx: Load + element: Subscript + value: Name + id: str = l460 + ctx: Load + slice: Index + value: UnaryOp + op: USub + operand: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Subscript + value: Name + id: str = t460 + ctx: Load + slice: Index + value: Constant + value: int = 0 + kind: NoneType = None + ctx: Load + element: Subscript + value: Name + id: str = t460 + ctx: Load + slice: Index + value: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + element: Subscript + value: Name + id: str = t460 + ctx: Load + slice: Index + value: Constant + value: int = 2 + kind: NoneType = None + ctx: Load + element: Subscript + value: Name + id: str = t460 + ctx: Load + slice: Index + value: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + element: Subscript + value: Name + id: str = t460 + ctx: Load + slice: Index + value: UnaryOp + op: USub + operand: Constant + value: int = 2 + kind: NoneType = None + ctx: Load + element: Subscript + value: Name + id: str = t460 + ctx: Load + slice: Index + value: UnaryOp + op: USub + operand: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Subscript + value: Name + id: str = d460 + ctx: Load + slice: Index + value: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + element: Subscript + value: Name + id: str = d460 + ctx: Load + slice: Index + value: Constant + value: str = b + kind: NoneType = None + ctx: Load + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = noopov + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = keycheck + kind: NoneType = None + keywords: list + element: Try + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Subscript + value: Name + id: str = d460 + ctx: Load + slice: Index + value: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + element: Subscript + value: Name + id: str = d460 + ctx: Load + slice: Index + value: Constant + value: str = c + kind: NoneType = None + ctx: Load + keywords: list + handlers: list + element: ExceptHandler + type: NoneType = None + name: NoneType = None + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: int = 111 + kind: NoneType = None + keywords: list + orelse: list + finalbody: list + element: Try + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Subscript + value: Name + id: str = d460 + ctx: Load + slice: Index + value: UnaryOp + op: USub + operand: Constant + value: int = 2 + kind: NoneType = None + ctx: Load + element: Subscript + value: Name + id: str = d460 + ctx: Load + slice: Index + value: Constant + value: str = b + kind: NoneType = None + ctx: Load + keywords: list + handlers: list + element: ExceptHandler + type: NoneType = None + name: NoneType = None + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: int = 222 + kind: NoneType = None + keywords: list + orelse: list + finalbody: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = nokeycheck + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = a + ctx: Store + value: List + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = b + ctx: Store + value: List + elts: list + element: Constant + value: int = 4 + kind: NoneType = None + element: Constant + value: int = 5 + kind: NoneType = None + element: Constant + value: int = 6 + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = c + ctx: Store + value: Constant + value: str = 1,2,34,5,6 + kind: NoneType = None + type_comment: NoneType = None + element: If + test: Compare + left: Attribute + value: Name + id: str = __envir__ + ctx: Load + attr: str = executor_name + ctx: Load + ops: list + element: Eq + comparators: list + element: Attribute + value: Name + id: str = __envir__ + ctx: Load + attr: str = transpiler_name + ctx: Load + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BinOp + left: Name + id: str = a + ctx: Load + op: Add + right: Name + id: str = b + ctx: Load + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = opov + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BinOp + left: Name + id: str = a + ctx: Load + op: Add + right: Name + id: str = b + ctx: Load + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = noopov + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BinOp + left: Name + id: str = a + ctx: Load + op: Add + right: Name + id: str = b + ctx: Load + keywords: list + orelse: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = c + ctx: Load + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = opov + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BinOp + left: Name + id: str = a + ctx: Load + op: Add + right: Name + id: str = b + ctx: Load + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = noopov + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = c + ctx: Load + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = opov + kind: NoneType = None + keywords: list + element: If + test: Compare + left: Attribute + value: Name + id: str = __envir__ + ctx: Load + attr: str = executor_name + ctx: Load + ops: list + element: Eq + comparators: list + element: Attribute + value: Name + id: str = __envir__ + ctx: Load + attr: str = transpiler_name + ctx: Load + body: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = noopov + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BinOp + left: Name + id: str = a + ctx: Load + op: Add + right: Name + id: str = b + ctx: Load + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = opov + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BinOp + left: Name + id: str = a + ctx: Load + op: Add + right: Name + id: str = b + ctx: Load + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = noopov + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BinOp + left: Name + id: str = a + ctx: Load + op: Add + right: Name + id: str = b + ctx: Load + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = opov + kind: NoneType = None + keywords: list + orelse: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = noopov + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = c + ctx: Load + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = opov + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BinOp + left: Name + id: str = a + ctx: Load + op: Add + right: Name + id: str = b + ctx: Load + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = noopov + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = c + ctx: Load + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = opov + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = noopov + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Issue 494 + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = a + ctx: Store + value: Constant + value: int = 1 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: JoinedStr + values: list + element: Constant + value: str = a= + kind: NoneType = None + element: FormattedValue + value: Name + id: str = a + ctx: Load + conversion: int = -1 + format_spec: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = a + ctx: Store + value: Constant + value: NoneType = None + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: JoinedStr + values: list + element: Constant + value: str = a= + kind: NoneType = None + element: FormattedValue + value: Name + id: str = a + ctx: Load + conversion: int = -1 + format_spec: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Issue 515 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = a: {}; b: {} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Constant + value: NoneType = None + kind: NoneType = None + element: Constant + value: int = 1 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = a: {}; b: {} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: NoneType = None + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = a: {0}; b: {1} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: NoneType = None + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = a: {0}; b: {1} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Constant + value: int = 1 + kind: NoneType = None + element: List + elts: list + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = a: {}; b: {} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Constant + value: int = 1 + kind: NoneType = None + element: List + elts: list + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = a: {0}; b: {1} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Dict + keys: list + values: list + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = a: {}; b: {} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Dict + keys: list + values: list + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = a: {0}; b: {1} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 0 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = a: {}; b: {} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 0 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Issue 559 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Name + id: str = run559 + ctx: Load + args: list + element: Name + id: str = autoTester + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/div_pulls.js b/transcrypt/development/automated_tests/transcrypt/__target__38/div_pulls.js new file mode 100644 index 000000000..c3fadb9e9 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/div_pulls.js @@ -0,0 +1,43 @@ +// Transcrypt'ed from Python, 2021-05-14 15:00:25 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +import * as pull575 from './div_pulls.pull575_reexport_modules.js'; +export {pull575}; +var __all__ = dict ({get A () {return A;}, set A (value) {A = value;}, get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get a () {return a;}, set a (value) {a = value;}, get run () {return run;}, set run (value) {run = value;}}); +var __name__ = 'div_pulls'; +export var A = __class__ ('A', [object], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self, x) { + self.x = x; + });} +}); +export var a = A (5.5); +export var run = function (autoTester) { + autoTester.check ('Pull 56'); + var s = 'abcdefghij'; + autoTester.check (s.__getslice__ (2, 3, 1)); + autoTester.check (s.__getslice__ (0, 3, 1)); + autoTester.check (s.__getslice__ (2, null, 1)); + autoTester.check (s.__getslice__ (0, null, 2)); + autoTester.check ('Pull 59'); + autoTester.check (list (filter ((function __lambda__ (x) { + return __mod__ (x, 2) == 0; + }), range (10)))); + autoTester.check (list (map ((function __lambda__ (x) { + return x * x; + }), range (0, 31, 3)))); + autoTester.check ('Pull 561'); + var brackets = function (word) { + autoTester.check ('sideeffect'); + return ('[' + word) + ']'; + }; + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, (function () { + var __accu1__ = __call__ (brackets, null, 'anything'); + return __call__ (__accu1__.lower, __accu1__); + }) ()); + }) (); + pull575.run (autoTester); +}; + +//# sourceMappingURL=div_pulls.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/div_pulls.pull575_reexport_modules.js b/transcrypt/development/automated_tests/transcrypt/__target__38/div_pulls.pull575_reexport_modules.js new file mode 100644 index 000000000..c510eae01 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/div_pulls.pull575_reexport_modules.js @@ -0,0 +1,12 @@ +// Transcrypt'ed from Python, 2021-05-14 15:00:25 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +import {aHtml5, bHtml5, cHtml5, ext} from './div_pulls.pull575_reexport_modules.reexporter.js'; +export {aHtml5, bHtml5, cHtml5, ext}; +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get run () {return run;}, set run (value) {run = value;}}); +var __name__ = 'div_pulls.pull575_reexport_modules'; +export var run = function (autoTester) { + autoTester.check ('Pull 575: Re-export modules'); + autoTester.check (aHtml5, bHtml5, cHtml5, ext.dExt); +}; + +//# sourceMappingURL=div_pulls.pull575_reexport_modules.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/div_pulls.pull575_reexport_modules.reexporter.html5.ext.js b/transcrypt/development/automated_tests/transcrypt/__target__38/div_pulls.pull575_reexport_modules.reexporter.html5.ext.js new file mode 100644 index 000000000..50055d75f --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/div_pulls.pull575_reexport_modules.reexporter.html5.ext.js @@ -0,0 +1,7 @@ +// Transcrypt'ed from Python, 2021-05-14 15:00:25 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get dExt () {return dExt;}, set dExt (value) {dExt = value;}}); +var __name__ = 'div_pulls.pull575_reexport_modules.reexporter.html5.ext'; +export var dExt = 3; + +//# sourceMappingURL=div_pulls.pull575_reexport_modules.reexporter.html5.ext.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/div_pulls.pull575_reexport_modules.reexporter.html5.ext.tree b/transcrypt/development/automated_tests/transcrypt/__target__38/div_pulls.pull575_reexport_modules.reexporter.html5.ext.tree new file mode 100644 index 000000000..d614f9325 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/div_pulls.pull575_reexport_modules.reexporter.html5.ext.tree @@ -0,0 +1,12 @@ +file: Module + body: list + element: Assign + targets: list + element: Name + id: str = dExt + ctx: Store + value: Constant + value: int = 3 + kind: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/div_pulls.pull575_reexport_modules.reexporter.html5.html5.js b/transcrypt/development/automated_tests/transcrypt/__target__38/div_pulls.pull575_reexport_modules.reexporter.html5.html5.js new file mode 100644 index 000000000..266f8397b --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/div_pulls.pull575_reexport_modules.reexporter.html5.html5.js @@ -0,0 +1,9 @@ +// Transcrypt'ed from Python, 2021-05-14 15:00:25 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get aHtml5 () {return aHtml5;}, set aHtml5 (value) {aHtml5 = value;}, get bHtml5 () {return bHtml5;}, set bHtml5 (value) {bHtml5 = value;}, get cHtml5 () {return cHtml5;}, set cHtml5 (value) {cHtml5 = value;}}); +var __name__ = 'div_pulls.pull575_reexport_modules.reexporter.html5.html5'; +export var aHtml5 = 0; +export var bHtml5 = 1; +export var cHtml5 = 2; + +//# sourceMappingURL=div_pulls.pull575_reexport_modules.reexporter.html5.html5.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/div_pulls.pull575_reexport_modules.reexporter.html5.html5.tree b/transcrypt/development/automated_tests/transcrypt/__target__38/div_pulls.pull575_reexport_modules.reexporter.html5.html5.tree new file mode 100644 index 000000000..b5d37c6b8 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/div_pulls.pull575_reexport_modules.reexporter.html5.html5.tree @@ -0,0 +1,30 @@ +file: Module + body: list + element: Assign + targets: list + element: Name + id: str = aHtml5 + ctx: Store + value: Constant + value: int = 0 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = bHtml5 + ctx: Store + value: Constant + value: int = 1 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = cHtml5 + ctx: Store + value: Constant + value: int = 2 + kind: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/div_pulls.pull575_reexport_modules.reexporter.js b/transcrypt/development/automated_tests/transcrypt/__target__38/div_pulls.pull575_reexport_modules.reexporter.js new file mode 100644 index 000000000..37dfce102 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/div_pulls.pull575_reexport_modules.reexporter.js @@ -0,0 +1,9 @@ +// Transcrypt'ed from Python, 2021-05-14 15:00:25 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +import * as ext from './div_pulls.pull575_reexport_modules.reexporter.html5.ext.js'; +import {aHtml5, bHtml5, cHtml5} from './div_pulls.pull575_reexport_modules.reexporter.html5.html5.js'; +export {aHtml5, bHtml5, cHtml5, ext}; +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}}); +var __name__ = 'div_pulls.pull575_reexport_modules.reexporter'; + +//# sourceMappingURL=div_pulls.pull575_reexport_modules.reexporter.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/div_pulls.pull575_reexport_modules.reexporter.tree b/transcrypt/development/automated_tests/transcrypt/__target__38/div_pulls.pull575_reexport_modules.reexporter.tree new file mode 100644 index 000000000..980147849 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/div_pulls.pull575_reexport_modules.reexporter.tree @@ -0,0 +1,17 @@ +file: Module + body: list + element: ImportFrom + module: str = div_pulls.pull575_reexport_modules.reexporter.html5.html5 + names: list + element: alias + name: str = * + asname: NoneType = None + level: int = 0 + element: ImportFrom + module: str = div_pulls.pull575_reexport_modules.reexporter.html5 + names: list + element: alias + name: str = ext + asname: NoneType = None + level: int = 0 + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/div_pulls.pull575_reexport_modules.tree b/transcrypt/development/automated_tests/transcrypt/__target__38/div_pulls.pull575_reexport_modules.tree new file mode 100644 index 000000000..ba6f4d58a --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/div_pulls.pull575_reexport_modules.tree @@ -0,0 +1,66 @@ +file: Module + body: list + element: ImportFrom + module: str = div_pulls.pull575_reexport_modules.reexporter + names: list + element: alias + name: str = * + asname: NoneType = None + level: int = 0 + element: FunctionDef + name: str = run + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = autoTester + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Pull 575: Re-export modules + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = aHtml5 + ctx: Load + element: Name + id: str = bHtml5 + ctx: Load + element: Name + id: str = cHtml5 + ctx: Load + element: Attribute + value: Name + id: str = ext + ctx: Load + attr: str = dExt + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/div_pulls.tree b/transcrypt/development/automated_tests/transcrypt/__target__38/div_pulls.tree new file mode 100644 index 000000000..af04055cc --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/div_pulls.tree @@ -0,0 +1,477 @@ +file: Module + body: list + element: Import + names: list + element: alias + name: str = div_pulls.pull575_reexport_modules + asname: str = pull575 + element: Expr + value: Constant + value: str = This is a single line docstring + kind: NoneType = None + element: ClassDef + name: str = A + bases: list + keywords: list + body: list + element: Expr + value: Constant + value: str = + This + is + a + multiline + docstring + + kind: NoneType = None + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = This is a single line comment + kind: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = x + ctx: Store + value: Name + id: str = x + ctx: Load + type_comment: NoneType = None + element: Expr + value: Constant + value: str = + This + is + a + multiline + docstring + + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Expr + value: Constant + value: str = This is a single line docstring + kind: NoneType = None + decorator_list: list + element: Expr + value: Constant + value: str = +This +is +a +multiline +docstring + + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = a + ctx: Store + value: Call + func: Name + id: str = A + ctx: Load + args: list + element: Constant + value: float = 5.5 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: FunctionDef + name: str = run + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = autoTester + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Pull 56 + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = s + ctx: Store + value: Constant + value: str = abcdefghij + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Subscript + value: Name + id: str = s + ctx: Load + slice: Slice + lower: Constant + value: int = 2 + kind: NoneType = None + upper: Constant + value: int = 3 + kind: NoneType = None + step: NoneType = None + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Subscript + value: Name + id: str = s + ctx: Load + slice: Slice + lower: NoneType = None + upper: Constant + value: int = 3 + kind: NoneType = None + step: NoneType = None + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Subscript + value: Name + id: str = s + ctx: Load + slice: Slice + lower: Constant + value: int = 2 + kind: NoneType = None + upper: NoneType = None + step: NoneType = None + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Subscript + value: Name + id: str = s + ctx: Load + slice: Slice + lower: NoneType = None + upper: NoneType = None + step: Constant + value: int = 2 + kind: NoneType = None + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Pull 59 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = list + ctx: Load + args: list + element: Call + func: Name + id: str = filter + ctx: Load + args: list + element: Lambda + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: Compare + left: BinOp + left: Name + id: str = x + ctx: Load + op: Mod + right: Constant + value: int = 2 + kind: NoneType = None + ops: list + element: Eq + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + element: Call + func: Name + id: str = range + ctx: Load + args: list + element: Constant + value: int = 10 + kind: NoneType = None + keywords: list + keywords: list + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = list + ctx: Load + args: list + element: Call + func: Name + id: str = map + ctx: Load + args: list + element: Lambda + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: BinOp + left: Name + id: str = x + ctx: Load + op: Mult + right: Name + id: str = x + ctx: Load + element: Call + func: Name + id: str = range + ctx: Load + args: list + element: Constant + value: int = 0 + kind: NoneType = None + element: Constant + value: int = 31 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + keywords: list + keywords: list + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Pull 561 + kind: NoneType = None + keywords: list + element: FunctionDef + name: str = brackets + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = word + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = sideeffect + kind: NoneType = None + keywords: list + element: Return + value: BinOp + left: BinOp + left: Constant + value: str = [ + kind: NoneType = None + op: Add + right: Name + id: str = word + ctx: Load + op: Add + right: Constant + value: str = ] + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = opov + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Call + func: Name + id: str = brackets + ctx: Load + args: list + element: Constant + value: str = anything + kind: NoneType = None + keywords: list + attr: str = lower + ctx: Load + args: list + keywords: list + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = noopov + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = pull575 + ctx: Load + attr: str = run + ctx: Load + args: list + element: Name + id: str = autoTester + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/docstrings.js b/transcrypt/development/automated_tests/transcrypt/__target__38/docstrings.js new file mode 100644 index 000000000..cdbffc83f --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/docstrings.js @@ -0,0 +1,28 @@ +// Transcrypt'ed from Python, 2021-05-14 15:00:25 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +export var __doc__ = 'Just a module\nto test docstrings'; +var __all__ = dict ({get __doc__ () {return __doc__;}, set __doc__ (value) {__doc__ = value;}, get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get run () {return run;}, set run (value) {run = value;}}); +var __name__ = 'docstrings'; +export var run = function (autoTester) { + var f = function (p) { + autoTester.check (p); + } .__setdoc__ ('Just a function\n called f'); + var C = __class__ ('C', [object], { + __module__: __name__, + get g () {return __get__ (this, function (self, q) { + autoTester.check (q); + } .__setdoc__ ('Just a method\n called g'));} + }) .__setdoc__ ('Just a class\n called C'); + autoTester.check (__doc__); + autoTester.check (); + autoTester.check (f.__doc__); + autoTester.check (); + autoTester.check (C.__doc__); + autoTester.check (); + autoTester.check (C.g.__doc__); + autoTester.check (); + f ('Doc'); + C ().g ('strings'); +}; + +//# sourceMappingURL=docstrings.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/docstrings.tree b/transcrypt/development/automated_tests/transcrypt/__target__38/docstrings.tree new file mode 100644 index 000000000..94389f267 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/docstrings.tree @@ -0,0 +1,276 @@ +file: Module + body: list + element: Expr + value: Constant + value: str = Just a module +to test docstrings + kind: NoneType = None + element: Expr + value: Constant + value: str = Not visible + kind: NoneType = None + element: ImportFrom + module: str = org.transcrypt.stubs.browser + names: list + element: alias + name: str = __pragma__ + asname: NoneType = None + level: int = 0 + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = docat + kind: NoneType = None + keywords: list + element: FunctionDef + name: str = run + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = autoTester + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: FunctionDef + name: str = f + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = p + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = Just a function + called f + kind: NoneType = None + element: Expr + value: Constant + value: str = Not visible + kind: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = p + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: ClassDef + name: str = C + bases: list + keywords: list + body: list + element: Expr + value: Constant + value: str = Just a class + called C + kind: NoneType = None + element: Expr + value: Constant + value: str = Not visible + kind: NoneType = None + element: FunctionDef + name: str = g + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = q + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = Just a method + called g + kind: NoneType = None + element: Expr + value: Constant + value: str = Not visible + kind: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = q + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = __doc__ + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = f + ctx: Load + attr: str = __doc__ + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = C + ctx: Load + attr: str = __doc__ + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Attribute + value: Name + id: str = C + ctx: Load + attr: str = g + ctx: Load + attr: str = __doc__ + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + keywords: list + element: Expr + value: Call + func: Name + id: str = f + ctx: Load + args: list + element: Constant + value: str = Doc + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Call + func: Name + id: str = C + ctx: Load + args: list + keywords: list + attr: str = g + ctx: Load + args: list + element: Constant + value: str = strings + kind: NoneType = None + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/exceptions.js b/transcrypt/development/automated_tests/transcrypt/__target__38/exceptions.js new file mode 100644 index 000000000..272b58be7 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/exceptions.js @@ -0,0 +1,300 @@ +// Transcrypt'ed from Python, 2021-05-14 15:00:25 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +var __all__ = dict ({get Ex1 () {return Ex1;}, set Ex1 (value) {Ex1 = value;}, get Ex2 () {return Ex2;}, set Ex2 (value) {Ex2 = value;}, get Ex3 () {return Ex3;}, set Ex3 (value) {Ex3 = value;}, get Table () {return Table;}, set Table (value) {Table = value;}, get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get run () {return run;}, set run (value) {run = value;}, get test1 () {return test1;}, set test1 (value) {test1 = value;}, get test2 () {return test2;}, set test2 (value) {test2 = value;}}); +var __name__ = 'exceptions'; +export var Ex1 = __class__ ('Ex1', [Exception], { + __module__: __name__, +}); +export var Ex2 = __class__ ('Ex2', [Ex1], { + __module__: __name__, +}); +export var Ex3 = __class__ ('Ex3', [Exception], { + __module__: __name__, +}); +export var Table = __class__ ('Table', [BaseException], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self) { + var args = tuple ([].slice.apply (arguments).slice (1)); + self.fields = args; + });}, + get __repr__ () {return __get__ (this, function (self) { + return 'Table' + repr (self.fields).py_replace (', ', ',').py_replace ("'", ''); + });} +}); +export var test1 = function () { + var __except0__ = Exception ('mary'); + __except0__.__cause__ = null; + throw __except0__; +}; +export var test2 = function (autoTester) { + try { + test1 (); + } + catch (__except0__) { + if (isinstance (__except0__, Ex1)) { + var exception = __except0__; + autoTester.check (111); + autoTester.check (exception); + } + else if (isinstance (__except0__, Exception)) { + var exception = __except0__; + autoTester.check (222); + autoTester.check (exception); + } + else { + throw __except0__; + } + } +}; +export var run = function (autoTester) { + test2 (autoTester); + try { + var __except0__ = Ex2 ('had'); + __except0__.__cause__ = null; + throw __except0__; + } + catch (__except0__) { + if (isinstance (__except0__, Ex1)) { + var exception = __except0__; + autoTester.check ('a'); + } + else if (isinstance (__except0__, Exception)) { + var exception = __except0__; + autoTester.check ('little'); + autoTester.check (exception); + } + else { + throw __except0__; + } + } + autoTester.check (333); + try { + var __except0__ = Ex1 ('lamb'); + __except0__.__cause__ = null; + throw __except0__; + } + catch (__except0__) { + if (isinstance (__except0__, Ex2)) { + var exception = __except0__; + autoTester.check ('his'); + autoTester.check (exception); + } + else if (isinstance (__except0__, Ex1)) { + var exception = __except0__; + autoTester.check ('fleece'); + autoTester.check (exception); + } + else if (isinstance (__except0__, Exception)) { + var exception = __except0__; + autoTester.check ('was'); + autoTester.check (exception); + } + else { + throw __except0__; + } + } + finally { + autoTester.check ('white'); + } + autoTester.check (444); + var test3 = function () { + var __except0__ = Ex3 ('as'); + __except0__.__cause__ = null; + throw __except0__; + }; + autoTester.check (555); + try { + test3 (); + } + catch (__except0__) { + if (isinstance (__except0__, Ex1)) { + var exception = __except0__; + autoTester.check ('snow'); + autoTester.check (exception); + } + else if (isinstance (__except0__, Exception)) { + var exception = __except0__; + autoTester.check ('and'); + autoTester.check (exception); + } + else { + throw __except0__; + } + } + finally { + autoTester.check ('everywhere'); + } + autoTester.check (666); + try { + var __except0__ = Ex3 ('that'); + __except0__.__cause__ = null; + throw __except0__; + } + catch (__except0__) { + if (isinstance (__except0__, Ex1)) { + var exception = __except0__; + autoTester.check ('mary'); + autoTester.check (exception); + } + else autoTester.check ('went'); + } + finally { + autoTester.check ('the'); + } + autoTester.check (777); + try { + try { + var __except0__ = Ex3 ('lamb'); + __except0__.__cause__ = null; + throw __except0__; + } + catch (__except0__) { + if (isinstance (__except0__, Ex1)) { + var exception = __except0__; + autoTester.check ('was'); + autoTester.check (exception); + } + else { + throw __except0__; + } + } + finally { + autoTester.check ('to'); + } + } + catch (__except0__) { + if (isinstance (__except0__, Ex3)) { + var exception = __except0__; + autoTester.check ('go'); + autoTester.check (exception); + } + else { + throw __except0__; + } + } + try { + var __except0__ = new Table ('he', 'followed', 'her'); + __except0__.__cause__ = null; + throw __except0__; + } + catch (__except0__) { + if (isinstance (__except0__, Ex1)) { + var exception = __except0__; + autoTester.check ('to'); + autoTester.check (exception); + } + else if (isinstance (__except0__, Table)) { + var exception = __except0__; + autoTester.check ('school'); + autoTester.check (exception); + } + else if (isinstance (__except0__, Ex3)) { + var exception = __except0__; + autoTester.check ('one'); + autoTester.check (exception); + } + else { + throw __except0__; + } + } + finally { + autoTester.check ('day'); + } + try { + assert ((2 * 8) / 4 == 2, 'Assert error 1'); + } + catch (__except0__) { + if (isinstance (__except0__, AssertionError)) { + var exception = __except0__; + autoTester.check (exception); + } + else { + throw __except0__; + } + } + try { + assert ((2 * 8) / 4 == 4, 'Assert error 2'); + } + catch (__except0__) { + if (isinstance (__except0__, AssertionError)) { + var exception = __except0__; + autoTester.check (exception); + } + else { + throw __except0__; + } + } + try { + assert ((2 * 8) / 4 == 2); + } + catch (__except0__) { + if (isinstance (__except0__, AssertionError)) { + var exception = __except0__; + autoTester.check (exception); + } + else { + throw __except0__; + } + } + try { + assert ((2 * 8) / 4 == 4); + } + catch (__except0__) { + if (isinstance (__except0__, AssertionError)) { + var exception = __except0__; + autoTester.check (exception); + } + else { + throw __except0__; + } + } + autoTester.check (888); + try { + autoTester.check ('hello world 1'); + try { + autoTester.check ('no error 1'); + } + catch (__except0__) { + } + } + catch (__except0__) { + autoTester.check ('error 1'); + } + var i = 1 + 2; + try { + autoTester.check ('hello world 2'); + if (i == 3) { + var __except0__ = Exception (); + __except0__.__cause__ = null; + throw __except0__; + } + try { + autoTester.check ('no error 2'); + } + catch (__except0__) { + } + } + catch (__except0__) { + autoTester.check ('error 2'); + } + for (var raiseIt of tuple ([false, true])) { + try { + try { + if (raiseIt) { + var __except0__ = Exception (); + __except0__.__cause__ = null; + throw __except0__; + } + autoTester.check ('no error 3'); + } + finally { + autoTester.check ('anyhow 3'); + } + } + catch (__except0__) { + autoTester.check ('error 3'); + } + } +}; + +//# sourceMappingURL=exceptions.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/exceptions.tree b/transcrypt/development/automated_tests/transcrypt/__target__38/exceptions.tree new file mode 100644 index 000000000..e7e185b44 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/exceptions.tree @@ -0,0 +1,1394 @@ +file: Module + body: list + element: ImportFrom + module: str = org.transcrypt.stubs.browser + names: list + element: alias + name: str = __envir__ + asname: NoneType = None + element: alias + name: str = __new__ + asname: NoneType = None + element: alias + name: str = __pragma__ + asname: NoneType = None + level: int = 0 + element: ClassDef + name: str = Ex1 + bases: list + element: Name + id: str = Exception + ctx: Load + keywords: list + body: list + element: Pass + decorator_list: list + element: ClassDef + name: str = Ex2 + bases: list + element: Name + id: str = Ex1 + ctx: Load + keywords: list + body: list + element: Pass + decorator_list: list + element: ClassDef + name: str = Ex3 + bases: list + element: Name + id: str = Exception + ctx: Load + keywords: list + body: list + element: Pass + decorator_list: list + element: ClassDef + name: str = Table + bases: list + element: Name + id: str = BaseException + ctx: Load + keywords: list + body: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: arg + arg: str = args + annotation: NoneType = None + type_comment: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = fields + ctx: Store + value: Name + id: str = args + ctx: Load + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __repr__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: BinOp + left: Constant + value: str = Table + kind: NoneType = None + op: Add + right: Call + func: Attribute + value: Call + func: Attribute + value: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = fields + ctx: Load + keywords: list + attr: str = replace + ctx: Load + args: list + element: Constant + value: str = , + kind: NoneType = None + element: Constant + value: str = , + kind: NoneType = None + keywords: list + attr: str = replace + ctx: Load + args: list + element: Constant + value: str = ' + kind: NoneType = None + element: Constant + value: str = + kind: NoneType = None + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: FunctionDef + name: str = test1 + args: arguments + posonlyargs: list + args: list + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Raise + exc: Call + func: Name + id: str = Exception + ctx: Load + args: list + element: Constant + value: str = mary + kind: NoneType = None + keywords: list + cause: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = test2 + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = autoTester + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Try + body: list + element: Expr + value: Call + func: Name + id: str = test1 + ctx: Load + args: list + keywords: list + handlers: list + element: ExceptHandler + type: Name + id: str = Ex1 + ctx: Load + name: str = exception + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: int = 111 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = exception + ctx: Load + keywords: list + element: ExceptHandler + type: Name + id: str = Exception + ctx: Load + name: str = exception + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: int = 222 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = exception + ctx: Load + keywords: list + orelse: list + finalbody: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = run + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = autoTester + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Name + id: str = test2 + ctx: Load + args: list + element: Name + id: str = autoTester + ctx: Load + keywords: list + element: Try + body: list + element: Raise + exc: Call + func: Name + id: str = Ex2 + ctx: Load + args: list + element: Constant + value: str = had + kind: NoneType = None + keywords: list + cause: NoneType = None + handlers: list + element: ExceptHandler + type: Name + id: str = Ex1 + ctx: Load + name: str = exception + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = a + kind: NoneType = None + keywords: list + element: ExceptHandler + type: Name + id: str = Exception + ctx: Load + name: str = exception + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = little + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = exception + ctx: Load + keywords: list + orelse: list + finalbody: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: int = 333 + kind: NoneType = None + keywords: list + element: Try + body: list + element: Raise + exc: Call + func: Name + id: str = Ex1 + ctx: Load + args: list + element: Constant + value: str = lamb + kind: NoneType = None + keywords: list + cause: NoneType = None + handlers: list + element: ExceptHandler + type: Name + id: str = Ex2 + ctx: Load + name: str = exception + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = his + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = exception + ctx: Load + keywords: list + element: ExceptHandler + type: Name + id: str = Ex1 + ctx: Load + name: str = exception + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = fleece + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = exception + ctx: Load + keywords: list + element: ExceptHandler + type: Name + id: str = Exception + ctx: Load + name: str = exception + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = was + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = exception + ctx: Load + keywords: list + orelse: list + finalbody: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = white + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: int = 444 + kind: NoneType = None + keywords: list + element: FunctionDef + name: str = test3 + args: arguments + posonlyargs: list + args: list + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Raise + exc: Call + func: Name + id: str = Ex3 + ctx: Load + args: list + element: Constant + value: str = as + kind: NoneType = None + keywords: list + cause: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: int = 555 + kind: NoneType = None + keywords: list + element: Try + body: list + element: Expr + value: Call + func: Name + id: str = test3 + ctx: Load + args: list + keywords: list + handlers: list + element: ExceptHandler + type: Name + id: str = Ex1 + ctx: Load + name: str = exception + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = snow + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = exception + ctx: Load + keywords: list + element: ExceptHandler + type: Name + id: str = Exception + ctx: Load + name: str = exception + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = and + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = exception + ctx: Load + keywords: list + orelse: list + finalbody: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = everywhere + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: int = 666 + kind: NoneType = None + keywords: list + element: Try + body: list + element: Raise + exc: Call + func: Name + id: str = Ex3 + ctx: Load + args: list + element: Constant + value: str = that + kind: NoneType = None + keywords: list + cause: NoneType = None + handlers: list + element: ExceptHandler + type: Name + id: str = Ex1 + ctx: Load + name: str = exception + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = mary + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = exception + ctx: Load + keywords: list + element: ExceptHandler + type: NoneType = None + name: NoneType = None + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = went + kind: NoneType = None + keywords: list + orelse: list + finalbody: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = the + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: int = 777 + kind: NoneType = None + keywords: list + element: Try + body: list + element: Try + body: list + element: Raise + exc: Call + func: Name + id: str = Ex3 + ctx: Load + args: list + element: Constant + value: str = lamb + kind: NoneType = None + keywords: list + cause: NoneType = None + handlers: list + element: ExceptHandler + type: Name + id: str = Ex1 + ctx: Load + name: str = exception + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = was + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = exception + ctx: Load + keywords: list + orelse: list + finalbody: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = to + kind: NoneType = None + keywords: list + handlers: list + element: ExceptHandler + type: Name + id: str = Ex3 + ctx: Load + name: str = exception + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = go + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = exception + ctx: Load + keywords: list + orelse: list + finalbody: list + element: Try + body: list + element: Raise + exc: Call + func: Name + id: str = __new__ + ctx: Load + args: list + element: Call + func: Name + id: str = Table + ctx: Load + args: list + element: Constant + value: str = he + kind: NoneType = None + element: Constant + value: str = followed + kind: NoneType = None + element: Constant + value: str = her + kind: NoneType = None + keywords: list + keywords: list + cause: NoneType = None + handlers: list + element: ExceptHandler + type: Name + id: str = Ex1 + ctx: Load + name: str = exception + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = to + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = exception + ctx: Load + keywords: list + element: ExceptHandler + type: Name + id: str = Table + ctx: Load + name: str = exception + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = school + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = exception + ctx: Load + keywords: list + element: ExceptHandler + type: Name + id: str = Ex3 + ctx: Load + name: str = exception + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = one + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = exception + ctx: Load + keywords: list + orelse: list + finalbody: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = day + kind: NoneType = None + keywords: list + element: Try + body: list + element: Assert + test: Compare + left: BinOp + left: BinOp + left: Constant + value: int = 2 + kind: NoneType = None + op: Mult + right: Constant + value: int = 8 + kind: NoneType = None + op: Div + right: Constant + value: int = 4 + kind: NoneType = None + ops: list + element: Eq + comparators: list + element: Constant + value: int = 2 + kind: NoneType = None + msg: Constant + value: str = Assert error 1 + kind: NoneType = None + handlers: list + element: ExceptHandler + type: Name + id: str = AssertionError + ctx: Load + name: str = exception + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = exception + ctx: Load + keywords: list + orelse: list + finalbody: list + element: Try + body: list + element: Assert + test: Compare + left: BinOp + left: BinOp + left: Constant + value: int = 2 + kind: NoneType = None + op: Mult + right: Constant + value: int = 8 + kind: NoneType = None + op: Div + right: Constant + value: int = 4 + kind: NoneType = None + ops: list + element: Eq + comparators: list + element: Constant + value: int = 4 + kind: NoneType = None + msg: Constant + value: str = Assert error 2 + kind: NoneType = None + handlers: list + element: ExceptHandler + type: Name + id: str = AssertionError + ctx: Load + name: str = exception + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = exception + ctx: Load + keywords: list + orelse: list + finalbody: list + element: Try + body: list + element: Assert + test: Compare + left: BinOp + left: BinOp + left: Constant + value: int = 2 + kind: NoneType = None + op: Mult + right: Constant + value: int = 8 + kind: NoneType = None + op: Div + right: Constant + value: int = 4 + kind: NoneType = None + ops: list + element: Eq + comparators: list + element: Constant + value: int = 2 + kind: NoneType = None + msg: NoneType = None + handlers: list + element: ExceptHandler + type: Name + id: str = AssertionError + ctx: Load + name: str = exception + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = exception + ctx: Load + keywords: list + orelse: list + finalbody: list + element: Try + body: list + element: Assert + test: Compare + left: BinOp + left: BinOp + left: Constant + value: int = 2 + kind: NoneType = None + op: Mult + right: Constant + value: int = 8 + kind: NoneType = None + op: Div + right: Constant + value: int = 4 + kind: NoneType = None + ops: list + element: Eq + comparators: list + element: Constant + value: int = 4 + kind: NoneType = None + msg: NoneType = None + handlers: list + element: ExceptHandler + type: Name + id: str = AssertionError + ctx: Load + name: str = exception + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = exception + ctx: Load + keywords: list + orelse: list + finalbody: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: int = 888 + kind: NoneType = None + keywords: list + element: Try + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = hello world 1 + kind: NoneType = None + keywords: list + handlers: list + element: ExceptHandler + type: NoneType = None + name: NoneType = None + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = error 1 + kind: NoneType = None + keywords: list + orelse: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = no error 1 + kind: NoneType = None + keywords: list + finalbody: list + element: Assign + targets: list + element: Name + id: str = i + ctx: Store + value: BinOp + left: Constant + value: int = 1 + kind: NoneType = None + op: Add + right: Constant + value: int = 2 + kind: NoneType = None + type_comment: NoneType = None + element: Try + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = hello world 2 + kind: NoneType = None + keywords: list + element: If + test: Compare + left: Name + id: str = i + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: int = 3 + kind: NoneType = None + body: list + element: Raise + exc: Call + func: Name + id: str = Exception + ctx: Load + args: list + keywords: list + cause: NoneType = None + orelse: list + handlers: list + element: ExceptHandler + type: NoneType = None + name: NoneType = None + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = error 2 + kind: NoneType = None + keywords: list + orelse: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = no error 2 + kind: NoneType = None + keywords: list + finalbody: list + element: For + target: Name + id: str = raiseIt + ctx: Store + iter: Tuple + elts: list + element: Constant + value: bool = False + kind: NoneType = None + element: Constant + value: bool = True + kind: NoneType = None + ctx: Load + body: list + element: Try + body: list + element: Try + body: list + element: If + test: Name + id: str = raiseIt + ctx: Load + body: list + element: Raise + exc: Call + func: Name + id: str = Exception + ctx: Load + args: list + keywords: list + cause: NoneType = None + orelse: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = no error 3 + kind: NoneType = None + keywords: list + handlers: list + orelse: list + finalbody: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = anyhow 3 + kind: NoneType = None + keywords: list + handlers: list + element: ExceptHandler + type: NoneType = None + name: NoneType = None + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = error 3 + kind: NoneType = None + keywords: list + orelse: list + finalbody: list + orelse: list + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/executable_comments.js b/transcrypt/development/automated_tests/transcrypt/__target__38/executable_comments.js new file mode 100644 index 000000000..4088573b4 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/executable_comments.js @@ -0,0 +1,16 @@ +// Transcrypt'ed from Python, 2021-05-14 15:00:25 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get run () {return run;}, set run (value) {run = value;}}); +var __name__ = 'executable_comments'; +export var run = function (autoTester) { + for (var i = 0; i < 10; i++) { + autoTester.check (i); + } + autoTester.check (100); + for (var i = 20; i < 30; i++) { + autoTester.check (i); + } + autoTester.check (300); +}; + +//# sourceMappingURL=executable_comments.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/executable_comments.tree b/transcrypt/development/automated_tests/transcrypt/__target__38/executable_comments.tree new file mode 100644 index 000000000..2a69aa3b6 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/executable_comments.tree @@ -0,0 +1,296 @@ +file: Module + body: list + element: ImportFrom + module: str = org.transcrypt.stubs.browser + names: list + element: alias + name: str = __pragma__ + asname: NoneType = None + level: int = 0 + element: FunctionDef + name: str = run + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = autoTester + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: For + target: Name + id: str = i + ctx: Store + iter: Call + func: Name + id: str = range + ctx: Load + args: list + element: Constant + value: int = 10 + kind: NoneType = None + keywords: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = i + ctx: Load + keywords: list + orelse: list + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = skip + kind: NoneType = None + keywords: list + element: For + target: Name + id: str = i + ctx: Store + iter: Call + func: Name + id: str = range + ctx: Load + args: list + element: Constant + value: int = 10 + kind: NoneType = None + keywords: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = i + ctx: Load + keywords: list + orelse: list + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = noskip + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: int = 100 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = skip + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: int = 100 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = noskip + kind: NoneType = None + keywords: list + element: Expr + value: Constant + value: str = ? + for i in range (10, 20): + autoTester.check (i) + ? + kind: NoneType = None + element: For + target: Name + id: str = i + ctx: Store + iter: Call + func: Name + id: str = range + ctx: Load + args: list + element: Constant + value: int = 20 + kind: NoneType = None + element: Constant + value: int = 30 + kind: NoneType = None + keywords: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = i + ctx: Load + keywords: list + orelse: list + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = skip + kind: NoneType = None + keywords: list + element: For + target: Name + id: str = i + ctx: Store + iter: Call + func: Name + id: str = range + ctx: Load + args: list + element: Constant + value: int = 20 + kind: NoneType = None + element: Constant + value: int = 30 + kind: NoneType = None + keywords: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = i + ctx: Load + keywords: list + orelse: list + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = noskip + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: int = 300 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = skip + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: int = 300 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = noskip + kind: NoneType = None + keywords: list + element: Expr + value: Constant + value: str = ? + for i in range (30, 40): + autoTester.check (i) + ? + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/extended_slices.js b/transcrypt/development/automated_tests/transcrypt/__target__38/extended_slices.js new file mode 100644 index 000000000..505ea36f8 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/extended_slices.js @@ -0,0 +1,64 @@ +// Transcrypt'ed from Python, 2021-05-14 15:00:25 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +var __all__ = dict ({get Test () {return Test;}, set Test (value) {Test = value;}, get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get indices () {return indices;}, set indices (value) {indices = value;}, get run () {return run;}, set run (value) {run = value;}}); +var __name__ = 'extended_slices'; +export var indices = function (key) { + if (__envir__.executor_name == __envir__.transpiler_name) { + return (py_typeof (key) == list ? tuple (key) : key); + } + else { + try { + return key.indices (1000000000); + } + catch (__except0__) { + try { + return tuple ((function () { + var __accu0__ = []; + for (var subkey of key) { + __accu0__.append (indices (subkey)); + } + return __accu0__; + }) ()); + } + catch (__except1__) { + return key; + } + } + } +}; +export var Test = __class__ ('Test', [object], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self, autoTester) { + self.autoTester = autoTester; + });}, + get __getitem__ () {return __get__ (this, function (self, key) { + self.autoTester.check ('getitem (', indices (key), ')'); + return 1234567; + });}, + get __setitem__ () {return __get__ (this, function (self, key, value) { + self.autoTester.check ('setitem (', indices (key), ')', value); + });} +}); +export var run = function (autoTester) { + var __left0__ = Test (autoTester); + var a = __left0__; + var b = __left0__; + var c = __left0__; + var d = __left0__; + var e = __left0__; + var f = __left0__; + var g = __left0__; + var h = __left0__; + var i = __left0__; + var j = __left0__; + var k = __left0__; + var l = __left0__; + a.__setitem__ ([tuple ([1, 2, 3]), tuple ([4, 5, 6])], __getslice__ (b, 7, 8, 9)); + __setslice__ (c, 1, 2, 3, d.__getitem__ ([tuple ([4, 5, 6]), tuple ([7, 8, 9])])); + e.__setitem__ ([1, tuple ([1, 2, 3]), 3], f.__getitem__ ([4, tuple ([4, 5, 6]), 6])); + g.__setitem__ ([1, 2, 3], h.__getitem__ ([1, 2, 3])); + __setitem__ (i, 1, __getitem__ (j, 1)); + __setslice__ (k, 1, 2, 3, __getslice__ (l, 1, 2, 3)); +}; + +//# sourceMappingURL=extended_slices.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/extended_slices.tree b/transcrypt/development/automated_tests/transcrypt/__target__38/extended_slices.tree new file mode 100644 index 000000000..78e039e9a --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/extended_slices.tree @@ -0,0 +1,612 @@ +file: Module + body: list + element: ImportFrom + module: str = org.transcrypt.stubs.browser + names: list + element: alias + name: str = * + asname: NoneType = None + level: int = 0 + element: ImportFrom + module: str = org.transcrypt.stubs.browser + names: list + element: alias + name: str = __pragma__ + asname: NoneType = None + element: alias + name: str = __envir__ + asname: NoneType = None + level: int = 0 + element: FunctionDef + name: str = indices + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = key + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: Compare + left: Attribute + value: Name + id: str = __envir__ + ctx: Load + attr: str = executor_name + ctx: Load + ops: list + element: Eq + comparators: list + element: Attribute + value: Name + id: str = __envir__ + ctx: Load + attr: str = transpiler_name + ctx: Load + body: list + element: Return + value: IfExp + test: Compare + left: Call + func: Name + id: str = type + ctx: Load + args: list + element: Name + id: str = key + ctx: Load + keywords: list + ops: list + element: Eq + comparators: list + element: Name + id: str = list + ctx: Load + body: Call + func: Name + id: str = tuple + ctx: Load + args: list + element: Name + id: str = key + ctx: Load + keywords: list + orelse: Name + id: str = key + ctx: Load + orelse: list + element: Try + body: list + element: Return + value: Call + func: Attribute + value: Name + id: str = key + ctx: Load + attr: str = indices + ctx: Load + args: list + element: Constant + value: int = 1000000000 + kind: NoneType = None + keywords: list + handlers: list + element: ExceptHandler + type: NoneType = None + name: NoneType = None + body: list + element: Try + body: list + element: Return + value: Call + func: Name + id: str = tuple + ctx: Load + args: list + element: ListComp + elt: Call + func: Name + id: str = indices + ctx: Load + args: list + element: Name + id: str = subkey + ctx: Load + keywords: list + generators: list + element: comprehension + target: Name + id: str = subkey + ctx: Store + iter: Name + id: str = key + ctx: Load + ifs: list + is_async: int = 0 + keywords: list + handlers: list + element: ExceptHandler + type: NoneType = None + name: NoneType = None + body: list + element: Return + value: Name + id: str = key + ctx: Load + orelse: list + finalbody: list + orelse: list + finalbody: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: ClassDef + name: str = Test + bases: list + keywords: list + body: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = autoTester + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = autoTester + ctx: Store + value: Name + id: str = autoTester + ctx: Load + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __getitem__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = key + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = getitem ( + kind: NoneType = None + element: Call + func: Name + id: str = indices + ctx: Load + args: list + element: Name + id: str = key + ctx: Load + keywords: list + element: Constant + value: str = ) + kind: NoneType = None + keywords: list + element: Return + value: Constant + value: int = 1234567 + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __setitem__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = key + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = value + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = setitem ( + kind: NoneType = None + element: Call + func: Name + id: str = indices + ctx: Load + args: list + element: Name + id: str = key + ctx: Load + keywords: list + element: Constant + value: str = ) + kind: NoneType = None + element: Name + id: str = value + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: FunctionDef + name: str = run + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = autoTester + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Name + id: str = a + ctx: Store + element: Name + id: str = b + ctx: Store + element: Name + id: str = c + ctx: Store + element: Name + id: str = d + ctx: Store + element: Name + id: str = e + ctx: Store + element: Name + id: str = f + ctx: Store + element: Name + id: str = g + ctx: Store + element: Name + id: str = h + ctx: Store + element: Name + id: str = i + ctx: Store + element: Name + id: str = j + ctx: Store + element: Name + id: str = k + ctx: Store + element: Name + id: str = l + ctx: Store + value: Call + func: Name + id: str = Test + ctx: Load + args: list + element: Name + id: str = autoTester + ctx: Load + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = opov + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Subscript + value: Name + id: str = a + ctx: Load + slice: ExtSlice + dims: list + element: Slice + lower: Constant + value: int = 1 + kind: NoneType = None + upper: Constant + value: int = 2 + kind: NoneType = None + step: Constant + value: int = 3 + kind: NoneType = None + element: Slice + lower: Constant + value: int = 4 + kind: NoneType = None + upper: Constant + value: int = 5 + kind: NoneType = None + step: Constant + value: int = 6 + kind: NoneType = None + ctx: Store + value: Subscript + value: Name + id: str = b + ctx: Load + slice: Slice + lower: Constant + value: int = 7 + kind: NoneType = None + upper: Constant + value: int = 8 + kind: NoneType = None + step: Constant + value: int = 9 + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Subscript + value: Name + id: str = c + ctx: Load + slice: Slice + lower: Constant + value: int = 1 + kind: NoneType = None + upper: Constant + value: int = 2 + kind: NoneType = None + step: Constant + value: int = 3 + kind: NoneType = None + ctx: Store + value: Subscript + value: Name + id: str = d + ctx: Load + slice: ExtSlice + dims: list + element: Slice + lower: Constant + value: int = 4 + kind: NoneType = None + upper: Constant + value: int = 5 + kind: NoneType = None + step: Constant + value: int = 6 + kind: NoneType = None + element: Slice + lower: Constant + value: int = 7 + kind: NoneType = None + upper: Constant + value: int = 8 + kind: NoneType = None + step: Constant + value: int = 9 + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Subscript + value: Name + id: str = e + ctx: Load + slice: ExtSlice + dims: list + element: Index + value: Constant + value: int = 1 + kind: NoneType = None + element: Slice + lower: Constant + value: int = 1 + kind: NoneType = None + upper: Constant + value: int = 2 + kind: NoneType = None + step: Constant + value: int = 3 + kind: NoneType = None + element: Index + value: Constant + value: int = 3 + kind: NoneType = None + ctx: Store + value: Subscript + value: Name + id: str = f + ctx: Load + slice: ExtSlice + dims: list + element: Index + value: Constant + value: int = 4 + kind: NoneType = None + element: Slice + lower: Constant + value: int = 4 + kind: NoneType = None + upper: Constant + value: int = 5 + kind: NoneType = None + step: Constant + value: int = 6 + kind: NoneType = None + element: Index + value: Constant + value: int = 6 + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Subscript + value: Name + id: str = g + ctx: Load + slice: Index + value: Tuple + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + ctx: Store + value: Subscript + value: Name + id: str = h + ctx: Load + slice: Index + value: Tuple + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Subscript + value: Name + id: str = i + ctx: Load + slice: Index + value: Constant + value: int = 1 + kind: NoneType = None + ctx: Store + value: Subscript + value: Name + id: str = j + ctx: Load + slice: Index + value: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Subscript + value: Name + id: str = k + ctx: Load + slice: Slice + lower: Constant + value: int = 1 + kind: NoneType = None + upper: Constant + value: int = 2 + kind: NoneType = None + step: Constant + value: int = 3 + kind: NoneType = None + ctx: Store + value: Subscript + value: Name + id: str = l + ctx: Load + slice: Slice + lower: Constant + value: int = 1 + kind: NoneType = None + upper: Constant + value: int = 2 + kind: NoneType = None + step: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/fstrings.js b/transcrypt/development/automated_tests/transcrypt/__target__38/fstrings.js new file mode 100644 index 000000000..5e096e802 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/fstrings.js @@ -0,0 +1,25 @@ +// Transcrypt'ed from Python, 2021-05-14 15:00:25 +var math = {}; +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +import * as __module_math__ from './math.js'; +__nest__ (math, '', __module_math__); +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get run () {return run;}, set run (value) {run = value;}}); +var __name__ = 'fstrings'; +export var run = function (autoTester) { + var aDict = dict ({'one': 1}); + var aSet = new set (['rose']); + var anArray = ['hundred', 100, 'pi', 3.14, 'e', 2.74, 'dozen', 12]; + var anInt = 144; + var aFloat = 3.14; + autoTester.check (aDict); + autoTester.check (str (aDict)); + autoTester.check (repr (aDict)); + autoTester.check ('aDictionary: ({}, {})'.format (aDict, aDict ['one'])); + autoTester.check ('aDictionary: ({}, {})'.format (aDict, aDict ['one'])); + autoTester.check ('aSet: ({}, {})'.format (aSet, __in__ ('rose', aSet))); + autoTester.check ('anArray ({}, {}, {})'.format (anArray, anArray.__getslice__ (1, 4, 1), anArray [5])); + autoTester.check ('anInt ({}, {})'.format (anInt, int (math.sqrt (anInt)))); + autoTester.check ('aFloat ({}, {})'.format (aFloat, round (math.sin (aFloat + 2.74), 2))); +}; + +//# sourceMappingURL=fstrings.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/fstrings.tree b/transcrypt/development/automated_tests/transcrypt/__target__38/fstrings.tree new file mode 100644 index 000000000..7f306d113 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/fstrings.tree @@ -0,0 +1,426 @@ +file: Module + body: list + element: Import + names: list + element: alias + name: str = math + asname: NoneType = None + element: FunctionDef + name: str = run + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = autoTester + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Name + id: str = aDict + ctx: Store + value: Dict + keys: list + element: Constant + value: str = one + kind: NoneType = None + values: list + element: Constant + value: int = 1 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = aSet + ctx: Store + value: Set + elts: list + element: Constant + value: str = rose + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = anArray + ctx: Store + value: List + elts: list + element: Constant + value: str = hundred + kind: NoneType = None + element: Constant + value: int = 100 + kind: NoneType = None + element: Constant + value: str = pi + kind: NoneType = None + element: Constant + value: float = 3.14 + kind: NoneType = None + element: Constant + value: str = e + kind: NoneType = None + element: Constant + value: float = 2.74 + kind: NoneType = None + element: Constant + value: str = dozen + kind: NoneType = None + element: Constant + value: int = 12 + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = anInt + ctx: Store + value: Constant + value: int = 144 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = aFloat + ctx: Store + value: Constant + value: float = 3.14 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = aDict + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = aDict + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Name + id: str = aDict + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = aDictionary: ({}, {}) + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Name + id: str = aDict + ctx: Load + element: Subscript + value: Name + id: str = aDict + ctx: Load + slice: Index + value: Constant + value: str = one + kind: NoneType = None + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: JoinedStr + values: list + element: Constant + value: str = aDictionary: ( + kind: NoneType = None + element: FormattedValue + value: Name + id: str = aDict + ctx: Load + conversion: int = -1 + format_spec: NoneType = None + element: Constant + value: str = , + kind: NoneType = None + element: FormattedValue + value: Subscript + value: Name + id: str = aDict + ctx: Load + slice: Index + value: Constant + value: str = one + kind: NoneType = None + ctx: Load + conversion: int = -1 + format_spec: NoneType = None + element: Constant + value: str = ) + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: JoinedStr + values: list + element: Constant + value: str = aSet: ( + kind: NoneType = None + element: FormattedValue + value: Name + id: str = aSet + ctx: Load + conversion: int = -1 + format_spec: NoneType = None + element: Constant + value: str = , + kind: NoneType = None + element: FormattedValue + value: Compare + left: Constant + value: str = rose + kind: NoneType = None + ops: list + element: In + comparators: list + element: Name + id: str = aSet + ctx: Load + conversion: int = -1 + format_spec: NoneType = None + element: Constant + value: str = ) + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: JoinedStr + values: list + element: Constant + value: str = anArray ( + kind: NoneType = None + element: FormattedValue + value: Name + id: str = anArray + ctx: Load + conversion: int = -1 + format_spec: NoneType = None + element: Constant + value: str = , + kind: NoneType = None + element: FormattedValue + value: Subscript + value: Name + id: str = anArray + ctx: Load + slice: Slice + lower: Constant + value: int = 1 + kind: NoneType = None + upper: Constant + value: int = 4 + kind: NoneType = None + step: NoneType = None + ctx: Load + conversion: int = -1 + format_spec: NoneType = None + element: Constant + value: str = , + kind: NoneType = None + element: FormattedValue + value: Subscript + value: Name + id: str = anArray + ctx: Load + slice: Index + value: Constant + value: int = 5 + kind: NoneType = None + ctx: Load + conversion: int = -1 + format_spec: NoneType = None + element: Constant + value: str = ) + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: JoinedStr + values: list + element: Constant + value: str = anInt ( + kind: NoneType = None + element: FormattedValue + value: Name + id: str = anInt + ctx: Load + conversion: int = -1 + format_spec: NoneType = None + element: Constant + value: str = , + kind: NoneType = None + element: FormattedValue + value: Call + func: Name + id: str = int + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = math + ctx: Load + attr: str = sqrt + ctx: Load + args: list + element: Name + id: str = anInt + ctx: Load + keywords: list + keywords: list + conversion: int = -1 + format_spec: NoneType = None + element: Constant + value: str = ) + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: JoinedStr + values: list + element: Constant + value: str = aFloat ( + kind: NoneType = None + element: FormattedValue + value: Name + id: str = aFloat + ctx: Load + conversion: int = -1 + format_spec: NoneType = None + element: Constant + value: str = , + kind: NoneType = None + element: FormattedValue + value: Call + func: Name + id: str = round + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = math + ctx: Load + attr: str = sin + ctx: Load + args: list + element: BinOp + left: Name + id: str = aFloat + ctx: Load + op: Add + right: Constant + value: float = 2.74 + kind: NoneType = None + keywords: list + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + conversion: int = -1 + format_spec: NoneType = None + element: Constant + value: str = ) + kind: NoneType = None + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/general_functions.js b/transcrypt/development/automated_tests/transcrypt/__target__38/general_functions.js new file mode 100644 index 000000000..a20560ed2 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/general_functions.js @@ -0,0 +1,134 @@ +// Transcrypt'ed from Python, 2021-05-14 15:00:25 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +var __all__ = dict ({get A () {return A;}, set A (value) {A = value;}, get B () {return B;}, set B (value) {B = value;}, get C () {return C;}, set C (value) {C = value;}, get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get run () {return run;}, set run (value) {run = value;}}); +var __name__ = 'general_functions'; +export var A = __class__ ('A', [object], { + __module__: __name__, + foo: 'bar', + get __init__ () {return __get__ (this, function (self) { + self.foo2 = 'bar2'; + });} +}); +export var B = __class__ ('B', [A], { + __module__: __name__, + foo3: 'bar3', + get __init__ () {return __get__ (this, function (self) { + self.foo4 = 'bar4'; + });} +}); +export var C = __class__ ('C', [object], { + __module__: __name__, + get __len__ () {return __get__ (this, function (self) { + return 42; + });} +}); +export var run = function (autoTester) { + autoTester.check ('len'); + var strings = ['hello', ',', 'world', '!']; + var instances = [C ()]; + var collections = [[], [1], [1, 2], tuple (), tuple ([1]), tuple ([1, 2]), dict ({}), dict ({1: 1}), dict ({1: 1, 2: 2})]; + for (var string of strings) { + autoTester.check (len (string)); + } + for (var instance of instances) { + autoTester.check (len (instance)); + } + for (var collection of collections) { + autoTester.check (len (collection)); + } + autoTester.check ('sort and sorted
'); + var a = [1, 5, 3, 2, -(1)]; + var b = ['sun', 'earth', 'moon']; + autoTester.check (sorted (a)); + autoTester.check (sorted (b)); + a.py_sort (); + autoTester.check (a); + b.py_sort (); + autoTester.check (b); + autoTester.check (sorted (a, __kwargtrans__ ({reverse: true}))); + autoTester.check (sorted (b, __kwargtrans__ ({reverse: true}))); + a.py_sort (__kwargtrans__ ({reverse: true})); + autoTester.check (a); + b.py_sort (__kwargtrans__ ({reverse: true})); + autoTester.check (b); + b.py_sort (__kwargtrans__ ({key: (function __lambda__ (x) { + return len (x); + })})); + autoTester.check (b); + b.py_sort (__kwargtrans__ ({key: (function __lambda__ (x) { + return len (x); + }), reverse: true})); + autoTester.check (b); + autoTester.check ('

dir
'); + autoTester.check ((function () { + var __accu0__ = []; + for (var entry of dir (A)) { + if (!(entry.startswith ('__'))) { + __accu0__.append (entry); + } + } + return __accu0__; + }) ()); + autoTester.check ((function () { + var __accu0__ = []; + for (var entry of dir (A ())) { + if (!(entry.startswith ('__'))) { + __accu0__.append (entry); + } + } + return __accu0__; + }) ()); + autoTester.check ((function () { + var __accu0__ = []; + for (var entry of dir (B)) { + if (!(entry.startswith ('__'))) { + __accu0__.append (entry); + } + } + return __accu0__; + }) ()); + autoTester.check ((function () { + var __accu0__ = []; + for (var entry of dir (B ())) { + if (!(entry.startswith ('__'))) { + __accu0__.append (entry); + } + } + return __accu0__; + }) ()); + autoTester.check ('

any, all, sum
'); + var list1 = ['ape', 'node', 'mice']; + var list2 = ['vim', '', 'jet']; + var list3 = ['', '', '']; + var list4 = [[1, 2], [1], []]; + autoTester.check (list1, any (list1), all (list1)); + autoTester.check (list2, any (list2), all (list2)); + autoTester.check (list3, any (list3), all (list3)); + autoTester.check (list4, any (list4), all (list4)); + autoTester.check (sum (range (5))); + var generator1 = function* () { + for (var i = 0; i < 5; i++) { + yield i; + } + }; + var generator2 = function* () { + for (var i = 0; i < 5; i++) { + if (__mod__ (i, 2)) { + yield 0; + } + else { + yield i; + } + } + }; + var generator3 = function* () { + for (var i = 0; i < 5; i++) { + yield 0; + } + autoTester.check (generator1 (), any (generator1 ()), all (generator1 ())); + autoTester.check (generator2 (), any (generator2 ()), all (generator2 ())); + autoTester.check (generator3 (), any (generator3 ()), all (generator3 ())); + autoTester.check (sum (generator1 ()))}; +}; + +//# sourceMappingURL=general_functions.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/general_functions.tree b/transcrypt/development/automated_tests/transcrypt/__target__38/general_functions.tree new file mode 100644 index 000000000..9a402dbcc --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/general_functions.tree @@ -0,0 +1,1415 @@ +file: Module + body: list + element: ImportFrom + module: str = org.transcrypt.stubs.browser + names: list + element: alias + name: str = __pragma__ + asname: NoneType = None + level: int = 0 + element: ClassDef + name: str = A + bases: list + keywords: list + body: list + element: Assign + targets: list + element: Name + id: str = foo + ctx: Store + value: Constant + value: str = bar + kind: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = foo2 + ctx: Store + value: Constant + value: str = bar2 + kind: NoneType = None + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: ClassDef + name: str = B + bases: list + element: Name + id: str = A + ctx: Load + keywords: list + body: list + element: Assign + targets: list + element: Name + id: str = foo3 + ctx: Store + value: Constant + value: str = bar3 + kind: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = foo4 + ctx: Store + value: Constant + value: str = bar4 + kind: NoneType = None + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: ClassDef + name: str = C + bases: list + keywords: list + body: list + element: FunctionDef + name: str = __len__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Constant + value: int = 42 + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: FunctionDef + name: str = run + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = autoTester + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = len + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = strings + ctx: Store + value: List + elts: list + element: Constant + value: str = hello + kind: NoneType = None + element: Constant + value: str = , + kind: NoneType = None + element: Constant + value: str = world + kind: NoneType = None + element: Constant + value: str = ! + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = instances + ctx: Store + value: List + elts: list + element: Call + func: Name + id: str = C + ctx: Load + args: list + keywords: list + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = collections + ctx: Store + value: List + elts: list + element: List + elts: list + ctx: Load + element: List + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + element: List + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + ctx: Load + element: Call + func: Name + id: str = tuple + ctx: Load + args: list + keywords: list + element: Tuple + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + element: Tuple + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + ctx: Load + element: Dict + keys: list + values: list + element: Dict + keys: list + element: Constant + value: int = 1 + kind: NoneType = None + values: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Dict + keys: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + values: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: For + target: Name + id: str = string + ctx: Store + iter: Name + id: str = strings + ctx: Load + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = len + ctx: Load + args: list + element: Name + id: str = string + ctx: Load + keywords: list + keywords: list + orelse: list + type_comment: NoneType = None + element: For + target: Name + id: str = instance + ctx: Store + iter: Name + id: str = instances + ctx: Load + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = len + ctx: Load + args: list + element: Name + id: str = instance + ctx: Load + keywords: list + keywords: list + orelse: list + type_comment: NoneType = None + element: For + target: Name + id: str = collection + ctx: Store + iter: Name + id: str = collections + ctx: Load + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = len + ctx: Load + args: list + element: Name + id: str = collection + ctx: Load + keywords: list + keywords: list + orelse: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = sort and sorted
+ kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = a + ctx: Store + value: List + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 5 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = b + ctx: Store + value: List + elts: list + element: Constant + value: str = sun + kind: NoneType = None + element: Constant + value: str = earth + kind: NoneType = None + element: Constant + value: str = moon + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = sorted + ctx: Load + args: list + element: Name + id: str = a + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = sorted + ctx: Load + args: list + element: Name + id: str = b + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = a + ctx: Load + attr: str = sort + ctx: Load + args: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = a + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = b + ctx: Load + attr: str = sort + ctx: Load + args: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = b + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = sorted + ctx: Load + args: list + element: Name + id: str = a + ctx: Load + keywords: list + element: keyword + arg: str = reverse + value: Constant + value: bool = True + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = sorted + ctx: Load + args: list + element: Name + id: str = b + ctx: Load + keywords: list + element: keyword + arg: str = reverse + value: Constant + value: bool = True + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = a + ctx: Load + attr: str = sort + ctx: Load + args: list + keywords: list + element: keyword + arg: str = reverse + value: Constant + value: bool = True + kind: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = a + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = b + ctx: Load + attr: str = sort + ctx: Load + args: list + keywords: list + element: keyword + arg: str = reverse + value: Constant + value: bool = True + kind: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = b + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = b + ctx: Load + attr: str = sort + ctx: Load + args: list + keywords: list + element: keyword + arg: str = key + value: Lambda + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: Call + func: Name + id: str = len + ctx: Load + args: list + element: Name + id: str = x + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = b + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = b + ctx: Load + attr: str = sort + ctx: Load + args: list + keywords: list + element: keyword + arg: str = key + value: Lambda + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: Call + func: Name + id: str = len + ctx: Load + args: list + element: Name + id: str = x + ctx: Load + keywords: list + element: keyword + arg: str = reverse + value: Constant + value: bool = True + kind: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = b + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str =

dir
+ kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: ListComp + elt: Name + id: str = entry + ctx: Load + generators: list + element: comprehension + target: Name + id: str = entry + ctx: Store + iter: Call + func: Name + id: str = dir + ctx: Load + args: list + element: Name + id: str = A + ctx: Load + keywords: list + ifs: list + element: UnaryOp + op: Not + operand: Call + func: Attribute + value: Name + id: str = entry + ctx: Load + attr: str = startswith + ctx: Load + args: list + element: Constant + value: str = __ + kind: NoneType = None + keywords: list + is_async: int = 0 + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: ListComp + elt: Name + id: str = entry + ctx: Load + generators: list + element: comprehension + target: Name + id: str = entry + ctx: Store + iter: Call + func: Name + id: str = dir + ctx: Load + args: list + element: Call + func: Name + id: str = A + ctx: Load + args: list + keywords: list + keywords: list + ifs: list + element: UnaryOp + op: Not + operand: Call + func: Attribute + value: Name + id: str = entry + ctx: Load + attr: str = startswith + ctx: Load + args: list + element: Constant + value: str = __ + kind: NoneType = None + keywords: list + is_async: int = 0 + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: ListComp + elt: Name + id: str = entry + ctx: Load + generators: list + element: comprehension + target: Name + id: str = entry + ctx: Store + iter: Call + func: Name + id: str = dir + ctx: Load + args: list + element: Name + id: str = B + ctx: Load + keywords: list + ifs: list + element: UnaryOp + op: Not + operand: Call + func: Attribute + value: Name + id: str = entry + ctx: Load + attr: str = startswith + ctx: Load + args: list + element: Constant + value: str = __ + kind: NoneType = None + keywords: list + is_async: int = 0 + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: ListComp + elt: Name + id: str = entry + ctx: Load + generators: list + element: comprehension + target: Name + id: str = entry + ctx: Store + iter: Call + func: Name + id: str = dir + ctx: Load + args: list + element: Call + func: Name + id: str = B + ctx: Load + args: list + keywords: list + keywords: list + ifs: list + element: UnaryOp + op: Not + operand: Call + func: Attribute + value: Name + id: str = entry + ctx: Load + attr: str = startswith + ctx: Load + args: list + element: Constant + value: str = __ + kind: NoneType = None + keywords: list + is_async: int = 0 + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str =

any, all, sum
+ kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = list1 + ctx: Store + value: List + elts: list + element: Constant + value: str = ape + kind: NoneType = None + element: Constant + value: str = node + kind: NoneType = None + element: Constant + value: str = mice + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = list2 + ctx: Store + value: List + elts: list + element: Constant + value: str = vim + kind: NoneType = None + element: Constant + value: str = + kind: NoneType = None + element: Constant + value: str = jet + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = list3 + ctx: Store + value: List + elts: list + element: Constant + value: str = + kind: NoneType = None + element: Constant + value: str = + kind: NoneType = None + element: Constant + value: str = + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = list4 + ctx: Store + value: List + elts: list + element: List + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + ctx: Load + element: List + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + element: List + elts: list + ctx: Load + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = list1 + ctx: Load + element: Call + func: Name + id: str = any + ctx: Load + args: list + element: Name + id: str = list1 + ctx: Load + keywords: list + element: Call + func: Name + id: str = all + ctx: Load + args: list + element: Name + id: str = list1 + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = list2 + ctx: Load + element: Call + func: Name + id: str = any + ctx: Load + args: list + element: Name + id: str = list2 + ctx: Load + keywords: list + element: Call + func: Name + id: str = all + ctx: Load + args: list + element: Name + id: str = list2 + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = list3 + ctx: Load + element: Call + func: Name + id: str = any + ctx: Load + args: list + element: Name + id: str = list3 + ctx: Load + keywords: list + element: Call + func: Name + id: str = all + ctx: Load + args: list + element: Name + id: str = list3 + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = list4 + ctx: Load + element: Call + func: Name + id: str = any + ctx: Load + args: list + element: Name + id: str = list4 + ctx: Load + keywords: list + element: Call + func: Name + id: str = all + ctx: Load + args: list + element: Name + id: str = list4 + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = sum + ctx: Load + args: list + element: Call + func: Name + id: str = range + ctx: Load + args: list + element: Constant + value: int = 5 + kind: NoneType = None + keywords: list + keywords: list + keywords: list + element: FunctionDef + name: str = generator1 + args: arguments + posonlyargs: list + args: list + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: For + target: Name + id: str = i + ctx: Store + iter: Call + func: Name + id: str = range + ctx: Load + args: list + element: Constant + value: int = 5 + kind: NoneType = None + keywords: list + body: list + element: Expr + value: Yield + value: Name + id: str = i + ctx: Load + orelse: list + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = generator2 + args: arguments + posonlyargs: list + args: list + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: For + target: Name + id: str = i + ctx: Store + iter: Call + func: Name + id: str = range + ctx: Load + args: list + element: Constant + value: int = 5 + kind: NoneType = None + keywords: list + body: list + element: If + test: BinOp + left: Name + id: str = i + ctx: Load + op: Mod + right: Constant + value: int = 2 + kind: NoneType = None + body: list + element: Expr + value: Yield + value: Constant + value: int = 0 + kind: NoneType = None + orelse: list + element: Expr + value: Yield + value: Name + id: str = i + ctx: Load + orelse: list + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = generator3 + args: arguments + posonlyargs: list + args: list + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: For + target: Name + id: str = i + ctx: Store + iter: Call + func: Name + id: str = range + ctx: Load + args: list + element: Constant + value: int = 5 + kind: NoneType = None + keywords: list + body: list + element: Expr + value: Yield + value: Constant + value: int = 0 + kind: NoneType = None + orelse: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = generator1 + ctx: Load + args: list + keywords: list + element: Call + func: Name + id: str = any + ctx: Load + args: list + element: Call + func: Name + id: str = generator1 + ctx: Load + args: list + keywords: list + keywords: list + element: Call + func: Name + id: str = all + ctx: Load + args: list + element: Call + func: Name + id: str = generator1 + ctx: Load + args: list + keywords: list + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = generator2 + ctx: Load + args: list + keywords: list + element: Call + func: Name + id: str = any + ctx: Load + args: list + element: Call + func: Name + id: str = generator2 + ctx: Load + args: list + keywords: list + keywords: list + element: Call + func: Name + id: str = all + ctx: Load + args: list + element: Call + func: Name + id: str = generator2 + ctx: Load + args: list + keywords: list + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = generator3 + ctx: Load + args: list + keywords: list + element: Call + func: Name + id: str = any + ctx: Load + args: list + element: Call + func: Name + id: str = generator3 + ctx: Load + args: list + keywords: list + keywords: list + element: Call + func: Name + id: str = all + ctx: Load + args: list + element: Call + func: Name + id: str = generator3 + ctx: Load + args: list + keywords: list + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = sum + ctx: Load + args: list + element: Call + func: Name + id: str = generator1 + ctx: Load + args: list + keywords: list + keywords: list + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = endif + kind: NoneType = None + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/globals_function.js b/transcrypt/development/automated_tests/transcrypt/__target__38/globals_function.js new file mode 100644 index 000000000..f40dbfac9 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/globals_function.js @@ -0,0 +1,44 @@ +// Transcrypt'ed from Python, 2021-05-14 15:00:25 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +import * as sub from './globals_function.sub.js'; +export {sub}; +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get f () {return f;}, set f (value) {f = value;}, get name () {return name;}, set name (value) {name = value;}, get run () {return run;}, set run (value) {run = value;}, get xxa () {return xxa;}, set xxa (value) {xxa = value;}, get xxb () {return xxb;}, set xxb (value) {xxb = value;}, get xxp () {return xxp;}, set xxp (value) {xxp = value;}, get xxq () {return xxq;}, set xxq (value) {xxq = value;}, get xxr () {return xxr;}, set xxr (value) {xxr = value;}, get xxs () {return xxs;}, set xxs (value) {xxs = value;}}); +var __name__ = 'globals_function'; +export var xxa = 'mainXxa'; +export var xxb = 'mainXxb'; +export var xxp = null; +export var xxq = null; +export var xxr = null; +export var xxs = null; +for (var py_name of tuple (['xxp', 'xxq'])) { + __all__ [py_name] = 'main{}'.format (py_name.capitalize ()); +} +export var f = function () { + for (var py_name of tuple (['xxr', 'xxs'])) { + __all__ [py_name] = 'main{}'.format (py_name.capitalize ()); + } +}; +export var run = function (autoTester) { + f (); + sub.run (autoTester); + autoTester.check ('Check main 1', xxa, xxb); + autoTester.check ('Check main 2', ...(function () { + var __accu0__ = []; + for (var py_name of tuple (['xxa', 'xxb', 'xxp', 'xxq', 'xxr', 'xxs'])) { + __accu0__.append (__all__ [py_name]); + } + return __accu0__; + }) ()); + autoTester.check ('Check main 3', sub.xxa, sub.xxb, sub.xxp, sub.xxq, sub.xxr, sub.xxs); + autoTester.check ('Check main 4', ...sorted ((function () { + var __accu0__ = []; + for (var [key, value] of __all__.py_items ()) { + if (key.startswith ('xx')) { + __accu0__.append (value); + } + } + return __accu0__; + }) ())); +}; + +//# sourceMappingURL=globals_function.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/globals_function.sub.js b/transcrypt/development/automated_tests/transcrypt/__target__38/globals_function.sub.js new file mode 100644 index 000000000..a720ff396 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/globals_function.sub.js @@ -0,0 +1,40 @@ +// Transcrypt'ed from Python, 2021-05-14 15:00:25 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get f () {return f;}, set f (value) {f = value;}, get name () {return name;}, set name (value) {name = value;}, get run () {return run;}, set run (value) {run = value;}, get xxa () {return xxa;}, set xxa (value) {xxa = value;}, get xxb () {return xxb;}, set xxb (value) {xxb = value;}, get xxp () {return xxp;}, set xxp (value) {xxp = value;}, get xxq () {return xxq;}, set xxq (value) {xxq = value;}, get xxr () {return xxr;}, set xxr (value) {xxr = value;}, get xxs () {return xxs;}, set xxs (value) {xxs = value;}}); +var __name__ = 'globals_function.sub'; +export var xxa = 'subXxa'; +export var xxb = 'subXxb'; +export var xxp = null; +export var xxq = null; +export var xxr = null; +export var xxs = null; +for (var py_name of tuple (['xxp', 'xxq'])) { + __all__ [py_name] = 'sub{}'.format (py_name.capitalize ()); +} +export var f = function () { + for (var py_name of tuple (['xxr', 'xxs'])) { + __all__ [py_name] = 'sub{}'.format (py_name.capitalize ()); + } +}; +export var run = function (autoTester) { + f (); + autoTester.check ('Check sub 1', xxa, xxb); + autoTester.check ('Check sub 2', ...(function () { + var __accu0__ = []; + for (var py_name of tuple (['xxa', 'xxb', 'xxp', 'xxq', 'xxr', 'xxs'])) { + __accu0__.append (__all__ [py_name]); + } + return __accu0__; + }) ()); + autoTester.check ('Check sub 3', ...sorted ((function () { + var __accu0__ = []; + for (var [key, value] of __all__.py_items ()) { + if (key.startswith ('xx')) { + __accu0__.append (value); + } + } + return __accu0__; + }) ())); +}; + +//# sourceMappingURL=globals_function.sub.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/globals_function.sub.tree b/transcrypt/development/automated_tests/transcrypt/__target__38/globals_function.sub.tree new file mode 100644 index 000000000..f5afe15aa --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/globals_function.sub.tree @@ -0,0 +1,341 @@ +file: Module + body: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = xglobs + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = xxa + ctx: Store + value: Constant + value: str = subXxa + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = xxb + ctx: Store + value: Constant + value: str = subXxb + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = xxp + ctx: Store + value: Constant + value: NoneType = None + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = xxq + ctx: Store + value: Constant + value: NoneType = None + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = xxr + ctx: Store + value: Constant + value: NoneType = None + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = xxs + ctx: Store + value: Constant + value: NoneType = None + kind: NoneType = None + type_comment: NoneType = None + element: For + target: Name + id: str = name + ctx: Store + iter: Tuple + elts: list + element: Constant + value: str = xxp + kind: NoneType = None + element: Constant + value: str = xxq + kind: NoneType = None + ctx: Load + body: list + element: Assign + targets: list + element: Subscript + value: Call + func: Name + id: str = globals + ctx: Load + args: list + keywords: list + slice: Index + value: Name + id: str = name + ctx: Load + ctx: Store + value: Call + func: Attribute + value: Constant + value: str = sub{} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = name + ctx: Load + attr: str = capitalize + ctx: Load + args: list + keywords: list + keywords: list + type_comment: NoneType = None + orelse: list + type_comment: NoneType = None + element: FunctionDef + name: str = f + args: arguments + posonlyargs: list + args: list + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: For + target: Name + id: str = name + ctx: Store + iter: Tuple + elts: list + element: Constant + value: str = xxr + kind: NoneType = None + element: Constant + value: str = xxs + kind: NoneType = None + ctx: Load + body: list + element: Assign + targets: list + element: Subscript + value: Call + func: Name + id: str = globals + ctx: Load + args: list + keywords: list + slice: Index + value: Name + id: str = name + ctx: Load + ctx: Store + value: Call + func: Attribute + value: Constant + value: str = sub{} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = name + ctx: Load + attr: str = capitalize + ctx: Load + args: list + keywords: list + keywords: list + type_comment: NoneType = None + orelse: list + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = run + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = autoTester + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Name + id: str = f + ctx: Load + args: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Check sub 1 + kind: NoneType = None + element: Name + id: str = xxa + ctx: Load + element: Name + id: str = xxb + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Check sub 2 + kind: NoneType = None + element: Starred + value: ListComp + elt: Subscript + value: Call + func: Name + id: str = globals + ctx: Load + args: list + keywords: list + slice: Index + value: Name + id: str = name + ctx: Load + ctx: Load + generators: list + element: comprehension + target: Name + id: str = name + ctx: Store + iter: Tuple + elts: list + element: Constant + value: str = xxa + kind: NoneType = None + element: Constant + value: str = xxb + kind: NoneType = None + element: Constant + value: str = xxp + kind: NoneType = None + element: Constant + value: str = xxq + kind: NoneType = None + element: Constant + value: str = xxr + kind: NoneType = None + element: Constant + value: str = xxs + kind: NoneType = None + ctx: Load + ifs: list + is_async: int = 0 + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Check sub 3 + kind: NoneType = None + element: Starred + value: Call + func: Name + id: str = sorted + ctx: Load + args: list + element: ListComp + elt: Name + id: str = value + ctx: Load + generators: list + element: comprehension + target: Tuple + elts: list + element: Name + id: str = key + ctx: Store + element: Name + id: str = value + ctx: Store + ctx: Store + iter: Call + func: Attribute + value: Call + func: Name + id: str = globals + ctx: Load + args: list + keywords: list + attr: str = items + ctx: Load + args: list + keywords: list + ifs: list + element: Call + func: Attribute + value: Name + id: str = key + ctx: Load + attr: str = startswith + ctx: Load + args: list + element: Constant + value: str = xx + kind: NoneType = None + keywords: list + is_async: int = 0 + keywords: list + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/globals_function.tree b/transcrypt/development/automated_tests/transcrypt/__target__38/globals_function.tree new file mode 100644 index 000000000..0897b2f18 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/globals_function.tree @@ -0,0 +1,410 @@ +file: Module + body: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = xglobs + kind: NoneType = None + keywords: list + element: ImportFrom + module: str = globals_function + names: list + element: alias + name: str = sub + asname: NoneType = None + level: int = 0 + element: Assign + targets: list + element: Name + id: str = xxa + ctx: Store + value: Constant + value: str = mainXxa + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = xxb + ctx: Store + value: Constant + value: str = mainXxb + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = xxp + ctx: Store + value: Constant + value: NoneType = None + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = xxq + ctx: Store + value: Constant + value: NoneType = None + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = xxr + ctx: Store + value: Constant + value: NoneType = None + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = xxs + ctx: Store + value: Constant + value: NoneType = None + kind: NoneType = None + type_comment: NoneType = None + element: For + target: Name + id: str = name + ctx: Store + iter: Tuple + elts: list + element: Constant + value: str = xxp + kind: NoneType = None + element: Constant + value: str = xxq + kind: NoneType = None + ctx: Load + body: list + element: Assign + targets: list + element: Subscript + value: Call + func: Name + id: str = globals + ctx: Load + args: list + keywords: list + slice: Index + value: Name + id: str = name + ctx: Load + ctx: Store + value: Call + func: Attribute + value: Constant + value: str = main{} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = name + ctx: Load + attr: str = capitalize + ctx: Load + args: list + keywords: list + keywords: list + type_comment: NoneType = None + orelse: list + type_comment: NoneType = None + element: FunctionDef + name: str = f + args: arguments + posonlyargs: list + args: list + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: For + target: Name + id: str = name + ctx: Store + iter: Tuple + elts: list + element: Constant + value: str = xxr + kind: NoneType = None + element: Constant + value: str = xxs + kind: NoneType = None + ctx: Load + body: list + element: Assign + targets: list + element: Subscript + value: Call + func: Name + id: str = globals + ctx: Load + args: list + keywords: list + slice: Index + value: Name + id: str = name + ctx: Load + ctx: Store + value: Call + func: Attribute + value: Constant + value: str = main{} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = name + ctx: Load + attr: str = capitalize + ctx: Load + args: list + keywords: list + keywords: list + type_comment: NoneType = None + orelse: list + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = run + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = autoTester + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Name + id: str = f + ctx: Load + args: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = sub + ctx: Load + attr: str = run + ctx: Load + args: list + element: Name + id: str = autoTester + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Check main 1 + kind: NoneType = None + element: Name + id: str = xxa + ctx: Load + element: Name + id: str = xxb + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Check main 2 + kind: NoneType = None + element: Starred + value: ListComp + elt: Subscript + value: Call + func: Name + id: str = globals + ctx: Load + args: list + keywords: list + slice: Index + value: Name + id: str = name + ctx: Load + ctx: Load + generators: list + element: comprehension + target: Name + id: str = name + ctx: Store + iter: Tuple + elts: list + element: Constant + value: str = xxa + kind: NoneType = None + element: Constant + value: str = xxb + kind: NoneType = None + element: Constant + value: str = xxp + kind: NoneType = None + element: Constant + value: str = xxq + kind: NoneType = None + element: Constant + value: str = xxr + kind: NoneType = None + element: Constant + value: str = xxs + kind: NoneType = None + ctx: Load + ifs: list + is_async: int = 0 + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Check main 3 + kind: NoneType = None + element: Attribute + value: Name + id: str = sub + ctx: Load + attr: str = xxa + ctx: Load + element: Attribute + value: Name + id: str = sub + ctx: Load + attr: str = xxb + ctx: Load + element: Attribute + value: Name + id: str = sub + ctx: Load + attr: str = xxp + ctx: Load + element: Attribute + value: Name + id: str = sub + ctx: Load + attr: str = xxq + ctx: Load + element: Attribute + value: Name + id: str = sub + ctx: Load + attr: str = xxr + ctx: Load + element: Attribute + value: Name + id: str = sub + ctx: Load + attr: str = xxs + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Check main 4 + kind: NoneType = None + element: Starred + value: Call + func: Name + id: str = sorted + ctx: Load + args: list + element: ListComp + elt: Name + id: str = value + ctx: Load + generators: list + element: comprehension + target: Tuple + elts: list + element: Name + id: str = key + ctx: Store + element: Name + id: str = value + ctx: Store + ctx: Store + iter: Call + func: Attribute + value: Call + func: Name + id: str = globals + ctx: Load + args: list + keywords: list + attr: str = items + ctx: Load + args: list + keywords: list + ifs: list + element: Call + func: Attribute + value: Name + id: str = key + ctx: Load + attr: str = startswith + ctx: Load + args: list + element: Constant + value: str = xx + kind: NoneType = None + keywords: list + is_async: int = 0 + keywords: list + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/grep_out38.txt b/transcrypt/development/automated_tests/transcrypt/__target__38/grep_out38.txt new file mode 100644 index 000000000..eeb10ccef --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/grep_out38.txt @@ -0,0 +1,4449 @@ +autotest.tree- name: str = executable_comments +autotest.tree- asname: NoneType = None +autotest.tree- element: Import +autotest.tree- names: list +autotest.tree- element: alias +autotest.tree: name: str = extended_slices +autotest.tree- asname: NoneType = None +autotest.tree- element: Import +autotest.tree- names: list +autotest.tree- element: alias +autotest.tree- name: str = fstrings +-- +autotest.tree- name: str = globals_function +autotest.tree- asname: NoneType = None +autotest.tree- element: Import +autotest.tree- names: list +autotest.tree- element: alias +autotest.tree: name: str = indices_and_slices +autotest.tree- asname: NoneType = None +autotest.tree- element: Import +autotest.tree- names: list +autotest.tree- element: alias +autotest.tree- name: str = iterators_and_generators +-- +autotest.tree- ctx: Load +autotest.tree- attr: str = run +autotest.tree- ctx: Load +autotest.tree- args: list +autotest.tree- element: Name +autotest.tree: id: str = extended_slices +autotest.tree- ctx: Load +autotest.tree- element: Constant +autotest.tree: value: str = extended_slices +autotest.tree- kind: NoneType = None +autotest.tree- keywords: list +autotest.tree- element: Expr +autotest.tree- value: Call +autotest.tree- func: Attribute +-- +autotest.tree- ctx: Load +autotest.tree- attr: str = run +autotest.tree- ctx: Load +autotest.tree- args: list +autotest.tree- element: Name +autotest.tree: id: str = indices_and_slices +autotest.tree- ctx: Load +autotest.tree- element: Constant +autotest.tree: value: str = indices_and_slices +autotest.tree- kind: NoneType = None +autotest.tree- keywords: list +autotest.tree- element: Expr +autotest.tree- value: Call +autotest.tree- func: Attribute +-- +control_structures.tree- element: Compare +control_structures.tree- left: Subscript +control_structures.tree- value: Name +control_structures.tree- id: str = vehicles +control_structures.tree- ctx: Load +control_structures.tree: slice: Index +control_structures.tree- value: Name +control_structures.tree- id: str = index +control_structures.tree- ctx: Load +control_structures.tree- ctx: Load +control_structures.tree- ops: list +-- +control_structures.tree- ctx: Load +control_structures.tree- element: Subscript +control_structures.tree- value: Name +control_structures.tree- id: str = vehicles +control_structures.tree- ctx: Load +control_structures.tree: slice: Index +control_structures.tree- value: Name +control_structures.tree- id: str = index +control_structures.tree- ctx: Load +control_structures.tree- ctx: Load +control_structures.tree- keywords: list +-- +control_structures.tree- element: Compare +control_structures.tree- left: Subscript +control_structures.tree- value: Name +control_structures.tree- id: str = vehicles +control_structures.tree- ctx: Load +control_structures.tree: slice: Index +control_structures.tree- value: Name +control_structures.tree- id: str = index +control_structures.tree- ctx: Load +control_structures.tree- ctx: Load +control_structures.tree- ops: list +-- +control_structures.tree- element: Compare +control_structures.tree- left: Subscript +control_structures.tree- value: Name +control_structures.tree- id: str = vehicles +control_structures.tree- ctx: Load +control_structures.tree: slice: Index +control_structures.tree- value: Name +control_structures.tree- id: str = index +control_structures.tree- ctx: Load +control_structures.tree- ctx: Load +control_structures.tree- ops: list +-- +data_structures.tree- args: list +data_structures.tree- element: Subscript +data_structures.tree- value: Name +data_structures.tree- id: str = aList +data_structures.tree- ctx: Load +data_structures.tree: slice: Slice +data_structures.tree- lower: Constant +data_structures.tree- value: int = 2 +data_structures.tree- kind: NoneType = None +data_structures.tree- upper: Constant +data_structures.tree- value: int = 4 +-- +data_structures.tree- args: list +data_structures.tree- element: Subscript +data_structures.tree- value: Name +data_structures.tree- id: str = aList +data_structures.tree- ctx: Load +data_structures.tree: slice: Slice +data_structures.tree- lower: NoneType = None +data_structures.tree- upper: NoneType = None +data_structures.tree- step: NoneType = None +data_structures.tree- ctx: Load +data_structures.tree- keywords: list +-- +data_structures.tree- args: list +data_structures.tree- element: Subscript +data_structures.tree- value: Name +data_structures.tree- id: str = aList +data_structures.tree- ctx: Load +data_structures.tree: slice: Slice +data_structures.tree- lower: Constant +data_structures.tree- value: int = 2 +data_structures.tree- kind: NoneType = None +data_structures.tree- upper: NoneType = None +data_structures.tree- step: NoneType = None +-- +data_structures.tree- args: list +data_structures.tree- element: Subscript +data_structures.tree- value: Name +data_structures.tree- id: str = aDict +data_structures.tree- ctx: Load +data_structures.tree: slice: Index +data_structures.tree- value: Constant +data_structures.tree- value: int = 1 +data_structures.tree- kind: NoneType = None +data_structures.tree- ctx: Load +data_structures.tree- element: Subscript +data_structures.tree- value: Name +data_structures.tree- id: str = aDict +data_structures.tree- ctx: Load +data_structures.tree: slice: Index +data_structures.tree- value: Constant +data_structures.tree- value: str = animal +data_structures.tree- kind: NoneType = None +data_structures.tree- ctx: Load +data_structures.tree- keywords: list +-- +datetime.tree- ctx: Store +datetime.tree- iter: Subscript +datetime.tree- value: Name +datetime.tree- id: str = _DAYS_IN_MONTH +datetime.tree- ctx: Load +datetime.tree: slice: Slice +datetime.tree- lower: Constant +datetime.tree- value: int = 1 +datetime.tree- kind: NoneType = None +datetime.tree- upper: NoneType = None +datetime.tree- step: NoneType = None +-- +datetime.tree- element: Return +datetime.tree- value: Subscript +datetime.tree- value: Name +datetime.tree- id: str = _DAYS_IN_MONTH +datetime.tree- ctx: Load +datetime.tree: slice: Index +datetime.tree- value: Name +datetime.tree- id: str = month +datetime.tree- ctx: Load +datetime.tree- ctx: Load +datetime.tree- decorator_list: list +-- +datetime.tree- value: BinOp +datetime.tree- left: Subscript +datetime.tree- value: Name +datetime.tree- id: str = _DAYS_BEFORE_MONTH +datetime.tree- ctx: Load +datetime.tree: slice: Index +datetime.tree- value: Name +datetime.tree- id: str = month +datetime.tree- ctx: Load +datetime.tree- ctx: Load +datetime.tree- op: Add +-- +datetime.tree- value: BinOp +datetime.tree- left: Subscript +datetime.tree- value: Name +datetime.tree- id: str = _DAYS_BEFORE_MONTH +datetime.tree- ctx: Load +datetime.tree: slice: Index +datetime.tree- value: Name +datetime.tree- id: str = month +datetime.tree- ctx: Load +datetime.tree- ctx: Load +datetime.tree- op: Add +-- +datetime.tree- value: BinOp +datetime.tree- left: Subscript +datetime.tree- value: Name +datetime.tree- id: str = _DAYS_IN_MONTH +datetime.tree- ctx: Load +datetime.tree: slice: Index +datetime.tree- value: Name +datetime.tree- id: str = month +datetime.tree- ctx: Load +datetime.tree- ctx: Load +datetime.tree- op: Add +-- +datetime.tree- ctx: Store +datetime.tree- value: Subscript +datetime.tree- value: Name +datetime.tree- id: str = format +datetime.tree- ctx: Load +datetime.tree: slice: Index +datetime.tree- value: Name +datetime.tree- id: str = i +datetime.tree- ctx: Load +datetime.tree- ctx: Load +datetime.tree- type_comment: NoneType = None +-- +datetime.tree- ctx: Store +datetime.tree- value: Subscript +datetime.tree- value: Name +datetime.tree- id: str = format +datetime.tree- ctx: Load +datetime.tree: slice: Index +datetime.tree- value: Name +datetime.tree- id: str = i +datetime.tree- ctx: Load +datetime.tree- ctx: Load +datetime.tree- type_comment: NoneType = None +-- +datetime.tree- args: list +datetime.tree- element: Subscript +datetime.tree- value: Name +datetime.tree- id: str = _DAYNAMES +datetime.tree- ctx: Load +datetime.tree: slice: Index +datetime.tree- value: Name +datetime.tree- id: str = weekday +datetime.tree- ctx: Load +datetime.tree- ctx: Load +datetime.tree- element: Subscript +datetime.tree- value: Name +datetime.tree- id: str = _MONTHNAMES +datetime.tree- ctx: Load +datetime.tree: slice: Index +datetime.tree- value: Attribute +datetime.tree- value: Name +datetime.tree- id: str = self +datetime.tree- ctx: Load +datetime.tree- attr: str = _month +-- +datetime.tree- test: Compare +datetime.tree- left: Subscript +datetime.tree- value: Name +datetime.tree- id: str = s +datetime.tree- ctx: Load +datetime.tree: slice: Slice +datetime.tree- lower: UnaryOp +datetime.tree- op: USub +datetime.tree- operand: Constant +datetime.tree- value: int = 1 +datetime.tree- kind: NoneType = None +-- +datetime.tree- left: BinOp +datetime.tree- left: Subscript +datetime.tree- value: Name +datetime.tree- id: str = s +datetime.tree- ctx: Load +datetime.tree: slice: Slice +datetime.tree- lower: NoneType = None +datetime.tree- upper: BinOp +datetime.tree- left: Call +datetime.tree- func: Name +datetime.tree- id: str = len +-- +datetime.tree- element: Starred +datetime.tree- value: Subscript +datetime.tree- value: Name +datetime.tree- id: str = localtm +datetime.tree- ctx: Load +datetime.tree: slice: Slice +datetime.tree- lower: NoneType = None +datetime.tree- upper: Constant +datetime.tree- value: int = 6 +datetime.tree- kind: NoneType = None +datetime.tree- step: NoneType = None +-- +datetime.tree- ctx: Store +datetime.tree- value: Subscript +datetime.tree- value: Name +datetime.tree- id: str = localtm +datetime.tree- ctx: Load +datetime.tree: slice: Index +datetime.tree- value: Constant +datetime.tree- value: int = 10 +datetime.tree- kind: NoneType = None +datetime.tree- ctx: Load +datetime.tree- type_comment: NoneType = None +-- +datetime.tree- ctx: Store +datetime.tree- value: Subscript +datetime.tree- value: Name +datetime.tree- id: str = localtm +datetime.tree- ctx: Load +datetime.tree: slice: Index +datetime.tree- value: Constant +datetime.tree- value: int = 9 +datetime.tree- kind: NoneType = None +datetime.tree- ctx: Load +datetime.tree- type_comment: NoneType = None +-- +datetime.tree- args: list +datetime.tree- element: Name +datetime.tree- id: str = ts +datetime.tree- ctx: Load +datetime.tree- keywords: list +datetime.tree: slice: Slice +datetime.tree- lower: NoneType = None +datetime.tree- upper: Constant +datetime.tree- value: int = 6 +datetime.tree- kind: NoneType = None +datetime.tree- step: NoneType = None +-- +datetime.tree- element: Compare +datetime.tree- left: Subscript +datetime.tree- value: Name +datetime.tree- id: str = localtm +datetime.tree- ctx: Load +datetime.tree: slice: Index +datetime.tree- value: Constant +datetime.tree- value: int = 8 +datetime.tree- kind: NoneType = None +datetime.tree- ctx: Load +datetime.tree- ops: list +-- +datetime.tree- value: Name +datetime.tree- id: str = _time +datetime.tree- ctx: Load +datetime.tree- attr: str = tzname +datetime.tree- ctx: Load +datetime.tree: slice: Index +datetime.tree- value: Name +datetime.tree- id: str = dst +datetime.tree- ctx: Load +datetime.tree- ctx: Load +datetime.tree- keywords: list +-- +datetime.tree- args: list +datetime.tree- element: Subscript +datetime.tree- value: Name +datetime.tree- id: str = _DAYNAMES +datetime.tree- ctx: Load +datetime.tree: slice: Index +datetime.tree- value: Name +datetime.tree- id: str = weekday +datetime.tree- ctx: Load +datetime.tree- ctx: Load +datetime.tree- element: Subscript +datetime.tree- value: Name +datetime.tree- id: str = _MONTHNAMES +datetime.tree- ctx: Load +datetime.tree: slice: Index +datetime.tree- value: Attribute +datetime.tree- value: Name +datetime.tree- id: str = self +datetime.tree- ctx: Load +datetime.tree- attr: str = _month +-- +datetime.tree- test: Compare +datetime.tree- left: Subscript +datetime.tree- value: Name +datetime.tree- id: str = L +datetime.tree- ctx: Load +datetime.tree: slice: Index +datetime.tree- value: BinOp +datetime.tree- left: Call +datetime.tree- func: Name +datetime.tree- id: str = len +datetime.tree- ctx: Load +-- +datetime.tree- test: Compare +datetime.tree- left: Subscript +datetime.tree- value: Name +datetime.tree- id: str = L +datetime.tree- ctx: Load +datetime.tree: slice: Index +datetime.tree- value: BinOp +datetime.tree- left: Call +datetime.tree- func: Name +datetime.tree- id: str = len +datetime.tree- ctx: Load +-- +datetime.tree- test: Compare +datetime.tree- left: Subscript +datetime.tree- value: Name +datetime.tree- id: str = s +datetime.tree- ctx: Load +datetime.tree: slice: Slice +datetime.tree- lower: UnaryOp +datetime.tree- op: USub +datetime.tree- operand: Constant +datetime.tree- value: int = 1 +datetime.tree- kind: NoneType = None +-- +datetime.tree- left: BinOp +datetime.tree- left: Subscript +datetime.tree- value: Name +datetime.tree- id: str = s +datetime.tree- ctx: Load +datetime.tree: slice: Slice +datetime.tree- lower: NoneType = None +datetime.tree- upper: BinOp +datetime.tree- left: Call +datetime.tree- func: Name +datetime.tree- id: str = len +-- +datetime.tree- ctx: Load +datetime.tree- element: Name +datetime.tree- id: str = format +datetime.tree- ctx: Load +datetime.tree- keywords: list +datetime.tree: slice: Slice +datetime.tree- lower: NoneType = None +datetime.tree- upper: Constant +datetime.tree- value: int = 6 +datetime.tree- kind: NoneType = None +datetime.tree- step: NoneType = None +-- +dict_comprehensions.tree- value: DictComp +dict_comprehensions.tree- key: Subscript +dict_comprehensions.tree- value: Name +dict_comprehensions.tree- id: str = original +dict_comprehensions.tree- ctx: Load +dict_comprehensions.tree: slice: Index +dict_comprehensions.tree- value: Name +dict_comprehensions.tree- id: str = key +dict_comprehensions.tree- ctx: Load +dict_comprehensions.tree- ctx: Load +dict_comprehensions.tree- value: Name +-- +dictionaries.tree- targets: list +dictionaries.tree- element: Subscript +dictionaries.tree- value: Name +dictionaries.tree- id: str = tel +dictionaries.tree- ctx: Load +dictionaries.tree: slice: Index +dictionaries.tree- value: Constant +dictionaries.tree- value: str = sape +dictionaries.tree- kind: NoneType = None +dictionaries.tree- ctx: Store +dictionaries.tree- value: Constant +-- +dictionaries.tree- args: list +dictionaries.tree- element: Subscript +dictionaries.tree- value: Name +dictionaries.tree- id: str = tel +dictionaries.tree- ctx: Load +dictionaries.tree: slice: Index +dictionaries.tree- value: Constant +dictionaries.tree- value: str = jack +dictionaries.tree- kind: NoneType = None +dictionaries.tree- ctx: Load +dictionaries.tree- keywords: list +-- +dictionaries.tree- targets: list +dictionaries.tree- element: Subscript +dictionaries.tree- value: Name +dictionaries.tree- id: str = tel +dictionaries.tree- ctx: Load +dictionaries.tree: slice: Index +dictionaries.tree- value: Constant +dictionaries.tree- value: str = sape +dictionaries.tree- kind: NoneType = None +dictionaries.tree- ctx: Del +dictionaries.tree- element: Assign +dictionaries.tree- targets: list +dictionaries.tree- element: Subscript +dictionaries.tree- value: Name +dictionaries.tree- id: str = tel +dictionaries.tree- ctx: Load +dictionaries.tree: slice: Index +dictionaries.tree- value: Constant +dictionaries.tree- value: str = irv +dictionaries.tree- kind: NoneType = None +dictionaries.tree- ctx: Store +dictionaries.tree- value: Constant +-- +dictionaries.tree- element: Subscript +dictionaries.tree- value: Subscript +dictionaries.tree- value: Name +dictionaries.tree- id: str = d +dictionaries.tree- ctx: Load +dictionaries.tree: slice: Index +dictionaries.tree- value: Constant +dictionaries.tree- value: str = a +dictionaries.tree- kind: NoneType = None +dictionaries.tree- ctx: Load +dictionaries.tree: slice: Index +dictionaries.tree- value: Constant +dictionaries.tree- value: str = c +dictionaries.tree- kind: NoneType = None +dictionaries.tree- ctx: Load +dictionaries.tree- keywords: list +-- +dictionaries.tree- element: Subscript +dictionaries.tree- value: Subscript +dictionaries.tree- value: Name +dictionaries.tree- id: str = d +dictionaries.tree- ctx: Load +dictionaries.tree: slice: Index +dictionaries.tree- value: Constant +dictionaries.tree- value: str = a +dictionaries.tree- kind: NoneType = None +dictionaries.tree- ctx: Load +dictionaries.tree: slice: Index +dictionaries.tree- value: Constant +dictionaries.tree- value: str = c +dictionaries.tree- kind: NoneType = None +dictionaries.tree- ctx: Store +dictionaries.tree- value: Constant +-- +dictionaries.tree- args: list +dictionaries.tree- element: Subscript +dictionaries.tree- value: Name +dictionaries.tree- id: str = tel +dictionaries.tree- ctx: Load +dictionaries.tree: slice: Index +dictionaries.tree- value: Constant +dictionaries.tree- value: str = linus +dictionaries.tree- kind: NoneType = None +dictionaries.tree- ctx: Load +dictionaries.tree- keywords: list +-- +dictionaries.tree- targets: list +dictionaries.tree- element: Subscript +dictionaries.tree- value: Name +dictionaries.tree- id: str = d +dictionaries.tree- ctx: Load +dictionaries.tree: slice: Index +dictionaries.tree- value: Constant +dictionaries.tree- value: str = a +dictionaries.tree- kind: NoneType = None +dictionaries.tree- ctx: Store +dictionaries.tree- value: Constant +-- +dictionaries.tree- targets: list +dictionaries.tree- element: Subscript +dictionaries.tree- value: Name +dictionaries.tree- id: str = d +dictionaries.tree- ctx: Load +dictionaries.tree: slice: Index +dictionaries.tree- value: Tuple +dictionaries.tree- elts: list +dictionaries.tree- element: Constant +dictionaries.tree- value: int = 1 +dictionaries.tree- kind: NoneType = None +-- +dictionaries.tree- args: list +dictionaries.tree- element: Subscript +dictionaries.tree- value: Name +dictionaries.tree- id: str = d +dictionaries.tree- ctx: Load +dictionaries.tree: slice: Index +dictionaries.tree- value: Constant +dictionaries.tree- value: str = a +dictionaries.tree- kind: NoneType = None +dictionaries.tree- ctx: Load +dictionaries.tree- element: Subscript +dictionaries.tree- value: Name +dictionaries.tree- id: str = d +dictionaries.tree- ctx: Load +dictionaries.tree: slice: Index +dictionaries.tree- value: Tuple +dictionaries.tree- elts: list +dictionaries.tree- element: Constant +dictionaries.tree- value: int = 1 +dictionaries.tree- kind: NoneType = None +-- +dictionaries.tree- targets: list +dictionaries.tree- element: Subscript +dictionaries.tree- value: Name +dictionaries.tree- id: str = d +dictionaries.tree- ctx: Load +dictionaries.tree: slice: Index +dictionaries.tree- value: Constant +dictionaries.tree- value: str = a +dictionaries.tree- kind: NoneType = None +dictionaries.tree- ctx: Store +dictionaries.tree- value: Constant +-- +dictionaries.tree- targets: list +dictionaries.tree- element: Subscript +dictionaries.tree- value: Name +dictionaries.tree- id: str = d +dictionaries.tree- ctx: Load x +dictionaries.tree: slice: Index +dictionaries.tree- value: Tuple +dictionaries.tree- elts: list +dictionaries.tree- element: Constant +dictionaries.tree- value: int = 1 +dictionaries.tree- kind: NoneType = None +-- +dictionaries.tree- args: list +dictionaries.tree- element: Subscript +dictionaries.tree- value: Name +dictionaries.tree- id: str = d +dictionaries.tree- ctx: Load +dictionaries.tree: slice: Index +dictionaries.tree- value: Constant +dictionaries.tree- value: str = a +dictionaries.tree- kind: NoneType = None +dictionaries.tree- ctx: Load +dictionaries.tree- element: Subscript +dictionaries.tree- value: Name +dictionaries.tree- id: str = d +dictionaries.tree- ctx: Load +dictionaries.tree: slice: Index +dictionaries.tree- value: Tuple +dictionaries.tree- elts: list +dictionaries.tree- element: Constant +dictionaries.tree- value: int = 1 +dictionaries.tree- kind: NoneType = None +-- +div_issues.tree- targets: list +div_issues.tree- element: Subscript +div_issues.tree- value: Name +div_issues.tree- id: str = x +div_issues.tree- ctx: Load +div_issues.tree: slice: Index +div_issues.tree- value: Constant +div_issues.tree- value: int = 0 +div_issues.tree- kind: NoneType = None +div_issues.tree- ctx: Store +div_issues.tree- value: Constant +-- +div_issues.tree- targets: list +div_issues.tree- element: Subscript +div_issues.tree- value: Name +div_issues.tree- id: str = x +div_issues.tree- ctx: Load +div_issues.tree: slice: Index +div_issues.tree- value: Constant +div_issues.tree- value: int = 1 +div_issues.tree- kind: NoneType = None +div_issues.tree- ctx: Store +div_issues.tree- value: Constant +-- +div_issues.tree- value: Yield +div_issues.tree- value: Subscript +div_issues.tree- value: Name +div_issues.tree- id: str = aList +div_issues.tree- ctx: Load +div_issues.tree: slice: Slice +div_issues.tree- lower: Name +div_issues.tree- id: str = index +div_issues.tree- ctx: Load +div_issues.tree- upper: BinOp +div_issues.tree- left: Name +-- +div_issues.tree- value: Name +div_issues.tree- id: str = self +div_issues.tree- ctx: Load +div_issues.tree- attr: str = alphabet +div_issues.tree- ctx: Load +div_issues.tree: slice: Index +div_issues.tree- value: BinOp +div_issues.tree- left: Attribute +div_issues.tree- value: Name +div_issues.tree- id: str = self +div_issues.tree- ctx: Load +-- +div_issues.tree- defaults: list +div_issues.tree- body: Subscript +div_issues.tree- value: Name +div_issues.tree- id: str = row +div_issues.tree- ctx: Load +div_issues.tree: slice: Index +div_issues.tree- value: Name +div_issues.tree- id: str = iCol +div_issues.tree- ctx: Load +div_issues.tree- ctx: Load +div_issues.tree- orelse: list +-- +div_issues.tree- element: ListComp +div_issues.tree- elt: Subscript +div_issues.tree- value: Name +div_issues.tree- id: str = x +div_issues.tree- ctx: Load +div_issues.tree: slice: Index +div_issues.tree- value: Constant +div_issues.tree- value: int = 1 +div_issues.tree- kind: NoneType = None +div_issues.tree- ctx: Load +div_issues.tree- generators: list +-- +div_issues.tree- left: BinOp +div_issues.tree- left: Subscript +div_issues.tree- value: Name +div_issues.tree- id: str = x +div_issues.tree- ctx: Load +div_issues.tree: slice: Index +div_issues.tree- value: Constant +div_issues.tree- value: int = 0 +div_issues.tree- kind: NoneType = None +div_issues.tree- ctx: Load +div_issues.tree- op: BitAnd +-- +div_issues.tree- kind: NoneType = None +div_issues.tree- values: list +div_issues.tree- element: Constant +div_issues.tree- value: int = 5 +div_issues.tree- kind: NoneType = None +div_issues.tree: slice: Index +div_issues.tree- value: Constant +div_issues.tree- value: str = a +div_issues.tree- kind: NoneType = None +div_issues.tree- ctx: Load +div_issues.tree- type_comment: NoneType = None +-- +div_issues.tree- kind: NoneType = None +div_issues.tree- values: list +div_issues.tree- element: Constant +div_issues.tree- value: int = 5 +div_issues.tree- kind: NoneType = None +div_issues.tree: slice: Index +div_issues.tree- value: Constant +div_issues.tree- value: str = b +div_issues.tree- kind: NoneType = None +div_issues.tree- ctx: Load +div_issues.tree- type_comment: NoneType = None +-- +div_issues.tree- args: list +div_issues.tree- element: Subscript +div_issues.tree- value: Name +div_issues.tree- id: str = foo +div_issues.tree- ctx: Load +div_issues.tree: slice: Index +div_issues.tree- value: Name +div_issues.tree- id: str = i +div_issues.tree- ctx: Load +div_issues.tree- ctx: Load +div_issues.tree- keywords: list +-- +div_issues.tree- targets: list +div_issues.tree- element: Subscript +div_issues.tree- value: Name +div_issues.tree- id: str = l460 +div_issues.tree- ctx: Load +div_issues.tree: slice: Index +div_issues.tree- value: Constant +div_issues.tree- value: int = 0 +div_issues.tree- kind: NoneType = None +div_issues.tree- ctx: Store +div_issues.tree- value: Constant +-- +div_issues.tree- targets: list +div_issues.tree- element: Subscript +div_issues.tree- value: Name +div_issues.tree- id: str = l460 +div_issues.tree- ctx: Load +div_issues.tree: slice: Index +div_issues.tree- value: UnaryOp +div_issues.tree- op: USub +div_issues.tree- operand: Constant +div_issues.tree- value: int = 2 +div_issues.tree- kind: NoneType = None +-- +div_issues.tree- targets: list +div_issues.tree- element: Subscript +div_issues.tree- value: Name +div_issues.tree- id: str = l460 +div_issues.tree- ctx: Load +div_issues.tree: slice: Index +div_issues.tree- value: UnaryOp +div_issues.tree- op: USub +div_issues.tree- operand: Constant +div_issues.tree- value: int = 1 +div_issues.tree- kind: NoneType = None +-- +div_issues.tree- targets: list +div_issues.tree- element: Subscript +div_issues.tree- value: Name +div_issues.tree- id: str = d460 +div_issues.tree- ctx: Load +div_issues.tree: slice: Index +div_issues.tree- value: UnaryOp +div_issues.tree- op: USub +div_issues.tree- operand: Constant +div_issues.tree- value: int = 1 +div_issues.tree- kind: NoneType = None +-- +div_issues.tree- targets: list +div_issues.tree- element: Subscript +div_issues.tree- value: Name +div_issues.tree- id: str = d460 +div_issues.tree- ctx: Load +div_issues.tree: slice: Index +div_issues.tree- value: Constant +div_issues.tree- value: str = b +div_issues.tree- kind: NoneType = None +div_issues.tree- ctx: Store +div_issues.tree- value: Constant +-- +div_issues.tree- args: list +div_issues.tree- element: Subscript +div_issues.tree- value: Name +div_issues.tree- id: str = s460 +div_issues.tree- ctx: Load +div_issues.tree: slice: Index +div_issues.tree- value: Constant +div_issues.tree- value: int = 0 +div_issues.tree- kind: NoneType = None +div_issues.tree- ctx: Load +div_issues.tree- element: Subscript +div_issues.tree- value: Name +div_issues.tree- id: str = s460 +div_issues.tree- ctx: Load +div_issues.tree: slice: Index +div_issues.tree- value: Constant +div_issues.tree- value: int = 1 +div_issues.tree- kind: NoneType = None +div_issues.tree- ctx: Load +div_issues.tree- element: Subscript +div_issues.tree- value: Name +div_issues.tree- id: str = s460 +div_issues.tree- ctx: Load +div_issues.tree: slice: Index +div_issues.tree- value: Constant +div_issues.tree- value: int = 2 +div_issues.tree- kind: NoneType = None +div_issues.tree- ctx: Load +div_issues.tree- element: Subscript +div_issues.tree- value: Name +div_issues.tree- id: str = s460 +div_issues.tree- ctx: Load +div_issues.tree: slice: Index +div_issues.tree- value: UnaryOp +div_issues.tree- op: USub +div_issues.tree- operand: Constant +div_issues.tree- value: int = 1 +div_issues.tree- kind: NoneType = None +div_issues.tree- ctx: Load +div_issues.tree- element: Subscript +div_issues.tree- value: Name +div_issues.tree- id: str = s460 +div_issues.tree- ctx: Load +div_issues.tree: slice: Index +div_issues.tree- value: UnaryOp +div_issues.tree- op: USub +div_issues.tree- operand: Constant +div_issues.tree- value: int = 2 +div_issues.tree- kind: NoneType = None +div_issues.tree- ctx: Load +div_issues.tree- element: Subscript +div_issues.tree- value: Name +div_issues.tree- id: str = s460 +div_issues.tree- ctx: Load +div_issues.tree: slice: Index +div_issues.tree- value: UnaryOp +div_issues.tree- op: USub +div_issues.tree- operand: Constant +div_issues.tree- value: int = 3 +div_issues.tree- kind: NoneType = None +-- +div_issues.tree- args: list +div_issues.tree- element: Subscript +div_issues.tree- value: Name +div_issues.tree- id: str = l460 +div_issues.tree- ctx: Load +div_issues.tree: slice: Index +div_issues.tree- value: Constant +div_issues.tree- value: int = 0 +div_issues.tree- kind: NoneType = None +div_issues.tree- ctx: Load +div_issues.tree- element: Subscript +div_issues.tree- value: Name +div_issues.tree- id: str = l460 +div_issues.tree- ctx: Load +div_issues.tree: slice: Index +div_issues.tree- value: Constant +div_issues.tree- value: int = 1 +div_issues.tree- kind: NoneType = None +div_issues.tree- ctx: Load +div_issues.tree- element: Subscript +div_issues.tree- value: Name +div_issues.tree- id: str = l460 +div_issues.tree- ctx: Load +div_issues.tree: slice: Index +div_issues.tree- value: Constant +div_issues.tree- value: int = 2 +div_issues.tree- kind: NoneType = None +div_issues.tree- ctx: Load +div_issues.tree- element: Subscript +div_issues.tree- value: Name +div_issues.tree- id: str = l460 +div_issues.tree- ctx: Load +div_issues.tree: slice: Index +div_issues.tree- value: UnaryOp +div_issues.tree- op: USub +div_issues.tree- operand: Constant +div_issues.tree- value: int = 1 +div_issues.tree- kind: NoneType = None +div_issues.tree- ctx: Load +div_issues.tree- element: Subscript +div_issues.tree- value: Name +div_issues.tree- id: str = l460 +div_issues.tree- ctx: Load +div_issues.tree: slice: Index +div_issues.tree- value: UnaryOp +div_issues.tree- op: USub +div_issues.tree- operand: Constant +div_issues.tree- value: int = 2 +div_issues.tree- kind: NoneType = None +div_issues.tree- ctx: Load +div_issues.tree- element: Subscript +div_issues.tree- value: Name +div_issues.tree- id: str = l460 +div_issues.tree- ctx: Load +div_issues.tree: slice: Index +div_issues.tree- value: UnaryOp +div_issues.tree- op: USub +div_issues.tree- operand: Constant +div_issues.tree- value: int = 3 +div_issues.tree- kind: NoneType = None +-- +div_issues.tree- args: list +div_issues.tree- element: Subscript +div_issues.tree- value: Name +div_issues.tree- id: str = t460 +div_issues.tree- ctx: Load +div_issues.tree: slice: Index +div_issues.tree- value: Constant +div_issues.tree- value: int = 0 +div_issues.tree- kind: NoneType = None +div_issues.tree- ctx: Load +div_issues.tree- element: Subscript +div_issues.tree- value: Name +div_issues.tree- id: str = t460 +div_issues.tree- ctx: Load +div_issues.tree: slice: Index +div_issues.tree- value: Constant +div_issues.tree- value: int = 1 +div_issues.tree- kind: NoneType = None +div_issues.tree- ctx: Load +div_issues.tree- element: Subscript +div_issues.tree- value: Name +div_issues.tree- id: str = t460 +div_issues.tree- ctx: Load +div_issues.tree: slice: Index +div_issues.tree- value: Constant +div_issues.tree- value: int = 2 +div_issues.tree- kind: NoneType = None +div_issues.tree- ctx: Load +div_issues.tree- element: Subscript +div_issues.tree- value: Name +div_issues.tree- id: str = t460 +div_issues.tree- ctx: Load +div_issues.tree: slice: Index +div_issues.tree- value: UnaryOp +div_issues.tree- op: USub +div_issues.tree- operand: Constant +div_issues.tree- value: int = 1 +div_issues.tree- kind: NoneType = None +div_issues.tree- ctx: Load +div_issues.tree- element: Subscript +div_issues.tree- value: Name +div_issues.tree- id: str = t460 +div_issues.tree- ctx: Load +div_issues.tree: slice: Index +div_issues.tree- value: UnaryOp +div_issues.tree- op: USub +div_issues.tree- operand: Constant +div_issues.tree- value: int = 2 +div_issues.tree- kind: NoneType = None +div_issues.tree- ctx: Load +div_issues.tree- element: Subscript +div_issues.tree- value: Name +div_issues.tree- id: str = t460 +div_issues.tree- ctx: Load +div_issues.tree: slice: Index +div_issues.tree- value: UnaryOp +div_issues.tree- op: USub +div_issues.tree- operand: Constant +div_issues.tree- value: int = 3 +div_issues.tree- kind: NoneType = None +-- +div_issues.tree- args: list +div_issues.tree- element: Subscript +div_issues.tree- value: Name +div_issues.tree- id: str = d460 +div_issues.tree- ctx: Load +div_issues.tree: slice: Index +div_issues.tree- value: UnaryOp +div_issues.tree- op: USub +div_issues.tree- operand: Constant +div_issues.tree- value: int = 1 +div_issues.tree- kind: NoneType = None +div_issues.tree- ctx: Load +div_issues.tree- element: Subscript +div_issues.tree- value: Name +div_issues.tree- id: str = d460 +div_issues.tree- ctx: Load +div_issues.tree: slice: Index +div_issues.tree- value: Constant +div_issues.tree- value: str = b +div_issues.tree- kind: NoneType = None +div_issues.tree- ctx: Load +div_issues.tree- keywords: list +-- +div_issues.tree- args: list +div_issues.tree- element: Subscript +div_issues.tree- value: Name +div_issues.tree- id: str = s460 +div_issues.tree- ctx: Load +div_issues.tree: slice: Index +div_issues.tree- value: Constant +div_issues.tree- value: int = 0 +div_issues.tree- kind: NoneType = None +div_issues.tree- ctx: Load +div_issues.tree- element: Subscript +div_issues.tree- value: Name +div_issues.tree- id: str = s460 +div_issues.tree- ctx: Load +div_issues.tree: slice: Index +div_issues.tree- value: Constant +div_issues.tree- value: int = 1 +div_issues.tree- kind: NoneType = None +div_issues.tree- ctx: Load +div_issues.tree- element: Subscript +div_issues.tree- value: Name +div_issues.tree- id: str = s460 +div_issues.tree- ctx: Load +div_issues.tree: slice: Index +div_issues.tree- value: Constant +div_issues.tree- value: int = 2 +div_issues.tree- kind: NoneType = None +div_issues.tree- ctx: Load +div_issues.tree- element: Subscript +div_issues.tree- value: Name +div_issues.tree- id: str = s460 +div_issues.tree- ctx: Load +div_issues.tree: slice: Index +div_issues.tree- value: UnaryOp +div_issues.tree- op: USub +div_issues.tree- operand: Constant +div_issues.tree- value: int = 1 +div_issues.tree- kind: NoneType = None +div_issues.tree- ctx: Load +div_issues.tree- element: Subscript +div_issues.tree- value: Name +div_issues.tree- id: str = s460 +div_issues.tree- ctx: Load +div_issues.tree: slice: Index +div_issues.tree- value: UnaryOp +div_issues.tree- op: USub +div_issues.tree- operand: Constant +div_issues.tree- value: int = 2 +div_issues.tree- kind: NoneType = None +div_issues.tree- ctx: Load +div_issues.tree- element: Subscript +div_issues.tree- value: Name +div_issues.tree- id: str = s460 +div_issues.tree- ctx: Load +div_issues.tree: slice: Index +div_issues.tree- value: UnaryOp +div_issues.tree- op: USub +div_issues.tree- operand: Constant +div_issues.tree- value: int = 3 +div_issues.tree- kind: NoneType = None +-- +div_issues.tree- args: list +div_issues.tree- element: Subscript +div_issues.tree- value: Name +div_issues.tree- id: str = l460 +div_issues.tree- ctx: Load +div_issues.tree: slice: Index +div_issues.tree- value: Constant +div_issues.tree- value: int = 0 +div_issues.tree- kind: NoneType = None +div_issues.tree- ctx: Load +div_issues.tree- element: Subscript +div_issues.tree- value: Name +div_issues.tree- id: str = l460 +div_issues.tree- ctx: Load +div_issues.tree: slice: Index +div_issues.tree- value: Constant +div_issues.tree- value: int = 1 +div_issues.tree- kind: NoneType = None +div_issues.tree- ctx: Load +div_issues.tree- element: Subscript +div_issues.tree- value: Name +div_issues.tree- id: str = l460 +div_issues.tree- ctx: Load +div_issues.tree: slice: Index +div_issues.tree- value: Constant +div_issues.tree- value: int = 2 +div_issues.tree- kind: NoneType = None +div_issues.tree- ctx: Load +div_issues.tree- element: Subscript +div_issues.tree- value: Name +div_issues.tree- id: str = l460 +div_issues.tree- ctx: Load +div_issues.tree: slice: Index +div_issues.tree- value: UnaryOp +div_issues.tree- op: USub +div_issues.tree- operand: Constant +div_issues.tree- value: int = 1 +div_issues.tree- kind: NoneType = None +div_issues.tree- ctx: Load +div_issues.tree- element: Subscript +div_issues.tree- value: Name +div_issues.tree- id: str = l460 +div_issues.tree- ctx: Load +div_issues.tree: slice: Index +div_issues.tree- value: UnaryOp +div_issues.tree- op: USub +div_issues.tree- operand: Constant +div_issues.tree- value: int = 2 +div_issues.tree- kind: NoneType = None +div_issues.tree- ctx: Load +div_issues.tree- element: Subscript +div_issues.tree- value: Name +div_issues.tree- id: str = l460 +div_issues.tree- ctx: Load +div_issues.tree: slice: Index +div_issues.tree- value: UnaryOp +div_issues.tree- op: USub +div_issues.tree- operand: Constant +div_issues.tree- value: int = 3 +div_issues.tree- kind: NoneType = None +-- +div_issues.tree- args: list +div_issues.tree- element: Subscript +div_issues.tree- value: Name +div_issues.tree- id: str = t460 +div_issues.tree- ctx: Load +div_issues.tree: slice: Index +div_issues.tree- value: Constant +div_issues.tree- value: int = 0 +div_issues.tree- kind: NoneType = None +div_issues.tree- ctx: Load +div_issues.tree- element: Subscript +div_issues.tree- value: Name +div_issues.tree- id: str = t460 +div_issues.tree- ctx: Load +div_issues.tree: slice: Index +div_issues.tree- value: Constant +div_issues.tree- value: int = 1 +div_issues.tree- kind: NoneType = None +div_issues.tree- ctx: Load +div_issues.tree- element: Subscript +div_issues.tree- value: Name +div_issues.tree- id: str = t460 +div_issues.tree- ctx: Load +div_issues.tree: slice: Index +div_issues.tree- value: Constant +div_issues.tree- value: int = 2 +div_issues.tree- kind: NoneType = None +div_issues.tree- ctx: Load +div_issues.tree- element: Subscript +div_issues.tree- value: Name +div_issues.tree- id: str = t460 +div_issues.tree- ctx: Load +div_issues.tree: slice: Index +div_issues.tree- value: UnaryOp +div_issues.tree- op: USub +div_issues.tree- operand: Constant +div_issues.tree- value: int = 1 +div_issues.tree- kind: NoneType = None +div_issues.tree- ctx: Load +div_issues.tree- element: Subscript +div_issues.tree- value: Name +div_issues.tree- id: str = t460 +div_issues.tree- ctx: Load +div_issues.tree: slice: Index +div_issues.tree- value: UnaryOp +div_issues.tree- op: USub +div_issues.tree- operand: Constant +div_issues.tree- value: int = 2 +div_issues.tree- kind: NoneType = None +div_issues.tree- ctx: Load +div_issues.tree- element: Subscript +div_issues.tree- value: Name +div_issues.tree- id: str = t460 +div_issues.tree- ctx: Load +div_issues.tree: slice: Index +div_issues.tree- value: UnaryOp +div_issues.tree- op: USub +div_issues.tree- operand: Constant +div_issues.tree- value: int = 3 +div_issues.tree- kind: NoneType = None +-- +div_issues.tree- args: list +div_issues.tree- element: Subscript +div_issues.tree- value: Name +div_issues.tree- id: str = d460 +div_issues.tree- ctx: Load +div_issues.tree: slice: Index +div_issues.tree- value: UnaryOp +div_issues.tree- op: USub +div_issues.tree- operand: Constant +div_issues.tree- value: int = 1 +div_issues.tree- kind: NoneType = None +div_issues.tree- ctx: Load +div_issues.tree- element: Subscript +div_issues.tree- value: Name +div_issues.tree- id: str = d460 +div_issues.tree- ctx: Load +div_issues.tree: slice: Index +div_issues.tree- value: Constant +div_issues.tree- value: str = b +div_issues.tree- kind: NoneType = None +div_issues.tree- ctx: Load +div_issues.tree- keywords: list +-- +div_issues.tree- args: list +div_issues.tree- element: Subscript +div_issues.tree- value: Name +div_issues.tree- id: str = d460 +div_issues.tree- ctx: Load +div_issues.tree: slice: Index +div_issues.tree- value: UnaryOp +div_issues.tree- op: USub +div_issues.tree- operand: Constant +div_issues.tree- value: int = 1 +div_issues.tree- kind: NoneType = None +div_issues.tree- ctx: Load +div_issues.tree- element: Subscript +div_issues.tree- value: Name +div_issues.tree- id: str = d460 +div_issues.tree- ctx: Load +div_issues.tree: slice: Index +div_issues.tree- value: Constant +div_issues.tree- value: str = c +div_issues.tree- kind: NoneType = None +div_issues.tree- ctx: Load +div_issues.tree- keywords: list +-- +div_issues.tree- args: list +div_issues.tree- element: Subscript +div_issues.tree- value: Name +div_issues.tree- id: str = d460 +div_issues.tree- ctx: Load +div_issues.tree: slice: Index +div_issues.tree- value: UnaryOp +div_issues.tree- op: USub +div_issues.tree- operand: Constant +div_issues.tree- value: int = 2 +div_issues.tree- kind: NoneType = None +div_issues.tree- ctx: Load +div_issues.tree- element: Subscript +div_issues.tree- value: Name +div_issues.tree- id: str = d460 +div_issues.tree- ctx: Load +div_issues.tree: slice: Index +div_issues.tree- value: Constant +div_issues.tree- value: str = b +div_issues.tree- kind: NoneType = None +div_issues.tree- ctx: Load +div_issues.tree- keywords: list +-- +div_pulls.tree- args: list +div_pulls.tree- element: Subscript +div_pulls.tree- value: Name +div_pulls.tree- id: str = s +div_pulls.tree- ctx: Load +div_pulls.tree: slice: Slice +div_pulls.tree- lower: Constant +div_pulls.tree- value: int = 2 +div_pulls.tree- kind: NoneType = None +div_pulls.tree- upper: Constant +div_pulls.tree- value: int = 3 +-- +div_pulls.tree- args: list +div_pulls.tree- element: Subscript +div_pulls.tree- value: Name +div_pulls.tree- id: str = s +div_pulls.tree- ctx: Load +div_pulls.tree: slice: Slice +div_pulls.tree- lower: NoneType = None +div_pulls.tree- upper: Constant +div_pulls.tree- value: int = 3 +div_pulls.tree- kind: NoneType = None +div_pulls.tree- step: NoneType = None +-- +div_pulls.tree- args: list +div_pulls.tree- element: Subscript +div_pulls.tree- value: Name +div_pulls.tree- id: str = s +div_pulls.tree- ctx: Load +div_pulls.tree: slice: Slice +div_pulls.tree- lower: Constant +div_pulls.tree- value: int = 2 +div_pulls.tree- kind: NoneType = None +div_pulls.tree- upper: NoneType = None +div_pulls.tree- step: NoneType = None +-- +div_pulls.tree- args: list +div_pulls.tree- element: Subscript +div_pulls.tree- value: Name +div_pulls.tree- id: str = s +div_pulls.tree- ctx: Load +div_pulls.tree: slice: Slice +div_pulls.tree- lower: NoneType = None +div_pulls.tree- upper: NoneType = None +div_pulls.tree- step: Constant +div_pulls.tree- value: int = 2 +div_pulls.tree- kind: NoneType = None +-- +extended_slices.tree- targets: list +extended_slices.tree- element: Subscript +extended_slices.tree- value: Name +extended_slices.tree- id: str = a +extended_slices.tree- ctx: Load +extended_slices.tree: slice: ExtSlice +extended_slices.tree- dims: list +extended_slices.tree- element: Slice +extended_slices.tree- lower: Constant +extended_slices.tree- value: int = 1 +extended_slices.tree- kind: NoneType = None +-- +extended_slices.tree- ctx: Store +extended_slices.tree- value: Subscript +extended_slices.tree- value: Name +extended_slices.tree- id: str = b +extended_slices.tree- ctx: Load +extended_slices.tree: slice: Slice +extended_slices.tree- lower: Constant +extended_slices.tree- value: int = 7 +extended_slices.tree- kind: NoneType = None +extended_slices.tree- upper: Constant +extended_slices.tree- value: int = 8 +-- +extended_slices.tree- targets: list +extended_slices.tree- element: Subscript +extended_slices.tree- value: Name +extended_slices.tree- id: str = c +extended_slices.tree- ctx: Load +extended_slices.tree: slice: Slice +extended_slices.tree- lower: Constant +extended_slices.tree- value: int = 1 +extended_slices.tree- kind: NoneType = None +extended_slices.tree- upper: Constant +extended_slices.tree- value: int = 2 +-- +extended_slices.tree- ctx: Store +extended_slices.tree- value: Subscript +extended_slices.tree- value: Name +extended_slices.tree- id: str = d +extended_slices.tree- ctx: Load +extended_slices.tree: slice: ExtSlice +extended_slices.tree- dims: list +extended_slices.tree- element: Slice +extended_slices.tree- lower: Constant +extended_slices.tree- value: int = 4 +extended_slices.tree- kind: NoneType = None +-- +extended_slices.tree- targets: list +extended_slices.tree- element: Subscript +extended_slices.tree- value: Name +extended_slices.tree- id: str = e +extended_slices.tree- ctx: Load +extended_slices.tree: slice: ExtSlice +extended_slices.tree- dims: list +extended_slices.tree- element: Index +extended_slices.tree- value: Constant +extended_slices.tree- value: int = 1 +extended_slices.tree- kind: NoneType = None +-- +extended_slices.tree- ctx: Store +extended_slices.tree- value: Subscript +extended_slices.tree- value: Name +extended_slices.tree- id: str = f +extended_slices.tree- ctx: Load +extended_slices.tree: slice: ExtSlice +extended_slices.tree- dims: list +extended_slices.tree- element: Index +extended_slices.tree- value: Constant +extended_slices.tree- value: int = 4 +extended_slices.tree- kind: NoneType = None +-- +extended_slices.tree- targets: list +extended_slices.tree- element: Subscript +extended_slices.tree- value: Name +extended_slices.tree- id: str = g +extended_slices.tree- ctx: Load +extended_slices.tree: slice: Index +extended_slices.tree- value: Tuple +extended_slices.tree- elts: list +extended_slices.tree- element: Constant +extended_slices.tree- value: int = 1 +extended_slices.tree- kind: NoneType = None +-- +extended_slices.tree- ctx: Store +extended_slices.tree- value: Subscript +extended_slices.tree- value: Name +extended_slices.tree- id: str = h +extended_slices.tree- ctx: Load +extended_slices.tree: slice: Index +extended_slices.tree- value: Tuple +extended_slices.tree- elts: list +extended_slices.tree- element: Constant +extended_slices.tree- value: int = 1 +extended_slices.tree- kind: NoneType = None +-- +extended_slices.tree- targets: list +extended_slices.tree- element: Subscript +extended_slices.tree- value: Name +extended_slices.tree- id: str = i +extended_slices.tree- ctx: Load +extended_slices.tree: slice: Index +extended_slices.tree- value: Constant +extended_slices.tree- value: int = 1 +extended_slices.tree- kind: NoneType = None +extended_slices.tree- ctx: Store +extended_slices.tree- value: Subscript +extended_slices.tree- value: Name +extended_slices.tree- id: str = j +extended_slices.tree- ctx: Load +extended_slices.tree: slice: Index +extended_slices.tree- value: Constant +extended_slices.tree- value: int = 1 +extended_slices.tree- kind: NoneType = None +extended_slices.tree- ctx: Load +extended_slices.tree- type_comment: NoneType = None +-- +extended_slices.tree- targets: list +extended_slices.tree- element: Subscript +extended_slices.tree- value: Name +extended_slices.tree- id: str = k +extended_slices.tree- ctx: Load +extended_slices.tree: slice: Slice +extended_slices.tree- lower: Constant +extended_slices.tree- value: int = 1 +extended_slices.tree- kind: NoneType = None +extended_slices.tree- upper: Constant +extended_slices.tree- value: int = 2 +-- +extended_slices.tree- ctx: Store +extended_slices.tree- value: Subscript +extended_slices.tree- value: Name +extended_slices.tree- id: str = l +extended_slices.tree- ctx: Load +extended_slices.tree: slice: Slice +extended_slices.tree- lower: Constant +extended_slices.tree- value: int = 1 +extended_slices.tree- kind: NoneType = None +extended_slices.tree- upper: Constant +extended_slices.tree- value: int = 2 +-- +fstrings.tree- ctx: Load +fstrings.tree- element: Subscript +fstrings.tree- value: Name +fstrings.tree- id: str = aDict +fstrings.tree- ctx: Load +fstrings.tree: slice: Index +fstrings.tree- value: Constant +fstrings.tree- value: str = one +fstrings.tree- kind: NoneType = None +fstrings.tree- ctx: Load +fstrings.tree- keywords: list +-- +fstrings.tree- element: FormattedValue +fstrings.tree- value: Subscript +fstrings.tree- value: Name +fstrings.tree- id: str = aDict +fstrings.tree- ctx: Load +fstrings.tree: slice: Index +fstrings.tree- value: Constant +fstrings.tree- value: str = one +fstrings.tree- kind: NoneType = None +fstrings.tree- ctx: Load +fstrings.tree- conversion: int = -1 +-- +fstrings.tree- element: FormattedValue +fstrings.tree- value: Subscript +fstrings.tree- value: Name +fstrings.tree- id: str = anArray +fstrings.tree- ctx: Load +fstrings.tree: slice: Slice +fstrings.tree- lower: Constant +fstrings.tree- value: int = 1 +fstrings.tree- kind: NoneType = None +fstrings.tree- upper: Constant +fstrings.tree- value: int = 4 +-- +fstrings.tree- element: FormattedValue +fstrings.tree- value: Subscript +fstrings.tree- value: Name +fstrings.tree- id: str = anArray +fstrings.tree- ctx: Load +fstrings.tree: slice: Index +fstrings.tree- value: Constant +fstrings.tree- value: int = 5 +fstrings.tree- kind: NoneType = None +fstrings.tree- ctx: Load +fstrings.tree- conversion: int = -1 +-- +globals_function.sub.tree- func: Name +globals_function.sub.tree- id: str = globals +globals_function.sub.tree- ctx: Load +globals_function.sub.tree- args: list +globals_function.sub.tree- keywords: list +globals_function.sub.tree: slice: Index +globals_function.sub.tree- value: Name +globals_function.sub.tree- id: str = name +globals_function.sub.tree- ctx: Load +globals_function.sub.tree- ctx: Store +globals_function.sub.tree- value: Call +-- +globals_function.sub.tree- func: Name +globals_function.sub.tree- id: str = globals +globals_function.sub.tree- ctx: Load +globals_function.sub.tree- args: list +globals_function.sub.tree- keywords: list +globals_function.sub.tree: slice: Index +globals_function.sub.tree- value: Name +globals_function.sub.tree- id: str = name +globals_function.sub.tree- ctx: Load +globals_function.sub.tree- ctx: Store +globals_function.sub.tree- value: Call +-- +globals_function.sub.tree- func: Name +globals_function.sub.tree- id: str = globals +globals_function.sub.tree- ctx: Load +globals_function.sub.tree- args: list +globals_function.sub.tree- keywords: list +globals_function.sub.tree: slice: Index +globals_function.sub.tree- value: Name +globals_function.sub.tree- id: str = name +globals_function.sub.tree- ctx: Load +globals_function.sub.tree- ctx: Load +globals_function.sub.tree- generators: list +-- +globals_function.tree- func: Name +globals_function.tree- id: str = globals +globals_function.tree- ctx: Load +globals_function.tree- args: list +globals_function.tree- keywords: list +globals_function.tree: slice: Index +globals_function.tree- value: Name +globals_function.tree- id: str = name +globals_function.tree- ctx: Load +globals_function.tree- ctx: Store +globals_function.tree- value: Call +-- +globals_function.tree- func: Name +globals_function.tree- id: str = globals +globals_function.tree- ctx: Load +globals_function.tree- args: list +globals_function.tree- keywords: list +globals_function.tree: slice: Index +globals_function.tree- value: Name +globals_function.tree- id: str = name +globals_function.tree- ctx: Load +globals_function.tree- ctx: Store +globals_function.tree- value: Call +-- +globals_function.tree- func: Name +globals_function.tree- id: str = globals +globals_function.tree- ctx: Load +globals_function.tree- args: list +globals_function.tree- keywords: list +globals_function.tree: slice: Index +globals_function.tree- value: Name +globals_function.tree- id: str = name +globals_function.tree- ctx: Load +globals_function.tree- ctx: Load +globals_function.tree- generators: list +-- +indices_and_slices.tree- args: list +indices_and_slices.tree- element: Subscript +indices_and_slices.tree- value: Name +indices_and_slices.tree- id: str = all +indices_and_slices.tree- ctx: Load +indices_and_slices.tree: slice: Slice +indices_and_slices.tree- lower: Constant +indices_and_slices.tree- value: int = 8 +indices_and_slices.tree- kind: NoneType = None +indices_and_slices.tree- upper: Constant +indices_and_slices.tree- value: int = 24 +-- +indices_and_slices.tree- args: list +indices_and_slices.tree- element: Subscript +indices_and_slices.tree- value: Name +indices_and_slices.tree- id: str = all +indices_and_slices.tree- ctx: Load +indices_and_slices.tree: slice: Slice +indices_and_slices.tree- lower: Constant +indices_and_slices.tree- value: int = 8 +indices_and_slices.tree- kind: NoneType = None +indices_and_slices.tree- upper: Constant +indices_and_slices.tree- value: int = 24 +-- +indices_and_slices.tree- targets: list +indices_and_slices.tree- element: Subscript +indices_and_slices.tree- value: Name +indices_and_slices.tree- id: str = aList +indices_and_slices.tree- ctx: Load +indices_and_slices.tree: slice: Slice +indices_and_slices.tree- lower: Constant +indices_and_slices.tree- value: int = 4 +indices_and_slices.tree- kind: NoneType = None +indices_and_slices.tree- upper: Constant +indices_and_slices.tree- value: int = 4 +-- +indices_and_slices.tree- targets: list +indices_and_slices.tree- element: Subscript +indices_and_slices.tree- value: Name +indices_and_slices.tree- id: str = aList +indices_and_slices.tree- ctx: Load +indices_and_slices.tree: slice: Slice +indices_and_slices.tree- lower: Constant +indices_and_slices.tree- value: int = 2 +indices_and_slices.tree- kind: NoneType = None +indices_and_slices.tree- upper: Constant +indices_and_slices.tree- value: int = 2 +-- +indices_and_slices.tree- targets: list +indices_and_slices.tree- element: Subscript +indices_and_slices.tree- value: Name +indices_and_slices.tree- id: str = aList +indices_and_slices.tree- ctx: Load +indices_and_slices.tree: slice: Slice +indices_and_slices.tree- lower: Constant +indices_and_slices.tree- value: int = 0 +indices_and_slices.tree- kind: NoneType = None +indices_and_slices.tree- upper: Constant +indices_and_slices.tree- value: int = 0 +-- +indices_and_slices.tree- targets: list +indices_and_slices.tree- element: Subscript +indices_and_slices.tree- value: Name +indices_and_slices.tree- id: str = aList +indices_and_slices.tree- ctx: Load +indices_and_slices.tree: slice: Slice +indices_and_slices.tree- lower: NoneType = None +indices_and_slices.tree- upper: NoneType = None +indices_and_slices.tree- step: Constant +indices_and_slices.tree- value: int = 2 +indices_and_slices.tree- kind: NoneType = None +-- +iterators_and_generators.tree- ctx: Load +iterators_and_generators.tree- attr: str = iterable +iterators_and_generators.tree- ctx: Load +iterators_and_generators.tree- attr: str = aList +iterators_and_generators.tree- ctx: Load +iterators_and_generators.tree: slice: Index +iterators_and_generators.tree- value: Attribute +iterators_and_generators.tree- value: Name +iterators_and_generators.tree- id: str = self +iterators_and_generators.tree- ctx: Load +iterators_and_generators.tree- attr: str = index +-- +lambda_functions.tree- left: BinOp +lambda_functions.tree- left: Subscript +lambda_functions.tree- value: Name +lambda_functions.tree- id: str = args +lambda_functions.tree- ctx: Load +lambda_functions.tree: slice: Index +lambda_functions.tree- value: Constant +lambda_functions.tree- value: int = 0 +lambda_functions.tree- kind: NoneType = None +lambda_functions.tree- ctx: Load +lambda_functions.tree- op: Mult +lambda_functions.tree- right: Subscript +lambda_functions.tree- value: Name +lambda_functions.tree- id: str = args +lambda_functions.tree- ctx: Load +lambda_functions.tree: slice: Index +lambda_functions.tree- value: Constant +lambda_functions.tree- value: int = 1 +lambda_functions.tree- kind: NoneType = None +lambda_functions.tree- ctx: Load +lambda_functions.tree- op: Add +-- +metaclasses.tree- targets: list +metaclasses.tree- element: Subscript +metaclasses.tree- value: Name +metaclasses.tree- id: str = upperAttribs +metaclasses.tree- ctx: Load +metaclasses.tree: slice: Index +metaclasses.tree- value: IfExp +metaclasses.tree- test: Call +metaclasses.tree- func: Attribute +metaclasses.tree- value: Name +metaclasses.tree- id: str = attribKey +-- +metaclasses.tree- ctx: Store +metaclasses.tree- value: Subscript +metaclasses.tree- value: Name +metaclasses.tree- id: str = attribs +metaclasses.tree- ctx: Load +metaclasses.tree: slice: Index +metaclasses.tree- value: Name +metaclasses.tree- id: str = attribKey +metaclasses.tree- ctx: Load +metaclasses.tree- ctx: Load +metaclasses.tree- type_comment: NoneType = None +-- +method_and_class_decorators.tree- ctx: Store +method_and_class_decorators.tree- value: Subscript +method_and_class_decorators.tree- value: Name +method_and_class_decorators.tree- id: str = args +method_and_class_decorators.tree- ctx: Load +method_and_class_decorators.tree: slice: Index +method_and_class_decorators.tree- value: Constant +method_and_class_decorators.tree- value: int = 0 +method_and_class_decorators.tree- kind: NoneType = None +method_and_class_decorators.tree- ctx: Load +method_and_class_decorators.tree- type_comment: NoneType = None +-- +method_and_class_decorators.tree- targets: list +method_and_class_decorators.tree- element: Subscript +method_and_class_decorators.tree- value: Name +method_and_class_decorators.tree- id: str = saved +method_and_class_decorators.tree- ctx: Load +method_and_class_decorators.tree: slice: Index +method_and_class_decorators.tree- value: Name +method_and_class_decorators.tree- id: str = k +method_and_class_decorators.tree- ctx: Load +method_and_class_decorators.tree- ctx: Store +method_and_class_decorators.tree- value: Call +-- +module_builtin.tree- args: list +module_builtin.tree- element: Subscript +module_builtin.tree- value: Constant +module_builtin.tree- value: str = e´ +module_builtin.tree- kind: NoneType = None +module_builtin.tree: slice: Index +module_builtin.tree- value: Constant +module_builtin.tree- value: int = 0 +module_builtin.tree- kind: NoneType = None +module_builtin.tree- ctx: Load +module_builtin.tree- keywords: list +-- +module_cmath.tree- args: list +module_cmath.tree- element: Subscript +module_cmath.tree- value: Name +module_cmath.tree- id: str = aPolar +module_cmath.tree- ctx: Load +module_cmath.tree: slice: Index +module_cmath.tree- value: Constant +module_cmath.tree- value: int = 0 +module_cmath.tree- kind: NoneType = None +module_cmath.tree- ctx: Load +module_cmath.tree- element: Name +-- +module_cmath.tree- keywords: list +module_cmath.tree- element: Subscript +module_cmath.tree- value: Name +module_cmath.tree- id: str = aPolar +module_cmath.tree- ctx: Load +module_cmath.tree: slice: Index +module_cmath.tree- value: Constant +module_cmath.tree- value: int = 1 +module_cmath.tree- kind: NoneType = None +module_cmath.tree- ctx: Load +module_cmath.tree- keywords: list +-- +module_itertools.tree- ctx: Load +module_itertools.tree- attr: str = check +module_itertools.tree- ctx: Load +module_itertools.tree- args: list +module_itertools.tree- element: Constant +module_itertools.tree: value: str = islice count +module_itertools.tree- kind: NoneType = None +module_itertools.tree- element: Call +module_itertools.tree- func: Name +module_itertools.tree- id: str = list +module_itertools.tree- ctx: Load +module_itertools.tree- args: list +module_itertools.tree- element: Call +module_itertools.tree- func: Name +module_itertools.tree: id: str = islice +module_itertools.tree- ctx: Load +module_itertools.tree- args: list +module_itertools.tree- element: Call +module_itertools.tree- func: Name +module_itertools.tree- id: str = count +-- +module_itertools.tree- ctx: Load +module_itertools.tree- attr: str = check +module_itertools.tree- ctx: Load +module_itertools.tree- args: list +module_itertools.tree- element: Constant +module_itertools.tree: value: str = islice cycle +module_itertools.tree- kind: NoneType = None +module_itertools.tree- element: Call +module_itertools.tree- func: Name +module_itertools.tree- id: str = list +module_itertools.tree- ctx: Load +module_itertools.tree- args: list +module_itertools.tree- element: Call +module_itertools.tree- func: Name +module_itertools.tree: id: str = islice +module_itertools.tree- ctx: Load +module_itertools.tree- args: list +module_itertools.tree- element: Call +module_itertools.tree- func: Name +module_itertools.tree- id: str = cycle +-- +module_itertools.tree- ctx: Load +module_itertools.tree- attr: str = check +module_itertools.tree- ctx: Load +module_itertools.tree- args: list +module_itertools.tree- element: Constant +module_itertools.tree: value: str = islice repeat +module_itertools.tree- kind: NoneType = None +module_itertools.tree- element: Call +module_itertools.tree- func: Name +module_itertools.tree- id: str = list +module_itertools.tree- ctx: Load +module_itertools.tree- args: list +module_itertools.tree- element: Call +module_itertools.tree- func: Name +module_itertools.tree: id: str = islice +module_itertools.tree- ctx: Load +module_itertools.tree- args: list +module_itertools.tree- element: Call +module_itertools.tree- func: Name +module_itertools.tree- id: str = repeat +-- +module_itertools.tree- defaults: list +module_itertools.tree- body: Subscript +module_itertools.tree- value: Name +module_itertools.tree- id: str = x +module_itertools.tree- ctx: Load +module_itertools.tree: slice: Index +module_itertools.tree- value: Constant +module_itertools.tree- value: int = 0 +module_itertools.tree- kind: NoneType = None +module_itertools.tree- ctx: Load +module_itertools.tree- keywords: list +-- +module_itertools.tree- args: list +module_itertools.tree- element: Subscript +module_itertools.tree- value: Name +module_itertools.tree- id: str = thing +module_itertools.tree- ctx: Load +module_itertools.tree: slice: Index +module_itertools.tree- value: Constant +module_itertools.tree- value: int = 1 +module_itertools.tree- kind: NoneType = None +module_itertools.tree- ctx: Load +module_itertools.tree- element: Name +-- +module_itertools.tree- ctx: Load +module_itertools.tree- attr: str = check +module_itertools.tree- ctx: Load +module_itertools.tree- args: list +module_itertools.tree- element: Constant +module_itertools.tree: value: str = islice +module_itertools.tree- kind: NoneType = None +module_itertools.tree- element: Call +module_itertools.tree- func: Name +module_itertools.tree- id: str = list +module_itertools.tree- ctx: Load +module_itertools.tree- args: list +module_itertools.tree- element: Call +module_itertools.tree- func: Name +module_itertools.tree: id: str = islice +module_itertools.tree- ctx: Load +module_itertools.tree- args: list +module_itertools.tree- element: List +module_itertools.tree- elts: list +module_itertools.tree- element: Constant +-- +module_itertools.tree- id: str = tee +module_itertools.tree- ctx: Load +module_itertools.tree- args: list +module_itertools.tree- element: Call +module_itertools.tree- func: Name +module_itertools.tree: id: str = islice +module_itertools.tree- ctx: Load +module_itertools.tree- args: list +module_itertools.tree- element: Call +module_itertools.tree- func: Name +module_itertools.tree- id: str = count +-- +module_itertools.tree- id: str = combinations +module_itertools.tree- ctx: Load +module_itertools.tree- args: list +module_itertools.tree- element: Call +module_itertools.tree- func: Name +module_itertools.tree: id: str = islice +module_itertools.tree- ctx: Load +module_itertools.tree- args: list +module_itertools.tree- element: Call +module_itertools.tree- func: Name +module_itertools.tree- id: str = count +-- +module_itertools.tree- id: str = combinations_with_replacement +module_itertools.tree- ctx: Load +module_itertools.tree- args: list +module_itertools.tree- element: Call +module_itertools.tree- func: Name +module_itertools.tree: id: str = islice +module_itertools.tree- ctx: Load +module_itertools.tree- args: list +module_itertools.tree- element: Call +module_itertools.tree- func: Name +module_itertools.tree- id: str = count +-- +module_math.tree- args: list +module_math.tree- element: Name +module_math.tree- id: str = nr +module_math.tree- ctx: Load +module_math.tree- keywords: list +module_math.tree: slice: Slice +module_math.tree- lower: NoneType = None +module_math.tree- upper: Constant +module_math.tree- value: int = 15 +module_math.tree- kind: NoneType = None +module_math.tree- step: NoneType = None +-- +operator_overloading.tree- value: Name +operator_overloading.tree- id: str = result +operator_overloading.tree- ctx: Load +operator_overloading.tree- attr: str = _ +operator_overloading.tree- ctx: Load +operator_overloading.tree: slice: Index +operator_overloading.tree- value: Name +operator_overloading.tree- id: str = iTargetRow +operator_overloading.tree- ctx: Load +operator_overloading.tree- ctx: Load +operator_overloading.tree: slice: Index +operator_overloading.tree- value: Name +operator_overloading.tree- id: str = iTargetCol +operator_overloading.tree- ctx: Load +operator_overloading.tree- ctx: Store +operator_overloading.tree- op: Add +-- +operator_overloading.tree- value: Name +operator_overloading.tree- id: str = self +operator_overloading.tree- ctx: Load +operator_overloading.tree- attr: str = _ +operator_overloading.tree- ctx: Load +operator_overloading.tree: slice: Index +operator_overloading.tree- value: Name +operator_overloading.tree- id: str = iTargetRow +operator_overloading.tree- ctx: Load +operator_overloading.tree- ctx: Load +operator_overloading.tree: slice: Index +operator_overloading.tree- value: Name +operator_overloading.tree- id: str = iTerm +operator_overloading.tree- ctx: Load +operator_overloading.tree- ctx: Load +operator_overloading.tree- op: Mult +-- +operator_overloading.tree- value: Name +operator_overloading.tree- id: str = other +operator_overloading.tree- ctx: Load +operator_overloading.tree- attr: str = _ +operator_overloading.tree- ctx: Load +operator_overloading.tree: slice: Index +operator_overloading.tree- value: Name +operator_overloading.tree- id: str = iTerm +operator_overloading.tree- ctx: Load +operator_overloading.tree- ctx: Load +operator_overloading.tree: slice: Index +operator_overloading.tree- value: Name +operator_overloading.tree- id: str = iTargetCol +operator_overloading.tree- ctx: Load +operator_overloading.tree- ctx: Load +operator_overloading.tree- orelse: list +-- +operator_overloading.tree- value: Name +operator_overloading.tree- id: str = result +operator_overloading.tree- ctx: Load +operator_overloading.tree- attr: str = _ +operator_overloading.tree- ctx: Load +operator_overloading.tree: slice: Index +operator_overloading.tree- value: Name +operator_overloading.tree- id: str = iRow +operator_overloading.tree- ctx: Load +operator_overloading.tree- ctx: Load +operator_overloading.tree: slice: Index +operator_overloading.tree- value: Name +operator_overloading.tree- id: str = iCol +operator_overloading.tree- ctx: Load +operator_overloading.tree- ctx: Store +operator_overloading.tree- value: BinOp +-- +operator_overloading.tree- value: Name +operator_overloading.tree- id: str = self +operator_overloading.tree- ctx: Load +operator_overloading.tree- attr: str = _ +operator_overloading.tree- ctx: Load +operator_overloading.tree: slice: Index +operator_overloading.tree- value: Name +operator_overloading.tree- id: str = iRow +operator_overloading.tree- ctx: Load +operator_overloading.tree- ctx: Load +operator_overloading.tree: slice: Index +operator_overloading.tree- value: Name +operator_overloading.tree- id: str = iCol +operator_overloading.tree- ctx: Load +operator_overloading.tree- ctx: Load +operator_overloading.tree- op: Mult +-- +operator_overloading.tree- value: Name +operator_overloading.tree- id: str = other +operator_overloading.tree- ctx: Load +operator_overloading.tree- attr: str = _ +operator_overloading.tree- ctx: Load +operator_overloading.tree: slice: Index +operator_overloading.tree- value: Name +operator_overloading.tree- id: str = iRow +operator_overloading.tree- ctx: Load +operator_overloading.tree- ctx: Load +operator_overloading.tree: slice: Index +operator_overloading.tree- value: Name +operator_overloading.tree- id: str = iCol +operator_overloading.tree- ctx: Load +operator_overloading.tree- ctx: Load +operator_overloading.tree- type_comment: NoneType = None +-- +operator_overloading.tree- value: Name +operator_overloading.tree- id: str = result +operator_overloading.tree- ctx: Load +operator_overloading.tree- attr: str = _ +operator_overloading.tree- ctx: Load +operator_overloading.tree: slice: Index +operator_overloading.tree- value: Name +operator_overloading.tree- id: str = iRow +operator_overloading.tree- ctx: Load +operator_overloading.tree- ctx: Load +operator_overloading.tree: slice: Index +operator_overloading.tree- value: Name +operator_overloading.tree- id: str = iCol +operator_overloading.tree- ctx: Load +operator_overloading.tree- ctx: Store +operator_overloading.tree- value: BinOp +-- +operator_overloading.tree- value: Name +operator_overloading.tree- id: str = self +operator_overloading.tree- ctx: Load +operator_overloading.tree- attr: str = _ +operator_overloading.tree- ctx: Load +operator_overloading.tree: slice: Index +operator_overloading.tree- value: Name +operator_overloading.tree- id: str = iRow +operator_overloading.tree- ctx: Load +operator_overloading.tree- ctx: Load +operator_overloading.tree: slice: Index +operator_overloading.tree- value: Name +operator_overloading.tree- id: str = iCol +operator_overloading.tree- ctx: Load +operator_overloading.tree- ctx: Load +operator_overloading.tree- type_comment: NoneType = None +-- +operator_overloading.tree- value: Name +operator_overloading.tree- id: str = result +operator_overloading.tree- ctx: Load +operator_overloading.tree- attr: str = _ +operator_overloading.tree- ctx: Load +operator_overloading.tree: slice: Index +operator_overloading.tree- value: Name +operator_overloading.tree- id: str = iRow +operator_overloading.tree- ctx: Load +operator_overloading.tree- ctx: Load +operator_overloading.tree: slice: Index +operator_overloading.tree- value: Name +operator_overloading.tree- id: str = iCol +operator_overloading.tree- ctx: Load +operator_overloading.tree- ctx: Store +operator_overloading.tree- value: BinOp +-- +operator_overloading.tree- value: Name +operator_overloading.tree- id: str = self +operator_overloading.tree- ctx: Load +operator_overloading.tree- attr: str = _ +operator_overloading.tree- ctx: Load +operator_overloading.tree: slice: Index +operator_overloading.tree- value: Name +operator_overloading.tree- id: str = iRow +operator_overloading.tree- ctx: Load +operator_overloading.tree- ctx: Load +operator_overloading.tree: slice: Index +operator_overloading.tree- value: Name +operator_overloading.tree- id: str = iCol +operator_overloading.tree- ctx: Load +operator_overloading.tree- ctx: Load +operator_overloading.tree- op: Add +-- +operator_overloading.tree- value: Name +operator_overloading.tree- id: str = other +operator_overloading.tree- ctx: Load +operator_overloading.tree- attr: str = _ +operator_overloading.tree- ctx: Load +operator_overloading.tree: slice: Index +operator_overloading.tree- value: Name +operator_overloading.tree- id: str = iRow +operator_overloading.tree- ctx: Load +operator_overloading.tree- ctx: Load +operator_overloading.tree: slice: Index +operator_overloading.tree- value: Name +operator_overloading.tree- id: str = iCol +operator_overloading.tree- ctx: Load +operator_overloading.tree- ctx: Load +operator_overloading.tree- type_comment: NoneType = None +-- +operator_overloading.tree- value: Name +operator_overloading.tree- id: str = self +operator_overloading.tree- ctx: Load +operator_overloading.tree- attr: str = _ +operator_overloading.tree- ctx: Load +operator_overloading.tree: slice: Index +operator_overloading.tree- value: Name +operator_overloading.tree- id: str = index +operator_overloading.tree- ctx: Load +operator_overloading.tree- ctx: Load +operator_overloading.tree- decorator_list: list +-- +operator_overloading.tree- value: Name +operator_overloading.tree- id: str = self +operator_overloading.tree- ctx: Load +operator_overloading.tree- attr: str = _ +operator_overloading.tree- ctx: Load +operator_overloading.tree: slice: Index +operator_overloading.tree- value: Name +operator_overloading.tree- id: str = index +operator_overloading.tree- ctx: Load +operator_overloading.tree- ctx: Store +operator_overloading.tree- value: Name +-- +operator_overloading.tree- element: Subscript +operator_overloading.tree- value: Subscript +operator_overloading.tree- value: Name +operator_overloading.tree- id: str = m1 +operator_overloading.tree- ctx: Load +operator_overloading.tree: slice: Index +operator_overloading.tree- value: Constant +operator_overloading.tree- value: int = 1 +operator_overloading.tree- kind: NoneType = None +operator_overloading.tree- ctx: Load +operator_overloading.tree: slice: Index +operator_overloading.tree- value: Constant +operator_overloading.tree- value: int = 2 +operator_overloading.tree- kind: NoneType = None +operator_overloading.tree- ctx: Store +operator_overloading.tree- value: Subscript +operator_overloading.tree- value: Subscript +operator_overloading.tree- value: Name +operator_overloading.tree- id: str = m0 +operator_overloading.tree- ctx: Load +operator_overloading.tree: slice: Index +operator_overloading.tree- value: Constant +operator_overloading.tree- value: int = 1 +operator_overloading.tree- kind: NoneType = None +operator_overloading.tree- ctx: Load +operator_overloading.tree: slice: Index +operator_overloading.tree- value: Constant +operator_overloading.tree- value: int = 2 +operator_overloading.tree- kind: NoneType = None +operator_overloading.tree- ctx: Load +operator_overloading.tree- type_comment: NoneType = None +-- +operator_overloading.tree- element: Subscript +operator_overloading.tree- value: Subscript +operator_overloading.tree- value: Name +operator_overloading.tree- id: str = m0 +operator_overloading.tree- ctx: Load +operator_overloading.tree: slice: Index +operator_overloading.tree- value: Constant +operator_overloading.tree- value: int = 1 +operator_overloading.tree- kind: NoneType = None +operator_overloading.tree- ctx: Load +operator_overloading.tree: slice: Index +operator_overloading.tree- value: Constant +operator_overloading.tree- value: int = 1 +operator_overloading.tree- kind: NoneType = None +operator_overloading.tree- ctx: Load +operator_overloading.tree- element: Subscript +operator_overloading.tree- value: Subscript +operator_overloading.tree- value: Name +operator_overloading.tree- id: str = m0 +operator_overloading.tree- ctx: Load +operator_overloading.tree: slice: Index +operator_overloading.tree- value: Constant +operator_overloading.tree- value: int = 1 +operator_overloading.tree- kind: NoneType = None +operator_overloading.tree- ctx: Load +operator_overloading.tree: slice: Index +operator_overloading.tree- value: Constant +operator_overloading.tree- value: int = 2 +operator_overloading.tree- kind: NoneType = None +operator_overloading.tree- ctx: Load +operator_overloading.tree- element: Subscript +operator_overloading.tree- value: Subscript +operator_overloading.tree- value: Name +operator_overloading.tree- id: str = m1 +operator_overloading.tree- ctx: Load +operator_overloading.tree: slice: Index +operator_overloading.tree- value: Constant +operator_overloading.tree- value: int = 1 +operator_overloading.tree- kind: NoneType = None +operator_overloading.tree- ctx: Load +operator_overloading.tree: slice: Index +operator_overloading.tree- value: Constant +operator_overloading.tree- value: int = 1 +operator_overloading.tree- kind: NoneType = None +operator_overloading.tree- ctx: Load +operator_overloading.tree- element: Subscript +operator_overloading.tree- value: Subscript +operator_overloading.tree- value: Name +operator_overloading.tree- id: str = m1 +operator_overloading.tree- ctx: Load +operator_overloading.tree: slice: Index +operator_overloading.tree- value: Constant +operator_overloading.tree- value: int = 1 +operator_overloading.tree- kind: NoneType = None +operator_overloading.tree- ctx: Load +operator_overloading.tree: slice: Index +operator_overloading.tree- value: Constant +operator_overloading.tree- value: int = 2 +operator_overloading.tree- kind: NoneType = None +operator_overloading.tree- ctx: Load +operator_overloading.tree- keywords: list +-- +operator_overloading.tree- value: Name +operator_overloading.tree- id: str = a +operator_overloading.tree- ctx: Load +operator_overloading.tree- attr: str = b +operator_overloading.tree- ctx: Load +operator_overloading.tree: slice: Index +operator_overloading.tree- value: Constant +operator_overloading.tree- value: str = c +operator_overloading.tree- kind: NoneType = None +operator_overloading.tree- ctx: Store +operator_overloading.tree- value: Constant +-- +operator_overloading.tree- value: Name +operator_overloading.tree- id: str = a +operator_overloading.tree- ctx: Load +operator_overloading.tree- attr: str = b +operator_overloading.tree- ctx: Load +operator_overloading.tree: slice: Index +operator_overloading.tree- value: Constant +operator_overloading.tree- value: str = c +operator_overloading.tree- kind: NoneType = None +operator_overloading.tree- ctx: Store +operator_overloading.tree- op: Add +-- +operator_overloading.tree- value: Name +operator_overloading.tree- id: str = a +operator_overloading.tree- ctx: Load +operator_overloading.tree- attr: str = b +operator_overloading.tree- ctx: Load +operator_overloading.tree: slice: Index +operator_overloading.tree- value: Constant +operator_overloading.tree- value: str = c +operator_overloading.tree- kind: NoneType = None +operator_overloading.tree- ctx: Load +operator_overloading.tree- keywords: list +-- +org.transcrypt.autotester.html.tree- args: list +org.transcrypt.autotester.html.tree- element: Constant +org.transcrypt.autotester.html.tree- value: str = / +org.transcrypt.autotester.html.tree- kind: NoneType = None +org.transcrypt.autotester.html.tree- keywords: list +org.transcrypt.autotester.html.tree: slice: Index +org.transcrypt.autotester.html.tree- value: UnaryOp +org.transcrypt.autotester.html.tree- op: USub +org.transcrypt.autotester.html.tree- operand: Constant +org.transcrypt.autotester.html.tree- value: int = 1 +org.transcrypt.autotester.html.tree- kind: NoneType = None +-- +org.transcrypt.autotester.html.tree- element: ListComp +org.transcrypt.autotester.html.tree- elt: Subscript +org.transcrypt.autotester.html.tree- value: Name +org.transcrypt.autotester.html.tree- id: str = x +org.transcrypt.autotester.html.tree- ctx: Load +org.transcrypt.autotester.html.tree: slice: Index +org.transcrypt.autotester.html.tree- value: Constant +org.transcrypt.autotester.html.tree- value: int = 1 +org.transcrypt.autotester.html.tree- kind: NoneType = None +org.transcrypt.autotester.html.tree- ctx: Load +org.transcrypt.autotester.html.tree- generators: list +-- +org.transcrypt.autotester.html.tree- ctx: Store +org.transcrypt.autotester.html.tree- iter: Subscript +org.transcrypt.autotester.html.tree- value: Name +org.transcrypt.autotester.html.tree- id: str = refDict +org.transcrypt.autotester.html.tree- ctx: Load +org.transcrypt.autotester.html.tree: slice: Index +org.transcrypt.autotester.html.tree- value: Name +org.transcrypt.autotester.html.tree- id: str = key +org.transcrypt.autotester.html.tree- ctx: Load +org.transcrypt.autotester.html.tree- ctx: Load +org.transcrypt.autotester.html.tree- ifs: list +-- +org.transcrypt.autotester.html.tree- element: ListComp +org.transcrypt.autotester.html.tree- elt: Subscript +org.transcrypt.autotester.html.tree- value: Name +org.transcrypt.autotester.html.tree- id: str = x +org.transcrypt.autotester.html.tree- ctx: Load +org.transcrypt.autotester.html.tree: slice: Index +org.transcrypt.autotester.html.tree- value: Constant +org.transcrypt.autotester.html.tree- value: int = 0 +org.transcrypt.autotester.html.tree- kind: NoneType = None +org.transcrypt.autotester.html.tree- ctx: Load +org.transcrypt.autotester.html.tree- generators: list +-- +org.transcrypt.autotester.html.tree- ctx: Store +org.transcrypt.autotester.html.tree- iter: Subscript +org.transcrypt.autotester.html.tree- value: Name +org.transcrypt.autotester.html.tree- id: str = refDict +org.transcrypt.autotester.html.tree- ctx: Load +org.transcrypt.autotester.html.tree: slice: Index +org.transcrypt.autotester.html.tree- value: Name +org.transcrypt.autotester.html.tree- id: str = key +org.transcrypt.autotester.html.tree- ctx: Load +org.transcrypt.autotester.html.tree- ctx: Load +org.transcrypt.autotester.html.tree- ifs: list +-- +org.transcrypt.autotester.html.tree- targets: list +org.transcrypt.autotester.html.tree- element: Subscript +org.transcrypt.autotester.html.tree- value: Name +org.transcrypt.autotester.html.tree- id: str = refDict +org.transcrypt.autotester.html.tree- ctx: Load +org.transcrypt.autotester.html.tree: slice: Index +org.transcrypt.autotester.html.tree- value: Name +org.transcrypt.autotester.html.tree- id: str = keyName +org.transcrypt.autotester.html.tree- ctx: Load +org.transcrypt.autotester.html.tree- ctx: Store +org.transcrypt.autotester.html.tree- value: Call +-- +org.transcrypt.autotester.tree- ctx: Store +org.transcrypt.autotester.tree- value: Subscript +org.transcrypt.autotester.tree- value: Name +org.transcrypt.autotester.tree- id: str = frames +org.transcrypt.autotester.tree- ctx: Load +org.transcrypt.autotester.tree: slice: Index +org.transcrypt.autotester.tree- value: BinOp +org.transcrypt.autotester.tree- left: BinOp +org.transcrypt.autotester.tree- left: Name +org.transcrypt.autotester.tree- id: str = ancestor +org.transcrypt.autotester.tree- ctx: Load +-- +org.transcrypt.autotester.tree- ctx: Store +org.transcrypt.autotester.tree- value: Subscript +org.transcrypt.autotester.tree- value: Name +org.transcrypt.autotester.tree- id: str = m +org.transcrypt.autotester.tree- ctx: Load +org.transcrypt.autotester.tree: slice: Index +org.transcrypt.autotester.tree- value: Constant +org.transcrypt.autotester.tree- value: int = 4 +org.transcrypt.autotester.tree- kind: NoneType = None +org.transcrypt.autotester.tree- ctx: Load +org.transcrypt.autotester.tree- type_comment: NoneType = None +-- +org.transcrypt.autotester.tree- ctx: Store +org.transcrypt.autotester.tree- value: Subscript +org.transcrypt.autotester.tree- value: Name +org.transcrypt.autotester.tree- id: str = pathParts +org.transcrypt.autotester.tree- ctx: Load +org.transcrypt.autotester.tree: slice: Index +org.transcrypt.autotester.tree- value: BinOp +org.transcrypt.autotester.tree- left: Call +org.transcrypt.autotester.tree- func: Name +org.transcrypt.autotester.tree- id: str = len +org.transcrypt.autotester.tree- ctx: Load +-- +org.transcrypt.autotester.tree- ctx: Store +org.transcrypt.autotester.tree- value: Subscript +org.transcrypt.autotester.tree- value: Name +org.transcrypt.autotester.tree- id: str = m +org.transcrypt.autotester.tree- ctx: Load +org.transcrypt.autotester.tree: slice: Index +org.transcrypt.autotester.tree- value: Constant +org.transcrypt.autotester.tree- value: int = 5 +org.transcrypt.autotester.tree- kind: NoneType = None +org.transcrypt.autotester.tree- ctx: Load +org.transcrypt.autotester.tree- type_comment: NoneType = None +-- +org.transcrypt.autotester.tree- element: Subscript +org.transcrypt.autotester.tree- value: Subscript +org.transcrypt.autotester.tree- value: Name +org.transcrypt.autotester.tree- id: str = s +org.transcrypt.autotester.tree- ctx: Load +org.transcrypt.autotester.tree: slice: Index +org.transcrypt.autotester.tree- value: Name +org.transcrypt.autotester.tree- id: str = ancestor +org.transcrypt.autotester.tree- ctx: Load +org.transcrypt.autotester.tree- ctx: Load +org.transcrypt.autotester.tree: slice: Index +org.transcrypt.autotester.tree- value: Constant +org.transcrypt.autotester.tree- value: int = 0 +org.transcrypt.autotester.tree- kind: NoneType = None +org.transcrypt.autotester.tree- ctx: Load +org.transcrypt.autotester.tree- keywords: list +-- +org.transcrypt.autotester.tree- args: list +org.transcrypt.autotester.tree- element: Subscript +org.transcrypt.autotester.tree- value: Name +org.transcrypt.autotester.tree- id: str = pathParts +org.transcrypt.autotester.tree- ctx: Load +org.transcrypt.autotester.tree: slice: Slice +org.transcrypt.autotester.tree- lower: UnaryOp +org.transcrypt.autotester.tree- op: USub +org.transcrypt.autotester.tree- operand: Constant +org.transcrypt.autotester.tree- value: int = 2 +org.transcrypt.autotester.tree- kind: NoneType = None +-- +org.transcrypt.autotester.tree- args: list +org.transcrypt.autotester.tree- element: Subscript +org.transcrypt.autotester.tree- value: Name +org.transcrypt.autotester.tree- id: str = any +org.transcrypt.autotester.tree- ctx: Load +org.transcrypt.autotester.tree: slice: Index +org.transcrypt.autotester.tree- value: Name +org.transcrypt.autotester.tree- id: str = key +org.transcrypt.autotester.tree- ctx: Load +org.transcrypt.autotester.tree- ctx: Load +org.transcrypt.autotester.tree- keywords: list +-- +org.transcrypt.autotester.tree- value: Name +org.transcrypt.autotester.tree- id: str = self +org.transcrypt.autotester.tree- ctx: Load +org.transcrypt.autotester.tree- attr: str = testDict +org.transcrypt.autotester.tree- ctx: Load +org.transcrypt.autotester.tree: slice: Index +org.transcrypt.autotester.tree- value: Attribute +org.transcrypt.autotester.tree- value: Name +org.transcrypt.autotester.tree- id: str = self +org.transcrypt.autotester.tree- ctx: Load +org.transcrypt.autotester.tree- attr: str = _currTestlet +-- +org.transcrypt.autotester.tree- value: Name +org.transcrypt.autotester.tree- id: str = self +org.transcrypt.autotester.tree- ctx: Load +org.transcrypt.autotester.tree- attr: str = refDict +org.transcrypt.autotester.tree- ctx: Load +org.transcrypt.autotester.tree: slice: Index +org.transcrypt.autotester.tree- value: Attribute +org.transcrypt.autotester.tree- value: Name +org.transcrypt.autotester.tree- id: str = self +org.transcrypt.autotester.tree- ctx: Load +org.transcrypt.autotester.tree- attr: str = _currTestlet +-- +org.transcrypt.autotester.tree- ctx: Store +org.transcrypt.autotester.tree- value: Subscript +org.transcrypt.autotester.tree- value: Name +org.transcrypt.autotester.tree- id: str = testData +org.transcrypt.autotester.tree- ctx: Load +org.transcrypt.autotester.tree: slice: Index +org.transcrypt.autotester.tree- value: Name +org.transcrypt.autotester.tree- id: str = i +org.transcrypt.autotester.tree- ctx: Load +org.transcrypt.autotester.tree- ctx: Load +org.transcrypt.autotester.tree- type_comment: NoneType = None +-- +org.transcrypt.autotester.tree- value: Name +org.transcrypt.autotester.tree- id: str = self +org.transcrypt.autotester.tree- ctx: Load +org.transcrypt.autotester.tree- attr: str = refDict +org.transcrypt.autotester.tree- ctx: Load +org.transcrypt.autotester.tree: slice: Index +org.transcrypt.autotester.tree- value: Name +org.transcrypt.autotester.tree- id: str = key +org.transcrypt.autotester.tree- ctx: Load +org.transcrypt.autotester.tree- ctx: Load +org.transcrypt.autotester.tree- type_comment: NoneType = None +-- +org.transcrypt.autotester.tree- value: Name +org.transcrypt.autotester.tree- id: str = self +org.transcrypt.autotester.tree- ctx: Load +org.transcrypt.autotester.tree- attr: str = testDict +org.transcrypt.autotester.tree- ctx: Load +org.transcrypt.autotester.tree: slice: Index +org.transcrypt.autotester.tree- value: Name +org.transcrypt.autotester.tree- id: str = key +org.transcrypt.autotester.tree- ctx: Load +org.transcrypt.autotester.tree- ctx: Load +org.transcrypt.autotester.tree- type_comment: NoneType = None +-- +org.transcrypt.autotester.tree- ctx: Store +org.transcrypt.autotester.tree- value: Subscript +org.transcrypt.autotester.tree- value: Name +org.transcrypt.autotester.tree- id: str = testData +org.transcrypt.autotester.tree- ctx: Load +org.transcrypt.autotester.tree: slice: Index +org.transcrypt.autotester.tree- value: Name +org.transcrypt.autotester.tree- id: str = i +org.transcrypt.autotester.tree- ctx: Load +org.transcrypt.autotester.tree- ctx: Load +org.transcrypt.autotester.tree- type_comment: NoneType = None +-- +org.transcrypt.autotester.tree- value: Name +org.transcrypt.autotester.tree- id: str = self +org.transcrypt.autotester.tree- ctx: Load +org.transcrypt.autotester.tree- attr: str = testDict +org.transcrypt.autotester.tree- ctx: Load +org.transcrypt.autotester.tree: slice: Index +org.transcrypt.autotester.tree- value: Attribute +org.transcrypt.autotester.tree- value: Name +org.transcrypt.autotester.tree- id: str = self +org.transcrypt.autotester.tree- ctx: Load +org.transcrypt.autotester.tree- attr: str = _currTestlet +-- +org.transcrypt.autotester.tree- value: Name +org.transcrypt.autotester.tree- id: str = self +org.transcrypt.autotester.tree- ctx: Load +org.transcrypt.autotester.tree- attr: str = refDict +org.transcrypt.autotester.tree- ctx: Load +org.transcrypt.autotester.tree: slice: Index +org.transcrypt.autotester.tree- value: Attribute +org.transcrypt.autotester.tree- value: Name +org.transcrypt.autotester.tree- id: str = self +org.transcrypt.autotester.tree- ctx: Load +org.transcrypt.autotester.tree- attr: str = _currTestlet +-- +org.transcrypt.__runtime__.tree- value: Name +org.transcrypt.__runtime__.tree- id: str = self +org.transcrypt.__runtime__.tree- ctx: Load +org.transcrypt.__runtime__.tree- attr: str = __args__ +org.transcrypt.__runtime__.tree- ctx: Load +org.transcrypt.__runtime__.tree: slice: Index +org.transcrypt.__runtime__.tree- value: Constant +org.transcrypt.__runtime__.tree- value: int = 0 +org.transcrypt.__runtime__.tree- kind: NoneType = None +org.transcrypt.__runtime__.tree- ctx: Load +org.transcrypt.__runtime__.tree- keywords: list +-- +org.transcrypt.__runtime__.tree- value: Name +org.transcrypt.__runtime__.tree- id: str = self +org.transcrypt.__runtime__.tree- ctx: Load +org.transcrypt.__runtime__.tree- attr: str = __args__ +org.transcrypt.__runtime__.tree- ctx: Load +org.transcrypt.__runtime__.tree: slice: Index +org.transcrypt.__runtime__.tree- value: Constant +org.transcrypt.__runtime__.tree- value: int = 0 +org.transcrypt.__runtime__.tree- kind: NoneType = None +org.transcrypt.__runtime__.tree- ctx: Load +org.transcrypt.__runtime__.tree- keywords: list +-- +org.transcrypt.__runtime__.tree- args: list +org.transcrypt.__runtime__.tree- element: Name +org.transcrypt.__runtime__.tree- id: str = self +org.transcrypt.__runtime__.tree- ctx: Load +org.transcrypt.__runtime__.tree- keywords: list +org.transcrypt.__runtime__.tree: slice: Slice +org.transcrypt.__runtime__.tree- lower: Constant +org.transcrypt.__runtime__.tree- value: int = 1 +org.transcrypt.__runtime__.tree- kind: NoneType = None +org.transcrypt.__runtime__.tree- upper: UnaryOp +org.transcrypt.__runtime__.tree- op: USub +-- +org.transcrypt.__runtime__.tree- keywords: list +org.transcrypt.__runtime__.tree- element: Name +org.transcrypt.__runtime__.tree- id: str = end +org.transcrypt.__runtime__.tree- ctx: Load +org.transcrypt.__runtime__.tree- keywords: list +org.transcrypt.__runtime__.tree: slice: Slice +org.transcrypt.__runtime__.tree- lower: UnaryOp +org.transcrypt.__runtime__.tree- op: USub +org.transcrypt.__runtime__.tree- operand: Constant +org.transcrypt.__runtime__.tree- value: int = 4096 +org.transcrypt.__runtime__.tree- kind: NoneType = None +-- +org.transcrypt.__runtime__.tree- element: Constant +org.transcrypt.__runtime__.tree- value: str = +org.transcrypt.__runtime__.tree- +org.transcrypt.__runtime__.tree- kind: NoneType = None +org.transcrypt.__runtime__.tree- keywords: list +org.transcrypt.__runtime__.tree: slice: Slice +org.transcrypt.__runtime__.tree- lower: UnaryOp +org.transcrypt.__runtime__.tree- op: USub +org.transcrypt.__runtime__.tree- operand: Constant +org.transcrypt.__runtime__.tree- value: int = 8 +org.transcrypt.__runtime__.tree- kind: NoneType = None +-- +proxies.tree- value: Name +proxies.tree- id: str = self +proxies.tree- ctx: Load +proxies.tree- attr: str = __dict__ +proxies.tree- ctx: Load +proxies.tree: slice: Index +proxies.tree- value: BinOp +proxies.tree- left: Constant +proxies.tree- value: str = _ +proxies.tree- kind: NoneType = None +proxies.tree- op: Add +-- +proxies.tree- value: Name +proxies.tree- id: str = self +proxies.tree- ctx: Load +proxies.tree- attr: str = __dict__ +proxies.tree- ctx: Load +proxies.tree: slice: Index +proxies.tree- value: BinOp +proxies.tree- left: Constant +proxies.tree- value: str = _ +proxies.tree- kind: NoneType = None +proxies.tree- op: Add +-- +proxies.tree- value: Name +proxies.tree- id: str = self +proxies.tree- ctx: Load +proxies.tree- attr: str = __dict__ +proxies.tree- ctx: Load +proxies.tree: slice: Index +proxies.tree- value: BinOp +proxies.tree- left: Constant +proxies.tree- value: str = _ +proxies.tree- kind: NoneType = None +proxies.tree- op: Add +-- +proxies.tree- value: Name +proxies.tree- id: str = self +proxies.tree- ctx: Load +proxies.tree- attr: str = __dict__ +proxies.tree- ctx: Load +proxies.tree: slice: Index +proxies.tree- value: Name +proxies.tree- id: str = name +proxies.tree- ctx: Load +proxies.tree- ctx: Store +proxies.tree- value: Name +-- +re.translate.tree- ctx: Store +re.translate.tree- value: Subscript +re.translate.tree- value: Name +re.translate.tree- id: str = namedGroups +re.translate.tree- ctx: Load +re.translate.tree: slice: Index +re.translate.tree- value: Name +re.translate.tree- id: str = groupRef +re.translate.tree- ctx: Load +re.translate.tree- ctx: Load +re.translate.tree- type_comment: NoneType = None +-- +re.translate.tree- ctx: Store +re.translate.tree- value: Subscript +re.translate.tree- value: Name +re.translate.tree- id: str = tokens +re.translate.tree- ctx: Load +re.translate.tree: slice: Slice +re.translate.tree- lower: NoneType = None +re.translate.tree- upper: NoneType = None +re.translate.tree- step: NoneType = None +re.translate.tree- ctx: Load +re.translate.tree- type_comment: NoneType = None +-- +re.translate.tree- ctx: Store +re.translate.tree- value: Subscript +re.translate.tree- value: Name +re.translate.tree- id: str = tokens +re.translate.tree- ctx: Load +re.translate.tree: slice: Slice +re.translate.tree- lower: NoneType = None +re.translate.tree- upper: NoneType = None +re.translate.tree- step: NoneType = None +re.translate.tree- ctx: Load +re.translate.tree- type_comment: NoneType = None +-- +re.translate.tree- value: Attribute +re.translate.tree- value: Subscript +re.translate.tree- value: Name +re.translate.tree- id: str = tokens +re.translate.tree- ctx: Load +re.translate.tree: slice: Index +re.translate.tree- value: BinOp +re.translate.tree- left: Name +re.translate.tree- id: str = conStart +re.translate.tree- ctx: Load +re.translate.tree- op: Add +-- +re.translate.tree- ctx: Store +re.translate.tree- value: Subscript +re.translate.tree- value: Name +re.translate.tree- id: str = tokens +re.translate.tree- ctx: Load +re.translate.tree: slice: Index +re.translate.tree- value: BinOp +re.translate.tree- left: Attribute +re.translate.tree- value: Name +re.translate.tree- id: str = captureGroup +re.translate.tree- ctx: Load +-- +re.translate.tree- targets: list +re.translate.tree- element: Subscript +re.translate.tree- value: Name +re.translate.tree- id: str = iff +re.translate.tree- ctx: Load +re.translate.tree: slice: Index +re.translate.tree- value: BinOp +re.translate.tree- left: Attribute +re.translate.tree- value: Name +re.translate.tree- id: str = captureGroup +re.translate.tree- ctx: Load +-- +re.translate.tree- targets: list +re.translate.tree- element: Subscript +re.translate.tree- value: Name +re.translate.tree- id: str = iff +re.translate.tree- ctx: Load +re.translate.tree: slice: Index +re.translate.tree- value: BinOp +re.translate.tree- left: Attribute +re.translate.tree- value: Name +re.translate.tree- id: str = captureGroup +re.translate.tree- ctx: Load +-- +re.translate.tree- value: Attribute +re.translate.tree- value: Subscript +re.translate.tree- value: Name +re.translate.tree- id: str = iff +re.translate.tree- ctx: Load +re.translate.tree: slice: Index +re.translate.tree- value: BinOp +re.translate.tree- left: Attribute +re.translate.tree- value: Name +re.translate.tree- id: str = captureGroup +re.translate.tree- ctx: Load +-- +re.translate.tree- value: int = 1 +re.translate.tree- kind: NoneType = None +re.translate.tree- ctx: Load +re.translate.tree- attr: str = name +re.translate.tree- ctx: Load +re.translate.tree: slice: Slice +re.translate.tree- lower: Constant +re.translate.tree- value: int = 0 +re.translate.tree- kind: NoneType = None +re.translate.tree- upper: Constant +re.translate.tree- value: int = 3 +-- +re.translate.tree- targets: list +re.translate.tree- element: Subscript +re.translate.tree- value: Name +re.translate.tree- id: str = els +re.translate.tree- ctx: Load +re.translate.tree: slice: Index +re.translate.tree- value: BinOp +re.translate.tree- left: Attribute +re.translate.tree- value: Name +re.translate.tree- id: str = captureGroup +re.translate.tree- ctx: Load +-- +re.translate.tree- left: Attribute +re.translate.tree- value: Subscript +re.translate.tree- value: Name +re.translate.tree- id: str = tokens +re.translate.tree- ctx: Load +re.translate.tree: slice: Index +re.translate.tree- value: Name +re.translate.tree- id: str = idx +re.translate.tree- ctx: Load +re.translate.tree- ctx: Load +re.translate.tree- attr: str = name +-- +re.translate.tree- targets: list +re.translate.tree- element: Subscript +re.translate.tree- value: Name +re.translate.tree- id: str = iff +re.translate.tree- ctx: Load +re.translate.tree: slice: Slice +re.translate.tree- lower: Name +re.translate.tree- id: str = idx +re.translate.tree- ctx: Load +re.translate.tree- upper: BinOp +re.translate.tree- left: Name +-- +re.translate.tree- targets: list +re.translate.tree- element: Subscript +re.translate.tree- value: Name +re.translate.tree- id: str = els +re.translate.tree- ctx: Load +re.translate.tree: slice: Slice +re.translate.tree- lower: Name +re.translate.tree- id: str = conStart +re.translate.tree- ctx: Load +re.translate.tree- upper: BinOp +re.translate.tree- left: Name +-- +re.translate.tree- targets: list +re.translate.tree- element: Subscript +re.translate.tree- value: Name +re.translate.tree- id: str = els +re.translate.tree- ctx: Load +re.translate.tree: slice: Slice +re.translate.tree- lower: Name +re.translate.tree- id: str = conStart +re.translate.tree- ctx: Load +re.translate.tree- upper: BinOp +re.translate.tree- left: Name +-- +re.translate.tree- targets: list +re.translate.tree- element: Subscript +re.translate.tree- value: Name +re.translate.tree- id: str = iff +re.translate.tree- ctx: Load +re.translate.tree: slice: Slice +re.translate.tree- lower: Name +re.translate.tree- id: str = conStart +re.translate.tree- ctx: Load +re.translate.tree- upper: BinOp +re.translate.tree- left: Name +-- +re.translate.tree- targets: list +re.translate.tree- element: Subscript +re.translate.tree- value: Name +re.translate.tree- id: str = els +re.translate.tree- ctx: Load +re.translate.tree: slice: Slice +re.translate.tree- lower: Attribute +re.translate.tree- value: Name +re.translate.tree- id: str = captureGroup +re.translate.tree- ctx: Load +re.translate.tree- attr: str = start +-- +re.translate.tree- left: Attribute +re.translate.tree- value: Subscript +re.translate.tree- value: Name +re.translate.tree- id: str = iff +re.translate.tree- ctx: Load +re.translate.tree: slice: Index +re.translate.tree- value: Name +re.translate.tree- id: str = idx +re.translate.tree- ctx: Load +re.translate.tree- ctx: Load +re.translate.tree- attr: str = name +-- +re.translate.tree- ctx: Store +re.translate.tree- value: Subscript +re.translate.tree- value: Name +re.translate.tree- id: str = tokens +re.translate.tree- ctx: Load +re.translate.tree: slice: Slice +re.translate.tree- lower: NoneType = None +re.translate.tree- upper: Name +re.translate.tree- id: str = idx +re.translate.tree- ctx: Load +re.translate.tree- step: NoneType = None +-- +re.translate.tree- args: list +re.translate.tree- element: Subscript +re.translate.tree- value: Name +re.translate.tree- id: str = tokens +re.translate.tree- ctx: Load +re.translate.tree: slice: Slice +re.translate.tree- lower: BinOp +re.translate.tree- left: Name +re.translate.tree- id: str = conEnd +re.translate.tree- ctx: Load +re.translate.tree- op: Add +-- +re.translate.tree- targets: list +re.translate.tree- element: Subscript +re.translate.tree- value: Name +re.translate.tree- id: str = iff +re.translate.tree- ctx: Load +re.translate.tree: slice: Slice +re.translate.tree- lower: Name +re.translate.tree- id: str = conStart +re.translate.tree- ctx: Load +re.translate.tree- upper: BinOp +re.translate.tree- left: Name +-- +re.translate.tree- args: list +re.translate.tree- element: Subscript +re.translate.tree- value: Name +re.translate.tree- id: str = queue +re.translate.tree- ctx: Load +re.translate.tree: slice: Index +re.translate.tree- value: Constant +re.translate.tree- value: int = 0 +re.translate.tree- kind: NoneType = None +re.translate.tree- ctx: Load +re.translate.tree- element: List +-- +re.translate.tree- ctx: Store +re.translate.tree- value: Subscript +re.translate.tree- value: Name +re.translate.tree- id: str = queue +re.translate.tree- ctx: Load +re.translate.tree: slice: Slice +re.translate.tree- lower: Constant +re.translate.tree- value: int = 1 +re.translate.tree- kind: NoneType = None +re.translate.tree- upper: NoneType = None +re.translate.tree- step: NoneType = None +-- +re.translate.tree- kind: NoneType = None +re.translate.tree- body: Subscript +re.translate.tree- value: Name +re.translate.tree- id: str = stack +re.translate.tree- ctx: Load +re.translate.tree: slice: Index +re.translate.tree- value: Name +re.translate.tree- id: str = high +re.translate.tree- ctx: Load +re.translate.tree- ctx: Load +re.translate.tree- orelse: Call +-- +re.translate.tree- kind: NoneType = None +re.translate.tree- body: Subscript +re.translate.tree- value: Name +re.translate.tree- id: str = stack +re.translate.tree- ctx: Load +re.translate.tree: slice: Index +re.translate.tree- value: BinOp +re.translate.tree- left: Name +re.translate.tree- id: str = high +re.translate.tree- ctx: Load +re.translate.tree- op: Sub +-- +re.translate.tree- targets: list +re.translate.tree- element: Subscript +re.translate.tree- value: Name +re.translate.tree- id: str = stack +re.translate.tree- ctx: Load +re.translate.tree: slice: Slice +re.translate.tree- lower: UnaryOp +re.translate.tree- op: USub +re.translate.tree- operand: Constant +re.translate.tree- value: int = 2 +re.translate.tree- kind: NoneType = None +-- +re.translate.tree- targets: list +re.translate.tree- element: Subscript +re.translate.tree- value: Name +re.translate.tree- id: str = stack +re.translate.tree- ctx: Load +re.translate.tree: slice: Slice +re.translate.tree- lower: UnaryOp +re.translate.tree- op: USub +re.translate.tree- operand: Constant +re.translate.tree- value: int = 2 +re.translate.tree- kind: NoneType = None +-- +re.translate.tree- targets: list +re.translate.tree- element: Subscript +re.translate.tree- value: Name +re.translate.tree- id: str = stack +re.translate.tree- ctx: Load +re.translate.tree: slice: Slice +re.translate.tree- lower: UnaryOp +re.translate.tree- op: USub +re.translate.tree- operand: Constant +re.translate.tree- value: int = 2 +re.translate.tree- kind: NoneType = None +-- +re.translate.tree- targets: list +re.translate.tree- element: Subscript +re.translate.tree- value: Name +re.translate.tree- id: str = stack +re.translate.tree- ctx: Load +re.translate.tree: slice: Slice +re.translate.tree- lower: UnaryOp +re.translate.tree- op: USub +re.translate.tree- operand: Constant +re.translate.tree- value: int = 2 +re.translate.tree- kind: NoneType = None +-- +re.translate.tree- ctx: Store +re.translate.tree- value: Subscript +re.translate.tree- value: Name +re.translate.tree- id: str = stack +re.translate.tree- ctx: Load +re.translate.tree: slice: Slice +re.translate.tree- lower: NoneType = None +re.translate.tree- upper: UnaryOp +re.translate.tree- op: USub +re.translate.tree- operand: Constant +re.translate.tree- value: int = 1 +-- +re.translate.tree- targets: list +re.translate.tree- element: Subscript +re.translate.tree- value: Name +re.translate.tree- id: str = stack +re.translate.tree- ctx: Load +re.translate.tree: slice: Slice +re.translate.tree- lower: UnaryOp +re.translate.tree- op: USub +re.translate.tree- operand: Constant +re.translate.tree- value: int = 2 +re.translate.tree- kind: NoneType = None +-- +re.translate.tree- targets: list +re.translate.tree- element: Subscript +re.translate.tree- value: Name +re.translate.tree- id: str = stack +re.translate.tree- ctx: Load +re.translate.tree: slice: Slice +re.translate.tree- lower: UnaryOp +re.translate.tree- op: USub +re.translate.tree- operand: Constant +re.translate.tree- value: int = 2 +re.translate.tree- kind: NoneType = None +-- +re.translate.tree- targets: list +re.translate.tree- element: Subscript +re.translate.tree- value: Name +re.translate.tree- id: str = stack +re.translate.tree- ctx: Load +re.translate.tree: slice: Slice +re.translate.tree- lower: UnaryOp +re.translate.tree- op: USub +re.translate.tree- operand: Constant +re.translate.tree- value: int = 2 +re.translate.tree- kind: NoneType = None +-- +re.translate.tree- ctx: Store +re.translate.tree- value: Subscript +re.translate.tree- value: Name +re.translate.tree- id: str = stack +re.translate.tree- ctx: Load +re.translate.tree: slice: Slice +re.translate.tree- lower: NoneType = None +re.translate.tree- upper: UnaryOp +re.translate.tree- op: USub +re.translate.tree- operand: Constant +re.translate.tree- value: int = 2 +-- +re.translate.tree- targets: list +re.translate.tree- element: Subscript +re.translate.tree- value: Name +re.translate.tree- id: str = stack +re.translate.tree- ctx: Load +re.translate.tree: slice: Slice +re.translate.tree- lower: UnaryOp +re.translate.tree- op: USub +re.translate.tree- operand: Constant +re.translate.tree- value: int = 2 +re.translate.tree- kind: NoneType = None +-- +re.translate.tree- targets: list +re.translate.tree- element: Subscript +re.translate.tree- value: Name +re.translate.tree- id: str = stack +re.translate.tree- ctx: Load +re.translate.tree: slice: Slice +re.translate.tree- lower: UnaryOp +re.translate.tree- op: USub +re.translate.tree- operand: Constant +re.translate.tree- value: int = 1 +re.translate.tree- kind: NoneType = None +-- +re.translate.tree- targets: list +re.translate.tree- element: Subscript +re.translate.tree- value: Name +re.translate.tree- id: str = stack +re.translate.tree- ctx: Load +re.translate.tree: slice: Slice +re.translate.tree- lower: UnaryOp +re.translate.tree- op: USub +re.translate.tree- operand: Constant +re.translate.tree- value: int = 2 +re.translate.tree- kind: NoneType = None +-- +re.translate.tree- targets: list +re.translate.tree- element: Subscript +re.translate.tree- value: Name +re.translate.tree- id: str = namedGroups +re.translate.tree- ctx: Load +re.translate.tree: slice: Index +re.translate.tree- value: Call +re.translate.tree- func: Attribute +re.translate.tree- value: Constant +re.translate.tree- value: str = +re.translate.tree- kind: NoneType = None +-- +re.translate.tree- targets: list +re.translate.tree- element: Subscript +re.translate.tree- value: Name +re.translate.tree- id: str = stack +re.translate.tree- ctx: Load +re.translate.tree: slice: Slice +re.translate.tree- lower: UnaryOp +re.translate.tree- op: USub +re.translate.tree- operand: Constant +re.translate.tree- value: int = 2 +re.translate.tree- kind: NoneType = None +-- +re.translate.tree- targets: list +re.translate.tree- element: Subscript +re.translate.tree- value: Name +re.translate.tree- id: str = stack +re.translate.tree- ctx: Load +re.translate.tree: slice: Slice +re.translate.tree- lower: UnaryOp +re.translate.tree- op: USub +re.translate.tree- operand: Constant +re.translate.tree- value: int = 2 +re.translate.tree- kind: NoneType = None +-- +re.translate.tree- args: list +re.translate.tree- element: Subscript +re.translate.tree- value: Name +re.translate.tree- id: str = namedGroups +re.translate.tree- ctx: Load +re.translate.tree: slice: Index +re.translate.tree- value: Subscript +re.translate.tree- value: Attribute +re.translate.tree- value: Name +re.translate.tree- id: str = s1 +re.translate.tree- ctx: Load +re.translate.tree- attr: str = paras +re.translate.tree- ctx: Load +re.translate.tree: slice: Index +re.translate.tree- value: Constant +re.translate.tree- value: int = 0 +re.translate.tree- kind: NoneType = None +re.translate.tree- ctx: Load +re.translate.tree- ctx: Load +-- +re.translate.tree- value: Name +re.translate.tree- id: str = s1 +re.translate.tree- ctx: Load +re.translate.tree- attr: str = paras +re.translate.tree- ctx: Load +re.translate.tree: slice: Index +re.translate.tree- value: Constant +re.translate.tree- value: int = 0 +re.translate.tree- kind: NoneType = None +re.translate.tree- ctx: Store +re.translate.tree- op: Add +-- +re.translate.tree- ctx: Store +re.translate.tree- value: Subscript +re.translate.tree- value: Name +re.translate.tree- id: str = stack +re.translate.tree- ctx: Load +re.translate.tree: slice: Slice +re.translate.tree- lower: NoneType = None +re.translate.tree- upper: UnaryOp +re.translate.tree- op: USub +re.translate.tree- operand: Constant +re.translate.tree- value: int = 2 +-- +re.translate.tree- ctx: Store +re.translate.tree- value: Subscript +re.translate.tree- value: Name +re.translate.tree- id: str = stack +re.translate.tree- ctx: Load +re.translate.tree: slice: Slice +re.translate.tree- lower: NoneType = None +re.translate.tree- upper: UnaryOp +re.translate.tree- op: USub +re.translate.tree- operand: Constant +re.translate.tree- value: int = 1 +-- +re.translate.tree- args: list +re.translate.tree- element: Subscript +re.translate.tree- value: Name +re.translate.tree- id: str = variants +re.translate.tree- ctx: Load +re.translate.tree: slice: Index +re.translate.tree- value: Name +re.translate.tree- id: str = i +re.translate.tree- ctx: Load +re.translate.tree- ctx: Load +re.translate.tree- keywords: list +-- +re.tree- targets: list +re.tree- element: Subscript +re.tree- value: Name +re.tree- id: str = mObj +re.tree- ctx: Load +re.tree: slice: Index +re.tree- value: Name +re.tree- id: str = index +re.tree- ctx: Load +re.tree- ctx: Store +re.tree- value: IfExp +re.tree- test: Compare +re.tree- left: Subscript +re.tree- value: Name +re.tree- id: str = mObj +re.tree- ctx: Load +re.tree: slice: Index +re.tree- value: Name +re.tree- id: str = index +re.tree- ctx: Load +re.tree- ctx: Load +re.tree- ops: list +-- +re.tree- kind: NoneType = None +re.tree- orelse: Subscript +re.tree- value: Name +re.tree- id: str = mObj +re.tree- ctx: Load +re.tree: slice: Index +re.tree- value: Name +re.tree- id: str = index +re.tree- ctx: Load +re.tree- ctx: Load +re.tree- type_comment: NoneType = None +-- +re.tree- value: Name +re.tree- id: str = self +re.tree- ctx: Load +re.tree- attr: str = _namedGroups +re.tree- ctx: Load +re.tree: slice: Index +re.tree- value: Attribute +re.tree- value: Name +re.tree- id: str = self +re.tree- ctx: Load +re.tree- attr: str = _lastindex +-- +re.tree- value: Name +re.tree- id: str = self +re.tree- ctx: Load +re.tree- attr: str = _obj +re.tree- ctx: Load +re.tree: slice: Index +re.tree- value: Name +re.tree- id: str = i +re.tree- ctx: Load +re.tree- ctx: Load +re.tree- ops: list +-- +re.tree- value: Name +re.tree- id: str = self +re.tree- ctx: Load +re.tree- attr: str = _obj +re.tree- ctx: Load +re.tree: slice: Index +re.tree- value: Subscript +re.tree- value: Attribute +re.tree- value: Name +re.tree- id: str = self +re.tree- ctx: Load +re.tree- attr: str = _namedGroups +re.tree- ctx: Load +re.tree: slice: Index +re.tree- value: Name +re.tree- id: str = index +re.tree- ctx: Load +re.tree- ctx: Load +re.tree- ctx: Load +-- +re.tree- value: Name +re.tree- id: str = self +re.tree- ctx: Load +re.tree- attr: str = _obj +re.tree- ctx: Load +re.tree: slice: Index +re.tree- value: Name +re.tree- id: str = index +re.tree- ctx: Load +re.tree- ctx: Load +re.tree- keywords: list +-- +re.tree- value: Name +re.tree- id: str = self +re.tree- ctx: Load +re.tree- attr: str = _obj +re.tree- ctx: Load +re.tree: slice: Index +re.tree- value: Constant +re.tree- value: int = 0 +re.tree- kind: NoneType = None +re.tree- ctx: Load +re.tree- keywords: list +-- +re.tree- element: Return +re.tree- value: Subscript +re.tree- value: Name +re.tree- id: str = ret +re.tree- ctx: Load +re.tree: slice: Index +re.tree- value: Constant +re.tree- value: int = 0 +re.tree- kind: NoneType = None +re.tree- ctx: Load +re.tree- orelse: list +-- +re.tree- value: Name +re.tree- id: str = self +re.tree- ctx: Load +re.tree- attr: str = _obj +re.tree- ctx: Load +re.tree: slice: Slice +re.tree- lower: Constant +re.tree- value: int = 1 +re.tree- kind: NoneType = None +re.tree- upper: NoneType = None +re.tree- step: NoneType = None +-- +re.tree- value: Name +re.tree- id: str = self +re.tree- ctx: Load +re.tree- attr: str = _obj +re.tree- ctx: Load +re.tree: slice: Index +re.tree- value: Name +re.tree- id: str = gId +re.tree- ctx: Load +re.tree- ctx: Load +re.tree- type_comment: NoneType = None +-- +re.tree- targets: list +re.tree- element: Subscript +re.tree- value: Name +re.tree- id: str = ret +re.tree- ctx: Load +re.tree: slice: Index +re.tree- value: Name +re.tree- id: str = gName +re.tree- ctx: Load +re.tree- ctx: Store +re.tree- value: IfExp +-- +re.tree- value: Name +re.tree- id: str = self +re.tree- ctx: Load +re.tree- attr: str = _namedGroups +re.tree- ctx: Load +re.tree: slice: Index +re.tree- value: Name +re.tree- id: str = group +re.tree- ctx: Load +re.tree- ctx: Load +re.tree- type_comment: NoneType = None +-- +re.tree- value: Name +re.tree- id: str = self +re.tree- ctx: Load +re.tree- attr: str = _obj +re.tree- ctx: Load +re.tree: slice: Index +re.tree- value: Name +re.tree- id: str = gId +re.tree- ctx: Load +re.tree- ctx: Load +re.tree- ops: list +-- +re.tree- value: Name +re.tree- id: str = self +re.tree- ctx: Load +re.tree- attr: str = _obj +re.tree- ctx: Load +re.tree: slice: Index +re.tree- value: Name +re.tree- id: str = gId +re.tree- ctx: Load +re.tree- ctx: Load +re.tree- keywords: list +-- +re.tree- value: Name +re.tree- id: str = self +re.tree- ctx: Load +re.tree- attr: str = _obj +re.tree- ctx: Load +re.tree: slice: Index +re.tree- value: Constant +re.tree- value: int = 0 +re.tree- kind: NoneType = None +re.tree- ctx: Load +re.tree- keywords: list +-- +re.tree- value: Name +re.tree- id: str = self +re.tree- ctx: Load +re.tree- attr: str = _namedGroups +re.tree- ctx: Load +re.tree: slice: Index +re.tree- value: Name +re.tree- id: str = group +re.tree- ctx: Load +re.tree- ctx: Load +re.tree- type_comment: NoneType = None +-- +re.tree- value: Name +re.tree- id: str = self +re.tree- ctx: Load +re.tree- attr: str = _obj +re.tree- ctx: Load +re.tree: slice: Index +re.tree- value: Constant +re.tree- value: int = 0 +re.tree- kind: NoneType = None +re.tree- ctx: Load +re.tree- keywords: list +-- +re.tree- value: Name +re.tree- id: str = self +re.tree- ctx: Load +re.tree- attr: str = _obj +re.tree- ctx: Load +re.tree: slice: Index +re.tree- value: Name +re.tree- id: str = gId +re.tree- ctx: Load +re.tree- ctx: Load +re.tree- ops: list +-- +re.tree- value: Name +re.tree- id: str = self +re.tree- ctx: Load +re.tree- attr: str = _obj +re.tree- ctx: Load +re.tree: slice: Index +re.tree- value: Name +re.tree- id: str = gId +re.tree- ctx: Load +re.tree- ctx: Load +re.tree- keywords: list +-- +re.tree- value: Name +re.tree- id: str = self +re.tree- ctx: Load +re.tree- attr: str = _obj +re.tree- ctx: Load +re.tree: slice: Index +re.tree- value: Constant +re.tree- value: int = 0 +re.tree- kind: NoneType = None +re.tree- ctx: Load +re.tree- keywords: list +-- +re.tree- element: ListComp +re.tree- elt: Subscript +re.tree- value: Name +re.tree- id: str = x +re.tree- ctx: Load +re.tree: slice: Index +re.tree- value: Constant +re.tree- value: int = 1 +re.tree- kind: NoneType = None +re.tree- ctx: Load +re.tree- generators: list +-- +re.tree- left: BinOp +re.tree- left: Subscript +re.tree- value: Name +re.tree- id: str = x +re.tree- ctx: Load +re.tree: slice: Index +re.tree- value: Constant +re.tree- value: int = 0 +re.tree- kind: NoneType = None +re.tree- ctx: Load +re.tree- op: BitAnd +-- +re.tree- kwarg: NoneType = None +re.tree- defaults: list +re.tree- body: list +re.tree- element: Expr +re.tree- value: Constant +re.tree: value: str = Given an start and endpos, slice out a target string. +re.tree- +re.tree- kind: NoneType = None +re.tree- element: Assign +re.tree- targets: list +re.tree- element: Name +-- +re.tree- ctx: Store +re.tree- value: Subscript +re.tree- value: Name +re.tree- id: str = string +re.tree- ctx: Load +re.tree: slice: Slice +re.tree- lower: Name +re.tree- id: str = pos +re.tree- ctx: Load +re.tree- upper: Name +re.tree- id: str = endPtr +-- +re.tree- ctx: Store +re.tree- value: Subscript +re.tree- value: Name +re.tree- id: str = target +re.tree- ctx: Load +re.tree: slice: Slice +re.tree- lower: NoneType = None +re.tree- upper: Name +re.tree- id: str = endpos +re.tree- ctx: Load +re.tree- step: NoneType = None +-- +re.tree- ctx: Store +re.tree- value: Subscript +re.tree- value: Name +re.tree- id: str = target +re.tree- ctx: Load +re.tree: slice: Slice +re.tree- lower: NoneType = None +re.tree- upper: Name +re.tree- id: str = endpos +re.tree- ctx: Load +re.tree- step: NoneType = None +-- +re.tree- args: list +re.tree- element: Subscript +re.tree- value: Name +re.tree- id: str = m +re.tree- ctx: Load +re.tree: slice: Index +re.tree- value: Constant +re.tree- value: int = 0 +re.tree- kind: NoneType = None +re.tree- ctx: Load +re.tree- keywords: list +-- +re.tree- args: list +re.tree- element: Subscript +re.tree- value: Name +re.tree- id: str = lastM +re.tree- ctx: Load +re.tree: slice: Index +re.tree- value: Constant +re.tree- value: int = 0 +re.tree- kind: NoneType = None +re.tree- ctx: Load +re.tree- keywords: list +-- +re.tree- ctx: Store +re.tree- value: Subscript +re.tree- value: Name +re.tree- id: str = string +re.tree- ctx: Load +re.tree: slice: Slice +re.tree- lower: Name +re.tree- id: str = start +re.tree- ctx: Load +re.tree- upper: Attribute +re.tree- value: Name +-- +re.tree- args: list +re.tree- element: Subscript +re.tree- value: Name +re.tree- id: str = m +re.tree- ctx: Load +re.tree: slice: Slice +re.tree- lower: Constant +re.tree- value: int = 1 +re.tree- kind: NoneType = None +re.tree- upper: NoneType = None +re.tree- step: NoneType = None +-- +re.tree- ctx: Store +re.tree- value: Subscript +re.tree- value: Name +re.tree- id: str = string +re.tree- ctx: Load +re.tree: slice: Slice +re.tree- lower: NoneType = None +re.tree- upper: Attribute +re.tree- value: Name +re.tree- id: str = m +re.tree- ctx: Load +-- +re.tree- args: list +re.tree- element: Subscript +re.tree- value: Name +re.tree- id: str = m +re.tree- ctx: Load +re.tree: slice: Slice +re.tree- lower: Constant +re.tree- value: int = 1 +re.tree- kind: NoneType = None +re.tree- upper: NoneType = None +re.tree- step: NoneType = None +-- +re.tree- args: list +re.tree- element: Subscript +re.tree- value: Name +re.tree- id: str = lastM +re.tree- ctx: Load +re.tree: slice: Index +re.tree- value: Constant +re.tree- value: int = 0 +re.tree- kind: NoneType = None +re.tree- ctx: Load +re.tree- keywords: list +-- +re.tree- ctx: Store +re.tree- value: Subscript +re.tree- value: Name +re.tree- id: str = string +re.tree- ctx: Load +re.tree: slice: Slice +re.tree- lower: Name +re.tree- id: str = endPos +re.tree- ctx: Load +re.tree- upper: NoneType = None +re.tree- step: NoneType = None +-- +re.tree- args: list +re.tree- element: Subscript +re.tree- value: Name +re.tree- id: str = m +re.tree- ctx: Load +re.tree: slice: Slice +re.tree- lower: Constant +re.tree- value: int = 1 +re.tree- kind: NoneType = None +re.tree- upper: NoneType = None +re.tree- step: NoneType = None +-- +re.tree- element: Return +re.tree- value: Subscript +re.tree- value: Name +re.tree- id: str = m +re.tree- ctx: Load +re.tree: slice: Index +re.tree- value: Constant +re.tree- value: int = 1 +re.tree- kind: NoneType = None +re.tree- ctx: Load +re.tree- orelse: list +re.tree- element: Return +re.tree- value: Subscript +re.tree- value: Name +re.tree- id: str = m +re.tree- ctx: Load +re.tree: slice: Index +re.tree- value: Constant +re.tree- value: int = 0 +re.tree- kind: NoneType = None +re.tree- ctx: Load +re.tree- decorator_list: list +-- +re.tree- op: Add +re.tree- value: Subscript +re.tree- value: Name +re.tree- id: str = string +re.tree- ctx: Load +re.tree: slice: Slice +re.tree- lower: Name +re.tree- id: str = lastEnd +re.tree- ctx: Load +re.tree- upper: Attribute +re.tree- value: Name +-- +re.tree- op: Add +re.tree- value: Subscript +re.tree- value: Name +re.tree- id: str = string +re.tree- ctx: Load +re.tree: slice: Slice +re.tree- lower: NoneType = None +re.tree- upper: Attribute +re.tree- value: Name +re.tree- id: str = m +re.tree- ctx: Load +-- +re.tree- op: Add +re.tree- value: Subscript +re.tree- value: Name +re.tree- id: str = string +re.tree- ctx: Load +re.tree: slice: Slice +re.tree- lower: Name +re.tree- id: str = lastEnd +re.tree- ctx: Load +re.tree- upper: Attribute +re.tree- value: Name +-- +re.tree- args: list +re.tree- element: Subscript +re.tree- value: Name +re.tree- id: str = m +re.tree- ctx: Load +re.tree: slice: Index +re.tree- value: Constant +re.tree- value: int = 0 +re.tree- kind: NoneType = None +re.tree- ctx: Load +re.tree- keywords: list +-- +re.tree- op: Add +re.tree- value: Subscript +re.tree- value: Name +re.tree- id: str = string +re.tree- ctx: Load +re.tree: slice: Slice +re.tree- lower: Name +re.tree- id: str = lastEnd +re.tree- ctx: Load +re.tree- upper: NoneType = None +re.tree- step: NoneType = None +-- +re.tree- test: Compare +re.tree- left: Subscript +re.tree- value: Name +re.tree- id: str = m +re.tree- ctx: Load +re.tree: slice: Index +re.tree- value: Constant +re.tree- value: int = 0 +re.tree- kind: NoneType = None +re.tree- ctx: Load +re.tree- ops: list +-- +re.tree- op: Add +re.tree- right: Subscript +re.tree- value: Name +re.tree- id: str = m +re.tree- ctx: Load +re.tree: slice: Index +re.tree- value: Constant +re.tree- value: int = 0 +re.tree- kind: NoneType = None +re.tree- ctx: Load +re.tree- decorator_list: list +-- +simple_and_augmented_assignment.tree- targets: list +simple_and_augmented_assignment.tree- element: Subscript +simple_and_augmented_assignment.tree- value: Name +simple_and_augmented_assignment.tree- id: str = l +simple_and_augmented_assignment.tree- ctx: Load +simple_and_augmented_assignment.tree: slice: Index +simple_and_augmented_assignment.tree- value: Constant +simple_and_augmented_assignment.tree- value: int = 1 +simple_and_augmented_assignment.tree- kind: NoneType = None +simple_and_augmented_assignment.tree- ctx: Store +simple_and_augmented_assignment.tree- value: Subscript +simple_and_augmented_assignment.tree- value: Name +simple_and_augmented_assignment.tree- id: str = l +simple_and_augmented_assignment.tree- ctx: Load +simple_and_augmented_assignment.tree: slice: Index +simple_and_augmented_assignment.tree- value: Constant +simple_and_augmented_assignment.tree- value: int = 2 +simple_and_augmented_assignment.tree- kind: NoneType = None +simple_and_augmented_assignment.tree- ctx: Load +simple_and_augmented_assignment.tree- type_comment: NoneType = None +-- +simple_and_augmented_assignment.tree- element: AugAssign +simple_and_augmented_assignment.tree- target: Subscript +simple_and_augmented_assignment.tree- value: Name +simple_and_augmented_assignment.tree- id: str = l +simple_and_augmented_assignment.tree- ctx: Load +simple_and_augmented_assignment.tree: slice: Index +simple_and_augmented_assignment.tree- value: Constant +simple_and_augmented_assignment.tree- value: int = 1 +simple_and_augmented_assignment.tree- kind: NoneType = None +simple_and_augmented_assignment.tree- ctx: Store +simple_and_augmented_assignment.tree- op: Add +simple_and_augmented_assignment.tree- value: Subscript +simple_and_augmented_assignment.tree- value: Name +simple_and_augmented_assignment.tree- id: str = l +simple_and_augmented_assignment.tree- ctx: Load +simple_and_augmented_assignment.tree: slice: Index +simple_and_augmented_assignment.tree- value: Constant +simple_and_augmented_assignment.tree- value: int = 1 +simple_and_augmented_assignment.tree- kind: NoneType = None +simple_and_augmented_assignment.tree- ctx: Load +simple_and_augmented_assignment.tree- element: Expr +-- +time.tree- value: Name +time.tree- id: str = request +time.tree- ctx: Load +time.tree- attr: str = headers +time.tree- ctx: Load +time.tree: slice: Index +time.tree- value: Constant +time.tree- value: str = accept-language +time.tree- kind: NoneType = None +time.tree- ctx: Load +time.tree- attr: str = split +-- +time.tree- args: list +time.tree- element: Constant +time.tree- value: str = , +time.tree- kind: NoneType = None +time.tree- keywords: list +time.tree: slice: Index +time.tree- value: Constant +time.tree- value: int = 0 +time.tree- kind: NoneType = None +time.tree- ctx: Load +time.tree- type_comment: NoneType = None +-- +time.tree- value: Call +time.tree- func: Attribute +time.tree- value: Name +time.tree- id: str = split +time.tree- ctx: Load +time.tree: attr: str = slice +time.tree- ctx: Load +time.tree- args: list +time.tree- element: Constant +time.tree- value: int = 0 +time.tree- kind: NoneType = None +-- +time.tree- args: list +time.tree- element: Subscript +time.tree- value: Name +time.tree- id: str = split +time.tree- ctx: Load +time.tree: slice: Slice +time.tree- lower: Name +time.tree- id: str = maxsplit +time.tree- ctx: Load +time.tree- upper: NoneType = None +time.tree- step: NoneType = None +-- +time.tree- test: Compare +time.tree- left: Subscript +time.tree- value: Name +time.tree- id: str = jj +time.tree- ctx: Load +time.tree: slice: Index +time.tree- value: Constant +time.tree- value: int = 0 +time.tree- kind: NoneType = None +time.tree- ctx: Load +time.tree- ops: list +-- +time.tree- comparators: list +time.tree- element: Subscript +time.tree- value: Name +time.tree- id: str = jj +time.tree- ctx: Load +time.tree: slice: Index +time.tree- value: Constant +time.tree- value: int = 1 +time.tree- kind: NoneType = None +time.tree- ctx: Load +time.tree- body: list +-- +time.tree- args: list +time.tree- element: Subscript +time.tree- value: Name +time.tree- id: str = jj +time.tree- ctx: Load +time.tree: slice: Index +time.tree- value: Constant +time.tree- value: int = 0 +time.tree- kind: NoneType = None +time.tree- ctx: Load +time.tree- element: Subscript +time.tree- value: Name +time.tree- id: str = jj +time.tree- ctx: Load +time.tree: slice: Index +time.tree- value: Constant +time.tree- value: int = 1 +time.tree- kind: NoneType = None +time.tree- ctx: Load +time.tree- keywords: list +-- +time.tree- args: list +time.tree- element: Subscript +time.tree- value: Name +time.tree- id: str = jj +time.tree- ctx: Load +time.tree: slice: Index +time.tree- value: Constant +time.tree- value: int = 0 +time.tree- kind: NoneType = None +time.tree- ctx: Load +time.tree- element: Subscript +time.tree- value: Name +time.tree- id: str = jj +time.tree- ctx: Load +time.tree: slice: Index +time.tree- value: Constant +time.tree- value: int = 1 +time.tree- kind: NoneType = None +time.tree- ctx: Load +time.tree- keywords: list +-- +time.tree- args: list +time.tree- element: Constant +time.tree- value: str = ( +time.tree- kind: NoneType = None +time.tree- keywords: list +time.tree: slice: Index +time.tree- value: Constant +time.tree- value: int = 1 +time.tree- kind: NoneType = None +time.tree- ctx: Load +time.tree- attr: str = split +-- +time.tree- args: list +time.tree- element: Constant +time.tree- value: str = ) +time.tree- kind: NoneType = None +time.tree- keywords: list +time.tree: slice: Index +time.tree- value: Constant +time.tree- value: int = 0 +time.tree- kind: NoneType = None +time.tree- ctx: Load +time.tree- handlers: list +-- +time.tree- targets: list +time.tree- element: Subscript +time.tree- value: Name +time.tree- id: str = ret +time.tree- ctx: Load +time.tree: slice: Index +time.tree- value: Name +time.tree- id: str = ind +time.tree- ctx: Load +time.tree- ctx: Store +time.tree- value: Name +-- +time.tree- comparators: list +time.tree- element: Subscript +time.tree- value: Name +time.tree- id: str = _jj +time.tree- ctx: Load +time.tree: slice: Index +time.tree- value: Constant +time.tree- value: int = 1 +time.tree- kind: NoneType = None +time.tree- ctx: Load +time.tree- body: Subscript +time.tree- value: Name +time.tree- id: str = _jj +time.tree- ctx: Load +time.tree: slice: Index +time.tree- value: Constant +time.tree- value: int = 0 +time.tree- kind: NoneType = None +time.tree- ctx: Load +time.tree- orelse: Subscript +time.tree- value: Name +time.tree- id: str = _jj +time.tree- ctx: Load +time.tree: slice: Index +time.tree- value: Constant +time.tree- value: int = 1 +time.tree- kind: NoneType = None +time.tree- ctx: Load +time.tree- type_comment: NoneType = None +-- +time.tree- args: list +time.tree- element: Subscript +time.tree- value: Name +time.tree- id: str = t +time.tree- ctx: Load +time.tree: slice: Index +time.tree- value: Constant +time.tree- value: int = 0 +time.tree- kind: NoneType = None +time.tree- ctx: Load +time.tree- element: BinOp +time.tree- left: Subscript +time.tree- value: Name +time.tree- id: str = t +time.tree- ctx: Load +time.tree: slice: Index +time.tree- value: Constant +time.tree- value: int = 1 +time.tree- kind: NoneType = None +time.tree- ctx: Load +time.tree- op: Sub +-- +time.tree- kind: NoneType = None +time.tree- element: Subscript +time.tree- value: Name +time.tree- id: str = t +time.tree- ctx: Load +time.tree: slice: Index +time.tree- value: Constant +time.tree- value: int = 2 +time.tree- kind: NoneType = None +time.tree- ctx: Load +time.tree- element: Subscript +time.tree- value: Name +time.tree- id: str = t +time.tree- ctx: Load +time.tree: slice: Index +time.tree- value: Constant +time.tree- value: int = 3 +time.tree- kind: NoneType = None +time.tree- ctx: Load +time.tree- element: Subscript +time.tree- value: Name +time.tree- id: str = t +time.tree- ctx: Load +time.tree: slice: Index +time.tree- value: Constant +time.tree- value: int = 4 +time.tree- kind: NoneType = None +time.tree- ctx: Load +time.tree- element: Subscript +time.tree- value: Name +time.tree- id: str = t +time.tree- ctx: Load +time.tree: slice: Index +time.tree- value: Constant +time.tree- value: int = 5 +time.tree- kind: NoneType = None +time.tree- ctx: Load +time.tree- element: Constant +-- +time.tree- element: Return +time.tree- value: Subscript +time.tree- value: Name +time.tree- id: str = t +time.tree- ctx: Load +time.tree: slice: Slice +time.tree- lower: NoneType = None +time.tree- upper: Constant +time.tree- value: int = 9 +time.tree- kind: NoneType = None +time.tree- step: NoneType = None +-- +time.tree- ctx: Store +time.tree- value: Subscript +time.tree- value: Name +time.tree- id: str = fmt +time.tree- ctx: Load +time.tree: slice: Index +time.tree- value: Name +time.tree- id: str = i +time.tree- ctx: Load +time.tree- ctx: Load +time.tree- type_comment: NoneType = None +-- +time.tree- keywords: list +time.tree- element: Subscript +time.tree- value: Name +time.tree- id: str = fmt +time.tree- ctx: Load +time.tree: slice: Slice +time.tree- lower: Name +time.tree- id: str = i +time.tree- ctx: Load +time.tree- upper: NoneType = None +time.tree- step: NoneType = None +-- +time.tree- test: Compare +time.tree- left: Subscript +time.tree- value: Name +time.tree- id: str = fmt +time.tree- ctx: Load +time.tree: slice: Index +time.tree- value: Constant +time.tree- value: int = 0 +time.tree- kind: NoneType = None +time.tree- ctx: Load +time.tree- ops: list +-- +time.tree- ctx: Store +time.tree- value: Subscript +time.tree- value: Name +time.tree- id: str = fmt +time.tree- ctx: Load +time.tree: slice: Index +time.tree- value: Constant +time.tree- value: int = 1 +time.tree- kind: NoneType = None +time.tree- ctx: Load +time.tree- type_comment: NoneType = None +-- +time.tree- args: list +time.tree- element: Subscript +time.tree- value: Name +time.tree- id: str = fmt +time.tree- ctx: Load +time.tree: slice: Slice +time.tree- lower: Constant +time.tree- value: int = 2 +time.tree- kind: NoneType = None +time.tree- upper: NoneType = None +time.tree- step: NoneType = None +-- +time.tree- args: list +time.tree- element: Subscript +time.tree- value: Name +time.tree- id: str = __weekdays +time.tree- ctx: Load +time.tree: slice: Index +time.tree- value: Constant +time.tree- value: int = 0 +time.tree- kind: NoneType = None +time.tree- ctx: Load +time.tree- keywords: list +-- +time.tree- args: list +time.tree- element: Subscript +time.tree- value: Name +time.tree- id: str = __weekdays_long +time.tree- ctx: Load +time.tree: slice: Index +time.tree- value: Constant +time.tree- value: int = 0 +time.tree- kind: NoneType = None +time.tree- ctx: Load +time.tree- keywords: list +-- +time.tree- args: list +time.tree- element: Subscript +time.tree- value: Name +time.tree- id: str = __months +time.tree- ctx: Load +time.tree: slice: Index +time.tree- value: Constant +time.tree- value: int = 0 +time.tree- kind: NoneType = None +time.tree- ctx: Load +time.tree- keywords: list +-- +time.tree- elts: list +time.tree- element: Subscript +time.tree- value: Name +time.tree- id: str = ts +time.tree- ctx: Load +time.tree: slice: Slice +time.tree- lower: NoneType = None +time.tree- upper: Name +time.tree- id: str = l +time.tree- ctx: Load +time.tree- step: NoneType = None +time.tree- ctx: Load +time.tree- element: Subscript +time.tree- value: Name +time.tree- id: str = ts +time.tree- ctx: Load +time.tree: slice: Slice +time.tree- lower: Name +time.tree- id: str = l +time.tree- ctx: Load +time.tree- upper: NoneType = None +time.tree- step: NoneType = None +-- +time.tree- ctx: Store +time.tree- value: Subscript +time.tree- value: Name +time.tree- id: str = lv +time.tree- ctx: Load +time.tree: slice: Index +time.tree- value: Constant +time.tree- value: int = 1 +time.tree- kind: NoneType = None +time.tree- ctx: Load +time.tree- type_comment: NoneType = None +-- +time.tree- ctx: Store +time.tree- element: Subscript +time.tree- value: Name +time.tree- id: str = dir_val +time.tree- ctx: Load +time.tree: slice: Index +time.tree- value: Name +time.tree- id: str = d +time.tree- ctx: Load +time.tree- ctx: Store +time.tree- ctx: Store +-- +time.tree- elts: list +time.tree- element: Subscript +time.tree- value: Name +time.tree- id: str = lv +time.tree- ctx: Load +time.tree: slice: Index +time.tree- value: Constant +time.tree- value: int = 1 +time.tree- kind: NoneType = None +time.tree- ctx: Load +time.tree- element: Subscript +time.tree- value: Name +time.tree- id: str = lv +time.tree- ctx: Load +time.tree: slice: Index +time.tree- value: Constant +time.tree- value: int = 0 +time.tree- kind: NoneType = None +time.tree- ctx: Load +time.tree- ctx: Load +-- +time.tree- targets: list +time.tree- element: Subscript +time.tree- value: Name +time.tree- id: str = t +time.tree- ctx: Load +time.tree: slice: Index +time.tree- value: Subscript +time.tree- value: Name +time.tree- id: str = __lu +time.tree- ctx: Load +time.tree: slice: Index +time.tree- value: Name +time.tree- id: str = d +time.tree- ctx: Load +time.tree- ctx: Load +time.tree- ctx: Store +-- +time.tree- targets: list +time.tree- element: Subscript +time.tree- value: Name +time.tree- id: str = t +time.tree- ctx: Load +time.tree: slice: Index +time.tree- value: Constant +time.tree- value: int = 6 +time.tree- kind: NoneType = None +time.tree- ctx: Store +time.tree- value: Call +-- +time.tree- targets: list +time.tree- element: Subscript +time.tree- value: Name +time.tree- id: str = t +time.tree- ctx: Load +time.tree: slice: Index +time.tree- value: Constant +time.tree- value: int = 6 +time.tree- kind: NoneType = None +time.tree- ctx: Store +time.tree- value: Call +-- +time.tree- targets: list +time.tree- element: Subscript +time.tree- value: Name +time.tree- id: str = t +time.tree- ctx: Load +time.tree: slice: Index +time.tree- value: Constant +time.tree- value: int = 1 +time.tree- kind: NoneType = None +time.tree- ctx: Store +time.tree- value: BinOp +-- +time.tree- targets: list +time.tree- element: Subscript +time.tree- value: Name +time.tree- id: str = t +time.tree- ctx: Load +time.tree: slice: Index +time.tree- value: Constant +time.tree- value: int = 1 +time.tree- kind: NoneType = None +time.tree- ctx: Store +time.tree- value: BinOp +-- +time.tree- values: list +time.tree- element: Subscript +time.tree- value: Name +time.tree- id: str = dir_val +time.tree- ctx: Load +time.tree: slice: Index +time.tree- value: Constant +time.tree- value: str = p +time.tree- kind: NoneType = None +time.tree- ctx: Load +time.tree- element: Constant +-- +time.tree- targets: list +time.tree- element: Subscript +time.tree- value: Name +time.tree- id: str = t +time.tree- ctx: Load +time.tree: slice: Index +time.tree- value: Subscript +time.tree- value: Name +time.tree- id: str = __lu +time.tree- ctx: Load +time.tree: slice: Index +time.tree- value: Constant +time.tree- value: str = H +time.tree- kind: NoneType = None +time.tree- ctx: Load +time.tree- ctx: Store +-- +time.tree- targets: list +time.tree- element: Subscript +time.tree- value: Name +time.tree- id: str = t +time.tree- ctx: Load +time.tree: slice: Index +time.tree- value: Constant +time.tree- value: int = 0 +time.tree- kind: NoneType = None +time.tree- ctx: Store +time.tree- value: BinOp +-- +time.tree- targets: list +time.tree- element: Subscript +time.tree- value: Name +time.tree- id: str = t +time.tree- ctx: Load +time.tree: slice: Index +time.tree- value: UnaryOp +time.tree- op: USub +time.tree- operand: Constant +time.tree- value: int = 1 +time.tree- kind: NoneType = None +-- +time.tree- args: list +time.tree- element: Subscript +time.tree- value: Name +time.tree- id: str = t +time.tree- ctx: Load +time.tree: slice: Index +time.tree- value: Constant +time.tree- value: int = 0 +time.tree- kind: NoneType = None +time.tree- ctx: Load +time.tree- keywords: list +-- +time.tree- element: BinOp +time.tree- left: Subscript +time.tree- value: Name +time.tree- id: str = t +time.tree- ctx: Load +time.tree: slice: Index +time.tree- value: Constant +time.tree- value: int = 1 +time.tree- kind: NoneType = None +time.tree- ctx: Load +time.tree- op: Sub +-- +time.tree- args: list +time.tree- element: Subscript +time.tree- value: Name +time.tree- id: str = t +time.tree- ctx: Load +time.tree: slice: Index +time.tree- value: Constant +time.tree- value: int = 2 +time.tree- kind: NoneType = None +time.tree- ctx: Load +time.tree- keywords: list +-- +time.tree- args: list +time.tree- element: Subscript +time.tree- value: Name +time.tree- id: str = t +time.tree- ctx: Load +time.tree: slice: Index +time.tree- value: Constant +time.tree- value: int = 3 +time.tree- kind: NoneType = None +time.tree- ctx: Load +time.tree- keywords: list +-- +time.tree- targets: list +time.tree- element: Subscript +time.tree- value: Name +time.tree- id: str = t +time.tree- ctx: Load +time.tree: slice: Index +time.tree- value: Constant +time.tree- value: int = 7 +time.tree- kind: NoneType = None +time.tree- ctx: Store +time.tree- value: Call +-- +time.tree- targets: list +time.tree- element: Subscript +time.tree- value: Name +time.tree- id: str = t +time.tree- ctx: Load +time.tree: slice: Index +time.tree- value: Constant +time.tree- value: int = 6 +time.tree- kind: NoneType = None +time.tree- ctx: Store +time.tree- value: BinOp +-- +time.tree- args: list +time.tree- element: Subscript +time.tree- value: Name +time.tree- id: str = t +time.tree- ctx: Load +time.tree: slice: Index +time.tree- value: Subscript +time.tree- value: Name +time.tree- id: str = __lu +time.tree- ctx: Load +time.tree: slice: Index +time.tree- value: Name +time.tree- id: str = d +time.tree- ctx: Load +time.tree- ctx: Load +time.tree- ctx: Load +-- +time.tree- ctx: Store +time.tree- value: Subscript +time.tree- value: Name +time.tree- id: str = t +time.tree- ctx: Load +time.tree: slice: Index +time.tree- value: Name +time.tree- id: str = pos +time.tree- ctx: Load +time.tree- ctx: Load +time.tree- type_comment: NoneType = None +-- +time.tree- func: Attribute +time.tree- value: Subscript +time.tree- value: Name +time.tree- id: str = l +time.tree- ctx: Load +time.tree: slice: Index +time.tree- value: Name +time.tree- id: str = p +time.tree- ctx: Load +time.tree- ctx: Load +time.tree- attr: str = capitalize +-- +time.tree- test: Compare +time.tree- left: Subscript +time.tree- value: Name +time.tree- id: str = t +time.tree- ctx: Load +time.tree: slice: Index +time.tree- value: Constant +time.tree- value: int = 3 +time.tree- kind: NoneType = None +time.tree- ctx: Load +time.tree- ops: list +-- +time.tree- args: list +time.tree- element: Subscript +time.tree- value: Name +time.tree- id: str = t +time.tree- ctx: Load +time.tree: slice: Index +time.tree- value: Constant +time.tree- value: int = 0 +time.tree- kind: NoneType = None +time.tree- ctx: Load +time.tree- keywords: list +time.tree: slice: Slice +time.tree- lower: UnaryOp +time.tree- op: USub +time.tree- operand: Constant +time.tree- value: int = 2 +time.tree- kind: NoneType = None +-- +time.tree- ctx: Store +time.tree- value: Subscript +time.tree- value: Name +time.tree- id: str = t +time.tree- ctx: Load +time.tree: slice: Index +time.tree- value: Constant +time.tree- value: int = 3 +time.tree- kind: NoneType = None +time.tree- ctx: Load +time.tree- type_comment: NoneType = None diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/indices_and_slices.js b/transcrypt/development/automated_tests/transcrypt/__target__38/indices_and_slices.js new file mode 100644 index 000000000..63febaf5e --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/indices_and_slices.js @@ -0,0 +1,30 @@ +// Transcrypt'ed from Python, 2021-05-14 15:00:25 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get run () {return run;}, set run (value) {run = value;}}); +var __name__ = 'indices_and_slices'; +export var run = function (autoTester) { + var all = range (32); + autoTester.check (all); + autoTester.check (all.__getslice__ (8, 24, 1)); + autoTester.check (all.__getslice__ (8, 24, 2)); + var aList = [3, 4, 7, 8]; + autoTester.check (aList); + aList.__setslice__ (4, 4, null, [9, 10]); + autoTester.check (aList); + aList.__setslice__ (2, 2, null, [5, 6]); + autoTester.check (aList); + aList.__setslice__ (0, 0, null, [1, 2]); + autoTester.check (aList); + aList.__setslice__ (0, null, 2, (function () { + var __accu0__ = []; + for (var x = 0; x < 10; x++) { + if (__mod__ (x, 2)) { + __accu0__.append (x + 0.001); + } + } + return __accu0__; + }) ()); + autoTester.check (aList); +}; + +//# sourceMappingURL=indices_and_slices.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/indices_and_slices.tree b/transcrypt/development/automated_tests/transcrypt/__target__38/indices_and_slices.tree new file mode 100644 index 000000000..bbbadfb72 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/indices_and_slices.tree @@ -0,0 +1,305 @@ +file: Module + body: list + element: FunctionDef + name: str = run + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = autoTester + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Name + id: str = all + ctx: Store + value: Call + func: Name + id: str = range + ctx: Load + args: list + element: Constant + value: int = 32 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = all + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Subscript + value: Name + id: str = all + ctx: Load + slice: Slice + lower: Constant + value: int = 8 + kind: NoneType = None + upper: Constant + value: int = 24 + kind: NoneType = None + step: NoneType = None + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Subscript + value: Name + id: str = all + ctx: Load + slice: Slice + lower: Constant + value: int = 8 + kind: NoneType = None + upper: Constant + value: int = 24 + kind: NoneType = None + step: Constant + value: int = 2 + kind: NoneType = None + ctx: Load + keywords: list + element: Assign + targets: list + element: Name + id: str = aList + ctx: Store + value: List + elts: list + element: Constant + value: int = 3 + kind: NoneType = None + element: Constant + value: int = 4 + kind: NoneType = None + element: Constant + value: int = 7 + kind: NoneType = None + element: Constant + value: int = 8 + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = aList + ctx: Load + keywords: list + element: Assign + targets: list + element: Subscript + value: Name + id: str = aList + ctx: Load + slice: Slice + lower: Constant + value: int = 4 + kind: NoneType = None + upper: Constant + value: int = 4 + kind: NoneType = None + step: NoneType = None + ctx: Store + value: List + elts: list + element: Constant + value: int = 9 + kind: NoneType = None + element: Constant + value: int = 10 + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = aList + ctx: Load + keywords: list + element: Assign + targets: list + element: Subscript + value: Name + id: str = aList + ctx: Load + slice: Slice + lower: Constant + value: int = 2 + kind: NoneType = None + upper: Constant + value: int = 2 + kind: NoneType = None + step: NoneType = None + ctx: Store + value: List + elts: list + element: Constant + value: int = 5 + kind: NoneType = None + element: Constant + value: int = 6 + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = aList + ctx: Load + keywords: list + element: Assign + targets: list + element: Subscript + value: Name + id: str = aList + ctx: Load + slice: Slice + lower: Constant + value: int = 0 + kind: NoneType = None + upper: Constant + value: int = 0 + kind: NoneType = None + step: NoneType = None + ctx: Store + value: List + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = aList + ctx: Load + keywords: list + element: Assign + targets: list + element: Subscript + value: Name + id: str = aList + ctx: Load + slice: Slice + lower: NoneType = None + upper: NoneType = None + step: Constant + value: int = 2 + kind: NoneType = None + ctx: Store + value: ListComp + elt: BinOp + left: Name + id: str = x + ctx: Load + op: Add + right: Constant + value: float = 0.001 + kind: NoneType = None + generators: list + element: comprehension + target: Name + id: str = x + ctx: Store + iter: Call + func: Name + id: str = range + ctx: Load + args: list + element: Constant + value: int = 10 + kind: NoneType = None + keywords: list + ifs: list + element: BinOp + left: Name + id: str = x + ctx: Load + op: Mod + right: Constant + value: int = 2 + kind: NoneType = None + is_async: int = 0 + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = aList + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/iterators_and_generators.js b/transcrypt/development/automated_tests/transcrypt/__target__38/iterators_and_generators.js new file mode 100644 index 000000000..2a41ee39c --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/iterators_and_generators.js @@ -0,0 +1,164 @@ +// Transcrypt'ed from Python, 2021-05-14 15:00:25 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +var __all__ = dict ({get Iterable () {return Iterable;}, set Iterable (value) {Iterable = value;}, get Iterator () {return Iterator;}, set Iterator (value) {Iterator = value;}, get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get exhaustableGenerator () {return exhaustableGenerator;}, set exhaustableGenerator (value) {exhaustableGenerator = value;}, get run () {return run;}, set run (value) {run = value;}}); +var __name__ = 'iterators_and_generators'; +export var Iterable = __class__ ('Iterable', [object], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self, i) { + self.aList = range (0, 50, i); + });}, + get __iter__ () {return __get__ (this, function (self) { + return Iterator (self); + });}, + [Symbol.iterator] () {return this.__iter__ ()} +}); +export var Iterator = __class__ ('Iterator', [object], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self, iterable) { + self.iterable = iterable; + self.index = -(1); + });}, + get __next__ () {return __get__ (this, function (self) { + self.index++; + if (self.index > 5) { + var __except0__ = StopIteration (); + __except0__.__cause__ = null; + throw __except0__; + } + return self.iterable.aList [self.index]; + });}, + next: __jsUsePyNext__, + get __iter__ () {return __get__ (this, function (self) { + return self; + });}, + [Symbol.iterator] () {return this.__iter__ ()} +}); +export var exhaustableGenerator = function* (i) { + for (var i = 0; i < 5; i++) { + yield 2 * i; + } + }; +export var run = function (autoTester) { + var exhaustableGenExp = (function () { + var __accu0__ = []; + for (var a of [10, 20, 30]) { + __accu0__.append ((a * a) * a); + } + return py_iter (__accu0__); + }) (); + var iterables = [Iterable (7), exhaustableGenerator (5), (function () { + var __accu0__ = []; + for (var i = 0; i < 5; i++) { + __accu0__.append (i * 3); + } + return __accu0__; + }) (), exhaustableGenExp]; + for (var iterable of iterables) { + autoTester.check ('[1]'); + var iterator = py_iter (iterable); + try { + while (true) { + autoTester.check (py_next (iterator)); + } + } + catch (__except0__) { + if (isinstance (__except0__, Exception)) { + var exception = __except0__; + autoTester.check (exception.__class__.__name__); + } + else { + throw __except0__; + } + } + autoTester.check ('[2]'); + var iterator = py_iter (iterable); + try { + while (true) { + autoTester.check (py_next (iterator)); + } + } + catch (__except0__) { + if (isinstance (__except0__, Exception)) { + var exception = __except0__; + autoTester.check (exception.__class__.__name__); + } + else { + throw __except0__; + } + } + } + for (var iterable of iterables) { + autoTester.check ('[3]'); + for (var n of iterable) { + autoTester.check (n); + } + autoTester.check ('[4]'); + for (var n of iterable) { + autoTester.check (n); + } + } + var a = 0; + var vals = [1, 2, 3]; + var ret = py_iter (vals); + for (var m of ret) { + a += m; + } + autoTester.check (a); + var test0 = function* () { + var r = 0; + while (true) { + var r = r + (yield r); + } + }; + var gen0 = test0 (); + py_next (gen0); + autoTester.check ((function () {return gen0.next (1).value}) ()); + autoTester.check ((function () {return gen0.next (2).value}) ()); + var test1 = function* () { + var r = 0; + while (true) { + var r = (yield r) + r; + } + }; + var gen1 = test1 (); + py_next (gen1); + autoTester.check ((function () {return gen1.next (3).value}) ()); + autoTester.check ((function () {return gen1.next (4).value}) ()); + var subGenerator = function* () { + yield 27; + yield 37; + yield 47}; + var mainGenerator = function* () { + yield 17; + yield* subGenerator (); + yield 57}; + autoTester.check (...(function () { + var __accu0__ = []; + for (var i of mainGenerator ()) { + __accu0__.append (i); + } + return __accu0__; + }) ()); + var subCoroutine = function* () { + autoTester.check (38); + yield; + autoTester.check (48); + yield; + autoTester.check (58); + yield; + autoTester.check (68)}; + var mainCoroutine = function* () { + autoTester.check (18); + yield; + autoTester.check (28); + yield* subCoroutine (); + autoTester.check (78); + yield; + autoTester.check (88)}; + var m = mainCoroutine (); + for (var i = 0; i < 5; i++) { + (function () {return m.next (null).value}) (); + } +}; + +//# sourceMappingURL=iterators_and_generators.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/iterators_and_generators.tree b/transcrypt/development/automated_tests/transcrypt/__target__38/iterators_and_generators.tree new file mode 100644 index 000000000..8930b7bc6 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/iterators_and_generators.tree @@ -0,0 +1,1241 @@ +file: Module + body: list + element: ImportFrom + module: str = org.transcrypt.stubs.browser + names: list + element: alias + name: str = __pragma__ + asname: NoneType = None + level: int = 0 + element: ClassDef + name: str = Iterable + bases: list + keywords: list + body: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = i + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = aList + ctx: Store + value: Call + func: Name + id: str = range + ctx: Load + args: list + element: Constant + value: int = 0 + kind: NoneType = None + element: Constant + value: int = 50 + kind: NoneType = None + element: Name + id: str = i + ctx: Load + keywords: list + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __iter__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Call + func: Name + id: str = Iterator + ctx: Load + args: list + element: Name + id: str = self + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: ClassDef + name: str = Iterator + bases: list + keywords: list + body: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = iterable + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = iterable + ctx: Store + value: Name + id: str = iterable + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = index + ctx: Store + value: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __next__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: AugAssign + target: Attribute + value: Name + id: str = self + ctx: Load + attr: str = index + ctx: Store + op: Add + value: Constant + value: int = 1 + kind: NoneType = None + element: If + test: Compare + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = index + ctx: Load + ops: list + element: Gt + comparators: list + element: Constant + value: int = 5 + kind: NoneType = None + body: list + element: Raise + exc: Call + func: Name + id: str = StopIteration + ctx: Load + args: list + keywords: list + cause: NoneType = None + orelse: list + element: Return + value: Subscript + value: Attribute + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = iterable + ctx: Load + attr: str = aList + ctx: Load + slice: Index + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = index + ctx: Load + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __iter__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Name + id: str = self + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: FunctionDef + name: str = exhaustableGenerator + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = i + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: For + target: Name + id: str = i + ctx: Store + iter: Call + func: Name + id: str = range + ctx: Load + args: list + element: Constant + value: int = 5 + kind: NoneType = None + keywords: list + body: list + element: Expr + value: Yield + value: BinOp + left: Constant + value: int = 2 + kind: NoneType = None + op: Mult + right: Name + id: str = i + ctx: Load + orelse: list + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = run + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = autoTester + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Name + id: str = exhaustableGenExp + ctx: Store + value: GeneratorExp + elt: BinOp + left: BinOp + left: Name + id: str = a + ctx: Load + op: Mult + right: Name + id: str = a + ctx: Load + op: Mult + right: Name + id: str = a + ctx: Load + generators: list + element: comprehension + target: Name + id: str = a + ctx: Store + iter: List + elts: list + element: Constant + value: int = 10 + kind: NoneType = None + element: Constant + value: int = 20 + kind: NoneType = None + element: Constant + value: int = 30 + kind: NoneType = None + ctx: Load + ifs: list + is_async: int = 0 + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = iterables + ctx: Store + value: List + elts: list + element: Call + func: Name + id: str = Iterable + ctx: Load + args: list + element: Constant + value: int = 7 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = exhaustableGenerator + ctx: Load + args: list + element: Constant + value: int = 5 + kind: NoneType = None + keywords: list + element: ListComp + elt: BinOp + left: Name + id: str = i + ctx: Load + op: Mult + right: Constant + value: int = 3 + kind: NoneType = None + generators: list + element: comprehension + target: Name + id: str = i + ctx: Store + iter: Call + func: Name + id: str = range + ctx: Load + args: list + element: Constant + value: int = 5 + kind: NoneType = None + keywords: list + ifs: list + is_async: int = 0 + element: Name + id: str = exhaustableGenExp + ctx: Load + ctx: Load + type_comment: NoneType = None + element: For + target: Name + id: str = iterable + ctx: Store + iter: Name + id: str = iterables + ctx: Load + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = [1] + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = iterator + ctx: Store + value: Call + func: Name + id: str = iter + ctx: Load + args: list + element: Name + id: str = iterable + ctx: Load + keywords: list + type_comment: NoneType = None + element: Try + body: list + element: While + test: Constant + value: bool = True + kind: NoneType = None + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = next + ctx: Load + args: list + element: Name + id: str = iterator + ctx: Load + keywords: list + keywords: list + orelse: list + handlers: list + element: ExceptHandler + type: Name + id: str = Exception + ctx: Load + name: str = exception + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Attribute + value: Name + id: str = exception + ctx: Load + attr: str = __class__ + ctx: Load + attr: str = __name__ + ctx: Load + keywords: list + orelse: list + finalbody: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = [2] + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = iterator + ctx: Store + value: Call + func: Name + id: str = iter + ctx: Load + args: list + element: Name + id: str = iterable + ctx: Load + keywords: list + type_comment: NoneType = None + element: Try + body: list + element: While + test: Constant + value: bool = True + kind: NoneType = None + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = next + ctx: Load + args: list + element: Name + id: str = iterator + ctx: Load + keywords: list + keywords: list + orelse: list + handlers: list + element: ExceptHandler + type: Name + id: str = Exception + ctx: Load + name: str = exception + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Attribute + value: Name + id: str = exception + ctx: Load + attr: str = __class__ + ctx: Load + attr: str = __name__ + ctx: Load + keywords: list + orelse: list + finalbody: list + orelse: list + type_comment: NoneType = None + element: For + target: Name + id: str = iterable + ctx: Store + iter: Name + id: str = iterables + ctx: Load + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = [3] + kind: NoneType = None + keywords: list + element: For + target: Name + id: str = n + ctx: Store + iter: Name + id: str = iterable + ctx: Load + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = n + ctx: Load + keywords: list + orelse: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = [4] + kind: NoneType = None + keywords: list + element: For + target: Name + id: str = n + ctx: Store + iter: Name + id: str = iterable + ctx: Load + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = n + ctx: Load + keywords: list + orelse: list + type_comment: NoneType = None + orelse: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = a + ctx: Store + value: Constant + value: int = 0 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = vals + ctx: Store + value: List + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = ret + ctx: Store + value: Call + func: Name + id: str = iter + ctx: Load + args: list + element: Name + id: str = vals + ctx: Load + keywords: list + type_comment: NoneType = None + element: For + target: Name + id: str = m + ctx: Store + iter: Name + id: str = ret + ctx: Load + body: list + element: AugAssign + target: Name + id: str = a + ctx: Store + op: Add + value: Name + id: str = m + ctx: Load + orelse: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = a + ctx: Load + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = gsend + kind: NoneType = None + keywords: list + element: FunctionDef + name: str = test0 + args: arguments + posonlyargs: list + args: list + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Name + id: str = r + ctx: Store + value: Constant + value: int = 0 + kind: NoneType = None + type_comment: NoneType = None + element: While + test: Constant + value: bool = True + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = r + ctx: Store + value: BinOp + left: Name + id: str = r + ctx: Load + op: Add + right: Yield + value: Name + id: str = r + ctx: Load + type_comment: NoneType = None + orelse: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = gen0 + ctx: Store + value: Call + func: Name + id: str = test0 + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = next + ctx: Load + args: list + element: Name + id: str = gen0 + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = gen0 + ctx: Load + attr: str = send + ctx: Load + args: list + element: Constant + value: int = 1 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = gen0 + ctx: Load + attr: str = send + ctx: Load + args: list + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + keywords: list + element: FunctionDef + name: str = test1 + args: arguments + posonlyargs: list + args: list + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Name + id: str = r + ctx: Store + value: Constant + value: int = 0 + kind: NoneType = None + type_comment: NoneType = None + element: While + test: Constant + value: bool = True + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = r + ctx: Store + value: BinOp + left: Yield + value: Name + id: str = r + ctx: Load + op: Add + right: Name + id: str = r + ctx: Load + type_comment: NoneType = None + orelse: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = gen1 + ctx: Store + value: Call + func: Name + id: str = test1 + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = next + ctx: Load + args: list + element: Name + id: str = gen1 + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = gen1 + ctx: Load + attr: str = send + ctx: Load + args: list + element: Constant + value: int = 3 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = gen1 + ctx: Load + attr: str = send + ctx: Load + args: list + element: Constant + value: int = 4 + kind: NoneType = None + keywords: list + keywords: list + element: FunctionDef + name: str = subGenerator + args: arguments + posonlyargs: list + args: list + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Yield + value: Constant + value: int = 27 + kind: NoneType = None + element: Expr + value: Yield + value: Constant + value: int = 37 + kind: NoneType = None + element: Expr + value: Yield + value: Constant + value: int = 47 + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = mainGenerator + args: arguments + posonlyargs: list + args: list + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Yield + value: Constant + value: int = 17 + kind: NoneType = None + element: Expr + value: YieldFrom + value: Call + func: Name + id: str = subGenerator + ctx: Load + args: list + keywords: list + element: Expr + value: Yield + value: Constant + value: int = 57 + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Starred + value: ListComp + elt: Name + id: str = i + ctx: Load + generators: list + element: comprehension + target: Name + id: str = i + ctx: Store + iter: Call + func: Name + id: str = mainGenerator + ctx: Load + args: list + keywords: list + ifs: list + is_async: int = 0 + ctx: Load + keywords: list + element: FunctionDef + name: str = subCoroutine + args: arguments + posonlyargs: list + args: list + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: int = 38 + kind: NoneType = None + keywords: list + element: Expr + value: Yield + value: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: int = 48 + kind: NoneType = None + keywords: list + element: Expr + value: Yield + value: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: int = 58 + kind: NoneType = None + keywords: list + element: Expr + value: Yield + value: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: int = 68 + kind: NoneType = None + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = mainCoroutine + args: arguments + posonlyargs: list + args: list + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: int = 18 + kind: NoneType = None + keywords: list + element: Expr + value: Yield + value: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: int = 28 + kind: NoneType = None + keywords: list + element: Expr + value: YieldFrom + value: Call + func: Name + id: str = subCoroutine + ctx: Load + args: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: int = 78 + kind: NoneType = None + keywords: list + element: Expr + value: Yield + value: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: int = 88 + kind: NoneType = None + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = m + ctx: Store + value: Call + func: Name + id: str = mainCoroutine + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: For + target: Name + id: str = i + ctx: Store + iter: Call + func: Name + id: str = range + ctx: Load + args: list + element: Constant + value: int = 5 + kind: NoneType = None + keywords: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = m + ctx: Load + attr: str = send + ctx: Load + args: list + element: Constant + value: NoneType = None + kind: NoneType = None + keywords: list + orelse: list + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/itertools.js b/transcrypt/development/automated_tests/transcrypt/__target__38/itertools.js new file mode 100644 index 000000000..74de8daeb --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/itertools.js @@ -0,0 +1,298 @@ +import {list, tuple, len, __kwargtrans__, set} from './org.transcrypt.__runtime__.js'; + +var __name__ = 'itertools'; + +export var count = function* (start, step) { + if (start == undefined) { + start = 0; + } + if (step == undefined) { + step = 1; + } + while (true) { + yield start; + start += step; + } +} +export var cycle = function* (iterable) { + let buffer = Array.from (iterable); // Can't reset, Chrome can't obtain iter from gener + while (true) { + for (let item of buffer) { + yield item; + } + } +} +export var repeat = function* (item, n) { + if (typeof n == 'undefined') { + while (true) { + yield item; + } + } + else { + for (let index = 0; index < n; index++) { + yield item; + } + } +} +export var accumulate = function* (iterable, func) { + let sum; + let first = true; + if (func) { + for (let item of iterable) { + if (first) { + sum = item; + first = false; + } + else { + sum = func (sum, item); + } + yield sum; + } + } + else { + for (let item of iterable) { + if (first) { + sum = item; + first = false; + } + else { + sum = sum + item; + } + yield sum; + } + } +} +export var chain = function* () { + let args = [] .slice.apply (arguments); + for (let arg of args) { + for (let item of arg) { + yield item; + } + } +} +chain.from_iterable = function* (iterable) { + for (let item of iterable) { + for (let subItem of item) { + yield subItem; + } + } +} +export var compress = function* (data, selectors) { + let dataIterator = data [Symbol.iterator] .call (data); + let selectorsIterator = selectors [Symbol.iterator] (); + while (true) { + let dataItem = dataIterator.next (); + let selectorsItem = selectorsIterator.next (); + if (dataItem.done || selectorsItem.done) { + break; + } + else { + if (selectorsItem.value) { + yield dataItem.value; + } + } + } +} +export var dropwhile = function* (pred, seq) { + let started = false; + for (let item of seq) { + if (started) { + yield item; + } + else if (!pred (item)) { + started = true; + yield item; + } + } +} +export var filterfalse = function* (pred, seq) { + for (let item of seq) { + if (!pred (item)) { + yield item; + } + } +} +export var groupby = function* (iterable, keyfunc) { + let anIterator = iterable [Symbol.iterator] (); + let item = anIterator.next (); + + if (item.done) { + return; + } + + let groupKey = keyfunc (item.value); + let more = true; + + function* group () { + while (true) { + yield (item.value); + item = anIterator.next (); + + if (item.done) { + more = false; + return; + } + + let key = keyfunc (item.value); + + if (key != groupKey) { + groupKey = key; + return; + } + } + } + + while (more) { + yield tuple ([groupKey, group ()]); + } +} +export var islice = function* () { + let start; // Have to be defined at function level, or Closure compiler will loose them after a yield + let stop; // + let step; // + + let args = [] .slice.apply (arguments); + let anIterator = args [0][Symbol.iterator] (); + if (args.length == 2) { + stop = args [1]; + start = 0; + step = 1; + } + else { + start = args [1]; + stop = args [2]; + if (args.length == 4) { + step = args [3]; + } + else { + step = 1; + } + } + for (let index = 0; index < start; index++) { + if (anIterator.next (). done) { + return; + } + } + for (let index = 0; index < stop - start; index++) { + let next = anIterator.next (); + if (next.done) { + return; + } + if (index % step == 0) { + yield next.value; + } + } +} +export var starmap = function* (func, seq) { + let anIterator = seq [Symbol.iterator] (); + while (true) { + let next = anIterator.next () + if (next.done) { + return; + } + else { + yield func (...next.value); + } + } +} +export var takewhile = function* (pred, seq) { + for (let item of seq) { + if (pred (item)) { + yield item; + } + else { + return; + } + } +} +export var tee = function (iterable, n) { + if (n == undefined) { + n = 2; + } + let all = []; // Don't return iterator since destructuring assignment cannot yet deal with that + let one = list (iterable); + for (let i = 0; i < n; i++) { + all.append (one [Symbol.iterator] ()); // Iterator rather than list, exhaustable for semantic equivalence + } + return list (all); +} + +export var product = function () { + let args = [] .slice.apply (arguments); + if (args.length && args [args.length - 1] .hasOwnProperty ('__kwargtrans__')) { + var repeat = args.pop () ['repeat']; + } + else { + var repeat = 1; + } + + let oldMolecules = [tuple ([])]; + for (let i = 0; i < repeat; i++) { + for (let arg of args) { + let newMolecules = []; + for (let oldMolecule of oldMolecules) { + for (let atom of arg) { + newMolecules.append (tuple (oldMolecule.concat (atom))); + } + } + oldMolecules = newMolecules; + } + } + return list (oldMolecules); // Also works if args is emptpy +} +export var permutations = function (iterable, r) { + if (r == undefined) { + try { + r = len (iterable); + } + catch (exception) { + r = len (list (iterable)); + } + } + let aProduct = product (iterable, __kwargtrans__ ({repeat: r})); + let result = []; + for (let molecule of aProduct) { + if (len (set (molecule)) == r) { // Weed out doubles + result.append (molecule); + } + } + return list (result); +} +export var combinations = function (iterable, r) { + let tail = list (iterable); + function recurse (tail, molecule, rNext) { + for (let index = 0; index < len (tail) - rNext; index++) { + let newMolecule = molecule.concat (tail.slice (index, index + 1)); + + if (rNext) { + recurse (tail.slice (index + 1), newMolecule, rNext - 1); + } + else { + result.append (tuple (newMolecule)); + } + } + } + let result = []; + recurse (tail, tail.slice (0, 0), r - 1); + return list (result); +} +export var combinations_with_replacement = function (iterable, r) { + let tail = list (iterable); + function recurse (tail, molecule, rNext) { + for (let index = 0; index < len (tail); index++) { + let newMolecule = molecule.concat (tail.slice (index, index + 1)); + + if (rNext) { + recurse (tail.slice (index), newMolecule, rNext - 1); + } + else { + result.append (tuple (newMolecule)); + } + } + } + let result = []; + recurse (tail, tail.slice (0, 0), r - 1); + return list (result); +} + +//# sourceMappingURL=itertools.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/lambda_functions.js b/transcrypt/development/automated_tests/transcrypt/__target__38/lambda_functions.js new file mode 100644 index 000000000..9398f4f84 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/lambda_functions.js @@ -0,0 +1,32 @@ +// Transcrypt'ed from Python, 2021-05-14 15:00:25 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get run () {return run;}, set run (value) {run = value;}}); +var __name__ = 'lambda_functions'; +export var run = function (autoTester) { + var z = 1000; + autoTester.check ((function __lambda__ (x, y) { + return (x + y) + z; + }) (111, 222)); + var f = function (list0, list1, aFunc) { + return (function () { + var __accu0__ = []; + for (var elem of zip (list0, list1)) { + __accu0__.append (aFunc (...elem)); + } + return __accu0__; + }) (); + }; + var x = f (range (10), range (0, 100, 10), (function __lambda__ (x, y) { + return (x + y) + z; + })); + autoTester.check (x); + autoTester.check (f (range (10, 20), range (100, 200, 10), (function __lambda__ (x, y) { + return x * y + 100 * z; + }))); + autoTester.check (f (range (10, 20), range (100, 200, 10), (function __lambda__ () { + var args = tuple ([].slice.apply (arguments).slice (0)); + return args [0] * args [1] + 100 * z; + }))); +}; + +//# sourceMappingURL=lambda_functions.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/lambda_functions.tree b/transcrypt/development/automated_tests/transcrypt/__target__38/lambda_functions.tree new file mode 100644 index 000000000..8f2dae38b --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/lambda_functions.tree @@ -0,0 +1,379 @@ +file: Module + body: list + element: FunctionDef + name: str = run + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = autoTester + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Name + id: str = z + ctx: Store + value: Constant + value: int = 1000 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Lambda + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = y + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: BinOp + left: BinOp + left: Name + id: str = x + ctx: Load + op: Add + right: Name + id: str = y + ctx: Load + op: Add + right: Name + id: str = z + ctx: Load + args: list + element: Constant + value: int = 111 + kind: NoneType = None + element: Constant + value: int = 222 + kind: NoneType = None + keywords: list + keywords: list + element: FunctionDef + name: str = f + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = list0 + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = list1 + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = aFunc + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: ListComp + elt: Call + func: Name + id: str = aFunc + ctx: Load + args: list + element: Starred + value: Name + id: str = elem + ctx: Load + ctx: Load + keywords: list + generators: list + element: comprehension + target: Name + id: str = elem + ctx: Store + iter: Call + func: Name + id: str = zip + ctx: Load + args: list + element: Name + id: str = list0 + ctx: Load + element: Name + id: str = list1 + ctx: Load + keywords: list + ifs: list + is_async: int = 0 + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = x + ctx: Store + value: Call + func: Name + id: str = f + ctx: Load + args: list + element: Call + func: Name + id: str = range + ctx: Load + args: list + element: Constant + value: int = 10 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = range + ctx: Load + args: list + element: Constant + value: int = 0 + kind: NoneType = None + element: Constant + value: int = 100 + kind: NoneType = None + element: Constant + value: int = 10 + kind: NoneType = None + keywords: list + element: Lambda + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = y + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: BinOp + left: BinOp + left: Name + id: str = x + ctx: Load + op: Add + right: Name + id: str = y + ctx: Load + op: Add + right: Name + id: str = z + ctx: Load + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = x + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = f + ctx: Load + args: list + element: Call + func: Name + id: str = range + ctx: Load + args: list + element: Constant + value: int = 10 + kind: NoneType = None + element: Constant + value: int = 20 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = range + ctx: Load + args: list + element: Constant + value: int = 100 + kind: NoneType = None + element: Constant + value: int = 200 + kind: NoneType = None + element: Constant + value: int = 10 + kind: NoneType = None + keywords: list + element: Lambda + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = y + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: BinOp + left: BinOp + left: Name + id: str = x + ctx: Load + op: Mult + right: Name + id: str = y + ctx: Load + op: Add + right: BinOp + left: Constant + value: int = 100 + kind: NoneType = None + op: Mult + right: Name + id: str = z + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = f + ctx: Load + args: list + element: Call + func: Name + id: str = range + ctx: Load + args: list + element: Constant + value: int = 10 + kind: NoneType = None + element: Constant + value: int = 20 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = range + ctx: Load + args: list + element: Constant + value: int = 100 + kind: NoneType = None + element: Constant + value: int = 200 + kind: NoneType = None + element: Constant + value: int = 10 + kind: NoneType = None + keywords: list + element: Lambda + args: arguments + posonlyargs: list + args: list + vararg: arg + arg: str = args + annotation: NoneType = None + type_comment: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: BinOp + left: BinOp + left: Subscript + value: Name + id: str = args + ctx: Load + slice: Index + value: Constant + value: int = 0 + kind: NoneType = None + ctx: Load + op: Mult + right: Subscript + value: Name + id: str = args + ctx: Load + slice: Index + value: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + op: Add + right: BinOp + left: Constant + value: int = 100 + kind: NoneType = None + op: Mult + right: Name + id: str = z + ctx: Load + keywords: list + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/list_comprehensions.js b/transcrypt/development/automated_tests/transcrypt/__target__38/list_comprehensions.js new file mode 100644 index 000000000..5dd707688 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/list_comprehensions.js @@ -0,0 +1,69 @@ +// Transcrypt'ed from Python, 2021-05-14 15:00:25 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get run () {return run;}, set run (value) {run = value;}}); +var __name__ = 'list_comprehensions'; +export var run = function (autoTester) { + var squares = (function () { + var __accu0__ = []; + for (var i = 0; i < 10; i++) { + if (__mod__ (i, 2)) { + __accu0__.append (i * i); + } + } + return __accu0__; + }) (); + autoTester.check (squares); + var tuples = (function () { + var __accu0__ = []; + for (var x of tuple ([100, 200, 300, 400, 500, 600, 700])) { + for (var y of tuple ([10, 20, 30, 40, 50, 60, 70])) { + if ((20 < y && y < 60)) { + for (var z of tuple ([1, 2, 3, 4, 5, 6, 7])) { + if ((200 < x && x < 600)) { + if ((2 < z && z < 6)) { + __accu0__.append (tuple ([x, y, z])); + } + } + } + } + } + } + return __accu0__; + }) (); + autoTester.check (tuples); + var tricky = (function () { + var __accu0__ = []; + for (var [x, y] of tuple ([tuple ([10, 11]), tuple ([20, 21])])) { + __accu0__.append (tuple ([2 * x, 3 * y])); + } + return __accu0__; + }) (); + autoTester.check (tricky); + var nested = (function () { + var __accu0__ = []; + for (var x of (function () { + var __accu1__ = []; + for (var x = 0; x < 3; x++) { + __accu1__.append (x * x); + } + return __accu1__; + }) ()) { + __accu0__.append (2 * x); + } + return __accu0__; + }) (); + autoTester.check (nested); + var a = 100; + var x = 5; + var scopeTest = (function () { + var __accu0__ = []; + for (var x = 0; x < 5; x++) { + __accu0__.append (x + a); + } + return __accu0__; + }) (); + autoTester.check (x); + autoTester.check (scopeTest); +}; + +//# sourceMappingURL=list_comprehensions.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/list_comprehensions.tree b/transcrypt/development/automated_tests/transcrypt/__target__38/list_comprehensions.tree new file mode 100644 index 000000000..b96b05d4c --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/list_comprehensions.tree @@ -0,0 +1,446 @@ +file: Module + body: list + element: FunctionDef + name: str = run + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = autoTester + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Name + id: str = squares + ctx: Store + value: ListComp + elt: BinOp + left: Name + id: str = i + ctx: Load + op: Mult + right: Name + id: str = i + ctx: Load + generators: list + element: comprehension + target: Name + id: str = i + ctx: Store + iter: Call + func: Name + id: str = range + ctx: Load + args: list + element: Constant + value: int = 10 + kind: NoneType = None + keywords: list + ifs: list + element: BinOp + left: Name + id: str = i + ctx: Load + op: Mod + right: Constant + value: int = 2 + kind: NoneType = None + is_async: int = 0 + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = squares + ctx: Load + keywords: list + element: Assign + targets: list + element: Name + id: str = tuples + ctx: Store + value: ListComp + elt: Tuple + elts: list + element: Name + id: str = x + ctx: Load + element: Name + id: str = y + ctx: Load + element: Name + id: str = z + ctx: Load + ctx: Load + generators: list + element: comprehension + target: Name + id: str = x + ctx: Store + iter: Tuple + elts: list + element: Constant + value: int = 100 + kind: NoneType = None + element: Constant + value: int = 200 + kind: NoneType = None + element: Constant + value: int = 300 + kind: NoneType = None + element: Constant + value: int = 400 + kind: NoneType = None + element: Constant + value: int = 500 + kind: NoneType = None + element: Constant + value: int = 600 + kind: NoneType = None + element: Constant + value: int = 700 + kind: NoneType = None + ctx: Load + ifs: list + is_async: int = 0 + element: comprehension + target: Name + id: str = y + ctx: Store + iter: Tuple + elts: list + element: Constant + value: int = 10 + kind: NoneType = None + element: Constant + value: int = 20 + kind: NoneType = None + element: Constant + value: int = 30 + kind: NoneType = None + element: Constant + value: int = 40 + kind: NoneType = None + element: Constant + value: int = 50 + kind: NoneType = None + element: Constant + value: int = 60 + kind: NoneType = None + element: Constant + value: int = 70 + kind: NoneType = None + ctx: Load + ifs: list + element: Compare + left: Constant + value: int = 20 + kind: NoneType = None + ops: list + element: Lt + element: Lt + comparators: list + element: Name + id: str = y + ctx: Load + element: Constant + value: int = 60 + kind: NoneType = None + is_async: int = 0 + element: comprehension + target: Name + id: str = z + ctx: Store + iter: Tuple + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + element: Constant + value: int = 4 + kind: NoneType = None + element: Constant + value: int = 5 + kind: NoneType = None + element: Constant + value: int = 6 + kind: NoneType = None + element: Constant + value: int = 7 + kind: NoneType = None + ctx: Load + ifs: list + element: Compare + left: Constant + value: int = 200 + kind: NoneType = None + ops: list + element: Lt + element: Lt + comparators: list + element: Name + id: str = x + ctx: Load + element: Constant + value: int = 600 + kind: NoneType = None + element: Compare + left: Constant + value: int = 2 + kind: NoneType = None + ops: list + element: Lt + element: Lt + comparators: list + element: Name + id: str = z + ctx: Load + element: Constant + value: int = 6 + kind: NoneType = None + is_async: int = 0 + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = tuples + ctx: Load + keywords: list + element: Assign + targets: list + element: Name + id: str = tricky + ctx: Store + value: ListComp + elt: Tuple + elts: list + element: BinOp + left: Constant + value: int = 2 + kind: NoneType = None + op: Mult + right: Name + id: str = x + ctx: Load + element: BinOp + left: Constant + value: int = 3 + kind: NoneType = None + op: Mult + right: Name + id: str = y + ctx: Load + ctx: Load + generators: list + element: comprehension + target: Tuple + elts: list + element: Name + id: str = x + ctx: Store + element: Name + id: str = y + ctx: Store + ctx: Store + iter: Tuple + elts: list + element: Tuple + elts: list + element: Constant + value: int = 10 + kind: NoneType = None + element: Constant + value: int = 11 + kind: NoneType = None + ctx: Load + element: Tuple + elts: list + element: Constant + value: int = 20 + kind: NoneType = None + element: Constant + value: int = 21 + kind: NoneType = None + ctx: Load + ctx: Load + ifs: list + is_async: int = 0 + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = tricky + ctx: Load + keywords: list + element: Assign + targets: list + element: Name + id: str = nested + ctx: Store + value: ListComp + elt: BinOp + left: Constant + value: int = 2 + kind: NoneType = None + op: Mult + right: Name + id: str = x + ctx: Load + generators: list + element: comprehension + target: Name + id: str = x + ctx: Store + iter: ListComp + elt: BinOp + left: Name + id: str = x + ctx: Load + op: Mult + right: Name + id: str = x + ctx: Load + generators: list + element: comprehension + target: Name + id: str = x + ctx: Store + iter: Call + func: Name + id: str = range + ctx: Load + args: list + element: Constant + value: int = 3 + kind: NoneType = None + keywords: list + ifs: list + is_async: int = 0 + ifs: list + is_async: int = 0 + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = nested + ctx: Load + keywords: list + element: Assign + targets: list + element: Name + id: str = a + ctx: Store + value: Constant + value: int = 100 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = x + ctx: Store + value: Constant + value: int = 5 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = scopeTest + ctx: Store + value: ListComp + elt: BinOp + left: Name + id: str = x + ctx: Load + op: Add + right: Name + id: str = a + ctx: Load + generators: list + element: comprehension + target: Name + id: str = x + ctx: Store + iter: Call + func: Name + id: str = range + ctx: Load + args: list + element: Constant + value: int = 5 + kind: NoneType = None + keywords: list + ifs: list + is_async: int = 0 + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = x + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = scopeTest + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/local_classes.js b/transcrypt/development/automated_tests/transcrypt/__target__38/local_classes.js new file mode 100644 index 000000000..9d2fd3bbf --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/local_classes.js @@ -0,0 +1,85 @@ +// Transcrypt'ed from Python, 2021-05-14 15:00:25 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get run () {return run;}, set run (value) {run = value;}}); +var __name__ = 'local_classes'; +export var run = function (autoTester) { + var A = __class__ ('A', [object], { + __module__: __name__, + B: __class__ ('B', [object], { + __module__: __name__, + C: __class__ ('C', [object], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self, x) { + self.x = x; + });}, + get tell () {return __get__ (this, function (self) { + autoTester.check (self.x); + autoTester.check (self.e); + });}, + e: 3 + }), + get __init__ () {return __get__ (this, function (self, x) { + self.x = x; + });}, + get tell () {return __get__ (this, function (self) { + autoTester.check (self.x); + autoTester.check (self.d); + });}, + d: 2 + }), + c: 1, + get __init__ () {return __get__ (this, function (self, x) { + self.x = x; + });}, + get tell () {return __get__ (this, function (self) { + autoTester.check (self.x); + autoTester.check (self.c); + });} + }); + var f = function (x) { + var G = __class__ ('G', [object], { + __module__: __name__, + H: __class__ ('H', [object], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self, x) { + self.x = x; + });}, + get tell () {return __get__ (this, function (self) { + autoTester.check (self.x); + autoTester.check (self.i); + });}, + i: 5 + }), + get __init__ () {return __get__ (this, function (self, x) { + self.x = x; + });}, + get tell () {return __get__ (this, function (self) { + autoTester.check (self.x); + });}, + k: 4 + }); + var g = G (6); + g.tell (); + autoTester.check (g.k); + var h = G.H (7); + h.tell (); + autoTester.check (h.i); + var P = __class__ ('P', [A.B], { + __module__: __name__, + }); + var p = P (7); + p.tell (); + autoTester.check (p.d); + }; + var a = A (8); + var b = a.B (9); + var c = b.C (10); + a.tell (); + b.tell (); + c.tell (); + autoTester.check (a.c); + autoTester.check (b.d); + f (7); +}; + +//# sourceMappingURL=local_classes.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/local_classes.tree b/transcrypt/development/automated_tests/transcrypt/__target__38/local_classes.tree new file mode 100644 index 000000000..71702d0b7 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/local_classes.tree @@ -0,0 +1,780 @@ +file: Module + body: list + element: FunctionDef + name: str = run + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = autoTester + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: ClassDef + name: str = A + bases: list + keywords: list + body: list + element: ClassDef + name: str = B + bases: list + keywords: list + body: list + element: ClassDef + name: str = C + bases: list + keywords: list + body: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = x + ctx: Store + value: Name + id: str = x + ctx: Load + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = tell + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = x + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = e + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = e + ctx: Store + value: Constant + value: int = 3 + kind: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = x + ctx: Store + value: Name + id: str = x + ctx: Load + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = tell + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = x + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = d + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = d + ctx: Store + value: Constant + value: int = 2 + kind: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: Assign + targets: list + element: Name + id: str = c + ctx: Store + value: Constant + value: int = 1 + kind: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = x + ctx: Store + value: Name + id: str = x + ctx: Load + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = tell + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = x + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = c + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: FunctionDef + name: str = f + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: ClassDef + name: str = G + bases: list + keywords: list + body: list + element: ClassDef + name: str = H + bases: list + keywords: list + body: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = x + ctx: Store + value: Name + id: str = x + ctx: Load + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = tell + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = x + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = i + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = i + ctx: Store + value: Constant + value: int = 5 + kind: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = x + ctx: Store + value: Name + id: str = x + ctx: Load + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = tell + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = x + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = k + ctx: Store + value: Constant + value: int = 4 + kind: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: Assign + targets: list + element: Name + id: str = g + ctx: Store + value: Call + func: Name + id: str = G + ctx: Load + args: list + element: Constant + value: int = 6 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = g + ctx: Load + attr: str = tell + ctx: Load + args: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = g + ctx: Load + attr: str = k + ctx: Load + keywords: list + element: Assign + targets: list + element: Name + id: str = h + ctx: Store + value: Call + func: Attribute + value: Name + id: str = G + ctx: Load + attr: str = H + ctx: Load + args: list + element: Constant + value: int = 7 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = h + ctx: Load + attr: str = tell + ctx: Load + args: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = h + ctx: Load + attr: str = i + ctx: Load + keywords: list + element: ClassDef + name: str = P + bases: list + element: Attribute + value: Name + id: str = A + ctx: Load + attr: str = B + ctx: Load + keywords: list + body: list + element: Pass + decorator_list: list + element: Assign + targets: list + element: Name + id: str = p + ctx: Store + value: Call + func: Name + id: str = P + ctx: Load + args: list + element: Constant + value: int = 7 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = p + ctx: Load + attr: str = tell + ctx: Load + args: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = p + ctx: Load + attr: str = d + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = a + ctx: Store + value: Call + func: Name + id: str = A + ctx: Load + args: list + element: Constant + value: int = 8 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = b + ctx: Store + value: Call + func: Attribute + value: Name + id: str = a + ctx: Load + attr: str = B + ctx: Load + args: list + element: Constant + value: int = 9 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = c + ctx: Store + value: Call + func: Attribute + value: Name + id: str = b + ctx: Load + attr: str = C + ctx: Load + args: list + element: Constant + value: int = 10 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = a + ctx: Load + attr: str = tell + ctx: Load + args: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = b + ctx: Load + attr: str = tell + ctx: Load + args: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = c + ctx: Load + attr: str = tell + ctx: Load + args: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = a + ctx: Load + attr: str = c + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = b + ctx: Load + attr: str = d + ctx: Load + keywords: list + element: Expr + value: Call + func: Name + id: str = f + ctx: Load + args: list + element: Constant + value: int = 7 + kind: NoneType = None + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/math.js b/transcrypt/development/automated_tests/transcrypt/__target__38/math.js new file mode 100644 index 000000000..ad3596fd2 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/math.js @@ -0,0 +1,59 @@ +// Transcrypt'ed from Python, 2021-05-14 15:00:24 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get acos () {return acos;}, set acos (value) {acos = value;}, get acosh () {return acosh;}, set acosh (value) {acosh = value;}, get asin () {return asin;}, set asin (value) {asin = value;}, get asinh () {return asinh;}, set asinh (value) {asinh = value;}, get atan () {return atan;}, set atan (value) {atan = value;}, get atan2 () {return atan2;}, set atan2 (value) {atan2 = value;}, get atanh () {return atanh;}, set atanh (value) {atanh = value;}, get ceil () {return ceil;}, set ceil (value) {ceil = value;}, get cos () {return cos;}, set cos (value) {cos = value;}, get cosh () {return cosh;}, set cosh (value) {cosh = value;}, get degrees () {return degrees;}, set degrees (value) {degrees = value;}, get e () {return e;}, set e (value) {e = value;}, get exp () {return exp;}, set exp (value) {exp = value;}, get expm1 () {return expm1;}, set expm1 (value) {expm1 = value;}, get floor () {return floor;}, set floor (value) {floor = value;}, get hypot () {return hypot;}, set hypot (value) {hypot = value;}, get inf () {return inf;}, set inf (value) {inf = value;}, get isnan () {return isnan;}, set isnan (value) {isnan = value;}, get log () {return log;}, set log (value) {log = value;}, get log10 () {return log10;}, set log10 (value) {log10 = value;}, get log1p () {return log1p;}, set log1p (value) {log1p = value;}, get log2 () {return log2;}, set log2 (value) {log2 = value;}, get modf () {return modf;}, set modf (value) {modf = value;}, get nan () {return nan;}, set nan (value) {nan = value;}, get pi () {return pi;}, set pi (value) {pi = value;}, get pow () {return pow;}, set pow (value) {pow = value;}, get radians () {return radians;}, set radians (value) {radians = value;}, get sin () {return sin;}, set sin (value) {sin = value;}, get sinh () {return sinh;}, set sinh (value) {sinh = value;}, get sqrt () {return sqrt;}, set sqrt (value) {sqrt = value;}, get tan () {return tan;}, set tan (value) {tan = value;}, get tanh () {return tanh;}, set tanh (value) {tanh = value;}, get trunc () {return trunc;}, set trunc (value) {trunc = value;}}); +var __name__ = 'math'; +export var pi = Math.PI; +export var e = Math.E; +export var exp = Math.exp; +export var expm1 = function (x) { + return Math.exp (x) - 1; +}; +export var log = function (x, base) { + return (base === undefined ? Math.log (x) : Math.log (x) / Math.log (base)); +}; +export var log1p = function (x) { + return Math.log (x + 1); +}; +export var log2 = function (x) { + return Math.log (x) / Math.LN2; +}; +export var log10 = function (x) { + return Math.log (x) / Math.LN10; +}; +export var pow = Math.pow; +export var sqrt = Math.sqrt; +export var sin = Math.sin; +export var cos = Math.cos; +export var tan = Math.tan; +export var asin = Math.asin; +export var acos = Math.acos; +export var atan = Math.atan; +export var atan2 = Math.atan2; +export var hypot = Math.hypot; +export var degrees = function (x) { + return (x * 180) / Math.PI; +}; +export var radians = function (x) { + return (x * Math.PI) / 180; +}; +export var sinh = Math.sinh; +export var cosh = Math.cosh; +export var tanh = Math.tanh; +export var asinh = Math.asinh; +export var acosh = Math.acosh; +export var atanh = Math.atanh; +export var floor = Math.floor; +export var ceil = Math.ceil; +export var trunc = Math.trunc; +export var isnan = isNaN; +export var inf = Infinity; +export var nan = NaN; +export var modf = function (n) { + var sign = (n >= 0 ? 1 : -(1)); + var __left0__ = divmod (abs (n), 1); + var f = __left0__ [0]; + var mod = __left0__ [1]; + return tuple ([mod * sign, f * sign]); +}; + +//# sourceMappingURL=math.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/math.tree b/transcrypt/development/automated_tests/transcrypt/__target__38/math.tree new file mode 100644 index 000000000..9792aede6 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/math.tree @@ -0,0 +1,679 @@ +file: Module + body: list + element: Assign + targets: list + element: Name + id: str = pi + ctx: Store + value: Attribute + value: Name + id: str = Math + ctx: Load + attr: str = PI + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = e + ctx: Store + value: Attribute + value: Name + id: str = Math + ctx: Load + attr: str = E + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = exp + ctx: Store + value: Attribute + value: Name + id: str = Math + ctx: Load + attr: str = exp + ctx: Load + type_comment: NoneType = None + element: FunctionDef + name: str = expm1 + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: BinOp + left: Call + func: Attribute + value: Name + id: str = Math + ctx: Load + attr: str = exp + ctx: Load + args: list + element: Name + id: str = x + ctx: Load + keywords: list + op: Sub + right: Constant + value: int = 1 + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = log + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = base + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: IfExp + test: Compare + left: Name + id: str = base + ctx: Load + ops: list + element: Is + comparators: list + element: Name + id: str = js_undefined + ctx: Load + body: Call + func: Attribute + value: Name + id: str = Math + ctx: Load + attr: str = log + ctx: Load + args: list + element: Name + id: str = x + ctx: Load + keywords: list + orelse: BinOp + left: Call + func: Attribute + value: Name + id: str = Math + ctx: Load + attr: str = log + ctx: Load + args: list + element: Name + id: str = x + ctx: Load + keywords: list + op: Div + right: Call + func: Attribute + value: Name + id: str = Math + ctx: Load + attr: str = log + ctx: Load + args: list + element: Name + id: str = base + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = log1p + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Call + func: Attribute + value: Name + id: str = Math + ctx: Load + attr: str = log + ctx: Load + args: list + element: BinOp + left: Name + id: str = x + ctx: Load + op: Add + right: Constant + value: int = 1 + kind: NoneType = None + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = log2 + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: BinOp + left: Call + func: Attribute + value: Name + id: str = Math + ctx: Load + attr: str = log + ctx: Load + args: list + element: Name + id: str = x + ctx: Load + keywords: list + op: Div + right: Attribute + value: Name + id: str = Math + ctx: Load + attr: str = LN2 + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = log10 + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: BinOp + left: Call + func: Attribute + value: Name + id: str = Math + ctx: Load + attr: str = log + ctx: Load + args: list + element: Name + id: str = x + ctx: Load + keywords: list + op: Div + right: Attribute + value: Name + id: str = Math + ctx: Load + attr: str = LN10 + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = pow + ctx: Store + value: Attribute + value: Name + id: str = Math + ctx: Load + attr: str = pow + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = sqrt + ctx: Store + value: Attribute + value: Name + id: str = Math + ctx: Load + attr: str = sqrt + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = sin + ctx: Store + value: Attribute + value: Name + id: str = Math + ctx: Load + attr: str = sin + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = cos + ctx: Store + value: Attribute + value: Name + id: str = Math + ctx: Load + attr: str = cos + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = tan + ctx: Store + value: Attribute + value: Name + id: str = Math + ctx: Load + attr: str = tan + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = asin + ctx: Store + value: Attribute + value: Name + id: str = Math + ctx: Load + attr: str = asin + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = acos + ctx: Store + value: Attribute + value: Name + id: str = Math + ctx: Load + attr: str = acos + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = atan + ctx: Store + value: Attribute + value: Name + id: str = Math + ctx: Load + attr: str = atan + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = atan2 + ctx: Store + value: Attribute + value: Name + id: str = Math + ctx: Load + attr: str = atan2 + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = hypot + ctx: Store + value: Attribute + value: Name + id: str = Math + ctx: Load + attr: str = hypot + ctx: Load + type_comment: NoneType = None + element: FunctionDef + name: str = degrees + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: BinOp + left: BinOp + left: Name + id: str = x + ctx: Load + op: Mult + right: Constant + value: int = 180 + kind: NoneType = None + op: Div + right: Attribute + value: Name + id: str = Math + ctx: Load + attr: str = PI + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = radians + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: BinOp + left: BinOp + left: Name + id: str = x + ctx: Load + op: Mult + right: Attribute + value: Name + id: str = Math + ctx: Load + attr: str = PI + ctx: Load + op: Div + right: Constant + value: int = 180 + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = sinh + ctx: Store + value: Attribute + value: Name + id: str = Math + ctx: Load + attr: str = sinh + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = cosh + ctx: Store + value: Attribute + value: Name + id: str = Math + ctx: Load + attr: str = cosh + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = tanh + ctx: Store + value: Attribute + value: Name + id: str = Math + ctx: Load + attr: str = tanh + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = asinh + ctx: Store + value: Attribute + value: Name + id: str = Math + ctx: Load + attr: str = asinh + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = acosh + ctx: Store + value: Attribute + value: Name + id: str = Math + ctx: Load + attr: str = acosh + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = atanh + ctx: Store + value: Attribute + value: Name + id: str = Math + ctx: Load + attr: str = atanh + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = floor + ctx: Store + value: Attribute + value: Name + id: str = Math + ctx: Load + attr: str = floor + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = ceil + ctx: Store + value: Attribute + value: Name + id: str = Math + ctx: Load + attr: str = ceil + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = trunc + ctx: Store + value: Attribute + value: Name + id: str = Math + ctx: Load + attr: str = trunc + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = isnan + ctx: Store + value: Name + id: str = js_isNaN + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = inf + ctx: Store + value: Name + id: str = js_Infinity + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = nan + ctx: Store + value: Name + id: str = js_NaN + ctx: Load + type_comment: NoneType = None + element: FunctionDef + name: str = modf + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = n + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Name + id: str = sign + ctx: Store + value: IfExp + test: Compare + left: Name + id: str = n + ctx: Load + ops: list + element: GtE + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + body: Constant + value: int = 1 + kind: NoneType = None + orelse: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = f + ctx: Store + element: Name + id: str = mod + ctx: Store + ctx: Store + value: Call + func: Name + id: str = divmod + ctx: Load + args: list + element: Call + func: Name + id: str = abs + ctx: Load + args: list + element: Name + id: str = n + ctx: Load + keywords: list + element: Constant + value: int = 1 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Return + value: Tuple + elts: list + element: BinOp + left: Name + id: str = mod + ctx: Load + op: Mult + right: Name + id: str = sign + ctx: Load + element: BinOp + left: Name + id: str = f + ctx: Load + op: Mult + right: Name + id: str = sign + ctx: Load + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/metaclasses.js b/transcrypt/development/automated_tests/transcrypt/__target__38/metaclasses.js new file mode 100644 index 000000000..365a2c730 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/metaclasses.js @@ -0,0 +1,62 @@ +// Transcrypt'ed from Python, 2021-05-14 15:00:25 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +var __all__ = dict ({get Animal () {return Animal;}, set Animal (value) {Animal = value;}, get Plant () {return Plant;}, set Plant (value) {Plant = value;}, get Stone () {return Stone;}, set Stone (value) {Stone = value;}, get Uppercaser () {return Uppercaser;}, set Uppercaser (value) {Uppercaser = value;}, get UppercaserMeta () {return UppercaserMeta;}, set UppercaserMeta (value) {UppercaserMeta = value;}, get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get run () {return run;}, set run (value) {run = value;}}); +var __name__ = 'metaclasses'; +export var UppercaserMeta = __class__ ('UppercaserMeta', [py_metatype], { + __module__: __name__, + get __new__ () {return __get__ (this, function (meta, py_name, bases, attribs) { + var upperAttribs = {}; + for (var attribKey in attribs) { + upperAttribs [(attribKey.startswith ('__') ? attribKey : attribKey.upper ())] = attribs [attribKey]; + } + return py_metatype.__new__ (meta, py_name, bases, upperAttribs); + });} +}); +export var Uppercaser = __class__ ('Uppercaser', [object], { + __module__: __name__, +}, UppercaserMeta); +export var Animal = __class__ ('Animal', [Uppercaser], { + __module__: __name__, + Thoughts: __class__ ('Thoughts', [object], { + __module__: __name__, + quantity: 7 + }), + color: 'Brown', + state: 'Moving', + get move () {return __get__ (this, function (self) { + return 'Move'; + });} +}); +export var Plant = __class__ ('Plant', [Uppercaser], { + __module__: __name__, + Thoughts: __class__ ('Thoughts', [object], { + __module__: __name__, + quantity: 6 + }), + color: 'Green', + state: 'Growing', + get grow () {return __get__ (this, function (self) { + return 'Grow'; + });} +}); +export var Stone = __class__ ('Stone', [object], { + __module__: __name__, + Thoughts: __class__ ('Thoughts', [object], { + __module__: __name__, + quantity: 5 + }), + color: 'Gray', + get be () {return __get__ (this, function (self) { + return 'Being'; + });} +}); +export var run = function (autoTester) { + var animal = Animal (); + autoTester.check (animal.THOUGHTS.quantity, Animal.COLOR, animal.COLOR, animal.MOVE ()); + var plant = Plant (); + autoTester.check (plant.THOUGHTS.quantity, Plant.COLOR, plant.COLOR, plant.GROW ()); + var stone = Stone (); + autoTester.check (stone.Thoughts.quantity, Stone.color, stone.color, stone.be ()); +}; + +//# sourceMappingURL=metaclasses.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/metaclasses.tree b/transcrypt/development/automated_tests/transcrypt/__target__38/metaclasses.tree new file mode 100644 index 000000000..2a74484a2 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/metaclasses.tree @@ -0,0 +1,519 @@ +file: Module + body: list + element: ImportFrom + module: str = org.transcrypt.stubs.browser + names: list + element: alias + name: str = __pragma__ + asname: NoneType = None + level: int = 0 + element: ClassDef + name: str = UppercaserMeta + bases: list + element: Name + id: str = type + ctx: Load + keywords: list + body: list + element: FunctionDef + name: str = __new__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = meta + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = name + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = bases + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = attribs + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = jsiter + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = upperAttribs + ctx: Store + value: Dict + keys: list + values: list + type_comment: NoneType = None + element: For + target: Name + id: str = attribKey + ctx: Store + iter: Name + id: str = attribs + ctx: Load + body: list + element: Assign + targets: list + element: Subscript + value: Name + id: str = upperAttribs + ctx: Load + slice: Index + value: IfExp + test: Call + func: Attribute + value: Name + id: str = attribKey + ctx: Load + attr: str = startswith + ctx: Load + args: list + element: Constant + value: str = __ + kind: NoneType = None + keywords: list + body: Name + id: str = attribKey + ctx: Load + orelse: Call + func: Attribute + value: Name + id: str = attribKey + ctx: Load + attr: str = upper + ctx: Load + args: list + keywords: list + ctx: Store + value: Subscript + value: Name + id: str = attribs + ctx: Load + slice: Index + value: Name + id: str = attribKey + ctx: Load + ctx: Load + type_comment: NoneType = None + orelse: list + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = nojsiter + kind: NoneType = None + keywords: list + element: Return + value: Call + func: Attribute + value: Name + id: str = type + ctx: Load + attr: str = __new__ + ctx: Load + args: list + element: Name + id: str = meta + ctx: Load + element: Name + id: str = name + ctx: Load + element: Name + id: str = bases + ctx: Load + element: Name + id: str = upperAttribs + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: ClassDef + name: str = Uppercaser + bases: list + keywords: list + element: keyword + arg: str = metaclass + value: Name + id: str = UppercaserMeta + ctx: Load + body: list + element: Pass + decorator_list: list + element: ClassDef + name: str = Animal + bases: list + element: Name + id: str = Uppercaser + ctx: Load + keywords: list + body: list + element: ClassDef + name: str = Thoughts + bases: list + keywords: list + body: list + element: Assign + targets: list + element: Name + id: str = quantity + ctx: Store + value: Constant + value: int = 7 + kind: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: Assign + targets: list + element: Name + id: str = color + ctx: Store + value: Constant + value: str = Brown + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = state + ctx: Store + value: Constant + value: str = Moving + kind: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = move + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Constant + value: str = Move + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: ClassDef + name: str = Plant + bases: list + element: Name + id: str = Uppercaser + ctx: Load + keywords: list + body: list + element: ClassDef + name: str = Thoughts + bases: list + keywords: list + body: list + element: Assign + targets: list + element: Name + id: str = quantity + ctx: Store + value: Constant + value: int = 6 + kind: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: Assign + targets: list + element: Name + id: str = color + ctx: Store + value: Constant + value: str = Green + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = state + ctx: Store + value: Constant + value: str = Growing + kind: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = grow + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Constant + value: str = Grow + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: ClassDef + name: str = Stone + bases: list + keywords: list + body: list + element: ClassDef + name: str = Thoughts + bases: list + keywords: list + body: list + element: Assign + targets: list + element: Name + id: str = quantity + ctx: Store + value: Constant + value: int = 5 + kind: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: Assign + targets: list + element: Name + id: str = color + ctx: Store + value: Constant + value: str = Gray + kind: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = be + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Constant + value: str = Being + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: FunctionDef + name: str = run + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = autoTester + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Name + id: str = animal + ctx: Store + value: Call + func: Name + id: str = Animal + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Attribute + value: Name + id: str = animal + ctx: Load + attr: str = THOUGHTS + ctx: Load + attr: str = quantity + ctx: Load + element: Attribute + value: Name + id: str = Animal + ctx: Load + attr: str = COLOR + ctx: Load + element: Attribute + value: Name + id: str = animal + ctx: Load + attr: str = COLOR + ctx: Load + element: Call + func: Attribute + value: Name + id: str = animal + ctx: Load + attr: str = MOVE + ctx: Load + args: list + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = plant + ctx: Store + value: Call + func: Name + id: str = Plant + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Attribute + value: Name + id: str = plant + ctx: Load + attr: str = THOUGHTS + ctx: Load + attr: str = quantity + ctx: Load + element: Attribute + value: Name + id: str = Plant + ctx: Load + attr: str = COLOR + ctx: Load + element: Attribute + value: Name + id: str = plant + ctx: Load + attr: str = COLOR + ctx: Load + element: Call + func: Attribute + value: Name + id: str = plant + ctx: Load + attr: str = GROW + ctx: Load + args: list + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = stone + ctx: Store + value: Call + func: Name + id: str = Stone + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Attribute + value: Name + id: str = stone + ctx: Load + attr: str = Thoughts + ctx: Load + attr: str = quantity + ctx: Load + element: Attribute + value: Name + id: str = Stone + ctx: Load + attr: str = color + ctx: Load + element: Attribute + value: Name + id: str = stone + ctx: Load + attr: str = color + ctx: Load + element: Call + func: Attribute + value: Name + id: str = stone + ctx: Load + attr: str = be + ctx: Load + args: list + keywords: list + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/method_and_class_decorators.js b/transcrypt/development/automated_tests/transcrypt/__target__38/method_and_class_decorators.js new file mode 100644 index 000000000..5385f9fcb --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/method_and_class_decorators.js @@ -0,0 +1,188 @@ +// Transcrypt'ed from Python, 2021-05-14 15:00:25 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get run () {return run;}, set run (value) {run = value;}}); +var __name__ = 'method_and_class_decorators'; +export var run = function (autoTester) { + var adecorator = __class__ ('adecorator', [object], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self) { + var kwargs = dict (); + if (arguments.length) { + var __ilastarg0__ = arguments.length - 1; + if (arguments [__ilastarg0__] && arguments [__ilastarg0__].hasOwnProperty ("__kwargtrans__")) { + var __allkwargs0__ = arguments [__ilastarg0__--]; + for (var __attrib0__ in __allkwargs0__) { + switch (__attrib0__) { + case 'self': var self = __allkwargs0__ [__attrib0__]; break; + default: kwargs [__attrib0__] = __allkwargs0__ [__attrib0__]; + } + } + delete kwargs.__kwargtrans__; + } + var args = tuple ([].slice.apply (arguments).slice (1, __ilastarg0__ + 1)); + } + else { + var args = tuple (); + } + self.args = args; + self.kwargs = kwargs; + });}, + get __call__ () {return __get__ (this, function (self, func) { + var wrapper = function () { + var kwargs = dict (); + if (arguments.length) { + var __ilastarg0__ = arguments.length - 1; + if (arguments [__ilastarg0__] && arguments [__ilastarg0__].hasOwnProperty ("__kwargtrans__")) { + var __allkwargs0__ = arguments [__ilastarg0__--]; + for (var __attrib0__ in __allkwargs0__) { + switch (__attrib0__) { + default: kwargs [__attrib0__] = __allkwargs0__ [__attrib0__]; + } + } + delete kwargs.__kwargtrans__; + } + var args = tuple ([].slice.apply (arguments).slice (0, __ilastarg0__ + 1)); + } + else { + var args = tuple (); + } + var slf = args [0]; + var saved = dict ({}); + for (var [k, v] of self.kwargs.py_items ()) { + if (hasattr (slf, k)) { + saved [k] = getattr (slf, k); + setattr (slf, k, v); + } + } + var ret = func (...args, __kwargtrans__ (kwargs)); + for (var [k, v] of saved.py_items ()) { + setattr (slf, k, v); + } + return ret; + }; + return wrapper; + });} + }); + var method_decorator = function (prefix) { + var inner_decorator = function (method) { + var wrapper = function (self, py_name) { + autoTester.check (py_name); + return method (self, prefix + py_name); + }; + return wrapper; + }; + return inner_decorator; + }; + var method_decorator2 = function (prefix) { + var inner_decorator = function (method) { + var wrapper = function (self, py_name) { + autoTester.check (py_name); + return method (self, prefix + py_name); + }; + return wrapper; + }; + return inner_decorator; + }; + var multiplier = function (m) { + var inner_decorator = function (method) { + var wrapper = function (self, num) { + autoTester.check (num); + var n = method (self, num); + return n * m; + }; + return wrapper; + }; + return inner_decorator; + }; + var classmethod_decorator = function (method) { + var wrapper = function (cls, a, b) { + autoTester.check (cls.__name__, a, b); + return method (cls, b, a); + }; + return wrapper; + }; + var class_decorator = function (prefix) { + var wrapper = function (cls) { + autoTester.check (prefix + cls.__name__); + return cls; + }; + return wrapper; + }; + var MyClass = class_decorator ('outer_') ( __class__ ('MyClass', [object], { + __module__: __name__, + InnerClass: class_decorator ('inner_') ( __class__ ('InnerClass', [object], { + __module__: __name__, + get mymethod () {return __get__ (this, method_decorator ('inner_first_') (method_decorator2 ('inner_second_') (function (self, py_name) { + autoTester.check (py_name); + })));}, + get myclassmethod () {return __getcm__ (this, classmethod_decorator (function (cls, a, b) { + autoTester.check (cls.__name__, a, b); + return a + b; + }));}, + get mystaticmethod () {return function (a, b) { + autoTester.check (a, b); + return a + b; + };}, + get _get_inner_property () {return __get__ (this, function (self) { + return 'I am a property'; + });} + })), + get __init__ () {return __get__ (this, function (self) { + self.greetings = 'Hello'; + });}, + get get_greetings () {return __get__ (this, __call__ (__call__ (adecorator, null, __kwargtrans__ ({greetings: 'Goodbye'})), null, function (self) { + return self.greetings; + }));}, + get mymethod () {return __get__ (this, method_decorator ('first_') (method_decorator2 ('second_') (function (self, py_name) { + autoTester.check (py_name); + })));}, + get number () {return __get__ (this, multiplier (5) (function (self, num) { + return num; + }));}, + get myclassmethod () {return __getcm__ (this, function (cls, a, b) { + autoTester.check (cls.__name__, a, b); + return a + b; + });}, + get mystaticmethod () {return function (a, b) { + autoTester.check (a + b); + return a + b; + };}, + get _get_simple_property () {return __get__ (this, function (self) { + return self.greetings; + });}, + get _set_simple_property () {return __get__ (this, function (self, value) { + self.greetings = value; + });}, + get run () {return __get__ (this, function (self) { + var inner_obj = self.InnerClass (); + inner_obj.mymethod ('Dog'); + var result1 = inner_obj.myclassmethod ('param1', 'param2'); + var result2 = self.InnerClass.myclassmethod ('param1', 'param2'); + autoTester.check (result1 == result2); + var result1 = inner_obj.mystaticmethod ('param1', 'param2'); + var result2 = self.InnerClass.mystaticmethod ('param1', 'param2'); + autoTester.check (result1 == result2); + autoTester.check (inner_obj.inner_property); + });} + })); + Object.defineProperty (MyClass, 'simple_property', property.call (MyClass, MyClass._get_simple_property, MyClass._set_simple_property)); + Object.defineProperty (MyClass.InnerClass, 'inner_property', property.call (MyClass.InnerClass, MyClass.InnerClass._get_inner_property));; + var myobj = MyClass (); + myobj.mymethod ('Cat'); + autoTester.check (myobj.greetings); + autoTester.check (myobj.get_greetings ()); + var result1 = myobj.myclassmethod ('param1', 'param2'); + var result2 = MyClass.myclassmethod ('param1', 'param2'); + autoTester.check (result1 == result2); + var result1 = myobj.mystaticmethod ('param1', 'param2'); + var result2 = MyClass.mystaticmethod ('param1', 'param2'); + autoTester.check (result1 == result2); + autoTester.check (myobj.number (3)); + autoTester.check (myobj.simple_property); + myobj.simple_property = 'New value'; + autoTester.check (myobj.simple_property); + autoTester.check (myobj.greetings == myobj.simple_property); + myobj.run (); +}; + +//# sourceMappingURL=method_and_class_decorators.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/method_and_class_decorators.tree b/transcrypt/development/automated_tests/transcrypt/__target__38/method_and_class_decorators.tree new file mode 100644 index 000000000..958c8feab --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/method_and_class_decorators.tree @@ -0,0 +1,1840 @@ +file: Module + body: list + element: ImportFrom + module: str = org.transcrypt.stubs.browser + names: list + element: alias + name: str = __pragma__ + asname: NoneType = None + level: int = 0 + element: FunctionDef + name: str = run + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = autoTester + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: ClassDef + name: str = adecorator + bases: list + keywords: list + body: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = kwargs + kind: NoneType = None + keywords: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: arg + arg: str = args + annotation: NoneType = None + type_comment: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: arg + arg: str = kwargs + annotation: NoneType = None + type_comment: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = args + ctx: Store + value: Name + id: str = args + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = kwargs + ctx: Store + value: Name + id: str = kwargs + ctx: Load + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = nokwargs + kind: NoneType = None + keywords: list + element: FunctionDef + name: str = __call__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = func + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = kwargs + kind: NoneType = None + keywords: list + element: FunctionDef + name: str = wrapper + args: arguments + posonlyargs: list + args: list + vararg: arg + arg: str = args + annotation: NoneType = None + type_comment: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: arg + arg: str = kwargs + annotation: NoneType = None + type_comment: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Name + id: str = slf + ctx: Store + value: Subscript + value: Name + id: str = args + ctx: Load + slice: Index + value: Constant + value: int = 0 + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = saved + ctx: Store + value: Dict + keys: list + values: list + type_comment: NoneType = None + element: For + target: Tuple + elts: list + element: Name + id: str = k + ctx: Store + element: Name + id: str = v + ctx: Store + ctx: Store + iter: Call + func: Attribute + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = kwargs + ctx: Load + attr: str = items + ctx: Load + args: list + keywords: list + body: list + element: If + test: Call + func: Name + id: str = hasattr + ctx: Load + args: list + element: Name + id: str = slf + ctx: Load + element: Name + id: str = k + ctx: Load + keywords: list + body: list + element: Assign + targets: list + element: Subscript + value: Name + id: str = saved + ctx: Load + slice: Index + value: Name + id: str = k + ctx: Load + ctx: Store + value: Call + func: Name + id: str = getattr + ctx: Load + args: list + element: Name + id: str = slf + ctx: Load + element: Name + id: str = k + ctx: Load + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = setattr + ctx: Load + args: list + element: Name + id: str = slf + ctx: Load + element: Name + id: str = k + ctx: Load + element: Name + id: str = v + ctx: Load + keywords: list + orelse: list + orelse: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = ret + ctx: Store + value: Call + func: Name + id: str = func + ctx: Load + args: list + element: Starred + value: Name + id: str = args + ctx: Load + ctx: Load + keywords: list + element: keyword + arg: NoneType = None + value: Name + id: str = kwargs + ctx: Load + type_comment: NoneType = None + element: For + target: Tuple + elts: list + element: Name + id: str = k + ctx: Store + element: Name + id: str = v + ctx: Store + ctx: Store + iter: Call + func: Attribute + value: Name + id: str = saved + ctx: Load + attr: str = items + ctx: Load + args: list + keywords: list + body: list + element: Expr + value: Call + func: Name + id: str = setattr + ctx: Load + args: list + element: Name + id: str = slf + ctx: Load + element: Name + id: str = k + ctx: Load + element: Name + id: str = v + ctx: Load + keywords: list + orelse: list + type_comment: NoneType = None + element: Return + value: Name + id: str = ret + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = nokwargs + kind: NoneType = None + keywords: list + element: Return + value: Name + id: str = wrapper + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: FunctionDef + name: str = method_decorator + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = prefix + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: FunctionDef + name: str = inner_decorator + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = method + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: FunctionDef + name: str = wrapper + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = name + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = name + ctx: Load + keywords: list + element: Return + value: Call + func: Name + id: str = method + ctx: Load + args: list + element: Name + id: str = self + ctx: Load + element: BinOp + left: Name + id: str = prefix + ctx: Load + op: Add + right: Name + id: str = name + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Return + value: Name + id: str = wrapper + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Return + value: Name + id: str = inner_decorator + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = method_decorator2 + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = prefix + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: FunctionDef + name: str = inner_decorator + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = method + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: FunctionDef + name: str = wrapper + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = name + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = name + ctx: Load + keywords: list + element: Return + value: Call + func: Name + id: str = method + ctx: Load + args: list + element: Name + id: str = self + ctx: Load + element: BinOp + left: Name + id: str = prefix + ctx: Load + op: Add + right: Name + id: str = name + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Return + value: Name + id: str = wrapper + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Return + value: Name + id: str = inner_decorator + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = multiplier + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = m + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: FunctionDef + name: str = inner_decorator + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = method + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: FunctionDef + name: str = wrapper + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = num + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = num + ctx: Load + keywords: list + element: Assign + targets: list + element: Name + id: str = n + ctx: Store + value: Call + func: Name + id: str = method + ctx: Load + args: list + element: Name + id: str = self + ctx: Load + element: Name + id: str = num + ctx: Load + keywords: list + type_comment: NoneType = None + element: Return + value: BinOp + left: Name + id: str = n + ctx: Load + op: Mult + right: Name + id: str = m + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Return + value: Name + id: str = wrapper + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Return + value: Name + id: str = inner_decorator + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = classmethod_decorator + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = method + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: FunctionDef + name: str = wrapper + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = cls + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = a + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = b + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = cls + ctx: Load + attr: str = __name__ + ctx: Load + element: Name + id: str = a + ctx: Load + element: Name + id: str = b + ctx: Load + keywords: list + element: Return + value: Call + func: Name + id: str = method + ctx: Load + args: list + element: Name + id: str = cls + ctx: Load + element: Name + id: str = b + ctx: Load + element: Name + id: str = a + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Return + value: Name + id: str = wrapper + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = class_decorator + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = prefix + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: FunctionDef + name: str = wrapper + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = cls + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BinOp + left: Name + id: str = prefix + ctx: Load + op: Add + right: Attribute + value: Name + id: str = cls + ctx: Load + attr: str = __name__ + ctx: Load + keywords: list + element: Return + value: Name + id: str = cls + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Return + value: Name + id: str = wrapper + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: ClassDef + name: str = MyClass + bases: list + keywords: list + body: list + element: ClassDef + name: str = InnerClass + bases: list + keywords: list + body: list + element: FunctionDef + name: str = mymethod + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = name + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = name + ctx: Load + keywords: list + decorator_list: list + element: Call + func: Name + id: str = method_decorator + ctx: Load + args: list + element: Constant + value: str = inner_first_ + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = method_decorator2 + ctx: Load + args: list + element: Constant + value: str = inner_second_ + kind: NoneType = None + keywords: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = myclassmethod + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = cls + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = a + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = b + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = cls + ctx: Load + attr: str = __name__ + ctx: Load + element: Name + id: str = a + ctx: Load + element: Name + id: str = b + ctx: Load + keywords: list + element: Return + value: BinOp + left: Name + id: str = a + ctx: Load + op: Add + right: Name + id: str = b + ctx: Load + decorator_list: list + element: Name + id: str = classmethod + ctx: Load + element: Name + id: str = classmethod_decorator + ctx: Load + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = mystaticmethod + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = a + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = b + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = a + ctx: Load + element: Name + id: str = b + ctx: Load + keywords: list + element: Return + value: BinOp + left: Name + id: str = a + ctx: Load + op: Add + right: Name + id: str = b + ctx: Load + decorator_list: list + element: Name + id: str = staticmethod + ctx: Load + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = inner_property + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Constant + value: str = I am a property + kind: NoneType = None + decorator_list: list + element: Name + id: str = property + ctx: Load + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: Call + func: Name + id: str = class_decorator + ctx: Load + args: list + element: Constant + value: str = inner_ + kind: NoneType = None + keywords: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = greetings + ctx: Store + value: Constant + value: str = Hello + kind: NoneType = None + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = opov + kind: NoneType = None + keywords: list + element: FunctionDef + name: str = get_greetings + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = greetings + ctx: Load + decorator_list: list + element: Call + func: Name + id: str = adecorator + ctx: Load + args: list + keywords: list + element: keyword + arg: str = greetings + value: Constant + value: str = Goodbye + kind: NoneType = None + returns: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = noopov + kind: NoneType = None + keywords: list + element: FunctionDef + name: str = mymethod + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = name + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = name + ctx: Load + keywords: list + decorator_list: list + element: Call + func: Name + id: str = method_decorator + ctx: Load + args: list + element: Constant + value: str = first_ + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = method_decorator2 + ctx: Load + args: list + element: Constant + value: str = second_ + kind: NoneType = None + keywords: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = number + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = num + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Name + id: str = num + ctx: Load + decorator_list: list + element: Call + func: Name + id: str = multiplier + ctx: Load + args: list + element: Constant + value: int = 5 + kind: NoneType = None + keywords: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = myclassmethod + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = cls + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = a + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = b + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = cls + ctx: Load + attr: str = __name__ + ctx: Load + element: Name + id: str = a + ctx: Load + element: Name + id: str = b + ctx: Load + keywords: list + element: Return + value: BinOp + left: Name + id: str = a + ctx: Load + op: Add + right: Name + id: str = b + ctx: Load + decorator_list: list + element: Name + id: str = classmethod + ctx: Load + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = mystaticmethod + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = a + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = b + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BinOp + left: Name + id: str = a + ctx: Load + op: Add + right: Name + id: str = b + ctx: Load + keywords: list + element: Return + value: BinOp + left: Name + id: str = a + ctx: Load + op: Add + right: Name + id: str = b + ctx: Load + decorator_list: list + element: Name + id: str = staticmethod + ctx: Load + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = simple_property + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = greetings + ctx: Load + decorator_list: list + element: Name + id: str = property + ctx: Load + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = simple_property + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = value + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = greetings + ctx: Store + value: Name + id: str = value + ctx: Load + type_comment: NoneType = None + decorator_list: list + element: Attribute + value: Name + id: str = simple_property + ctx: Load + attr: str = setter + ctx: Load + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = run + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Name + id: str = inner_obj + ctx: Store + value: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = InnerClass + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = inner_obj + ctx: Load + attr: str = mymethod + ctx: Load + args: list + element: Constant + value: str = Dog + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = result1 + ctx: Store + value: Call + func: Attribute + value: Name + id: str = inner_obj + ctx: Load + attr: str = myclassmethod + ctx: Load + args: list + element: Constant + value: str = param1 + kind: NoneType = None + element: Constant + value: str = param2 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = result2 + ctx: Store + value: Call + func: Attribute + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = InnerClass + ctx: Load + attr: str = myclassmethod + ctx: Load + args: list + element: Constant + value: str = param1 + kind: NoneType = None + element: Constant + value: str = param2 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Name + id: str = result1 + ctx: Load + ops: list + element: Eq + comparators: list + element: Name + id: str = result2 + ctx: Load + keywords: list + element: Assign + targets: list + element: Name + id: str = result1 + ctx: Store + value: Call + func: Attribute + value: Name + id: str = inner_obj + ctx: Load + attr: str = mystaticmethod + ctx: Load + args: list + element: Constant + value: str = param1 + kind: NoneType = None + element: Constant + value: str = param2 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = result2 + ctx: Store + value: Call + func: Attribute + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = InnerClass + ctx: Load + attr: str = mystaticmethod + ctx: Load + args: list + element: Constant + value: str = param1 + kind: NoneType = None + element: Constant + value: str = param2 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Name + id: str = result1 + ctx: Load + ops: list + element: Eq + comparators: list + element: Name + id: str = result2 + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = inner_obj + ctx: Load + attr: str = inner_property + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: Call + func: Name + id: str = class_decorator + ctx: Load + args: list + element: Constant + value: str = outer_ + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = myobj + ctx: Store + value: Call + func: Name + id: str = MyClass + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = myobj + ctx: Load + attr: str = mymethod + ctx: Load + args: list + element: Constant + value: str = Cat + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = myobj + ctx: Load + attr: str = greetings + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = myobj + ctx: Load + attr: str = get_greetings + ctx: Load + args: list + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = result1 + ctx: Store + value: Call + func: Attribute + value: Name + id: str = myobj + ctx: Load + attr: str = myclassmethod + ctx: Load + args: list + element: Constant + value: str = param1 + kind: NoneType = None + element: Constant + value: str = param2 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = result2 + ctx: Store + value: Call + func: Attribute + value: Name + id: str = MyClass + ctx: Load + attr: str = myclassmethod + ctx: Load + args: list + element: Constant + value: str = param1 + kind: NoneType = None + element: Constant + value: str = param2 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Name + id: str = result1 + ctx: Load + ops: list + element: Eq + comparators: list + element: Name + id: str = result2 + ctx: Load + keywords: list + element: Assign + targets: list + element: Name + id: str = result1 + ctx: Store + value: Call + func: Attribute + value: Name + id: str = myobj + ctx: Load + attr: str = mystaticmethod + ctx: Load + args: list + element: Constant + value: str = param1 + kind: NoneType = None + element: Constant + value: str = param2 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = result2 + ctx: Store + value: Call + func: Attribute + value: Name + id: str = MyClass + ctx: Load + attr: str = mystaticmethod + ctx: Load + args: list + element: Constant + value: str = param1 + kind: NoneType = None + element: Constant + value: str = param2 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Name + id: str = result1 + ctx: Load + ops: list + element: Eq + comparators: list + element: Name + id: str = result2 + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = myobj + ctx: Load + attr: str = number + ctx: Load + args: list + element: Constant + value: int = 3 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = myobj + ctx: Load + attr: str = simple_property + ctx: Load + keywords: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = myobj + ctx: Load + attr: str = simple_property + ctx: Store + value: Constant + value: str = New value + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = myobj + ctx: Load + attr: str = simple_property + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Attribute + value: Name + id: str = myobj + ctx: Load + attr: str = greetings + ctx: Load + ops: list + element: Eq + comparators: list + element: Attribute + value: Name + id: str = myobj + ctx: Load + attr: str = simple_property + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = myobj + ctx: Load + attr: str = run + ctx: Load + args: list + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/module_builtin.js b/transcrypt/development/automated_tests/transcrypt/__target__38/module_builtin.js new file mode 100644 index 000000000..85e3fec6a --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/module_builtin.js @@ -0,0 +1,43 @@ +// Transcrypt'ed from Python, 2021-05-14 15:00:25 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get canonizeString () {return canonizeString;}, set canonizeString (value) {canonizeString = value;}, get canonizeStringList () {return canonizeStringList;}, set canonizeStringList (value) {canonizeStringList = value;}, get run () {return run;}, set run (value) {run = value;}}); +var __name__ = 'module_builtin'; +export var canonizeString = function (aString) { + if (__envir__.executor_name == 'transcrypt') { + return aString.py_replace ('\t', '\\t').py_replace ('\n', '\\n'); + } + else { + return aString; + } +}; +export var canonizeStringList = function (stringList) { + return (function () { + var __accu0__ = []; + for (var aString of stringList) { + __accu0__.append (canonizeString (aString)); + } + return __accu0__; + }) (); +}; +export var run = function (autoTester) { + autoTester.check ('min', min (-(1.1), -(1), -(3))); + autoTester.check ('max', max (-(1.1), -(1), -(3))); + autoTester.check ('abs', abs (-(1)), abs (1), abs (0), abs (-(0.1)), abs (0.1)); + autoTester.check ('ord', ord ('a'), ord ('e´' [0])); + autoTester.check ('round', round (4.006), round (4.006, 2), round (4060, -(2)), round (-(4.006)), round (-(4.006), 2), round (-(4060), -(2)), round (1 / 2.0), round (1 / 2.0, 1), round (1 / 2, 1), round (1 / 3.0, 2), round (-(1) / 2.0), round (-(1) / 2.0, 1), round (-(1) / 2, 1), round (-(1) / 3.0, 2), round (0.5), round (0.51), round (1.5), round (1.51), round (1.51), round (2.5), round (2.59), round (3.5), round (3.59), round (-(0.5)), round (-(0.51)), round (-(1.5)), round (-(1.51)), round (-(1.51)), round (-(2.5)), round (-(2.59)), round (-(3.5)), round (-(3.59))); + var strings = ['der des dem den die der den die das des dem das', 'an auf hinter ueber neben vor zwischen', '\n durch\n fuer\n ohne\n um\n bis\n gegen\n entlang\n ', 'eins,zwei,drie,vier,fuenf,sechs,sieben']; + autoTester.check ('

split'); + for (var aString of strings) { + autoTester.check (canonizeString (aString), canonizeStringList (aString.py_split ()), canonizeStringList (aString.py_split (' ')), canonizeStringList (aString.py_split (' ', 4)), canonizeStringList (aString.py_split ('\t')), canonizeStringList (aString.py_split ('\t', 4)), canonizeStringList (aString.py_split ('\n')), canonizeStringList (aString.py_split ('\n', 4)), canonizeStringList (aString.py_split (',')), canonizeStringList (aString.py_split (',', 4)), '
'); + } + autoTester.check ('
rsplit'); + for (var aString of strings) { + autoTester.check (canonizeString (aString), canonizeStringList (aString.rsplit ()), canonizeStringList (aString.rsplit (' ')), canonizeStringList (aString.rsplit (' ', 4)), canonizeStringList (aString.rsplit ('\t')), canonizeStringList (aString.rsplit ('\t', 4)), canonizeStringList (aString.rsplit ('\n')), canonizeStringList (aString.rsplit ('\n', 4)), canonizeStringList (aString.rsplit (',')), canonizeStringList (aString.rsplit (',', 4)), '
'); + } + autoTester.check (''.isalpha ()); + autoTester.check ('123'.isalpha ()); + autoTester.check ('abc'.isalpha ()); + autoTester.check ('abc123'.isalpha ()); +}; + +//# sourceMappingURL=module_builtin.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/module_builtin.tree b/transcrypt/development/automated_tests/transcrypt/__target__38/module_builtin.tree new file mode 100644 index 000000000..382d2416a --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/module_builtin.tree @@ -0,0 +1,1249 @@ +file: Module + body: list + element: ImportFrom + module: str = org.transcrypt.stubs.browser + names: list + element: alias + name: str = __envir__ + asname: NoneType = None + level: int = 0 + element: FunctionDef + name: str = canonizeString + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = aString + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: Compare + left: Attribute + value: Name + id: str = __envir__ + ctx: Load + attr: str = executor_name + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = transcrypt + kind: NoneType = None + body: list + element: Return + value: Call + func: Attribute + value: Call + func: Attribute + value: Name + id: str = aString + ctx: Load + attr: str = replace + ctx: Load + args: list + element: Constant + value: str = + kind: NoneType = None + element: Constant + value: str = \t + kind: NoneType = None + keywords: list + attr: str = replace + ctx: Load + args: list + element: Constant + value: str = + + kind: NoneType = None + element: Constant + value: str = \n + kind: NoneType = None + keywords: list + orelse: list + element: Return + value: Name + id: str = aString + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = canonizeStringList + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = stringList + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: ListComp + elt: Call + func: Name + id: str = canonizeString + ctx: Load + args: list + element: Name + id: str = aString + ctx: Load + keywords: list + generators: list + element: comprehension + target: Name + id: str = aString + ctx: Store + iter: Name + id: str = stringList + ctx: Load + ifs: list + is_async: int = 0 + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = run + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = autoTester + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = min + kind: NoneType = None + element: Call + func: Name + id: str = min + ctx: Load + args: list + element: UnaryOp + op: USub + operand: Constant + value: float = 1.1 + kind: NoneType = None + element: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + element: UnaryOp + op: USub + operand: Constant + value: int = 3 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = max + kind: NoneType = None + element: Call + func: Name + id: str = max + ctx: Load + args: list + element: UnaryOp + op: USub + operand: Constant + value: float = 1.1 + kind: NoneType = None + element: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + element: UnaryOp + op: USub + operand: Constant + value: int = 3 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = abs + kind: NoneType = None + element: Call + func: Name + id: str = abs + ctx: Load + args: list + element: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = abs + ctx: Load + args: list + element: Constant + value: int = 1 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = abs + ctx: Load + args: list + element: Constant + value: int = 0 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = abs + ctx: Load + args: list + element: UnaryOp + op: USub + operand: Constant + value: float = 0.1 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = abs + ctx: Load + args: list + element: Constant + value: float = 0.1 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = ord + kind: NoneType = None + element: Call + func: Name + id: str = ord + ctx: Load + args: list + element: Constant + value: str = a + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = ord + ctx: Load + args: list + element: Subscript + value: Constant + value: str = e´ + kind: NoneType = None + slice: Index + value: Constant + value: int = 0 + kind: NoneType = None + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = round + kind: NoneType = None + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: Constant + value: float = 4.006 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: Constant + value: float = 4.006 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: Constant + value: int = 4060 + kind: NoneType = None + element: UnaryOp + op: USub + operand: Constant + value: int = 2 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: UnaryOp + op: USub + operand: Constant + value: float = 4.006 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: UnaryOp + op: USub + operand: Constant + value: float = 4.006 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: UnaryOp + op: USub + operand: Constant + value: int = 4060 + kind: NoneType = None + element: UnaryOp + op: USub + operand: Constant + value: int = 2 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: BinOp + left: Constant + value: int = 1 + kind: NoneType = None + op: Div + right: Constant + value: float = 2.0 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: BinOp + left: Constant + value: int = 1 + kind: NoneType = None + op: Div + right: Constant + value: float = 2.0 + kind: NoneType = None + element: Constant + value: int = 1 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: BinOp + left: Constant + value: int = 1 + kind: NoneType = None + op: Div + right: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 1 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: BinOp + left: Constant + value: int = 1 + kind: NoneType = None + op: Div + right: Constant + value: float = 3.0 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: BinOp + left: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + op: Div + right: Constant + value: float = 2.0 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: BinOp + left: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + op: Div + right: Constant + value: float = 2.0 + kind: NoneType = None + element: Constant + value: int = 1 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: BinOp + left: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + op: Div + right: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 1 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: BinOp + left: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + op: Div + right: Constant + value: float = 3.0 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: Constant + value: float = 0.5 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: Constant + value: float = 0.51 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: Constant + value: float = 1.5 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: Constant + value: float = 1.51 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: Constant + value: float = 1.51 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: Constant + value: float = 2.5 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: Constant + value: float = 2.59 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: Constant + value: float = 3.5 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: Constant + value: float = 3.59 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: UnaryOp + op: USub + operand: Constant + value: float = 0.5 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: UnaryOp + op: USub + operand: Constant + value: float = 0.51 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: UnaryOp + op: USub + operand: Constant + value: float = 1.5 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: UnaryOp + op: USub + operand: Constant + value: float = 1.51 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: UnaryOp + op: USub + operand: Constant + value: float = 1.51 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: UnaryOp + op: USub + operand: Constant + value: float = 2.5 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: UnaryOp + op: USub + operand: Constant + value: float = 2.59 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: UnaryOp + op: USub + operand: Constant + value: float = 3.5 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: UnaryOp + op: USub + operand: Constant + value: float = 3.59 + kind: NoneType = None + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = strings + ctx: Store + value: List + elts: list + element: Constant + value: str = der des dem den die der den die das des dem das + kind: NoneType = None + element: Constant + value: str = an auf hinter ueber neben vor zwischen + kind: NoneType = None + element: Constant + value: str = + durch + fuer + ohne + um + bis + gegen + entlang + + kind: NoneType = None + element: Constant + value: str = eins,zwei,drie,vier,fuenf,sechs,sieben + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str =

split + kind: NoneType = None + keywords: list + element: For + target: Name + id: str = aString + ctx: Store + iter: Name + id: str = strings + ctx: Load + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = canonizeString + ctx: Load + args: list + element: Name + id: str = aString + ctx: Load + keywords: list + element: Call + func: Name + id: str = canonizeStringList + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = aString + ctx: Load + attr: str = split + ctx: Load + args: list + keywords: list + keywords: list + element: Call + func: Name + id: str = canonizeStringList + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = aString + ctx: Load + attr: str = split + ctx: Load + args: list + element: Constant + value: str = + kind: NoneType = None + keywords: list + keywords: list + element: Call + func: Name + id: str = canonizeStringList + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = aString + ctx: Load + attr: str = split + ctx: Load + args: list + element: Constant + value: str = + kind: NoneType = None + element: Constant + value: int = 4 + kind: NoneType = None + keywords: list + keywords: list + element: Call + func: Name + id: str = canonizeStringList + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = aString + ctx: Load + attr: str = split + ctx: Load + args: list + element: Constant + value: str = + kind: NoneType = None + keywords: list + keywords: list + element: Call + func: Name + id: str = canonizeStringList + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = aString + ctx: Load + attr: str = split + ctx: Load + args: list + element: Constant + value: str = + kind: NoneType = None + element: Constant + value: int = 4 + kind: NoneType = None + keywords: list + keywords: list + element: Call + func: Name + id: str = canonizeStringList + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = aString + ctx: Load + attr: str = split + ctx: Load + args: list + element: Constant + value: str = + + kind: NoneType = None + keywords: list + keywords: list + element: Call + func: Name + id: str = canonizeStringList + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = aString + ctx: Load + attr: str = split + ctx: Load + args: list + element: Constant + value: str = + + kind: NoneType = None + element: Constant + value: int = 4 + kind: NoneType = None + keywords: list + keywords: list + element: Call + func: Name + id: str = canonizeStringList + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = aString + ctx: Load + attr: str = split + ctx: Load + args: list + element: Constant + value: str = , + kind: NoneType = None + keywords: list + keywords: list + element: Call + func: Name + id: str = canonizeStringList + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = aString + ctx: Load + attr: str = split + ctx: Load + args: list + element: Constant + value: str = , + kind: NoneType = None + element: Constant + value: int = 4 + kind: NoneType = None + keywords: list + keywords: list + element: Constant + value: str =
+ kind: NoneType = None + keywords: list + orelse: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str =
rsplit + kind: NoneType = None + keywords: list + element: For + target: Name + id: str = aString + ctx: Store + iter: Name + id: str = strings + ctx: Load + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = canonizeString + ctx: Load + args: list + element: Name + id: str = aString + ctx: Load + keywords: list + element: Call + func: Name + id: str = canonizeStringList + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = aString + ctx: Load + attr: str = rsplit + ctx: Load + args: list + keywords: list + keywords: list + element: Call + func: Name + id: str = canonizeStringList + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = aString + ctx: Load + attr: str = rsplit + ctx: Load + args: list + element: Constant + value: str = + kind: NoneType = None + keywords: list + keywords: list + element: Call + func: Name + id: str = canonizeStringList + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = aString + ctx: Load + attr: str = rsplit + ctx: Load + args: list + element: Constant + value: str = + kind: NoneType = None + element: Constant + value: int = 4 + kind: NoneType = None + keywords: list + keywords: list + element: Call + func: Name + id: str = canonizeStringList + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = aString + ctx: Load + attr: str = rsplit + ctx: Load + args: list + element: Constant + value: str = + kind: NoneType = None + keywords: list + keywords: list + element: Call + func: Name + id: str = canonizeStringList + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = aString + ctx: Load + attr: str = rsplit + ctx: Load + args: list + element: Constant + value: str = + kind: NoneType = None + element: Constant + value: int = 4 + kind: NoneType = None + keywords: list + keywords: list + element: Call + func: Name + id: str = canonizeStringList + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = aString + ctx: Load + attr: str = rsplit + ctx: Load + args: list + element: Constant + value: str = + + kind: NoneType = None + keywords: list + keywords: list + element: Call + func: Name + id: str = canonizeStringList + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = aString + ctx: Load + attr: str = rsplit + ctx: Load + args: list + element: Constant + value: str = + + kind: NoneType = None + element: Constant + value: int = 4 + kind: NoneType = None + keywords: list + keywords: list + element: Call + func: Name + id: str = canonizeStringList + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = aString + ctx: Load + attr: str = rsplit + ctx: Load + args: list + element: Constant + value: str = , + kind: NoneType = None + keywords: list + keywords: list + element: Call + func: Name + id: str = canonizeStringList + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = aString + ctx: Load + attr: str = rsplit + ctx: Load + args: list + element: Constant + value: str = , + kind: NoneType = None + element: Constant + value: int = 4 + kind: NoneType = None + keywords: list + keywords: list + element: Constant + value: str =
+ kind: NoneType = None + keywords: list + orelse: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = + kind: NoneType = None + attr: str = isalpha + ctx: Load + args: list + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = 123 + kind: NoneType = None + attr: str = isalpha + ctx: Load + args: list + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = abc + kind: NoneType = None + attr: str = isalpha + ctx: Load + args: list + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = abc123 + kind: NoneType = None + attr: str = isalpha + ctx: Load + args: list + keywords: list + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/module_cmath.js b/transcrypt/development/automated_tests/transcrypt/__target__38/module_cmath.js new file mode 100644 index 000000000..9fe7e69a6 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/module_cmath.js @@ -0,0 +1,130 @@ +// Transcrypt'ed from Python, 2021-05-14 15:00:24 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +import {acos, acosh, asin, asinh, atan, atanh, cos, cosh, e, exp, isfinite, isinf, isnan, log, log10, phase, pi, polar, rect, sin, sinh, sqrt, tan, tanh} from './cmath.js'; +export {tanh, atan, sinh, tan, asin, exp, rect, polar, pi, acosh, log10, cosh, acos, cos, asinh, isfinite, isnan, e, sin, sqrt, phase, isinf, log, atanh}; +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get nDecs () {return nDecs;}, set nDecs (value) {nDecs = value;}, get run () {return run;}, set run (value) {run = value;}, get twoPi () {return twoPi;}, set twoPi (value) {twoPi = value;}}); +var __name__ = 'module_cmath'; +export var twoPi = 2 * pi; +export var nDecs = 5; +export var run = function (autoTester) { + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __call__ (phase, null, __add__ (1, complex (0, 1.0)))); + }) (); + var aPolar = __call__ (polar, null, __add__ (3, complex (0, 5.0))); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __call__ (round, null, __getitem__ (aPolar, 0), nDecs), __getitem__ (aPolar, 1)); + }) (); + var aRect = __call__ (rect, null, ...aPolar); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __call__ (round, null, aRect.real), __call__ (round, null, aRect.imag)); + }) (); + var anExp = __call__ (exp, null, __sub__ (__neg__ (2.2), complex (0, 3.3))); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __call__ (round, null, anExp.real, nDecs), __call__ (round, null, anExp.imag, nDecs)); + }) (); + var aLog = __call__ (log, null, anExp); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __call__ (round, null, aLog.real, nDecs), __call__ (round, null, aLog.imag, nDecs)); + }) (); + var anExp10 = __pow__ (aLog, 10); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __call__ (round, null, anExp10.real, nDecs), __call__ (round, null, anExp10.imag, nDecs)); + }) (); + var aLog10 = __call__ (log10, null, anExp10); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __call__ (round, null, aLog10.real, nDecs), __call__ (round, null, aLog10.imag, nDecs)); + }) (); + var anExpRect = __pow__ (aLog, aRect); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __call__ (round, null, anExpRect.real, nDecs), __call__ (round, null, anExpRect.imag, nDecs)); + }) (); + var aLogRect = __call__ (log, null, anExpRect, aRect); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __call__ (round, null, aLogRect.real, nDecs), __call__ (round, null, aLogRect.imag, nDecs)); + }) (); + var aSqrt = __call__ (sqrt, null, complex (0, 1.0)); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __call__ (round, null, aSqrt.real, nDecs), __call__ (round, null, aSqrt.imag, nDecs)); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __call__ (sqrt, null, 4)); + }) (); + var anotherSqrt = __call__ (sqrt, null, __neg__ (4)); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __call__ (round, null, anotherSqrt.real), __call__ (round, null, anotherSqrt.imag)); + }) (); + var anAsin = __call__ (asin, null, __add__ (1, complex (0, 2.0))); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __call__ (round, null, anAsin.real, nDecs), __call__ (round, null, anAsin.imag, nDecs)); + }) (); + var anAcos = __call__ (acos, null, __add__ (__neg__ (2), complex (0, 3.0))); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __call__ (round, null, anAcos.real, nDecs), __call__ (round, null, anAcos.imag, nDecs)); + }) (); + var anAtan = __call__ (atan, null, __sub__ (3, complex (0, 4.0))); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __call__ (round, null, anAtan.real, nDecs), __call__ (round, null, anAtan.imag, nDecs)); + }) (); + var aSin = __call__ (sin, null, anAsin); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __call__ (round, null, aSin.real), __call__ (round, null, aSin.imag)); + }) (); + var aCos = __call__ (cos, null, anAcos); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __call__ (round, null, aCos.real), __call__ (round, null, aCos.imag)); + }) (); + var aTan = __call__ (tan, null, anAtan); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __call__ (round, null, aTan.real), __call__ (round, null, aTan.imag)); + }) (); + var anAsinh = __call__ (asinh, null, aCos); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __call__ (round, null, anAsinh.real, nDecs), __call__ (round, null, anAsinh.imag, nDecs)); + }) (); + var anAcosh = __call__ (acosh, null, aSin); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __call__ (round, null, anAcosh.real, nDecs), __call__ (round, null, anAcosh.imag, nDecs)); + }) (); + var anAtanh = __call__ (atanh, null, aTan); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __call__ (round, null, anAtanh.real, nDecs), __call__ (round, null, anAtanh.imag, nDecs)); + }) (); + var aSinh = __call__ (sinh, null, anAsinh); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __call__ (round, null, aSinh.real), __call__ (round, null, aSinh.imag)); + }) (); + var aCosh = __call__ (cosh, null, anAcosh); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __call__ (round, null, aCosh.real), __call__ (round, null, aCosh.imag)); + }) (); + var aTanh = __call__ (tanh, null, anAtanh); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __call__ (round, null, aTanh.real), __call__ (round, null, aTanh.imag)); + }) (); +}; + +//# sourceMappingURL=module_cmath.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/module_cmath.tree b/transcrypt/development/automated_tests/transcrypt/__target__38/module_cmath.tree new file mode 100644 index 000000000..7a5e27258 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/module_cmath.tree @@ -0,0 +1,1304 @@ +file: Module + body: list + element: ImportFrom + module: str = org.transcrypt.stubs.browser + names: list + element: alias + name: str = __pragma__ + asname: NoneType = None + level: int = 0 + element: ImportFrom + module: str = cmath + names: list + element: alias + name: str = * + asname: NoneType = None + level: int = 0 + element: Assign + targets: list + element: Name + id: str = twoPi + ctx: Store + value: BinOp + left: Constant + value: int = 2 + kind: NoneType = None + op: Mult + right: Name + id: str = pi + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = nDecs + ctx: Store + value: Constant + value: int = 5 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = opov + kind: NoneType = None + keywords: list + element: FunctionDef + name: str = run + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = autoTester + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = phase + ctx: Load + args: list + element: BinOp + left: Constant + value: int = 1 + kind: NoneType = None + op: Add + right: Constant + value: complex = 1j + kind: NoneType = None + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = aPolar + ctx: Store + value: Call + func: Name + id: str = polar + ctx: Load + args: list + element: BinOp + left: Constant + value: int = 3 + kind: NoneType = None + op: Add + right: Constant + value: complex = 5j + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: Subscript + value: Name + id: str = aPolar + ctx: Load + slice: Index + value: Constant + value: int = 0 + kind: NoneType = None + ctx: Load + element: Name + id: str = nDecs + ctx: Load + keywords: list + element: Subscript + value: Name + id: str = aPolar + ctx: Load + slice: Index + value: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + keywords: list + element: Assign + targets: list + element: Name + id: str = aRect + ctx: Store + value: Call + func: Name + id: str = rect + ctx: Load + args: list + element: Starred + value: Name + id: str = aPolar + ctx: Load + ctx: Load + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: Attribute + value: Name + id: str = aRect + ctx: Load + attr: str = real + ctx: Load + keywords: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: Attribute + value: Name + id: str = aRect + ctx: Load + attr: str = imag + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = anExp + ctx: Store + value: Call + func: Name + id: str = exp + ctx: Load + args: list + element: BinOp + left: UnaryOp + op: USub + operand: Constant + value: float = 2.2 + kind: NoneType = None + op: Sub + right: Constant + value: complex = 3.3j + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: Attribute + value: Name + id: str = anExp + ctx: Load + attr: str = real + ctx: Load + element: Name + id: str = nDecs + ctx: Load + keywords: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: Attribute + value: Name + id: str = anExp + ctx: Load + attr: str = imag + ctx: Load + element: Name + id: str = nDecs + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = aLog + ctx: Store + value: Call + func: Name + id: str = log + ctx: Load + args: list + element: Name + id: str = anExp + ctx: Load + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: Attribute + value: Name + id: str = aLog + ctx: Load + attr: str = real + ctx: Load + element: Name + id: str = nDecs + ctx: Load + keywords: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: Attribute + value: Name + id: str = aLog + ctx: Load + attr: str = imag + ctx: Load + element: Name + id: str = nDecs + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = anExp10 + ctx: Store + value: BinOp + left: Name + id: str = aLog + ctx: Load + op: Pow + right: Constant + value: int = 10 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: Attribute + value: Name + id: str = anExp10 + ctx: Load + attr: str = real + ctx: Load + element: Name + id: str = nDecs + ctx: Load + keywords: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: Attribute + value: Name + id: str = anExp10 + ctx: Load + attr: str = imag + ctx: Load + element: Name + id: str = nDecs + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = aLog10 + ctx: Store + value: Call + func: Name + id: str = log10 + ctx: Load + args: list + element: Name + id: str = anExp10 + ctx: Load + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: Attribute + value: Name + id: str = aLog10 + ctx: Load + attr: str = real + ctx: Load + element: Name + id: str = nDecs + ctx: Load + keywords: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: Attribute + value: Name + id: str = aLog10 + ctx: Load + attr: str = imag + ctx: Load + element: Name + id: str = nDecs + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = anExpRect + ctx: Store + value: BinOp + left: Name + id: str = aLog + ctx: Load + op: Pow + right: Name + id: str = aRect + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: Attribute + value: Name + id: str = anExpRect + ctx: Load + attr: str = real + ctx: Load + element: Name + id: str = nDecs + ctx: Load + keywords: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: Attribute + value: Name + id: str = anExpRect + ctx: Load + attr: str = imag + ctx: Load + element: Name + id: str = nDecs + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = aLogRect + ctx: Store + value: Call + func: Name + id: str = log + ctx: Load + args: list + element: Name + id: str = anExpRect + ctx: Load + element: Name + id: str = aRect + ctx: Load + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: Attribute + value: Name + id: str = aLogRect + ctx: Load + attr: str = real + ctx: Load + element: Name + id: str = nDecs + ctx: Load + keywords: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: Attribute + value: Name + id: str = aLogRect + ctx: Load + attr: str = imag + ctx: Load + element: Name + id: str = nDecs + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = aSqrt + ctx: Store + value: Call + func: Name + id: str = sqrt + ctx: Load + args: list + element: Constant + value: complex = 1j + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: Attribute + value: Name + id: str = aSqrt + ctx: Load + attr: str = real + ctx: Load + element: Name + id: str = nDecs + ctx: Load + keywords: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: Attribute + value: Name + id: str = aSqrt + ctx: Load + attr: str = imag + ctx: Load + element: Name + id: str = nDecs + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = sqrt + ctx: Load + args: list + element: Constant + value: int = 4 + kind: NoneType = None + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = anotherSqrt + ctx: Store + value: Call + func: Name + id: str = sqrt + ctx: Load + args: list + element: UnaryOp + op: USub + operand: Constant + value: int = 4 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: Attribute + value: Name + id: str = anotherSqrt + ctx: Load + attr: str = real + ctx: Load + keywords: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: Attribute + value: Name + id: str = anotherSqrt + ctx: Load + attr: str = imag + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = anAsin + ctx: Store + value: Call + func: Name + id: str = asin + ctx: Load + args: list + element: BinOp + left: Constant + value: int = 1 + kind: NoneType = None + op: Add + right: Constant + value: complex = 2j + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: Attribute + value: Name + id: str = anAsin + ctx: Load + attr: str = real + ctx: Load + element: Name + id: str = nDecs + ctx: Load + keywords: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: Attribute + value: Name + id: str = anAsin + ctx: Load + attr: str = imag + ctx: Load + element: Name + id: str = nDecs + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = anAcos + ctx: Store + value: Call + func: Name + id: str = acos + ctx: Load + args: list + element: BinOp + left: UnaryOp + op: USub + operand: Constant + value: int = 2 + kind: NoneType = None + op: Add + right: Constant + value: complex = 3j + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: Attribute + value: Name + id: str = anAcos + ctx: Load + attr: str = real + ctx: Load + element: Name + id: str = nDecs + ctx: Load + keywords: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: Attribute + value: Name + id: str = anAcos + ctx: Load + attr: str = imag + ctx: Load + element: Name + id: str = nDecs + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = anAtan + ctx: Store + value: Call + func: Name + id: str = atan + ctx: Load + args: list + element: BinOp + left: Constant + value: int = 3 + kind: NoneType = None + op: Sub + right: Constant + value: complex = 4j + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: Attribute + value: Name + id: str = anAtan + ctx: Load + attr: str = real + ctx: Load + element: Name + id: str = nDecs + ctx: Load + keywords: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: Attribute + value: Name + id: str = anAtan + ctx: Load + attr: str = imag + ctx: Load + element: Name + id: str = nDecs + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = aSin + ctx: Store + value: Call + func: Name + id: str = sin + ctx: Load + args: list + element: Name + id: str = anAsin + ctx: Load + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: Attribute + value: Name + id: str = aSin + ctx: Load + attr: str = real + ctx: Load + keywords: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: Attribute + value: Name + id: str = aSin + ctx: Load + attr: str = imag + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = aCos + ctx: Store + value: Call + func: Name + id: str = cos + ctx: Load + args: list + element: Name + id: str = anAcos + ctx: Load + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: Attribute + value: Name + id: str = aCos + ctx: Load + attr: str = real + ctx: Load + keywords: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: Attribute + value: Name + id: str = aCos + ctx: Load + attr: str = imag + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = aTan + ctx: Store + value: Call + func: Name + id: str = tan + ctx: Load + args: list + element: Name + id: str = anAtan + ctx: Load + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: Attribute + value: Name + id: str = aTan + ctx: Load + attr: str = real + ctx: Load + keywords: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: Attribute + value: Name + id: str = aTan + ctx: Load + attr: str = imag + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = anAsinh + ctx: Store + value: Call + func: Name + id: str = asinh + ctx: Load + args: list + element: Name + id: str = aCos + ctx: Load + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: Attribute + value: Name + id: str = anAsinh + ctx: Load + attr: str = real + ctx: Load + element: Name + id: str = nDecs + ctx: Load + keywords: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: Attribute + value: Name + id: str = anAsinh + ctx: Load + attr: str = imag + ctx: Load + element: Name + id: str = nDecs + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = anAcosh + ctx: Store + value: Call + func: Name + id: str = acosh + ctx: Load + args: list + element: Name + id: str = aSin + ctx: Load + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: Attribute + value: Name + id: str = anAcosh + ctx: Load + attr: str = real + ctx: Load + element: Name + id: str = nDecs + ctx: Load + keywords: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: Attribute + value: Name + id: str = anAcosh + ctx: Load + attr: str = imag + ctx: Load + element: Name + id: str = nDecs + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = anAtanh + ctx: Store + value: Call + func: Name + id: str = atanh + ctx: Load + args: list + element: Name + id: str = aTan + ctx: Load + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: Attribute + value: Name + id: str = anAtanh + ctx: Load + attr: str = real + ctx: Load + element: Name + id: str = nDecs + ctx: Load + keywords: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: Attribute + value: Name + id: str = anAtanh + ctx: Load + attr: str = imag + ctx: Load + element: Name + id: str = nDecs + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = aSinh + ctx: Store + value: Call + func: Name + id: str = sinh + ctx: Load + args: list + element: Name + id: str = anAsinh + ctx: Load + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: Attribute + value: Name + id: str = aSinh + ctx: Load + attr: str = real + ctx: Load + keywords: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: Attribute + value: Name + id: str = aSinh + ctx: Load + attr: str = imag + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = aCosh + ctx: Store + value: Call + func: Name + id: str = cosh + ctx: Load + args: list + element: Name + id: str = anAcosh + ctx: Load + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: Attribute + value: Name + id: str = aCosh + ctx: Load + attr: str = real + ctx: Load + keywords: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: Attribute + value: Name + id: str = aCosh + ctx: Load + attr: str = imag + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = aTanh + ctx: Store + value: Call + func: Name + id: str = tanh + ctx: Load + args: list + element: Name + id: str = anAtanh + ctx: Load + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: Attribute + value: Name + id: str = aTanh + ctx: Load + attr: str = real + ctx: Load + keywords: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: Attribute + value: Name + id: str = aTanh + ctx: Load + attr: str = imag + ctx: Load + keywords: list + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/module_datetime.js b/transcrypt/development/automated_tests/transcrypt/__target__38/module_datetime.js new file mode 100644 index 000000000..189c738e1 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/module_datetime.js @@ -0,0 +1,326 @@ +// Transcrypt'ed from Python, 2021-05-14 15:00:24 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +import {date, datetime, timedelta, timezone} from './datetime.js'; +export {timedelta, timezone, datetime, date}; +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get fix_time () {return fix_time;}, set fix_time (value) {fix_time = value;}, get run () {return run;}, set run (value) {run = value;}}); +var __name__ = 'module_datetime'; +export var fix_time = function (dt) { + if (__gt__ (dt.hour, 23)) { + var dt = __sub__ (dt, __call__ (timedelta, null, __kwargtrans__ ({minutes: 60}))); + } + if (__gt__ (dt.minute, 50)) { + var dt = __sub__ (dt, __call__ (timedelta, null, __kwargtrans__ ({minutes: 10}))); + } + return dt; +}; +export var run = function (autoTester) { + var tz = timezone.utc; + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __call__ (repr, null, tz)); + }) (); + var tz2 = __call__ (timezone, null, __call__ (timedelta, null, __kwargtrans__ ({hours: __neg__ (5)})), 'EST'); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __call__ (repr, null, tz2)); + }) (); + var now = __call__ (fix_time, null, (function () { + var __accu0__ = datetime; + return __call__ (__accu0__.utcnow, __accu0__); + }) ()); + var now2 = __call__ (fix_time, null, (function () { + var __accu0__ = datetime; + return __call__ (__accu0__.now, __accu0__, timezone.utc); + }) ()); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __eq__ (now.day, now2.day)); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __eq__ (now.hour, now2.hour)); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, (function () { + var __accu1__ = (function () { + var __accu2__ = now; + return __call__ (__accu2__.py_replace, __accu2__, __kwargtrans__ ({tzinfo: timezone.utc})); + }) (); + return __call__ (__accu1__.astimezone, __accu1__, __kwargtrans__ ({tz: null})); + }) ().hour); + }) (); + var delta = __call__ (timedelta, null, __kwargtrans__ ({days: 8, minutes: 15, microseconds: 685})); + var delta2 = __call__ (timedelta, null, __kwargtrans__ ({days: 8, minutes: 15, microseconds: 684})); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, delta); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, delta2); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __eq__ (delta, delta2)); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __gt__ (delta, delta2)); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __lt__ (delta, delta2)); + }) (); + var d = __call__ (date, null, 2017, 5, 5); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, d.day); + }) (); + var d = (function () { + var __accu0__ = date; + return __call__ (__accu0__.today, __accu0__); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, d); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, d.day); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, (function () { + var __accu1__ = d; + return __call__ (__accu1__.weekday, __accu1__); + }) ()); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, (function () { + var __accu1__ = d; + return __call__ (__accu1__.isoweekday, __accu1__); + }) ()); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, (function () { + var __accu1__ = d; + return __call__ (__accu1__.isocalendar, __accu1__); + }) ()); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, (function () { + var __accu1__ = d; + return __call__ (__accu1__.ctime, __accu1__); + }) ()); + }) (); + var d = (function () { + var __accu0__ = d; + return __call__ (__accu0__.py_replace, __accu0__, __kwargtrans__ ({day: 28})); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, d.day); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, (function () { + var __accu1__ = d; + return __call__ (__accu1__.strftime, __accu1__, '%Y.%m.%d'); + }) ()); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, (function () { + var __accu1__ = d; + return __call__ (__accu1__.ctime, __accu1__); + }) ()); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, (function () { + var __accu1__ = d; + return __call__ (__accu1__.isoformat, __accu1__); + }) ()); + }) (); + var d2 = __add__ (d, delta); + var d3 = __sub__ (d2, delta); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, d); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, d2); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, d3); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __eq__ (d, d3)); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __gt__ (d, d3)); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __lt__ (d, d3)); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __eq__ (d, d2)); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __gt__ (d, d2)); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __lt__ (d, d2)); + }) (); + var now = __call__ (fix_time, null, (function () { + var __accu0__ = datetime; + return __call__ (__accu0__.now, __accu0__); + }) ()); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, now.day); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, now.hour); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, (__add__ (now, __call__ (timedelta, null, __kwargtrans__ ({days: 2})))).day); + }) (); + var d = __call__ (datetime, null, 2010, 1, 1, __kwargtrans__ ({tzinfo: timezone.utc})); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, d); + }) (); + var d = __call__ (datetime, null, 2017, 9, 19, 15, 43, 8, 142); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, d); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __sub__ (d, __call__ (timedelta, null, __kwargtrans__ ({minutes: 150})))); + }) (); + var d = (function () { + var __accu0__ = datetime; + return __call__ (__accu0__.strptime, __accu0__, '2017-03-14 15:28:14', '%Y-%m-%d %H:%M:%S'); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, d); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, (function () { + var __accu1__ = d; + return __call__ (__accu1__.strftime, __accu1__, '%Y.%m.%d %H:%M:%S'); + }) ()); + }) (); + var d = __add__ (d, __call__ (timedelta, null, __kwargtrans__ ({hours: 5, minutes: 18, seconds: 25}))); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, (function () { + var __accu1__ = d; + return __call__ (__accu1__.strftime, __accu1__, '%Y-%m-%d %H:%M:%S'); + }) ()); + }) (); + var d = (function () { + var __accu0__ = d; + return __call__ (__accu0__.py_replace, __accu0__, __kwargtrans__ ({year: 2016, month: 1})); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, (function () { + var __accu1__ = d; + return __call__ (__accu1__.ctime, __accu1__); + }) ()); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, (function () { + var __accu1__ = d; + return __call__ (__accu1__.isoformat, __accu1__); + }) ()); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, (function () { + var __accu1__ = d; + return __call__ (__accu1__.date, __accu1__); + }) ()); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, (function () { + var __accu1__ = d; + return __call__ (__accu1__.time, __accu1__); + }) ()); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __call__ (tuple, null, (function () { + var __accu1__ = d; + return __call__ (__accu1__.timetuple, __accu1__); + }) ())); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __call__ (tuple, null, (function () { + var __accu1__ = d; + return __call__ (__accu1__.utctimetuple, __accu1__); + }) ())); + }) (); + var d2 = __add__ (d, delta); + var d3 = __sub__ (d2, delta); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, d); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, d2); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, d3); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __eq__ (d, d3)); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __gt__ (d, d3)); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __lt__ (d, d3)); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __eq__ (d, d2)); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __gt__ (d, d2)); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __lt__ (d, d2)); + }) (); +}; + +//# sourceMappingURL=module_datetime.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/module_datetime.tree b/transcrypt/development/automated_tests/transcrypt/__target__38/module_datetime.tree new file mode 100644 index 000000000..b004d79fc --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/module_datetime.tree @@ -0,0 +1,1588 @@ +file: Module + body: list + element: ImportFrom + module: str = datetime + names: list + element: alias + name: str = date + asname: NoneType = None + element: alias + name: str = timedelta + asname: NoneType = None + element: alias + name: str = datetime + asname: NoneType = None + element: alias + name: str = timezone + asname: NoneType = None + level: int = 0 + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = opov + kind: NoneType = None + keywords: list + element: FunctionDef + name: str = fix_time + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = dt + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: Compare + left: Attribute + value: Name + id: str = dt + ctx: Load + attr: str = hour + ctx: Load + ops: list + element: Gt + comparators: list + element: Constant + value: int = 23 + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = dt + ctx: Store + value: BinOp + left: Name + id: str = dt + ctx: Load + op: Sub + right: Call + func: Name + id: str = timedelta + ctx: Load + args: list + keywords: list + element: keyword + arg: str = minutes + value: Constant + value: int = 60 + kind: NoneType = None + type_comment: NoneType = None + orelse: list + element: If + test: Compare + left: Attribute + value: Name + id: str = dt + ctx: Load + attr: str = minute + ctx: Load + ops: list + element: Gt + comparators: list + element: Constant + value: int = 50 + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = dt + ctx: Store + value: BinOp + left: Name + id: str = dt + ctx: Load + op: Sub + right: Call + func: Name + id: str = timedelta + ctx: Load + args: list + keywords: list + element: keyword + arg: str = minutes + value: Constant + value: int = 10 + kind: NoneType = None + type_comment: NoneType = None + orelse: list + element: Return + value: Name + id: str = dt + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = run + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = autoTester + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Name + id: str = tz + ctx: Store + value: Attribute + value: Name + id: str = timezone + ctx: Load + attr: str = utc + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Name + id: str = tz + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = tz2 + ctx: Store + value: Call + func: Name + id: str = timezone + ctx: Load + args: list + element: Call + func: Name + id: str = timedelta + ctx: Load + args: list + keywords: list + element: keyword + arg: str = hours + value: UnaryOp + op: USub + operand: Constant + value: int = 5 + kind: NoneType = None + element: Constant + value: str = EST + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Name + id: str = tz2 + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = now + ctx: Store + value: Call + func: Name + id: str = fix_time + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = datetime + ctx: Load + attr: str = utcnow + ctx: Load + args: list + keywords: list + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = now2 + ctx: Store + value: Call + func: Name + id: str = fix_time + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = datetime + ctx: Load + attr: str = now + ctx: Load + args: list + element: Attribute + value: Name + id: str = timezone + ctx: Load + attr: str = utc + ctx: Load + keywords: list + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Attribute + value: Name + id: str = now + ctx: Load + attr: str = day + ctx: Load + ops: list + element: Eq + comparators: list + element: Attribute + value: Name + id: str = now2 + ctx: Load + attr: str = day + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Attribute + value: Name + id: str = now + ctx: Load + attr: str = hour + ctx: Load + ops: list + element: Eq + comparators: list + element: Attribute + value: Name + id: str = now2 + ctx: Load + attr: str = hour + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Call + func: Attribute + value: Call + func: Attribute + value: Name + id: str = now + ctx: Load + attr: str = replace + ctx: Load + args: list + keywords: list + element: keyword + arg: str = tzinfo + value: Attribute + value: Name + id: str = timezone + ctx: Load + attr: str = utc + ctx: Load + attr: str = astimezone + ctx: Load + args: list + keywords: list + element: keyword + arg: str = tz + value: Constant + value: NoneType = None + kind: NoneType = None + attr: str = hour + ctx: Load + keywords: list + element: Assign + targets: list + element: Name + id: str = delta + ctx: Store + value: Call + func: Name + id: str = timedelta + ctx: Load + args: list + keywords: list + element: keyword + arg: str = days + value: Constant + value: int = 8 + kind: NoneType = None + element: keyword + arg: str = minutes + value: Constant + value: int = 15 + kind: NoneType = None + element: keyword + arg: str = microseconds + value: Constant + value: int = 685 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = delta2 + ctx: Store + value: Call + func: Name + id: str = timedelta + ctx: Load + args: list + keywords: list + element: keyword + arg: str = days + value: Constant + value: int = 8 + kind: NoneType = None + element: keyword + arg: str = minutes + value: Constant + value: int = 15 + kind: NoneType = None + element: keyword + arg: str = microseconds + value: Constant + value: int = 684 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = delta + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = delta2 + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Name + id: str = delta + ctx: Load + ops: list + element: Eq + comparators: list + element: Name + id: str = delta2 + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Name + id: str = delta + ctx: Load + ops: list + element: Gt + comparators: list + element: Name + id: str = delta2 + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Name + id: str = delta + ctx: Load + ops: list + element: Lt + comparators: list + element: Name + id: str = delta2 + ctx: Load + keywords: list + element: Assign + targets: list + element: Name + id: str = d + ctx: Store + value: Call + func: Name + id: str = date + ctx: Load + args: list + element: Constant + value: int = 2017 + kind: NoneType = None + element: Constant + value: int = 5 + kind: NoneType = None + element: Constant + value: int = 5 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = d + ctx: Load + attr: str = day + ctx: Load + keywords: list + element: Assign + targets: list + element: Name + id: str = d + ctx: Store + value: Call + func: Attribute + value: Name + id: str = date + ctx: Load + attr: str = today + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = d + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = d + ctx: Load + attr: str = day + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = d + ctx: Load + attr: str = weekday + ctx: Load + args: list + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = d + ctx: Load + attr: str = isoweekday + ctx: Load + args: list + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = d + ctx: Load + attr: str = isocalendar + ctx: Load + args: list + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = d + ctx: Load + attr: str = ctime + ctx: Load + args: list + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = d + ctx: Store + value: Call + func: Attribute + value: Name + id: str = d + ctx: Load + attr: str = replace + ctx: Load + args: list + keywords: list + element: keyword + arg: str = day + value: Constant + value: int = 28 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = d + ctx: Load + attr: str = day + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = d + ctx: Load + attr: str = strftime + ctx: Load + args: list + element: Constant + value: str = %Y.%m.%d + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = d + ctx: Load + attr: str = ctime + ctx: Load + args: list + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = d + ctx: Load + attr: str = isoformat + ctx: Load + args: list + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = d2 + ctx: Store + value: BinOp + left: Name + id: str = d + ctx: Load + op: Add + right: Name + id: str = delta + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = d3 + ctx: Store + value: BinOp + left: Name + id: str = d2 + ctx: Load + op: Sub + right: Name + id: str = delta + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = d + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = d2 + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = d3 + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Name + id: str = d + ctx: Load + ops: list + element: Eq + comparators: list + element: Name + id: str = d3 + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Name + id: str = d + ctx: Load + ops: list + element: Gt + comparators: list + element: Name + id: str = d3 + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Name + id: str = d + ctx: Load + ops: list + element: Lt + comparators: list + element: Name + id: str = d3 + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Name + id: str = d + ctx: Load + ops: list + element: Eq + comparators: list + element: Name + id: str = d2 + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Name + id: str = d + ctx: Load + ops: list + element: Gt + comparators: list + element: Name + id: str = d2 + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Name + id: str = d + ctx: Load + ops: list + element: Lt + comparators: list + element: Name + id: str = d2 + ctx: Load + keywords: list + element: Assign + targets: list + element: Name + id: str = now + ctx: Store + value: Call + func: Name + id: str = fix_time + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = datetime + ctx: Load + attr: str = now + ctx: Load + args: list + keywords: list + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = now + ctx: Load + attr: str = day + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = now + ctx: Load + attr: str = hour + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: BinOp + left: Name + id: str = now + ctx: Load + op: Add + right: Call + func: Name + id: str = timedelta + ctx: Load + args: list + keywords: list + element: keyword + arg: str = days + value: Constant + value: int = 2 + kind: NoneType = None + attr: str = day + ctx: Load + keywords: list + element: Assign + targets: list + element: Name + id: str = d + ctx: Store + value: Call + func: Name + id: str = datetime + ctx: Load + args: list + element: Constant + value: int = 2010 + kind: NoneType = None + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 1 + kind: NoneType = None + keywords: list + element: keyword + arg: str = tzinfo + value: Attribute + value: Name + id: str = timezone + ctx: Load + attr: str = utc + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = d + ctx: Load + keywords: list + element: Assign + targets: list + element: Name + id: str = d + ctx: Store + value: Call + func: Name + id: str = datetime + ctx: Load + args: list + element: Constant + value: int = 2017 + kind: NoneType = None + element: Constant + value: int = 9 + kind: NoneType = None + element: Constant + value: int = 19 + kind: NoneType = None + element: Constant + value: int = 15 + kind: NoneType = None + element: Constant + value: int = 43 + kind: NoneType = None + element: Constant + value: int = 8 + kind: NoneType = None + element: Constant + value: int = 142 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = d + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BinOp + left: Name + id: str = d + ctx: Load + op: Sub + right: Call + func: Name + id: str = timedelta + ctx: Load + args: list + keywords: list + element: keyword + arg: str = minutes + value: Constant + value: int = 150 + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = d + ctx: Store + value: Call + func: Attribute + value: Name + id: str = datetime + ctx: Load + attr: str = strptime + ctx: Load + args: list + element: Constant + value: str = 2017-03-14 15:28:14 + kind: NoneType = None + element: Constant + value: str = %Y-%m-%d %H:%M:%S + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = d + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = d + ctx: Load + attr: str = strftime + ctx: Load + args: list + element: Constant + value: str = %Y.%m.%d %H:%M:%S + kind: NoneType = None + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = d + ctx: Store + value: BinOp + left: Name + id: str = d + ctx: Load + op: Add + right: Call + func: Name + id: str = timedelta + ctx: Load + args: list + keywords: list + element: keyword + arg: str = hours + value: Constant + value: int = 5 + kind: NoneType = None + element: keyword + arg: str = minutes + value: Constant + value: int = 18 + kind: NoneType = None + element: keyword + arg: str = seconds + value: Constant + value: int = 25 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = d + ctx: Load + attr: str = strftime + ctx: Load + args: list + element: Constant + value: str = %Y-%m-%d %H:%M:%S + kind: NoneType = None + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = d + ctx: Store + value: Call + func: Attribute + value: Name + id: str = d + ctx: Load + attr: str = replace + ctx: Load + args: list + keywords: list + element: keyword + arg: str = year + value: Constant + value: int = 2016 + kind: NoneType = None + element: keyword + arg: str = month + value: Constant + value: int = 1 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = d + ctx: Load + attr: str = ctime + ctx: Load + args: list + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = d + ctx: Load + attr: str = isoformat + ctx: Load + args: list + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = d + ctx: Load + attr: str = date + ctx: Load + args: list + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = d + ctx: Load + attr: str = time + ctx: Load + args: list + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = tuple + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = d + ctx: Load + attr: str = timetuple + ctx: Load + args: list + keywords: list + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = tuple + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = d + ctx: Load + attr: str = utctimetuple + ctx: Load + args: list + keywords: list + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = d2 + ctx: Store + value: BinOp + left: Name + id: str = d + ctx: Load + op: Add + right: Name + id: str = delta + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = d3 + ctx: Store + value: BinOp + left: Name + id: str = d2 + ctx: Load + op: Sub + right: Name + id: str = delta + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = d + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = d2 + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = d3 + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Name + id: str = d + ctx: Load + ops: list + element: Eq + comparators: list + element: Name + id: str = d3 + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Name + id: str = d + ctx: Load + ops: list + element: Gt + comparators: list + element: Name + id: str = d3 + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Name + id: str = d + ctx: Load + ops: list + element: Lt + comparators: list + element: Name + id: str = d3 + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Name + id: str = d + ctx: Load + ops: list + element: Eq + comparators: list + element: Name + id: str = d2 + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Name + id: str = d + ctx: Load + ops: list + element: Gt + comparators: list + element: Name + id: str = d2 + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Name + id: str = d + ctx: Load + ops: list + element: Lt + comparators: list + element: Name + id: str = d2 + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/module_itertools.js b/transcrypt/development/automated_tests/transcrypt/__target__38/module_itertools.js new file mode 100644 index 000000000..4bed49e90 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/module_itertools.js @@ -0,0 +1,83 @@ +// Transcrypt'ed from Python, 2021-05-14 15:00:24 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +import {pow} from './math.js'; +import {accumulate, chain, combinations, combinations_with_replacement, compress, count, cycle, dropwhile, filterfalse, groupby, islice, permutations, product, repeat, starmap, takewhile, tee} from './itertools.js'; +export {combinations, islice, tee, product, repeat, compress, accumulate, count, cycle, chain, dropwhile, takewhile, starmap, filterfalse, groupby, combinations_with_replacement, permutations, pow}; +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get chars () {return chars;}, set chars (value) {chars = value;}, get fibonacci () {return fibonacci;}, set fibonacci (value) {fibonacci = value;}, get run () {return run;}, set run (value) {run = value;}, get squares () {return squares;}, set squares (value) {squares = value;}}); +var __name__ = 'module_itertools'; +export var fibonacci = function* () { + var __left0__ = tuple ([0, 1]); + var a = __left0__ [0]; + var b = __left0__ [1]; + for (var i = 0; i < 10; i++) { + yield a; + var __left0__ = tuple ([b, a + b]); + var a = __left0__ [0]; + var b = __left0__ [1]; + } + }; +export var squares = (function () { + var __accu0__ = []; + for (var i = 0; i < 10; i++) { + __accu0__.append (i * i); + } + return __accu0__; +}) (); +export var chars = 'thequickbrownfoxjumpsoverthelazydog'; +export var run = function (autoTester) { + autoTester.check ('islice count', list (islice (count (10, 2), 4, 40, 3))); + autoTester.check ('islice cycle', list (islice (cycle (fibonacci ()), 15))); + autoTester.check ('repeat', list (repeat (3.14, 15))); + autoTester.check ('islice repeat', list (islice (repeat (2.74), 15))); + autoTester.check ('accumulate', list (accumulate (range (5)))); + var add = function (total, element) { + return total + element; + }; + autoTester.check ('accumulate', list (accumulate (['alamak', 'mirach', 'sirrah'], add))); + autoTester.check ('chain', list (chain (fibonacci (), squares, chars))); + autoTester.check ('chain.from_iterable', list (chain.from_iterable (['ape', 'node', 'mice', 'vim', 'sus', 'jet']))); + var selectors = [true, true, false, true, false, false, true, true, false, true]; + autoTester.check ('compress', list (compress ((function () { + var __accu0__ = []; + for (var [index, py_selector] of enumerate (selectors)) { + __accu0__.append ('{}{}'.format ((py_selector ? 'take' : 'leave'), index)); + } + return __accu0__; + }) (), selectors))); + autoTester.check ('dropwhile', list (dropwhile ((function __lambda__ (x) { + return x < 5; + }), [1, 4, 6, 4, 1]))); + autoTester.check ('filterfalse', list (filterfalse ((function __lambda__ (x) { + return __mod__ (x, 2); + }), range (10)))); + var things = [tuple (['animal', 'bear']), tuple (['animal', 'duck']), tuple (['plant', 'cactus']), tuple (['vehicle', 'speed boat']), tuple (['vehicle', 'school bus'])]; + for (var [key, group] of groupby (things, (function __lambda__ (x) { + return x [0]; + }))) { + for (var thing of group) { + autoTester.check ('A {} is a {}.'.format (thing [1], key)); + } + autoTester.check (' '); + } + autoTester.check ('islice', list (islice ([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 2, 9, 2))); + autoTester.check ('starmap', (function () { + var __accu0__ = []; + for (var x of starmap (pow, [tuple ([2, 5]), tuple ([3, 2]), tuple ([10, 3])])) { + __accu0__.append (int (x)); + } + return __accu0__; + }) ()); + autoTester.check ('takewhile', list (takewhile ((function __lambda__ (x) { + return x < 5; + }), [1, 4, 6, 4, 1]))); + var __left0__ = tee (islice (count (), 5)); + var i1 = __left0__ [0]; + var i2 = __left0__ [1]; + autoTester.check ('tee', list (i1), list (i1), list (i2)); + autoTester.check ('product', list (product ('ABCD', 'xy')), list (product (range (2), __kwargtrans__ ({repeat: 3})))); + autoTester.check ('permutations', list (permutations ('ABCD')), list (permutations ('ABCD', 2))); + autoTester.check ('combinations', list (combinations ('ABCD', 2)), list (combinations ([1, 2, 3, 4, 5], 3)), list (combinations (islice (count (), 6), 4))); + autoTester.check ('combinations_with_replacement', list (combinations_with_replacement ('ABCD', 2)), list (combinations_with_replacement ([1, 2, 3, 4, 5], 3)), list (combinations_with_replacement (islice (count (), 6), 4))); +}; + +//# sourceMappingURL=module_itertools.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/module_itertools.tree b/transcrypt/development/automated_tests/transcrypt/__target__38/module_itertools.tree new file mode 100644 index 000000000..2f530dfd3 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/module_itertools.tree @@ -0,0 +1,1453 @@ +file: Module + body: list + element: ImportFrom + module: str = itertools + names: list + element: alias + name: str = * + asname: NoneType = None + level: int = 0 + element: ImportFrom + module: str = math + names: list + element: alias + name: str = pow + asname: NoneType = None + level: int = 0 + element: FunctionDef + name: str = fibonacci + args: arguments + posonlyargs: list + args: list + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = a + ctx: Store + element: Name + id: str = b + ctx: Store + ctx: Store + value: Tuple + elts: list + element: Constant + value: int = 0 + kind: NoneType = None + element: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: For + target: Name + id: str = i + ctx: Store + iter: Call + func: Name + id: str = range + ctx: Load + args: list + element: Constant + value: int = 10 + kind: NoneType = None + keywords: list + body: list + element: Expr + value: Yield + value: Name + id: str = a + ctx: Load + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = a + ctx: Store + element: Name + id: str = b + ctx: Store + ctx: Store + value: Tuple + elts: list + element: Name + id: str = b + ctx: Load + element: BinOp + left: Name + id: str = a + ctx: Load + op: Add + right: Name + id: str = b + ctx: Load + ctx: Load + type_comment: NoneType = None + orelse: list + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = squares + ctx: Store + value: ListComp + elt: BinOp + left: Name + id: str = i + ctx: Load + op: Mult + right: Name + id: str = i + ctx: Load + generators: list + element: comprehension + target: Name + id: str = i + ctx: Store + iter: Call + func: Name + id: str = range + ctx: Load + args: list + element: Constant + value: int = 10 + kind: NoneType = None + keywords: list + ifs: list + is_async: int = 0 + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = chars + ctx: Store + value: Constant + value: str = thequickbrownfoxjumpsoverthelazydog + kind: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = run + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = autoTester + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = islice count + kind: NoneType = None + element: Call + func: Name + id: str = list + ctx: Load + args: list + element: Call + func: Name + id: str = islice + ctx: Load + args: list + element: Call + func: Name + id: str = count + ctx: Load + args: list + element: Constant + value: int = 10 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + element: Constant + value: int = 4 + kind: NoneType = None + element: Constant + value: int = 40 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + keywords: list + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = islice cycle + kind: NoneType = None + element: Call + func: Name + id: str = list + ctx: Load + args: list + element: Call + func: Name + id: str = islice + ctx: Load + args: list + element: Call + func: Name + id: str = cycle + ctx: Load + args: list + element: Call + func: Name + id: str = fibonacci + ctx: Load + args: list + keywords: list + keywords: list + element: Constant + value: int = 15 + kind: NoneType = None + keywords: list + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = repeat + kind: NoneType = None + element: Call + func: Name + id: str = list + ctx: Load + args: list + element: Call + func: Name + id: str = repeat + ctx: Load + args: list + element: Constant + value: float = 3.14 + kind: NoneType = None + element: Constant + value: int = 15 + kind: NoneType = None + keywords: list + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = islice repeat + kind: NoneType = None + element: Call + func: Name + id: str = list + ctx: Load + args: list + element: Call + func: Name + id: str = islice + ctx: Load + args: list + element: Call + func: Name + id: str = repeat + ctx: Load + args: list + element: Constant + value: float = 2.74 + kind: NoneType = None + keywords: list + element: Constant + value: int = 15 + kind: NoneType = None + keywords: list + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = accumulate + kind: NoneType = None + element: Call + func: Name + id: str = list + ctx: Load + args: list + element: Call + func: Name + id: str = accumulate + ctx: Load + args: list + element: Call + func: Name + id: str = range + ctx: Load + args: list + element: Constant + value: int = 5 + kind: NoneType = None + keywords: list + keywords: list + keywords: list + keywords: list + element: FunctionDef + name: str = add + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = total + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = element + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: BinOp + left: Name + id: str = total + ctx: Load + op: Add + right: Name + id: str = element + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = accumulate + kind: NoneType = None + element: Call + func: Name + id: str = list + ctx: Load + args: list + element: Call + func: Name + id: str = accumulate + ctx: Load + args: list + element: List + elts: list + element: Constant + value: str = alamak + kind: NoneType = None + element: Constant + value: str = mirach + kind: NoneType = None + element: Constant + value: str = sirrah + kind: NoneType = None + ctx: Load + element: Name + id: str = add + ctx: Load + keywords: list + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = chain + kind: NoneType = None + element: Call + func: Name + id: str = list + ctx: Load + args: list + element: Call + func: Name + id: str = chain + ctx: Load + args: list + element: Call + func: Name + id: str = fibonacci + ctx: Load + args: list + keywords: list + element: Name + id: str = squares + ctx: Load + element: Name + id: str = chars + ctx: Load + keywords: list + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = chain.from_iterable + kind: NoneType = None + element: Call + func: Name + id: str = list + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = chain + ctx: Load + attr: str = from_iterable + ctx: Load + args: list + element: List + elts: list + element: Constant + value: str = ape + kind: NoneType = None + element: Constant + value: str = node + kind: NoneType = None + element: Constant + value: str = mice + kind: NoneType = None + element: Constant + value: str = vim + kind: NoneType = None + element: Constant + value: str = sus + kind: NoneType = None + element: Constant + value: str = jet + kind: NoneType = None + ctx: Load + keywords: list + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = selectors + ctx: Store + value: List + elts: list + element: Constant + value: bool = True + kind: NoneType = None + element: Constant + value: bool = True + kind: NoneType = None + element: Constant + value: bool = False + kind: NoneType = None + element: Constant + value: bool = True + kind: NoneType = None + element: Constant + value: bool = False + kind: NoneType = None + element: Constant + value: bool = False + kind: NoneType = None + element: Constant + value: bool = True + kind: NoneType = None + element: Constant + value: bool = True + kind: NoneType = None + element: Constant + value: bool = False + kind: NoneType = None + element: Constant + value: bool = True + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = compress + kind: NoneType = None + element: Call + func: Name + id: str = list + ctx: Load + args: list + element: Call + func: Name + id: str = compress + ctx: Load + args: list + element: ListComp + elt: Call + func: Attribute + value: Constant + value: str = {}{} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: IfExp + test: Name + id: str = selector + ctx: Load + body: Constant + value: str = take + kind: NoneType = None + orelse: Constant + value: str = leave + kind: NoneType = None + element: Name + id: str = index + ctx: Load + keywords: list + generators: list + element: comprehension + target: Tuple + elts: list + element: Name + id: str = index + ctx: Store + element: Name + id: str = selector + ctx: Store + ctx: Store + iter: Call + func: Name + id: str = enumerate + ctx: Load + args: list + element: Name + id: str = selectors + ctx: Load + keywords: list + ifs: list + is_async: int = 0 + element: Name + id: str = selectors + ctx: Load + keywords: list + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = dropwhile + kind: NoneType = None + element: Call + func: Name + id: str = list + ctx: Load + args: list + element: Call + func: Name + id: str = dropwhile + ctx: Load + args: list + element: Lambda + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: Compare + left: Name + id: str = x + ctx: Load + ops: list + element: Lt + comparators: list + element: Constant + value: int = 5 + kind: NoneType = None + element: List + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 4 + kind: NoneType = None + element: Constant + value: int = 6 + kind: NoneType = None + element: Constant + value: int = 4 + kind: NoneType = None + element: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + keywords: list + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = filterfalse + kind: NoneType = None + element: Call + func: Name + id: str = list + ctx: Load + args: list + element: Call + func: Name + id: str = filterfalse + ctx: Load + args: list + element: Lambda + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: BinOp + left: Name + id: str = x + ctx: Load + op: Mod + right: Constant + value: int = 2 + kind: NoneType = None + element: Call + func: Name + id: str = range + ctx: Load + args: list + element: Constant + value: int = 10 + kind: NoneType = None + keywords: list + keywords: list + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = things + ctx: Store + value: List + elts: list + element: Tuple + elts: list + element: Constant + value: str = animal + kind: NoneType = None + element: Constant + value: str = bear + kind: NoneType = None + ctx: Load + element: Tuple + elts: list + element: Constant + value: str = animal + kind: NoneType = None + element: Constant + value: str = duck + kind: NoneType = None + ctx: Load + element: Tuple + elts: list + element: Constant + value: str = plant + kind: NoneType = None + element: Constant + value: str = cactus + kind: NoneType = None + ctx: Load + element: Tuple + elts: list + element: Constant + value: str = vehicle + kind: NoneType = None + element: Constant + value: str = speed boat + kind: NoneType = None + ctx: Load + element: Tuple + elts: list + element: Constant + value: str = vehicle + kind: NoneType = None + element: Constant + value: str = school bus + kind: NoneType = None + ctx: Load + ctx: Load + type_comment: NoneType = None + element: For + target: Tuple + elts: list + element: Name + id: str = key + ctx: Store + element: Name + id: str = group + ctx: Store + ctx: Store + iter: Call + func: Name + id: str = groupby + ctx: Load + args: list + element: Name + id: str = things + ctx: Load + element: Lambda + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: Subscript + value: Name + id: str = x + ctx: Load + slice: Index + value: Constant + value: int = 0 + kind: NoneType = None + ctx: Load + keywords: list + body: list + element: For + target: Name + id: str = thing + ctx: Store + iter: Name + id: str = group + ctx: Load + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = A {} is a {}. + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Subscript + value: Name + id: str = thing + ctx: Load + slice: Index + value: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + element: Name + id: str = key + ctx: Load + keywords: list + keywords: list + orelse: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = + kind: NoneType = None + keywords: list + orelse: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = islice + kind: NoneType = None + element: Call + func: Name + id: str = list + ctx: Load + args: list + element: Call + func: Name + id: str = islice + ctx: Load + args: list + element: List + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + element: Constant + value: int = 4 + kind: NoneType = None + element: Constant + value: int = 5 + kind: NoneType = None + element: Constant + value: int = 6 + kind: NoneType = None + element: Constant + value: int = 7 + kind: NoneType = None + element: Constant + value: int = 8 + kind: NoneType = None + element: Constant + value: int = 9 + kind: NoneType = None + element: Constant + value: int = 10 + kind: NoneType = None + ctx: Load + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 9 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = starmap + kind: NoneType = None + element: ListComp + elt: Call + func: Name + id: str = int + ctx: Load + args: list + element: Name + id: str = x + ctx: Load + keywords: list + generators: list + element: comprehension + target: Name + id: str = x + ctx: Store + iter: Call + func: Name + id: str = starmap + ctx: Load + args: list + element: Name + id: str = pow + ctx: Load + element: List + elts: list + element: Tuple + elts: list + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 5 + kind: NoneType = None + ctx: Load + element: Tuple + elts: list + element: Constant + value: int = 3 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + ctx: Load + element: Tuple + elts: list + element: Constant + value: int = 10 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + ctx: Load + keywords: list + ifs: list + is_async: int = 0 + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = takewhile + kind: NoneType = None + element: Call + func: Name + id: str = list + ctx: Load + args: list + element: Call + func: Name + id: str = takewhile + ctx: Load + args: list + element: Lambda + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: Compare + left: Name + id: str = x + ctx: Load + ops: list + element: Lt + comparators: list + element: Constant + value: int = 5 + kind: NoneType = None + element: List + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 4 + kind: NoneType = None + element: Constant + value: int = 6 + kind: NoneType = None + element: Constant + value: int = 4 + kind: NoneType = None + element: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + keywords: list + keywords: list + keywords: list + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = i1 + ctx: Store + element: Name + id: str = i2 + ctx: Store + ctx: Store + value: Call + func: Name + id: str = tee + ctx: Load + args: list + element: Call + func: Name + id: str = islice + ctx: Load + args: list + element: Call + func: Name + id: str = count + ctx: Load + args: list + keywords: list + element: Constant + value: int = 5 + kind: NoneType = None + keywords: list + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = tee + kind: NoneType = None + element: Call + func: Name + id: str = list + ctx: Load + args: list + element: Name + id: str = i1 + ctx: Load + keywords: list + element: Call + func: Name + id: str = list + ctx: Load + args: list + element: Name + id: str = i1 + ctx: Load + keywords: list + element: Call + func: Name + id: str = list + ctx: Load + args: list + element: Name + id: str = i2 + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = product + kind: NoneType = None + element: Call + func: Name + id: str = list + ctx: Load + args: list + element: Call + func: Name + id: str = product + ctx: Load + args: list + element: Constant + value: str = ABCD + kind: NoneType = None + element: Constant + value: str = xy + kind: NoneType = None + keywords: list + keywords: list + element: Call + func: Name + id: str = list + ctx: Load + args: list + element: Call + func: Name + id: str = product + ctx: Load + args: list + element: Call + func: Name + id: str = range + ctx: Load + args: list + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + keywords: list + element: keyword + arg: str = repeat + value: Constant + value: int = 3 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = permutations + kind: NoneType = None + element: Call + func: Name + id: str = list + ctx: Load + args: list + element: Call + func: Name + id: str = permutations + ctx: Load + args: list + element: Constant + value: str = ABCD + kind: NoneType = None + keywords: list + keywords: list + element: Call + func: Name + id: str = list + ctx: Load + args: list + element: Call + func: Name + id: str = permutations + ctx: Load + args: list + element: Constant + value: str = ABCD + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = combinations + kind: NoneType = None + element: Call + func: Name + id: str = list + ctx: Load + args: list + element: Call + func: Name + id: str = combinations + ctx: Load + args: list + element: Constant + value: str = ABCD + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + keywords: list + element: Call + func: Name + id: str = list + ctx: Load + args: list + element: Call + func: Name + id: str = combinations + ctx: Load + args: list + element: List + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + element: Constant + value: int = 4 + kind: NoneType = None + element: Constant + value: int = 5 + kind: NoneType = None + ctx: Load + element: Constant + value: int = 3 + kind: NoneType = None + keywords: list + keywords: list + element: Call + func: Name + id: str = list + ctx: Load + args: list + element: Call + func: Name + id: str = combinations + ctx: Load + args: list + element: Call + func: Name + id: str = islice + ctx: Load + args: list + element: Call + func: Name + id: str = count + ctx: Load + args: list + keywords: list + element: Constant + value: int = 6 + kind: NoneType = None + keywords: list + element: Constant + value: int = 4 + kind: NoneType = None + keywords: list + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = combinations_with_replacement + kind: NoneType = None + element: Call + func: Name + id: str = list + ctx: Load + args: list + element: Call + func: Name + id: str = combinations_with_replacement + ctx: Load + args: list + element: Constant + value: str = ABCD + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + keywords: list + element: Call + func: Name + id: str = list + ctx: Load + args: list + element: Call + func: Name + id: str = combinations_with_replacement + ctx: Load + args: list + element: List + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + element: Constant + value: int = 4 + kind: NoneType = None + element: Constant + value: int = 5 + kind: NoneType = None + ctx: Load + element: Constant + value: int = 3 + kind: NoneType = None + keywords: list + keywords: list + element: Call + func: Name + id: str = list + ctx: Load + args: list + element: Call + func: Name + id: str = combinations_with_replacement + ctx: Load + args: list + element: Call + func: Name + id: str = islice + ctx: Load + args: list + element: Call + func: Name + id: str = count + ctx: Load + args: list + keywords: list + element: Constant + value: int = 6 + kind: NoneType = None + keywords: list + element: Constant + value: int = 4 + kind: NoneType = None + keywords: list + keywords: list + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/module_math.js b/transcrypt/development/automated_tests/transcrypt/__target__38/module_math.js new file mode 100644 index 000000000..b3f4d77e3 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/module_math.js @@ -0,0 +1,51 @@ +// Transcrypt'ed from Python, 2021-05-14 15:00:24 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +import {acos, acosh, asin, asinh, atan, atan2, atanh, ceil, cos, cosh, degrees, e, exp, expm1, floor, hypot, inf, isnan, log, log10, log1p, log2, modf, nan, pi, pow, radians, sin, sinh, sqrt, tan, tanh, trunc} from './math.js'; +export {tanh, log1p, modf, atan, log2, sinh, tan, floor, asin, exp, hypot, pi, acosh, log10, nan, cosh, acos, cos, asinh, isnan, expm1, ceil, e, sin, sqrt, trunc, degrees, radians, inf, atan2, log, atanh, pow}; +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get _check () {return _check;}, set _check (value) {_check = value;}, get run () {return run;}, set run (value) {run = value;}}); +var __name__ = 'module_math'; +export var _check = function (nr, autoTester) { + if (isinstance (nr, float)) { + var nr = str (nr).__getslice__ (0, 15, 1); + } + autoTester.check (nr); +}; +export var run = function (autoTester) { + var check = (function __lambda__ (nr) { + return _check (nr, autoTester); + }); + check (pi); + check (e); + check (exp (3)); + check (int (expm1 (5))); + check (log (0.2)); + check (round (log (1024, 2))); + check (log1p (5)); + check (int (log2 (257))); + check (int (log10 (1001))); + check (pow (3, 4.5)); + check (sqrt (25.1)); + check (sin (10)); + check (cos (10)); + check (tan (10)); + check (asin (0.5)); + check (acos (0.5)); + check (atan (0.5)); + check (atan2 (1, 2)); + check (int (hypot (3, 4.1))); + check (degrees (pi / 2.1)); + check (radians (90)); + check (sinh (1)); + check (cosh (1)); + check (tan (1)); + check (asinh (70)); + check (acosh (70)); + check (atan (70)); + check (floor (3.5)); + check (ceil (3.5)); + check (trunc (3.5)); + check (isnan (3)); + check (isnan (nan)); +}; + +//# sourceMappingURL=module_math.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/module_math.tree b/transcrypt/development/automated_tests/transcrypt/__target__38/module_math.tree new file mode 100644 index 000000000..f695acf52 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/module_math.tree @@ -0,0 +1,679 @@ +file: Module + body: list + element: ImportFrom + module: str = math + names: list + element: alias + name: str = * + asname: NoneType = None + level: int = 0 + element: FunctionDef + name: str = _check + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = nr + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = autoTester + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = nr + ctx: Load + element: Name + id: str = float + ctx: Load + keywords: list + body: list + element: Assign + targets: list + element: Name + id: str = nr + ctx: Store + value: Subscript + value: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = nr + ctx: Load + keywords: list + slice: Slice + lower: NoneType = None + upper: Constant + value: int = 15 + kind: NoneType = None + step: NoneType = None + ctx: Load + type_comment: NoneType = None + orelse: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = nr + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = run + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = autoTester + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Name + id: str = check + ctx: Store + value: Lambda + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = nr + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: Call + func: Name + id: str = _check + ctx: Load + args: list + element: Name + id: str = nr + ctx: Load + element: Name + id: str = autoTester + ctx: Load + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = check + ctx: Load + args: list + element: Name + id: str = pi + ctx: Load + keywords: list + element: Expr + value: Call + func: Name + id: str = check + ctx: Load + args: list + element: Name + id: str = e + ctx: Load + keywords: list + element: Expr + value: Call + func: Name + id: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = exp + ctx: Load + args: list + element: Constant + value: int = 3 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Name + id: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = int + ctx: Load + args: list + element: Call + func: Name + id: str = expm1 + ctx: Load + args: list + element: Constant + value: int = 5 + kind: NoneType = None + keywords: list + keywords: list + keywords: list + element: Expr + value: Call + func: Name + id: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = log + ctx: Load + args: list + element: Constant + value: float = 0.2 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Name + id: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: Call + func: Name + id: str = log + ctx: Load + args: list + element: Constant + value: int = 1024 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + keywords: list + keywords: list + element: Expr + value: Call + func: Name + id: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = log1p + ctx: Load + args: list + element: Constant + value: int = 5 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Name + id: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = int + ctx: Load + args: list + element: Call + func: Name + id: str = log2 + ctx: Load + args: list + element: Constant + value: int = 257 + kind: NoneType = None + keywords: list + keywords: list + keywords: list + element: Expr + value: Call + func: Name + id: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = int + ctx: Load + args: list + element: Call + func: Name + id: str = log10 + ctx: Load + args: list + element: Constant + value: int = 1001 + kind: NoneType = None + keywords: list + keywords: list + keywords: list + element: Expr + value: Call + func: Name + id: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = pow + ctx: Load + args: list + element: Constant + value: int = 3 + kind: NoneType = None + element: Constant + value: float = 4.5 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Name + id: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = sqrt + ctx: Load + args: list + element: Constant + value: float = 25.1 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Name + id: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = sin + ctx: Load + args: list + element: Constant + value: int = 10 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Name + id: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = cos + ctx: Load + args: list + element: Constant + value: int = 10 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Name + id: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = tan + ctx: Load + args: list + element: Constant + value: int = 10 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Name + id: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = asin + ctx: Load + args: list + element: Constant + value: float = 0.5 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Name + id: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = acos + ctx: Load + args: list + element: Constant + value: float = 0.5 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Name + id: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = atan + ctx: Load + args: list + element: Constant + value: float = 0.5 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Name + id: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = atan2 + ctx: Load + args: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Name + id: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = int + ctx: Load + args: list + element: Call + func: Name + id: str = hypot + ctx: Load + args: list + element: Constant + value: int = 3 + kind: NoneType = None + element: Constant + value: float = 4.1 + kind: NoneType = None + keywords: list + keywords: list + keywords: list + element: Expr + value: Call + func: Name + id: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = degrees + ctx: Load + args: list + element: BinOp + left: Name + id: str = pi + ctx: Load + op: Div + right: Constant + value: float = 2.1 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Name + id: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = radians + ctx: Load + args: list + element: Constant + value: int = 90 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Name + id: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = sinh + ctx: Load + args: list + element: Constant + value: int = 1 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Name + id: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = cosh + ctx: Load + args: list + element: Constant + value: int = 1 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Name + id: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = tan + ctx: Load + args: list + element: Constant + value: int = 1 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Name + id: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = asinh + ctx: Load + args: list + element: Constant + value: int = 70 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Name + id: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = acosh + ctx: Load + args: list + element: Constant + value: int = 70 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Name + id: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = atan + ctx: Load + args: list + element: Constant + value: int = 70 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Name + id: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = floor + ctx: Load + args: list + element: Constant + value: float = 3.5 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Name + id: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = ceil + ctx: Load + args: list + element: Constant + value: float = 3.5 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Name + id: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = trunc + ctx: Load + args: list + element: Constant + value: float = 3.5 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Name + id: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = isnan + ctx: Load + args: list + element: Constant + value: int = 3 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Name + id: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = isnan + ctx: Load + args: list + element: Name + id: str = nan + ctx: Load + keywords: list + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/module_unicodedata.js b/transcrypt/development/automated_tests/transcrypt/__target__38/module_unicodedata.js new file mode 100644 index 000000000..e47c3301c --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/module_unicodedata.js @@ -0,0 +1,32 @@ +// Transcrypt'ed from Python, 2021-05-14 15:00:24 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +import {normalize} from './unicodedata.js'; +export {normalize}; +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get run () {return run;}, set run (value) {run = value;}}); +var __name__ = 'module_unicodedata'; +export var run = function (autoTester) { + autoTester.check ('NFC:'); + autoTester.check (normalize ('NFC', 'c' + '̧')); + autoTester.check (normalize ('NFC', 'ç')); + autoTester.check ((normalize ('NFC', 'c' + '̧') == normalize ('NFC', 'ç')) == true); + autoTester.check (normalize ('NFC', 'q̣̇')); + autoTester.check (normalize ('NFC', 'q̣̇')); + autoTester.check ((normalize ('NFC', 'q̣̇') == normalize ('NFC', 'q̣̇')) == true); + autoTester.check (normalize ('NFC', '가')); + autoTester.check (normalize ('NFC', 'ᄀ' + 'ᅡ')); + autoTester.check ((normalize ('NFC', '가') == normalize ('NFC', 'ᄀ' + 'ᅡ')) == true); + autoTester.check (normalize ('NFC', 'Ω')); + autoTester.check ('NFD:'); + autoTester.check (normalize ('NFD', 'c' + '̧')); + autoTester.check (normalize ('NFD', 'ç')); + autoTester.check ((normalize ('NFD', 'c' + '̧') == normalize ('NFD', 'ç')) == true); + autoTester.check (normalize ('NFD', 'q̣̇')); + autoTester.check (normalize ('NFD', 'q̣̇')); + autoTester.check ((normalize ('NFD', 'q̣̇') == normalize ('NFD', 'q̣̇')) == true); + autoTester.check (normalize ('NFD', '가')); + autoTester.check (normalize ('NFD', 'ᄀ' + 'ᅡ')); + autoTester.check ((normalize ('NFD', '가') == normalize ('NFD', 'ᄀ' + 'ᅡ')) == true); + autoTester.check (normalize ('NFD', 'Ω')); +}; + +//# sourceMappingURL=module_unicodedata.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/module_unicodedata.tree b/transcrypt/development/automated_tests/transcrypt/__target__38/module_unicodedata.tree new file mode 100644 index 000000000..965344668 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/module_unicodedata.tree @@ -0,0 +1,672 @@ +file: Module + body: list + element: ImportFrom + module: str = unicodedata + names: list + element: alias + name: str = normalize + asname: NoneType = None + level: int = 0 + element: FunctionDef + name: str = run + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = autoTester + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = NFC: + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = normalize + ctx: Load + args: list + element: Constant + value: str = NFC + kind: NoneType = None + element: BinOp + left: Constant + value: str = c + kind: NoneType = None + op: Add + right: Constant + value: str = ̧ + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = normalize + ctx: Load + args: list + element: Constant + value: str = NFC + kind: NoneType = None + element: Constant + value: str = ç + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Compare + left: Call + func: Name + id: str = normalize + ctx: Load + args: list + element: Constant + value: str = NFC + kind: NoneType = None + element: BinOp + left: Constant + value: str = c + kind: NoneType = None + op: Add + right: Constant + value: str = ̧ + kind: NoneType = None + keywords: list + ops: list + element: Eq + comparators: list + element: Call + func: Name + id: str = normalize + ctx: Load + args: list + element: Constant + value: str = NFC + kind: NoneType = None + element: Constant + value: str = ç + kind: NoneType = None + keywords: list + ops: list + element: Eq + comparators: list + element: Constant + value: bool = True + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = normalize + ctx: Load + args: list + element: Constant + value: str = NFC + kind: NoneType = None + element: Constant + value: str = q̣̇ + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = normalize + ctx: Load + args: list + element: Constant + value: str = NFC + kind: NoneType = None + element: Constant + value: str = q̣̇ + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Compare + left: Call + func: Name + id: str = normalize + ctx: Load + args: list + element: Constant + value: str = NFC + kind: NoneType = None + element: Constant + value: str = q̣̇ + kind: NoneType = None + keywords: list + ops: list + element: Eq + comparators: list + element: Call + func: Name + id: str = normalize + ctx: Load + args: list + element: Constant + value: str = NFC + kind: NoneType = None + element: Constant + value: str = q̣̇ + kind: NoneType = None + keywords: list + ops: list + element: Eq + comparators: list + element: Constant + value: bool = True + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = normalize + ctx: Load + args: list + element: Constant + value: str = NFC + kind: NoneType = None + element: Constant + value: str = 가 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = normalize + ctx: Load + args: list + element: Constant + value: str = NFC + kind: NoneType = None + element: BinOp + left: Constant + value: str = ᄀ + kind: NoneType = None + op: Add + right: Constant + value: str = ᅡ + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Compare + left: Call + func: Name + id: str = normalize + ctx: Load + args: list + element: Constant + value: str = NFC + kind: NoneType = None + element: Constant + value: str = 가 + kind: NoneType = None + keywords: list + ops: list + element: Eq + comparators: list + element: Call + func: Name + id: str = normalize + ctx: Load + args: list + element: Constant + value: str = NFC + kind: NoneType = None + element: BinOp + left: Constant + value: str = ᄀ + kind: NoneType = None + op: Add + right: Constant + value: str = ᅡ + kind: NoneType = None + keywords: list + ops: list + element: Eq + comparators: list + element: Constant + value: bool = True + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = normalize + ctx: Load + args: list + element: Constant + value: str = NFC + kind: NoneType = None + element: Constant + value: str = Ω + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = NFD: + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = normalize + ctx: Load + args: list + element: Constant + value: str = NFD + kind: NoneType = None + element: BinOp + left: Constant + value: str = c + kind: NoneType = None + op: Add + right: Constant + value: str = ̧ + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = normalize + ctx: Load + args: list + element: Constant + value: str = NFD + kind: NoneType = None + element: Constant + value: str = ç + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Compare + left: Call + func: Name + id: str = normalize + ctx: Load + args: list + element: Constant + value: str = NFD + kind: NoneType = None + element: BinOp + left: Constant + value: str = c + kind: NoneType = None + op: Add + right: Constant + value: str = ̧ + kind: NoneType = None + keywords: list + ops: list + element: Eq + comparators: list + element: Call + func: Name + id: str = normalize + ctx: Load + args: list + element: Constant + value: str = NFD + kind: NoneType = None + element: Constant + value: str = ç + kind: NoneType = None + keywords: list + ops: list + element: Eq + comparators: list + element: Constant + value: bool = True + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = normalize + ctx: Load + args: list + element: Constant + value: str = NFD + kind: NoneType = None + element: Constant + value: str = q̣̇ + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = normalize + ctx: Load + args: list + element: Constant + value: str = NFD + kind: NoneType = None + element: Constant + value: str = q̣̇ + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Compare + left: Call + func: Name + id: str = normalize + ctx: Load + args: list + element: Constant + value: str = NFD + kind: NoneType = None + element: Constant + value: str = q̣̇ + kind: NoneType = None + keywords: list + ops: list + element: Eq + comparators: list + element: Call + func: Name + id: str = normalize + ctx: Load + args: list + element: Constant + value: str = NFD + kind: NoneType = None + element: Constant + value: str = q̣̇ + kind: NoneType = None + keywords: list + ops: list + element: Eq + comparators: list + element: Constant + value: bool = True + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = normalize + ctx: Load + args: list + element: Constant + value: str = NFD + kind: NoneType = None + element: Constant + value: str = 가 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = normalize + ctx: Load + args: list + element: Constant + value: str = NFD + kind: NoneType = None + element: BinOp + left: Constant + value: str = ᄀ + kind: NoneType = None + op: Add + right: Constant + value: str = ᅡ + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Compare + left: Call + func: Name + id: str = normalize + ctx: Load + args: list + element: Constant + value: str = NFD + kind: NoneType = None + element: Constant + value: str = 가 + kind: NoneType = None + keywords: list + ops: list + element: Eq + comparators: list + element: Call + func: Name + id: str = normalize + ctx: Load + args: list + element: Constant + value: str = NFD + kind: NoneType = None + element: BinOp + left: Constant + value: str = ᄀ + kind: NoneType = None + op: Add + right: Constant + value: str = ᅡ + kind: NoneType = None + keywords: list + ops: list + element: Eq + comparators: list + element: Constant + value: bool = True + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = normalize + ctx: Load + args: list + element: Constant + value: str = NFD + kind: NoneType = None + element: Constant + value: str = Ω + kind: NoneType = None + keywords: list + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/modules.js b/transcrypt/development/automated_tests/transcrypt/__target__38/modules.js new file mode 100644 index 000000000..65c23a914 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/modules.js @@ -0,0 +1,61 @@ +// Transcrypt'ed from Python, 2021-05-14 15:00:24 +var modules = {}; +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +import * as mod4 from './modules.mod4.js'; +import {A} from './modules.mod1.mod11.mod111.js'; +import {mod3GetTwoHundred, mod3Hundred, x} from './modules.mod3.js'; +import * as aMod21 from './modules.mod2.mod21.js'; +import * as aMod22 from './modules.mod2.mod22.js'; +import * as mod111 from './modules.mod1.mod11.mod111.js'; +import * as mod112 from './modules.mod1.mod11.mod112.js'; +import * as aMod1 from './modules.mod1.js'; +import * as aliasMod111 from './modules.mod1.mod11.mod111.js'; +import * as __module_modules_mod2_mod22__ from './modules.mod2.mod22.js'; +__nest__ (modules, 'mod2.mod22', __module_modules_mod2_mod22__); +import * as __module_modules_mod2_mod21__ from './modules.mod2.mod21.js'; +__nest__ (modules, 'mod2.mod21', __module_modules_mod2_mod21__); +import * as __module_modules_mod2__ from './modules.mod2.js'; +__nest__ (modules, 'mod2', __module_modules_mod2__); +import * as __module_modules_mod1_mod11__ from './modules.mod1.mod11.js'; +__nest__ (modules, 'mod1.mod11', __module_modules_mod1_mod11__); +import * as __module_modules_mod1__ from './modules.mod1.js'; +__nest__ (modules, 'mod1', __module_modules_mod1__); +import * as __module_modules_mod1_mod11_mod112__ from './modules.mod1.mod11.mod112.js'; +__nest__ (modules, 'mod1.mod11.mod112', __module_modules_mod1_mod11_mod112__); +import * as __module_modules_mod3__ from './modules.mod3.js'; +__nest__ (modules, 'mod3', __module_modules_mod3__); +import * as __module_modules_mod1_mod11_mod111__ from './modules.mod1.mod11.mod111.js'; +__nest__ (modules, 'mod1.mod11.mod111', __module_modules_mod1_mod11_mod111__); +export {aMod1, aMod22, aliasMod111, mod111, mod4, mod112, mod3GetTwoHundred, aMod21, mod3Hundred, A, x}; +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get a () {return a;}, set a (value) {a = value;}, get f () {return f;}, set f (value) {f = value;}, get pi () {return pi;}, set pi (value) {pi = value;}, get run () {return run;}, set run (value) {run = value;}}); +var __name__ = 'modules'; +export var a = modules.mod1.mod11.mod111.A (12345); +export var pi = modules.mod1.pi; +export var f = modules.mod2.f; +export var run = function (autoTester) { + autoTester.check ('modules'); + autoTester.check (a.f ()); + autoTester.check (modules.mod1.mod11.mod112.f ()); + autoTester.check (modules.mod1.mod11.e); + autoTester.check (pi); + autoTester.check (f (102030)); + autoTester.check (modules.mod2.mod21.f ()); + var B = modules.mod2.mod22.B; + var b = B (); + autoTester.check (b.x); + autoTester.check (modules.mod3.x); + var a2 = aliasMod111.A (6789101112); + autoTester.check (a2.f ()); + autoTester.check (aMod1.pi); + var a3 = mod111.A (100.001); + autoTester.check (a3.f ()); + autoTester.check (mod112.f ()); + autoTester.check (aMod21.f ()); + autoTester.check (aMod22.B ().x); + autoTester.check (mod3Hundred); + autoTester.check (mod3GetTwoHundred ()); + autoTester.check (A (123.321).f ()); + autoTester.check (mod4.mod4Add2FromMod5 (449)); +}; + +//# sourceMappingURL=modules.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/modules.mod1.js b/transcrypt/development/automated_tests/transcrypt/__target__38/modules.mod1.js new file mode 100644 index 000000000..f2c59fe7e --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/modules.mod1.js @@ -0,0 +1,7 @@ +// Transcrypt'ed from Python, 2021-05-14 15:00:24 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get pi () {return pi;}, set pi (value) {pi = value;}}); +var __name__ = 'modules.mod1'; +export var pi = 3.1415693588; + +//# sourceMappingURL=modules.mod1.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/modules.mod1.mod11.js b/transcrypt/development/automated_tests/transcrypt/__target__38/modules.mod1.mod11.js new file mode 100644 index 000000000..9ae423a75 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/modules.mod1.mod11.js @@ -0,0 +1,7 @@ +// Transcrypt'ed from Python, 2021-05-14 15:00:24 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get e () {return e;}, set e (value) {e = value;}}); +var __name__ = 'modules.mod1.mod11'; +export var e = 2.74; + +//# sourceMappingURL=modules.mod1.mod11.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/modules.mod1.mod11.mod111.js b/transcrypt/development/automated_tests/transcrypt/__target__38/modules.mod1.mod11.mod111.js new file mode 100644 index 000000000..efe5dd34d --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/modules.mod1.mod11.mod111.js @@ -0,0 +1,15 @@ +// Transcrypt'ed from Python, 2021-05-14 15:00:24 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +var __all__ = dict ({get A () {return A;}, set A (value) {A = value;}, get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}}); +var __name__ = 'modules.mod1.mod11.mod111'; +export var A = __class__ ('A', [object], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self, x) { + self.x = x; + });}, + get f () {return __get__ (this, function (self) { + return self.x; + });} +}); + +//# sourceMappingURL=modules.mod1.mod11.mod111.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/modules.mod1.mod11.mod111.tree b/transcrypt/development/automated_tests/transcrypt/__target__38/modules.mod1.mod11.mod111.tree new file mode 100644 index 000000000..21d2ca9d3 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/modules.mod1.mod11.mod111.tree @@ -0,0 +1,68 @@ +file: Module + body: list + element: ClassDef + name: str = A + bases: list + keywords: list + body: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = x + ctx: Store + value: Name + id: str = x + ctx: Load + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = f + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = x + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/modules.mod1.mod11.mod112.js b/transcrypt/development/automated_tests/transcrypt/__target__38/modules.mod1.mod11.mod112.js new file mode 100644 index 000000000..e18f93205 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/modules.mod1.mod11.mod112.js @@ -0,0 +1,9 @@ +// Transcrypt'ed from Python, 2021-05-14 15:00:24 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get f () {return f;}, set f (value) {f = value;}}); +var __name__ = 'modules.mod1.mod11.mod112'; +export var f = function () { + return "Paris, c'est la vie\n"; +}; + +//# sourceMappingURL=modules.mod1.mod11.mod112.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/modules.mod1.mod11.mod112.tree b/transcrypt/development/automated_tests/transcrypt/__target__38/modules.mod1.mod11.mod112.tree new file mode 100644 index 000000000..3322e1b2a --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/modules.mod1.mod11.mod112.tree @@ -0,0 +1,22 @@ +file: Module + body: list + element: FunctionDef + name: str = f + args: arguments + posonlyargs: list + args: list + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Constant + value: str = Paris, c'est la vie + + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/modules.mod1.mod11.tree b/transcrypt/development/automated_tests/transcrypt/__target__38/modules.mod1.mod11.tree new file mode 100644 index 000000000..6fcb6c8e4 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/modules.mod1.mod11.tree @@ -0,0 +1,12 @@ +file: Module + body: list + element: Assign + targets: list + element: Name + id: str = e + ctx: Store + value: Constant + value: float = 2.74 + kind: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/modules.mod1.tree b/transcrypt/development/automated_tests/transcrypt/__target__38/modules.mod1.tree new file mode 100644 index 000000000..7f1e7023c --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/modules.mod1.tree @@ -0,0 +1,12 @@ +file: Module + body: list + element: Assign + targets: list + element: Name + id: str = pi + ctx: Store + value: Constant + value: float = 3.1415693588 + kind: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/modules.mod2.js b/transcrypt/development/automated_tests/transcrypt/__target__38/modules.mod2.js new file mode 100644 index 000000000..7a75ca336 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/modules.mod2.js @@ -0,0 +1,9 @@ +// Transcrypt'ed from Python, 2021-05-14 15:00:24 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get f () {return f;}, set f (value) {f = value;}}); +var __name__ = 'modules.mod2'; +export var f = function (p) { + return 2 * p; +}; + +//# sourceMappingURL=modules.mod2.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/modules.mod2.mod21.js b/transcrypt/development/automated_tests/transcrypt/__target__38/modules.mod2.mod21.js new file mode 100644 index 000000000..7ebbc2ff8 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/modules.mod2.mod21.js @@ -0,0 +1,9 @@ +// Transcrypt'ed from Python, 2021-05-14 15:00:24 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get f () {return f;}, set f (value) {f = value;}}); +var __name__ = 'modules.mod2.mod21'; +export var f = function () { + return 'London is the town for me\n'; +}; + +//# sourceMappingURL=modules.mod2.mod21.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/modules.mod2.mod21.tree b/transcrypt/development/automated_tests/transcrypt/__target__38/modules.mod2.mod21.tree new file mode 100644 index 000000000..17ed56b38 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/modules.mod2.mod21.tree @@ -0,0 +1,22 @@ +file: Module + body: list + element: FunctionDef + name: str = f + args: arguments + posonlyargs: list + args: list + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Constant + value: str = London is the town for me + + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/modules.mod2.mod22.js b/transcrypt/development/automated_tests/transcrypt/__target__38/modules.mod2.mod22.js new file mode 100644 index 000000000..e5d473dba --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/modules.mod2.mod22.js @@ -0,0 +1,12 @@ +// Transcrypt'ed from Python, 2021-05-14 15:00:24 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +var __all__ = dict ({get B () {return B;}, set B (value) {B = value;}, get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}}); +var __name__ = 'modules.mod2.mod22'; +export var B = __class__ ('B', [object], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self) { + self.x = 'Geef mij maar Amsterdam\n'; + });} +}); + +//# sourceMappingURL=modules.mod2.mod22.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/modules.mod2.mod22.tree b/transcrypt/development/automated_tests/transcrypt/__target__38/modules.mod2.mod22.tree new file mode 100644 index 000000000..9e85fdf25 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/modules.mod2.mod22.tree @@ -0,0 +1,40 @@ +file: Module + body: list + element: ClassDef + name: str = B + bases: list + keywords: list + body: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = x + ctx: Store + value: Constant + value: str = Geef mij maar Amsterdam + + kind: NoneType = None + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/modules.mod2.tree b/transcrypt/development/automated_tests/transcrypt/__target__38/modules.mod2.tree new file mode 100644 index 000000000..3e9e9e93c --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/modules.mod2.tree @@ -0,0 +1,30 @@ +file: Module + body: list + element: FunctionDef + name: str = f + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = p + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: BinOp + left: Constant + value: int = 2 + kind: NoneType = None + op: Mult + right: Name + id: str = p + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/modules.mod3.js b/transcrypt/development/automated_tests/transcrypt/__target__38/modules.mod3.js new file mode 100644 index 000000000..729f22897 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/modules.mod3.js @@ -0,0 +1,11 @@ +// Transcrypt'ed from Python, 2021-05-14 15:00:24 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get mod3GetTwoHundred () {return mod3GetTwoHundred;}, set mod3GetTwoHundred (value) {mod3GetTwoHundred = value;}, get mod3Hundred () {return mod3Hundred;}, set mod3Hundred (value) {mod3Hundred = value;}, get x () {return x;}, set x (value) {x = value;}}); +var __name__ = 'modules.mod3'; +export var x = 'Toen wij uit Rotterdam vertrokken, vertrokken wij uit Rotterdam\n'; +export var mod3Hundred = 100; +export var mod3GetTwoHundred = function () { + return 200; +}; + +//# sourceMappingURL=modules.mod3.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/modules.mod3.tree b/transcrypt/development/automated_tests/transcrypt/__target__38/modules.mod3.tree new file mode 100644 index 000000000..6a48170c7 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/modules.mod3.tree @@ -0,0 +1,40 @@ +file: Module + body: list + element: Assign + targets: list + element: Name + id: str = x + ctx: Store + value: Constant + value: str = Toen wij uit Rotterdam vertrokken, vertrokken wij uit Rotterdam + + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = mod3Hundred + ctx: Store + value: Constant + value: int = 100 + kind: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = mod3GetTwoHundred + args: arguments + posonlyargs: list + args: list + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Constant + value: int = 200 + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/modules.mod4.js b/transcrypt/development/automated_tests/transcrypt/__target__38/modules.mod4.js new file mode 100644 index 000000000..c904747a0 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/modules.mod4.js @@ -0,0 +1,14 @@ +// Transcrypt'ed from Python, 2021-05-14 15:00:24 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +import {mod5Add2} from './modules.mod5.js'; +export {mod5Add2}; +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get mod4Add1 () {return mod4Add1;}, set mod4Add1 (value) {mod4Add1 = value;}, get mod4Add2FromMod5 () {return mod4Add2FromMod5;}, set mod4Add2FromMod5 (value) {mod4Add2FromMod5 = value;}}); +var __name__ = 'modules.mod4'; +export var mod4Add2FromMod5 = function (variable) { + return mod5Add2 (variable); +}; +export var mod4Add1 = function (variable) { + return variable + 1; +}; + +//# sourceMappingURL=modules.mod4.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/modules.mod4.tree b/transcrypt/development/automated_tests/transcrypt/__target__38/modules.mod4.tree new file mode 100644 index 000000000..8d316e1f6 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/modules.mod4.tree @@ -0,0 +1,65 @@ +file: Module + body: list + element: ImportFrom + module: str = modules.mod5 + names: list + element: alias + name: str = mod5Add2 + asname: NoneType = None + level: int = 0 + element: FunctionDef + name: str = mod4Add2FromMod5 + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = variable + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Call + func: Name + id: str = mod5Add2 + ctx: Load + args: list + element: Name + id: str = variable + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = mod4Add1 + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = variable + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: BinOp + left: Name + id: str = variable + ctx: Load + op: Add + right: Constant + value: int = 1 + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/modules.mod5.js b/transcrypt/development/automated_tests/transcrypt/__target__38/modules.mod5.js new file mode 100644 index 000000000..cf24b2161 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/modules.mod5.js @@ -0,0 +1,12 @@ +// Transcrypt'ed from Python, 2021-05-14 15:00:24 +var modules = {}; +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +import * as __module_modules_mod4__ from './modules.mod4.js'; +__nest__ (modules, 'mod4', __module_modules_mod4__); +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get mod5Add2 () {return mod5Add2;}, set mod5Add2 (value) {mod5Add2 = value;}}); +var __name__ = 'modules.mod5'; +export var mod5Add2 = function (variable) { + return modules.mod4.mod4Add1 (variable + 1); +}; + +//# sourceMappingURL=modules.mod5.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/modules.mod5.tree b/transcrypt/development/automated_tests/transcrypt/__target__38/modules.mod5.tree new file mode 100644 index 000000000..e88e351f6 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/modules.mod5.tree @@ -0,0 +1,47 @@ +file: Module + body: list + element: Import + names: list + element: alias + name: str = modules.mod4 + asname: NoneType = None + element: FunctionDef + name: str = mod5Add2 + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = variable + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Call + func: Attribute + value: Attribute + value: Name + id: str = modules + ctx: Load + attr: str = mod4 + ctx: Load + attr: str = mod4Add1 + ctx: Load + args: list + element: BinOp + left: Name + id: str = variable + ctx: Load + op: Add + right: Constant + value: int = 1 + kind: NoneType = None + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/modules.tree b/transcrypt/development/automated_tests/transcrypt/__target__38/modules.tree new file mode 100644 index 000000000..bd270099b --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/modules.tree @@ -0,0 +1,599 @@ +file: Module + body: list + element: Import + names: list + element: alias + name: str = modules.mod1.mod11.mod111 + asname: NoneType = None + element: Import + names: list + element: alias + name: str = modules.mod3 + asname: NoneType = None + element: Import + names: list + element: alias + name: str = modules.mod1.mod11.mod112 + asname: NoneType = None + element: Import + names: list + element: alias + name: str = modules.mod1 + asname: NoneType = None + element: Import + names: list + element: alias + name: str = modules.mod1.mod11 + asname: NoneType = None + element: Import + names: list + element: alias + name: str = modules.mod2 + asname: NoneType = None + element: Import + names: list + element: alias + name: str = modules.mod2.mod21 + asname: NoneType = None + element: Import + names: list + element: alias + name: str = modules.mod2.mod22 + asname: NoneType = None + element: Import + names: list + element: alias + name: str = modules.mod1.mod11.mod111 + asname: str = aliasMod111 + element: Import + names: list + element: alias + name: str = modules.mod1 + asname: str = aMod1 + element: ImportFrom + module: str = modules.mod1.mod11 + names: list + element: alias + name: str = mod111 + asname: NoneType = None + element: alias + name: str = mod112 + asname: NoneType = None + level: int = 0 + element: ImportFrom + module: str = modules.mod2 + names: list + element: alias + name: str = mod21 + asname: str = aMod21 + element: alias + name: str = mod22 + asname: str = aMod22 + level: int = 0 + element: ImportFrom + module: str = modules.mod3 + names: list + element: alias + name: str = * + asname: NoneType = None + level: int = 0 + element: ImportFrom + module: str = modules.mod1.mod11.mod111 + names: list + element: alias + name: str = A + asname: NoneType = None + level: int = 0 + element: ImportFrom + module: str = modules + names: list + element: alias + name: str = mod4 + asname: NoneType = None + level: int = 0 + element: Assign + targets: list + element: Name + id: str = a + ctx: Store + value: Call + func: Attribute + value: Attribute + value: Attribute + value: Attribute + value: Name + id: str = modules + ctx: Load + attr: str = mod1 + ctx: Load + attr: str = mod11 + ctx: Load + attr: str = mod111 + ctx: Load + attr: str = A + ctx: Load + args: list + element: Constant + value: int = 12345 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = pi + ctx: Store + value: Attribute + value: Attribute + value: Name + id: str = modules + ctx: Load + attr: str = mod1 + ctx: Load + attr: str = pi + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = f + ctx: Store + value: Attribute + value: Attribute + value: Name + id: str = modules + ctx: Load + attr: str = mod2 + ctx: Load + attr: str = f + ctx: Load + type_comment: NoneType = None + element: FunctionDef + name: str = run + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = autoTester + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = modules + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = a + ctx: Load + attr: str = f + ctx: Load + args: list + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Attribute + value: Attribute + value: Attribute + value: Name + id: str = modules + ctx: Load + attr: str = mod1 + ctx: Load + attr: str = mod11 + ctx: Load + attr: str = mod112 + ctx: Load + attr: str = f + ctx: Load + args: list + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Attribute + value: Attribute + value: Name + id: str = modules + ctx: Load + attr: str = mod1 + ctx: Load + attr: str = mod11 + ctx: Load + attr: str = e + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = pi + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = f + ctx: Load + args: list + element: Constant + value: int = 102030 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Attribute + value: Attribute + value: Name + id: str = modules + ctx: Load + attr: str = mod2 + ctx: Load + attr: str = mod21 + ctx: Load + attr: str = f + ctx: Load + args: list + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = B + ctx: Store + value: Attribute + value: Attribute + value: Attribute + value: Name + id: str = modules + ctx: Load + attr: str = mod2 + ctx: Load + attr: str = mod22 + ctx: Load + attr: str = B + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = b + ctx: Store + value: Call + func: Name + id: str = B + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = b + ctx: Load + attr: str = x + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Attribute + value: Name + id: str = modules + ctx: Load + attr: str = mod3 + ctx: Load + attr: str = x + ctx: Load + keywords: list + element: Assign + targets: list + element: Name + id: str = a2 + ctx: Store + value: Call + func: Attribute + value: Name + id: str = aliasMod111 + ctx: Load + attr: str = A + ctx: Load + args: list + element: Constant + value: int = 6789101112 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = a2 + ctx: Load + attr: str = f + ctx: Load + args: list + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = aMod1 + ctx: Load + attr: str = pi + ctx: Load + keywords: list + element: Assign + targets: list + element: Name + id: str = a3 + ctx: Store + value: Call + func: Attribute + value: Name + id: str = mod111 + ctx: Load + attr: str = A + ctx: Load + args: list + element: Constant + value: float = 100.001 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = a3 + ctx: Load + attr: str = f + ctx: Load + args: list + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = mod112 + ctx: Load + attr: str = f + ctx: Load + args: list + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = aMod21 + ctx: Load + attr: str = f + ctx: Load + args: list + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Call + func: Attribute + value: Name + id: str = aMod22 + ctx: Load + attr: str = B + ctx: Load + args: list + keywords: list + attr: str = x + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = mod3Hundred + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = mod3GetTwoHundred + ctx: Load + args: list + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Call + func: Name + id: str = A + ctx: Load + args: list + element: Constant + value: float = 123.321 + kind: NoneType = None + keywords: list + attr: str = f + ctx: Load + args: list + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = mod4 + ctx: Load + attr: str = mod4Add2FromMod5 + ctx: Load + args: list + element: Constant + value: int = 449 + kind: NoneType = None + keywords: list + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/nonlocals.js b/transcrypt/development/automated_tests/transcrypt/__target__38/nonlocals.js new file mode 100644 index 000000000..e0367f80a --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/nonlocals.js @@ -0,0 +1,17 @@ +// Transcrypt'ed from Python, 2021-05-14 15:00:24 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get run () {return run;}, set run (value) {run = value;}}); +var __name__ = 'nonlocals'; +export var run = function (autoTester) { + var test1 = 1; + var test2 = 2; + var f = function () { + var test1 = 10; + test2 = 20; + autoTester.check (test1, test2); + }; + f (); + autoTester.check (test1, test2); +}; + +//# sourceMappingURL=nonlocals.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/nonlocals.tree b/transcrypt/development/automated_tests/transcrypt/__target__38/nonlocals.tree new file mode 100644 index 000000000..f3ef15d09 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/nonlocals.tree @@ -0,0 +1,113 @@ +file: Module + body: list + element: FunctionDef + name: str = run + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = autoTester + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Name + id: str = test1 + ctx: Store + value: Constant + value: int = 1 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = test2 + ctx: Store + value: Constant + value: int = 2 + kind: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = f + args: arguments + posonlyargs: list + args: list + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Name + id: str = test1 + ctx: Store + value: Constant + value: int = 10 + kind: NoneType = None + type_comment: NoneType = None + element: Nonlocal + names: list + element: str = test2 + element: Assign + targets: list + element: Name + id: str = test2 + ctx: Store + value: Constant + value: int = 20 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = test1 + ctx: Load + element: Name + id: str = test2 + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = f + ctx: Load + args: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = test1 + ctx: Load + element: Name + id: str = test2 + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/operator_overloading.js b/transcrypt/development/automated_tests/transcrypt/__target__38/operator_overloading.js new file mode 100644 index 000000000..5c0794bf8 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/operator_overloading.js @@ -0,0 +1,368 @@ +// Transcrypt'ed from Python, 2021-05-14 15:00:24 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +var __all__ = dict ({get Functor () {return Functor;}, set Functor (value) {Functor = value;}, get Matrix () {return Matrix;}, set Matrix (value) {Matrix = value;}, get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get f () {return f;}, set f (value) {f = value;}, get g () {return g;}, set g (value) {g = value;}, get run () {return run;}, set run (value) {run = value;}}); +var __name__ = 'operator_overloading'; +export var Matrix = __class__ ('Matrix', [object], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self, nRows, nCols, elements) { + if (typeof elements == 'undefined' || (elements != null && elements.hasOwnProperty ("__kwargtrans__"))) {; + var elements = []; + }; + self.nRows = nRows; + self.nCols = nCols; + if (len (elements)) { + self._ = elements; + } + else { + self._ = (function () { + var __accu0__ = []; + for (var row = 0; row < nRows; row++) { + __accu0__.append ((function () { + var __accu1__ = []; + for (var col = 0; col < nCols; col++) { + __accu1__.append (0); + } + return __accu1__; + }) ()); + } + return __accu0__; + }) (); + } + });}, + get __matmul__ () {return __get__ (this, function (self, other) { + var result = Matrix (self.nRows, other.nCols); + for (var iTargetRow = 0; iTargetRow < result.nRows; iTargetRow++) { + for (var iTargetCol = 0; iTargetCol < result.nCols; iTargetCol++) { + for (var iTerm = 0; iTerm < self.nCols; iTerm++) { + result._ [iTargetRow] [iTargetCol] += self._ [iTargetRow] [iTerm] * other._ [iTerm] [iTargetCol]; + } + } + } + return result; + });}, + get __imatmul__ () {return __get__ (this, function (self, other) { + return self.__matmul__ (other); + });}, + get __mul__ () {return __get__ (this, function (self, other) { + if (py_typeof (other) == Matrix) { + var result = Matrix (self.nRows, self.nCols); + for (var iRow = 0; iRow < self.nRows; iRow++) { + for (var iCol = 0; iCol < self.nCols; iCol++) { + result._ [iRow] [iCol] = self._ [iRow] [iCol] * other._ [iRow] [iCol]; + } + } + return result; + } + else { + return self.__rmul__ (other); + } + });}, + get __rmul__ () {return __get__ (this, function (self, scalar) { + var result = Matrix (self.nRows, self.nCols); + for (var iRow = 0; iRow < self.nRows; iRow++) { + for (var iCol = 0; iCol < self.nCols; iCol++) { + result._ [iRow] [iCol] = scalar * self._ [iRow] [iCol]; + } + } + return result; + });}, + get __imul__ () {return __get__ (this, function (self, other) { + return self.__mul__ (other); + });}, + get __add__ () {return __get__ (this, function (self, other) { + var result = Matrix (self.nRows, self.nCols); + for (var iRow = 0; iRow < self.nRows; iRow++) { + for (var iCol = 0; iCol < self.nCols; iCol++) { + result._ [iRow] [iCol] = self._ [iRow] [iCol] + other._ [iRow] [iCol]; + } + } + return result; + });}, + get __getitem__ () {return __get__ (this, function (self, index) { + return self._ [index]; + });}, + get __setitem__ () {return __get__ (this, function (self, index, value) { + self._ [index] = value; + });}, + get __repr__ () {return __get__ (this, function (self) { + return repr (self._); + });}, + get __floordiv__ () {return __get__ (this, function (self, other) { + return 'Overloading __floordiv__ has no meaning for matrices'; + });}, + get __truediv__ () {return __get__ (this, function (self, other) { + return 'Overloading __truediv__ has no meaning for matrices'; + });} +}); +export var Functor = __class__ ('Functor', [object], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self, factor) { + self.factor = factor; + });}, + get __call__ () {return __get__ (this, function (self, x, y) { + if (typeof y == 'undefined' || (y != null && y.hasOwnProperty ("__kwargtrans__"))) {; + var y = -(1); + }; + var m = -(2); + var kwargs = dict (); + if (arguments.length) { + var __ilastarg0__ = arguments.length - 1; + if (arguments [__ilastarg0__] && arguments [__ilastarg0__].hasOwnProperty ("__kwargtrans__")) { + var __allkwargs0__ = arguments [__ilastarg0__--]; + for (var __attrib0__ in __allkwargs0__) { + switch (__attrib0__) { + case 'self': var self = __allkwargs0__ [__attrib0__]; break; + case 'x': var x = __allkwargs0__ [__attrib0__]; break; + case 'y': var y = __allkwargs0__ [__attrib0__]; break; + case 'm': var m = __allkwargs0__ [__attrib0__]; break; + case 'n': var n = __allkwargs0__ [__attrib0__]; break; + default: kwargs [__attrib0__] = __allkwargs0__ [__attrib0__]; + } + } + delete kwargs.__kwargtrans__; + } + var args = tuple ([].slice.apply (arguments).slice (3, __ilastarg0__ + 1)); + } + else { + var args = tuple (); + } + return tuple ([self.factor * x, self.factor * y, (function () { + var __accu0__ = []; + for (var arg of args) { + __accu0__.append (self.factor * arg); + } + return __accu0__; + }) (), self.factor * m, self.factor * n]); + });} +}); +export var f = Functor (10); +export var g = function (x, y) { + if (typeof y == 'undefined' || (y != null && y.hasOwnProperty ("__kwargtrans__"))) {; + var y = -(1); + }; + var m = -(2); + var kwargs = dict (); + if (arguments.length) { + var __ilastarg0__ = arguments.length - 1; + if (arguments [__ilastarg0__] && arguments [__ilastarg0__].hasOwnProperty ("__kwargtrans__")) { + var __allkwargs0__ = arguments [__ilastarg0__--]; + for (var __attrib0__ in __allkwargs0__) { + switch (__attrib0__) { + case 'x': var x = __allkwargs0__ [__attrib0__]; break; + case 'y': var y = __allkwargs0__ [__attrib0__]; break; + case 'm': var m = __allkwargs0__ [__attrib0__]; break; + case 'n': var n = __allkwargs0__ [__attrib0__]; break; + default: kwargs [__attrib0__] = __allkwargs0__ [__attrib0__]; + } + } + delete kwargs.__kwargtrans__; + } + var args = tuple ([].slice.apply (arguments).slice (2, __ilastarg0__ + 1)); + } + else { + var args = tuple (); + } + return tuple ([x, y, args, m, n]); +}; +export var run = function (autoTester) { + var m0 = Matrix (3, 3, [[1, 2, 3], [4, 5, 6], [7, 8, 10]]); + var m1 = Matrix (3, 3, [[10, 20, 30], [40, 50, 60], [70, 80, 90]]); + var m4 = Matrix (3, 3, [[1, 1, 2], [2, 2, 3], [3, 3, -(5)]]); + var m5 = Matrix (3, 3, [[1, 1, 2], [2, 2, 3], [3, 3, -(5)]]); + var x = 3; + var y = (x * 4) * x; + var fast = 2 * 3; + fast++; + __setitem__ (__getitem__ (m1, 1), 2, __getitem__ (__getitem__ (m0, 1), 2)); + var slow = __add__ (2, 3); + var m2 = __add__ (__mul__ (m0, m1), __mul__ (m1, __add__ (m0, m1))); + var m3 = __mul__ (__mul__ (2, __add__ (__mul__ (__mul__ (__mul__ (2, m0), 3), m1), __mul__ (m2, 4))), 2); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __getitem__ (__getitem__ (m0, 1), 1), __getitem__ (__getitem__ (m0, 1), 2), __getitem__ (__getitem__ (m1, 1), 1), __getitem__ (__getitem__ (m1, 1), 2)); + }) (); + var m1 = __call__ (__iadd__, null, m1, m0); + var m2 = __call__ (__imul__, null, m2, m1); + var m5 = __call__ (__imatmul__, null, m5, m4); + var m6 = __matmul__ (m0, m1); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __truediv__ (m0, m1)); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __floordiv__ (m0, m1)); + }) (); + var fast2 = 16 * y + 1; + fast *= 2; + autoTester.check (m0, m1); + autoTester.check (x, y); + autoTester.check (m2); + autoTester.check (m3); + autoTester.check (m5); + autoTester.check (m6); + autoTester.check (fast, slow, fast2); + var x = 'marker'; + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __call__ (f, null, 3, 4, 30, 40, __kwargtrans__ ({m: 300, n: 400, p: 3000, q: 4000}))); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __call__ (g, null, 3, 4, 30, 40, __kwargtrans__ ({m: 300, n: 400, p: 3000, q: 4000}))); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __eq__ (__call__ (set, null, tuple ([1, 2, 3])), __call__ (set, null, tuple ([3, 2, 1])))); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __ne__ (__call__ (set, null, tuple ([1, 2, 3])), __call__ (set, null, tuple ([3, 2, 1])))); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __eq__ (__call__ (set, null, tuple ([1, 3])), __call__ (set, null, tuple ([3, 2, 1])))); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __ne__ (__call__ (set, null, tuple ([1, 3])), __call__ (set, null, tuple ([3, 2, 1])))); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __lt__ (__call__ (set, null, tuple ([1, 2])), __call__ (set, null, tuple ([3, 2, 1])))); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __le__ (__call__ (set, null, tuple ([1, 2, 3])), __call__ (set, null, tuple ([3, 2, 1])))); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __gt__ (__call__ (set, null, tuple ([1, 2, 3])), __call__ (set, null, tuple ([2, 1])))); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __ge__ (__call__ (set, null, tuple ([1, 2, 3])), __call__ (set, null, tuple ([3, 2, 1])))); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __eq__ (tuple ([1, 2, 3]), tuple ([1, 2, 3]))); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __eq__ ([1, 2, 3], [1, 2, 3])); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __ne__ (tuple ([1, 2, 3]), tuple ([1, 2, 3]))); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __ne__ ([1, 2, 3], [1, 2, 3])); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __eq__ (tuple ([2, 1, 3]), tuple ([1, 2, 3]))); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __eq__ ([2, 1, 3], [1, 2, 3])); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __ne__ (tuple ([2, 1, 3]), tuple ([1, 2, 3]))); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __ne__ ([2, 1, 3], [1, 2, 3])); + }) (); + var Bitwise = __class__ ('Bitwise', [object], { + __module__: __name__, + get __lshift__ () {return __get__ (this, function (self, other) { + autoTester.check ('lshift'); + });}, + get __rlshift__ () {return __get__ (this, function (self, other) { + autoTester.check ('rlshift'); + });}, + get __rshift__ () {return __get__ (this, function (self, other) { + autoTester.check ('rshift'); + });}, + get __rrshift__ () {return __get__ (this, function (self, other) { + autoTester.check ('rrshift'); + });}, + get __or__ () {return __get__ (this, function (self, other) { + autoTester.check ('or'); + });}, + get __ror__ () {return __get__ (this, function (self, other) { + autoTester.check ('ror'); + });}, + get __xor__ () {return __get__ (this, function (self, other) { + autoTester.check ('xor'); + });}, + get __rxor__ () {return __get__ (this, function (self, other) { + autoTester.check ('rxor'); + });}, + get __and__ () {return __get__ (this, function (self, other) { + autoTester.check ('and'); + });}, + get __rand__ () {return __get__ (this, function (self, other) { + autoTester.check ('rand'); + });} + }); + var bitwise = Bitwise (); + __lshift__ (bitwise, []); + __lshift__ ([], bitwise); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __lshift__ (32, 2)); + }) (); + __rshift__ (bitwise, []); + __rshift__ ([], bitwise); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __rshift__ (32, 2)); + }) (); + __or__ (bitwise, []); + __or__ ([], bitwise); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __or__ (1, 4)); + }) (); + __xor__ (bitwise, []); + __xor__ ([], bitwise); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __xor__ (11, 13)); + }) (); + __and__ (bitwise, []); + __and__ ([], bitwise); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __and__ (12, 20)); + }) (); + var a = 32; + var a = __call__ (__ilshift__, null, a, 2); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, a); + }) (); + autoTester.check (32 << 2); + autoTester.check (32 >> 2); + autoTester.check (1 | 4); + autoTester.check (11 ^ 13); + autoTester.check (12 & 20); + var a = 32; + a <<= 2; + autoTester.check (a); + var A = __class__ ('A', [object], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self) { + self.b = dict ({}); + });} + }); + var a = A (); + a.b ['c'] = 'd'; + __setitem__ (a.b, 'c', __call__ (__iadd__, null, __getitem__ (a.b, 'c'), 'e')); + autoTester.check (a.b ['c']); +}; + +//# sourceMappingURL=operator_overloading.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/operator_overloading.tree b/transcrypt/development/automated_tests/transcrypt/__target__38/operator_overloading.tree new file mode 100644 index 000000000..95d9a77db --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/operator_overloading.tree @@ -0,0 +1,3654 @@ +file: Module + body: list + element: ImportFrom + module: str = org.transcrypt.stubs.browser + names: list + element: alias + name: str = __pragma__ + asname: NoneType = None + level: int = 0 + element: ClassDef + name: str = Matrix + bases: list + keywords: list + body: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = nRows + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = nCols + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = elements + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + element: List + elts: list + ctx: Load + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = nRows + ctx: Store + value: Name + id: str = nRows + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = nCols + ctx: Store + value: Name + id: str = nCols + ctx: Load + type_comment: NoneType = None + element: If + test: Call + func: Name + id: str = len + ctx: Load + args: list + element: Name + id: str = elements + ctx: Load + keywords: list + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _ + ctx: Store + value: Name + id: str = elements + ctx: Load + type_comment: NoneType = None + orelse: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _ + ctx: Store + value: ListComp + elt: ListComp + elt: Constant + value: int = 0 + kind: NoneType = None + generators: list + element: comprehension + target: Name + id: str = col + ctx: Store + iter: Call + func: Name + id: str = range + ctx: Load + args: list + element: Name + id: str = nCols + ctx: Load + keywords: list + ifs: list + is_async: int = 0 + generators: list + element: comprehension + target: Name + id: str = row + ctx: Store + iter: Call + func: Name + id: str = range + ctx: Load + args: list + element: Name + id: str = nRows + ctx: Load + keywords: list + ifs: list + is_async: int = 0 + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __matmul__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Name + id: str = result + ctx: Store + value: Call + func: Name + id: str = Matrix + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = nRows + ctx: Load + element: Attribute + value: Name + id: str = other + ctx: Load + attr: str = nCols + ctx: Load + keywords: list + type_comment: NoneType = None + element: For + target: Name + id: str = iTargetRow + ctx: Store + iter: Call + func: Name + id: str = range + ctx: Load + args: list + element: Attribute + value: Name + id: str = result + ctx: Load + attr: str = nRows + ctx: Load + keywords: list + body: list + element: For + target: Name + id: str = iTargetCol + ctx: Store + iter: Call + func: Name + id: str = range + ctx: Load + args: list + element: Attribute + value: Name + id: str = result + ctx: Load + attr: str = nCols + ctx: Load + keywords: list + body: list + element: For + target: Name + id: str = iTerm + ctx: Store + iter: Call + func: Name + id: str = range + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = nCols + ctx: Load + keywords: list + body: list + element: AugAssign + target: Subscript + value: Subscript + value: Attribute + value: Name + id: str = result + ctx: Load + attr: str = _ + ctx: Load + slice: Index + value: Name + id: str = iTargetRow + ctx: Load + ctx: Load + slice: Index + value: Name + id: str = iTargetCol + ctx: Load + ctx: Store + op: Add + value: BinOp + left: Subscript + value: Subscript + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _ + ctx: Load + slice: Index + value: Name + id: str = iTargetRow + ctx: Load + ctx: Load + slice: Index + value: Name + id: str = iTerm + ctx: Load + ctx: Load + op: Mult + right: Subscript + value: Subscript + value: Attribute + value: Name + id: str = other + ctx: Load + attr: str = _ + ctx: Load + slice: Index + value: Name + id: str = iTerm + ctx: Load + ctx: Load + slice: Index + value: Name + id: str = iTargetCol + ctx: Load + ctx: Load + orelse: list + type_comment: NoneType = None + orelse: list + type_comment: NoneType = None + orelse: list + type_comment: NoneType = None + element: Return + value: Name + id: str = result + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __imatmul__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = __matmul__ + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __mul__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: Compare + left: Call + func: Name + id: str = type + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + keywords: list + ops: list + element: Eq + comparators: list + element: Name + id: str = Matrix + ctx: Load + body: list + element: Assign + targets: list + element: Name + id: str = result + ctx: Store + value: Call + func: Name + id: str = Matrix + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = nRows + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = nCols + ctx: Load + keywords: list + type_comment: NoneType = None + element: For + target: Name + id: str = iRow + ctx: Store + iter: Call + func: Name + id: str = range + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = nRows + ctx: Load + keywords: list + body: list + element: For + target: Name + id: str = iCol + ctx: Store + iter: Call + func: Name + id: str = range + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = nCols + ctx: Load + keywords: list + body: list + element: Assign + targets: list + element: Subscript + value: Subscript + value: Attribute + value: Name + id: str = result + ctx: Load + attr: str = _ + ctx: Load + slice: Index + value: Name + id: str = iRow + ctx: Load + ctx: Load + slice: Index + value: Name + id: str = iCol + ctx: Load + ctx: Store + value: BinOp + left: Subscript + value: Subscript + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _ + ctx: Load + slice: Index + value: Name + id: str = iRow + ctx: Load + ctx: Load + slice: Index + value: Name + id: str = iCol + ctx: Load + ctx: Load + op: Mult + right: Subscript + value: Subscript + value: Attribute + value: Name + id: str = other + ctx: Load + attr: str = _ + ctx: Load + slice: Index + value: Name + id: str = iRow + ctx: Load + ctx: Load + slice: Index + value: Name + id: str = iCol + ctx: Load + ctx: Load + type_comment: NoneType = None + orelse: list + type_comment: NoneType = None + orelse: list + type_comment: NoneType = None + element: Return + value: Name + id: str = result + ctx: Load + orelse: list + element: Return + value: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = __rmul__ + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __rmul__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = scalar + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Name + id: str = result + ctx: Store + value: Call + func: Name + id: str = Matrix + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = nRows + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = nCols + ctx: Load + keywords: list + type_comment: NoneType = None + element: For + target: Name + id: str = iRow + ctx: Store + iter: Call + func: Name + id: str = range + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = nRows + ctx: Load + keywords: list + body: list + element: For + target: Name + id: str = iCol + ctx: Store + iter: Call + func: Name + id: str = range + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = nCols + ctx: Load + keywords: list + body: list + element: Assign + targets: list + element: Subscript + value: Subscript + value: Attribute + value: Name + id: str = result + ctx: Load + attr: str = _ + ctx: Load + slice: Index + value: Name + id: str = iRow + ctx: Load + ctx: Load + slice: Index + value: Name + id: str = iCol + ctx: Load + ctx: Store + value: BinOp + left: Name + id: str = scalar + ctx: Load + op: Mult + right: Subscript + value: Subscript + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _ + ctx: Load + slice: Index + value: Name + id: str = iRow + ctx: Load + ctx: Load + slice: Index + value: Name + id: str = iCol + ctx: Load + ctx: Load + type_comment: NoneType = None + orelse: list + type_comment: NoneType = None + orelse: list + type_comment: NoneType = None + element: Return + value: Name + id: str = result + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __imul__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = __mul__ + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __add__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Name + id: str = result + ctx: Store + value: Call + func: Name + id: str = Matrix + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = nRows + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = nCols + ctx: Load + keywords: list + type_comment: NoneType = None + element: For + target: Name + id: str = iRow + ctx: Store + iter: Call + func: Name + id: str = range + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = nRows + ctx: Load + keywords: list + body: list + element: For + target: Name + id: str = iCol + ctx: Store + iter: Call + func: Name + id: str = range + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = nCols + ctx: Load + keywords: list + body: list + element: Assign + targets: list + element: Subscript + value: Subscript + value: Attribute + value: Name + id: str = result + ctx: Load + attr: str = _ + ctx: Load + slice: Index + value: Name + id: str = iRow + ctx: Load + ctx: Load + slice: Index + value: Name + id: str = iCol + ctx: Load + ctx: Store + value: BinOp + left: Subscript + value: Subscript + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _ + ctx: Load + slice: Index + value: Name + id: str = iRow + ctx: Load + ctx: Load + slice: Index + value: Name + id: str = iCol + ctx: Load + ctx: Load + op: Add + right: Subscript + value: Subscript + value: Attribute + value: Name + id: str = other + ctx: Load + attr: str = _ + ctx: Load + slice: Index + value: Name + id: str = iRow + ctx: Load + ctx: Load + slice: Index + value: Name + id: str = iCol + ctx: Load + ctx: Load + type_comment: NoneType = None + orelse: list + type_comment: NoneType = None + orelse: list + type_comment: NoneType = None + element: Return + value: Name + id: str = result + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __getitem__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = index + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Subscript + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _ + ctx: Load + slice: Index + value: Name + id: str = index + ctx: Load + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __setitem__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = index + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = value + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Subscript + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _ + ctx: Load + slice: Index + value: Name + id: str = index + ctx: Load + ctx: Store + value: Name + id: str = value + ctx: Load + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __repr__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _ + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __floordiv__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Constant + value: str = Overloading __floordiv__ has no meaning for matrices + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __truediv__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Constant + value: str = Overloading __truediv__ has no meaning for matrices + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: ClassDef + name: str = Functor + bases: list + keywords: list + body: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = factor + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = factor + ctx: Store + value: Name + id: str = factor + ctx: Load + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = kwargs + kind: NoneType = None + keywords: list + element: FunctionDef + name: str = __call__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = y + annotation: NoneType = None + type_comment: NoneType = None + vararg: arg + arg: str = args + annotation: NoneType = None + type_comment: NoneType = None + kwonlyargs: list + element: arg + arg: str = m + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = n + annotation: NoneType = None + type_comment: NoneType = None + kw_defaults: list + element: UnaryOp + op: USub + operand: Constant + value: int = 2 + kind: NoneType = None + element: NoneType = None + kwarg: arg + arg: str = kwargs + annotation: NoneType = None + type_comment: NoneType = None + defaults: list + element: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + body: list + element: Return + value: Tuple + elts: list + element: BinOp + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = factor + ctx: Load + op: Mult + right: Name + id: str = x + ctx: Load + element: BinOp + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = factor + ctx: Load + op: Mult + right: Name + id: str = y + ctx: Load + element: ListComp + elt: BinOp + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = factor + ctx: Load + op: Mult + right: Name + id: str = arg + ctx: Load + generators: list + element: comprehension + target: Name + id: str = arg + ctx: Store + iter: Name + id: str = args + ctx: Load + ifs: list + is_async: int = 0 + element: BinOp + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = factor + ctx: Load + op: Mult + right: Name + id: str = m + ctx: Load + element: BinOp + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = factor + ctx: Load + op: Mult + right: Name + id: str = n + ctx: Load + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = nokwargs + kind: NoneType = None + keywords: list + decorator_list: list + element: Assign + targets: list + element: Name + id: str = f + ctx: Store + value: Call + func: Name + id: str = Functor + ctx: Load + args: list + element: Constant + value: int = 10 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = kwargs + kind: NoneType = None + keywords: list + element: FunctionDef + name: str = g + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = y + annotation: NoneType = None + type_comment: NoneType = None + vararg: arg + arg: str = args + annotation: NoneType = None + type_comment: NoneType = None + kwonlyargs: list + element: arg + arg: str = m + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = n + annotation: NoneType = None + type_comment: NoneType = None + kw_defaults: list + element: UnaryOp + op: USub + operand: Constant + value: int = 2 + kind: NoneType = None + element: NoneType = None + kwarg: arg + arg: str = kwargs + annotation: NoneType = None + type_comment: NoneType = None + defaults: list + element: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + body: list + element: Return + value: Tuple + elts: list + element: Name + id: str = x + ctx: Load + element: Name + id: str = y + ctx: Load + element: Name + id: str = args + ctx: Load + element: Name + id: str = m + ctx: Load + element: Name + id: str = n + ctx: Load + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = nokwargs + kind: NoneType = None + keywords: list + element: FunctionDef + name: str = run + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = autoTester + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Name + id: str = m0 + ctx: Store + value: Call + func: Name + id: str = Matrix + ctx: Load + args: list + element: Constant + value: int = 3 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + element: List + elts: list + element: List + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + element: List + elts: list + element: Constant + value: int = 4 + kind: NoneType = None + element: Constant + value: int = 5 + kind: NoneType = None + element: Constant + value: int = 6 + kind: NoneType = None + ctx: Load + element: List + elts: list + element: Constant + value: int = 7 + kind: NoneType = None + element: Constant + value: int = 8 + kind: NoneType = None + element: Constant + value: int = 10 + kind: NoneType = None + ctx: Load + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = m1 + ctx: Store + value: Call + func: Name + id: str = Matrix + ctx: Load + args: list + element: Constant + value: int = 3 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + element: List + elts: list + element: List + elts: list + element: Constant + value: int = 10 + kind: NoneType = None + element: Constant + value: int = 20 + kind: NoneType = None + element: Constant + value: int = 30 + kind: NoneType = None + ctx: Load + element: List + elts: list + element: Constant + value: int = 40 + kind: NoneType = None + element: Constant + value: int = 50 + kind: NoneType = None + element: Constant + value: int = 60 + kind: NoneType = None + ctx: Load + element: List + elts: list + element: Constant + value: int = 70 + kind: NoneType = None + element: Constant + value: int = 80 + kind: NoneType = None + element: Constant + value: int = 90 + kind: NoneType = None + ctx: Load + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = m4 + ctx: Store + value: Call + func: Name + id: str = Matrix + ctx: Load + args: list + element: Constant + value: int = 3 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + element: List + elts: list + element: List + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + ctx: Load + element: List + elts: list + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + element: List + elts: list + element: Constant + value: int = 3 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + element: UnaryOp + op: USub + operand: Constant + value: int = 5 + kind: NoneType = None + ctx: Load + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = m5 + ctx: Store + value: Call + func: Name + id: str = Matrix + ctx: Load + args: list + element: Constant + value: int = 3 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + element: List + elts: list + element: List + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + ctx: Load + element: List + elts: list + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + element: List + elts: list + element: Constant + value: int = 3 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + element: UnaryOp + op: USub + operand: Constant + value: int = 5 + kind: NoneType = None + ctx: Load + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = x + ctx: Store + value: Constant + value: int = 3 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = y + ctx: Store + value: BinOp + left: BinOp + left: Name + id: str = x + ctx: Load + op: Mult + right: Constant + value: int = 4 + kind: NoneType = None + op: Mult + right: Name + id: str = x + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = fast + ctx: Store + value: BinOp + left: Constant + value: int = 2 + kind: NoneType = None + op: Mult + right: Constant + value: int = 3 + kind: NoneType = None + type_comment: NoneType = None + element: AugAssign + target: Name + id: str = fast + ctx: Store + op: Add + value: Constant + value: int = 1 + kind: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = opov + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Subscript + value: Subscript + value: Name + id: str = m1 + ctx: Load + slice: Index + value: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + slice: Index + value: Constant + value: int = 2 + kind: NoneType = None + ctx: Store + value: Subscript + value: Subscript + value: Name + id: str = m0 + ctx: Load + slice: Index + value: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + slice: Index + value: Constant + value: int = 2 + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = slow + ctx: Store + value: BinOp + left: Constant + value: int = 2 + kind: NoneType = None + op: Add + right: Constant + value: int = 3 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = m2 + ctx: Store + value: BinOp + left: BinOp + left: Name + id: str = m0 + ctx: Load + op: Mult + right: Name + id: str = m1 + ctx: Load + op: Add + right: BinOp + left: Name + id: str = m1 + ctx: Load + op: Mult + right: BinOp + left: Name + id: str = m0 + ctx: Load + op: Add + right: Name + id: str = m1 + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = m3 + ctx: Store + value: BinOp + left: BinOp + left: Constant + value: int = 2 + kind: NoneType = None + op: Mult + right: BinOp + left: BinOp + left: BinOp + left: BinOp + left: Constant + value: int = 2 + kind: NoneType = None + op: Mult + right: Name + id: str = m0 + ctx: Load + op: Mult + right: Constant + value: int = 3 + kind: NoneType = None + op: Mult + right: Name + id: str = m1 + ctx: Load + op: Add + right: BinOp + left: Name + id: str = m2 + ctx: Load + op: Mult + right: Constant + value: int = 4 + kind: NoneType = None + op: Mult + right: Constant + value: int = 2 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Subscript + value: Subscript + value: Name + id: str = m0 + ctx: Load + slice: Index + value: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + slice: Index + value: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + element: Subscript + value: Subscript + value: Name + id: str = m0 + ctx: Load + slice: Index + value: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + slice: Index + value: Constant + value: int = 2 + kind: NoneType = None + ctx: Load + element: Subscript + value: Subscript + value: Name + id: str = m1 + ctx: Load + slice: Index + value: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + slice: Index + value: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + element: Subscript + value: Subscript + value: Name + id: str = m1 + ctx: Load + slice: Index + value: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + slice: Index + value: Constant + value: int = 2 + kind: NoneType = None + ctx: Load + keywords: list + element: AugAssign + target: Name + id: str = m1 + ctx: Store + op: Add + value: Name + id: str = m0 + ctx: Load + element: AugAssign + target: Name + id: str = m2 + ctx: Store + op: Mult + value: Name + id: str = m1 + ctx: Load + element: AugAssign + target: Name + id: str = m5 + ctx: Store + op: MatMult + value: Name + id: str = m4 + ctx: Load + element: Assign + targets: list + element: Name + id: str = m6 + ctx: Store + value: BinOp + left: Name + id: str = m0 + ctx: Load + op: MatMult + right: Name + id: str = m1 + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BinOp + left: Name + id: str = m0 + ctx: Load + op: Div + right: Name + id: str = m1 + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BinOp + left: Name + id: str = m0 + ctx: Load + op: FloorDiv + right: Name + id: str = m1 + ctx: Load + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = noopov + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = fast2 + ctx: Store + value: BinOp + left: BinOp + left: Constant + value: int = 16 + kind: NoneType = None + op: Mult + right: Name + id: str = y + ctx: Load + op: Add + right: Constant + value: int = 1 + kind: NoneType = None + type_comment: NoneType = None + element: AugAssign + target: Name + id: str = fast + ctx: Store + op: Mult + value: Constant + value: int = 2 + kind: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = m0 + ctx: Load + element: Name + id: str = m1 + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = x + ctx: Load + element: Name + id: str = y + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = m2 + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = m3 + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = m5 + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = m6 + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = fast + ctx: Load + element: Name + id: str = slow + ctx: Load + element: Name + id: str = fast2 + ctx: Load + keywords: list + element: Assign + targets: list + element: Name + id: str = x + ctx: Store + value: Constant + value: str = marker + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = opov + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = f + ctx: Load + args: list + element: Constant + value: int = 3 + kind: NoneType = None + element: Constant + value: int = 4 + kind: NoneType = None + element: Constant + value: int = 30 + kind: NoneType = None + element: Constant + value: int = 40 + kind: NoneType = None + keywords: list + element: keyword + arg: str = m + value: Constant + value: int = 300 + kind: NoneType = None + element: keyword + arg: str = n + value: Constant + value: int = 400 + kind: NoneType = None + element: keyword + arg: str = p + value: Constant + value: int = 3000 + kind: NoneType = None + element: keyword + arg: str = q + value: Constant + value: int = 4000 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = g + ctx: Load + args: list + element: Constant + value: int = 3 + kind: NoneType = None + element: Constant + value: int = 4 + kind: NoneType = None + element: Constant + value: int = 30 + kind: NoneType = None + element: Constant + value: int = 40 + kind: NoneType = None + keywords: list + element: keyword + arg: str = m + value: Constant + value: int = 300 + kind: NoneType = None + element: keyword + arg: str = n + value: Constant + value: int = 400 + kind: NoneType = None + element: keyword + arg: str = p + value: Constant + value: int = 3000 + kind: NoneType = None + element: keyword + arg: str = q + value: Constant + value: int = 4000 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Call + func: Name + id: str = set + ctx: Load + args: list + element: Tuple + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + keywords: list + ops: list + element: Eq + comparators: list + element: Call + func: Name + id: str = set + ctx: Load + args: list + element: Tuple + elts: list + element: Constant + value: int = 3 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Call + func: Name + id: str = set + ctx: Load + args: list + element: Tuple + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + keywords: list + ops: list + element: NotEq + comparators: list + element: Call + func: Name + id: str = set + ctx: Load + args: list + element: Tuple + elts: list + element: Constant + value: int = 3 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Call + func: Name + id: str = set + ctx: Load + args: list + element: Tuple + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + keywords: list + ops: list + element: Eq + comparators: list + element: Call + func: Name + id: str = set + ctx: Load + args: list + element: Tuple + elts: list + element: Constant + value: int = 3 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Call + func: Name + id: str = set + ctx: Load + args: list + element: Tuple + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + keywords: list + ops: list + element: NotEq + comparators: list + element: Call + func: Name + id: str = set + ctx: Load + args: list + element: Tuple + elts: list + element: Constant + value: int = 3 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Call + func: Name + id: str = set + ctx: Load + args: list + element: Tuple + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + ctx: Load + keywords: list + ops: list + element: Lt + comparators: list + element: Call + func: Name + id: str = set + ctx: Load + args: list + element: Tuple + elts: list + element: Constant + value: int = 3 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Call + func: Name + id: str = set + ctx: Load + args: list + element: Tuple + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + keywords: list + ops: list + element: LtE + comparators: list + element: Call + func: Name + id: str = set + ctx: Load + args: list + element: Tuple + elts: list + element: Constant + value: int = 3 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Call + func: Name + id: str = set + ctx: Load + args: list + element: Tuple + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + keywords: list + ops: list + element: Gt + comparators: list + element: Call + func: Name + id: str = set + ctx: Load + args: list + element: Tuple + elts: list + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Call + func: Name + id: str = set + ctx: Load + args: list + element: Tuple + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + keywords: list + ops: list + element: GtE + comparators: list + element: Call + func: Name + id: str = set + ctx: Load + args: list + element: Tuple + elts: list + element: Constant + value: int = 3 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Tuple + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + ops: list + element: Eq + comparators: list + element: Tuple + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: List + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + ops: list + element: Eq + comparators: list + element: List + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Tuple + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + ops: list + element: NotEq + comparators: list + element: Tuple + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: List + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + ops: list + element: NotEq + comparators: list + element: List + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Tuple + elts: list + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + ops: list + element: Eq + comparators: list + element: Tuple + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: List + elts: list + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + ops: list + element: Eq + comparators: list + element: List + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Tuple + elts: list + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + ops: list + element: NotEq + comparators: list + element: Tuple + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: List + elts: list + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + ops: list + element: NotEq + comparators: list + element: List + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = noopov + kind: NoneType = None + keywords: list + element: ClassDef + name: str = Bitwise + bases: list + keywords: list + body: list + element: FunctionDef + name: str = __lshift__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = lshift + kind: NoneType = None + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __rlshift__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = rlshift + kind: NoneType = None + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __rshift__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = rshift + kind: NoneType = None + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __rrshift__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = rrshift + kind: NoneType = None + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __or__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = or + kind: NoneType = None + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __ror__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = ror + kind: NoneType = None + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __xor__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = xor + kind: NoneType = None + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __rxor__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = rxor + kind: NoneType = None + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __and__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = and + kind: NoneType = None + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __rand__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = rand + kind: NoneType = None + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: Assign + targets: list + element: Name + id: str = bitwise + ctx: Store + value: Call + func: Name + id: str = Bitwise + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = opov + kind: NoneType = None + keywords: list + element: Expr + value: BinOp + left: Name + id: str = bitwise + ctx: Load + op: LShift + right: List + elts: list + ctx: Load + element: Expr + value: BinOp + left: List + elts: list + ctx: Load + op: LShift + right: Name + id: str = bitwise + ctx: Load + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BinOp + left: Constant + value: int = 32 + kind: NoneType = None + op: LShift + right: Constant + value: int = 2 + kind: NoneType = None + keywords: list + element: Expr + value: BinOp + left: Name + id: str = bitwise + ctx: Load + op: RShift + right: List + elts: list + ctx: Load + element: Expr + value: BinOp + left: List + elts: list + ctx: Load + op: RShift + right: Name + id: str = bitwise + ctx: Load + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BinOp + left: Constant + value: int = 32 + kind: NoneType = None + op: RShift + right: Constant + value: int = 2 + kind: NoneType = None + keywords: list + element: Expr + value: BinOp + left: Name + id: str = bitwise + ctx: Load + op: BitOr + right: List + elts: list + ctx: Load + element: Expr + value: BinOp + left: List + elts: list + ctx: Load + op: BitOr + right: Name + id: str = bitwise + ctx: Load + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BinOp + left: Constant + value: int = 1 + kind: NoneType = None + op: BitOr + right: Constant + value: int = 4 + kind: NoneType = None + keywords: list + element: Expr + value: BinOp + left: Name + id: str = bitwise + ctx: Load + op: BitXor + right: List + elts: list + ctx: Load + element: Expr + value: BinOp + left: List + elts: list + ctx: Load + op: BitXor + right: Name + id: str = bitwise + ctx: Load + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BinOp + left: Constant + value: int = 11 + kind: NoneType = None + op: BitXor + right: Constant + value: int = 13 + kind: NoneType = None + keywords: list + element: Expr + value: BinOp + left: Name + id: str = bitwise + ctx: Load + op: BitAnd + right: List + elts: list + ctx: Load + element: Expr + value: BinOp + left: List + elts: list + ctx: Load + op: BitAnd + right: Name + id: str = bitwise + ctx: Load + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BinOp + left: Constant + value: int = 12 + kind: NoneType = None + op: BitAnd + right: Constant + value: int = 20 + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = a + ctx: Store + value: Constant + value: int = 32 + kind: NoneType = None + type_comment: NoneType = None + element: AugAssign + target: Name + id: str = a + ctx: Store + op: LShift + value: Constant + value: int = 2 + kind: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = a + ctx: Load + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = noopov + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BinOp + left: Constant + value: int = 32 + kind: NoneType = None + op: LShift + right: Constant + value: int = 2 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BinOp + left: Constant + value: int = 32 + kind: NoneType = None + op: RShift + right: Constant + value: int = 2 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BinOp + left: Constant + value: int = 1 + kind: NoneType = None + op: BitOr + right: Constant + value: int = 4 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BinOp + left: Constant + value: int = 11 + kind: NoneType = None + op: BitXor + right: Constant + value: int = 13 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BinOp + left: Constant + value: int = 12 + kind: NoneType = None + op: BitAnd + right: Constant + value: int = 20 + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = a + ctx: Store + value: Constant + value: int = 32 + kind: NoneType = None + type_comment: NoneType = None + element: AugAssign + target: Name + id: str = a + ctx: Store + op: LShift + value: Constant + value: int = 2 + kind: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = a + ctx: Load + keywords: list + element: ClassDef + name: str = A + bases: list + keywords: list + body: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = b + ctx: Store + value: Dict + keys: list + values: list + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: Assign + targets: list + element: Name + id: str = a + ctx: Store + value: Call + func: Name + id: str = A + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Subscript + value: Attribute + value: Name + id: str = a + ctx: Load + attr: str = b + ctx: Load + slice: Index + value: Constant + value: str = c + kind: NoneType = None + ctx: Store + value: Constant + value: str = d + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = opov + kind: NoneType = None + keywords: list + element: AugAssign + target: Subscript + value: Attribute + value: Name + id: str = a + ctx: Load + attr: str = b + ctx: Load + slice: Index + value: Constant + value: str = c + kind: NoneType = None + ctx: Store + op: Add + value: Constant + value: str = e + kind: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = noopov + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Subscript + value: Attribute + value: Name + id: str = a + ctx: Load + attr: str = b + ctx: Load + slice: Index + value: Constant + value: str = c + kind: NoneType = None + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/org.transcrypt.__runtime__.js b/transcrypt/development/automated_tests/transcrypt/__target__38/org.transcrypt.__runtime__.js new file mode 100644 index 000000000..21b968b28 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/org.transcrypt.__runtime__.js @@ -0,0 +1,2602 @@ +// Transcrypt'ed from Python, 2021-05-14 15:00:23 +var __all__ = dict ({get AssertionError () {return AssertionError;}, set AssertionError (value) {AssertionError = value;}, get AttributeError () {return AttributeError;}, set AttributeError (value) {AttributeError = value;}, get BaseException () {return BaseException;}, set BaseException (value) {BaseException = value;}, get DeprecationWarning () {return DeprecationWarning;}, set DeprecationWarning (value) {DeprecationWarning = value;}, get Exception () {return Exception;}, set Exception (value) {Exception = value;}, get IndexError () {return IndexError;}, set IndexError (value) {IndexError = value;}, get IterableError () {return IterableError;}, set IterableError (value) {IterableError = value;}, get KeyError () {return KeyError;}, set KeyError (value) {KeyError = value;}, get NotImplementedError () {return NotImplementedError;}, set NotImplementedError (value) {NotImplementedError = value;}, get RuntimeWarning () {return RuntimeWarning;}, set RuntimeWarning (value) {RuntimeWarning = value;}, get StopIteration () {return StopIteration;}, set StopIteration (value) {StopIteration = value;}, get TypeError () {return TypeError;}, set TypeError (value) {TypeError = value;}, get UserWarning () {return UserWarning;}, set UserWarning (value) {UserWarning = value;}, get ValueError () {return ValueError;}, set ValueError (value) {ValueError = value;}, get Warning () {return Warning;}, set Warning (value) {Warning = value;}, get __Terminal__ () {return __Terminal__;}, set __Terminal__ (value) {__Terminal__ = value;}, get __conj__ () {return __conj__;}, set __conj__ (value) {__conj__ = value;}, get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get __sort__ () {return __sort__;}, set __sort__ (value) {__sort__ = value;}, get __terminal__ () {return __terminal__;}, set __terminal__ (value) {__terminal__ = value;}, get complex () {return complex;}, set complex (value) {complex = value;}, get divmod () {return divmod;}, set divmod (value) {divmod = value;}, get filter () {return filter;}, set filter (value) {filter = value;}, get input () {return input;}, set input (value) {input = value;}, get map () {return map;}, set map (value) {map = value;}, get print () {return print;}, set print (value) {print = value;}, get sorted () {return sorted;}, set sorted (value) {sorted = value;}}); +var __name__ = 'org.transcrypt.__runtime__'; +export var __envir__ = {}; +__envir__.interpreter_name = 'python'; +__envir__.transpiler_name = 'transcrypt'; +__envir__.executor_name = __envir__.transpiler_name; +__envir__.transpiler_version = '3.8.0'; + +export function __nest__ (headObject, tailNames, value) { + var current = headObject; + if (tailNames != '') { + var tailChain = tailNames.split ('.'); + var firstNewIndex = tailChain.length; + for (var index = 0; index < tailChain.length; index++) { + if (!current.hasOwnProperty (tailChain [index])) { + firstNewIndex = index; + break; + } + current = current [tailChain [index]]; + } + for (var index = firstNewIndex; index < tailChain.length; index++) { + current [tailChain [index]] = {}; + current = current [tailChain [index]]; + } + } + for (let attrib of Object.getOwnPropertyNames (value)) { + Object.defineProperty (current, attrib, { + get () {return value [attrib];}, + enumerable: true, + configurable: true + }); + } +}; +export function __init__ (module) { + if (!module.__inited__) { + module.__all__.__init__ (module.__all__); + module.__inited__ = true; + } + return module.__all__; +}; +export function __get__ (aThis, func, quotedFuncName) { + if (aThis) { + if (aThis.hasOwnProperty ('__class__') || typeof aThis == 'string' || aThis instanceof String) { + if (quotedFuncName) { + Object.defineProperty (aThis, quotedFuncName, { + value: function () { + var args = [] .slice.apply (arguments); + return func.apply (null, [aThis] .concat (args)); + }, + writable: true, + enumerable: true, + configurable: true + }); + } + return function () { + var args = [] .slice.apply (arguments); + return func.apply (null, [aThis.__proxy__ ? aThis.__proxy__ : aThis] .concat (args)); + }; + } + else { + return func; + } + } + else { + return func; + } +}; +export function __getcm__ (aThis, func, quotedFuncName) { + if (aThis.hasOwnProperty ('__class__')) { + return function () { + var args = [] .slice.apply (arguments); + return func.apply (null, [aThis.__class__] .concat (args)); + }; + } + else { + return function () { + var args = [] .slice.apply (arguments); + return func.apply (null, [aThis] .concat (args)); + }; + } +}; +export function __getsm__ (aThis, func, quotedFuncName) { + return func; +}; +export var py_metatype = { + __name__: 'type', + __bases__: [], + __new__: function (meta, name, bases, attribs) { + var cls = function () { + var args = [] .slice.apply (arguments); + return cls.__new__ (args); + }; + for (var index = bases.length - 1; index >= 0; index--) { + var base = bases [index]; + for (var attrib in base) { + var descrip = Object.getOwnPropertyDescriptor (base, attrib); + if (descrip == null) { + continue; + } + Object.defineProperty (cls, attrib, descrip); + } + for (let symbol of Object.getOwnPropertySymbols (base)) { + let descrip = Object.getOwnPropertyDescriptor (base, symbol); + Object.defineProperty (cls, symbol, descrip); + } + } + cls.__metaclass__ = meta; + cls.__name__ = name.startsWith ('py_') ? name.slice (3) : name; + cls.__bases__ = bases; + for (var attrib in attribs) { + var descrip = Object.getOwnPropertyDescriptor (attribs, attrib); + Object.defineProperty (cls, attrib, descrip); + } + for (let symbol of Object.getOwnPropertySymbols (attribs)) { + let descrip = Object.getOwnPropertyDescriptor (attribs, symbol); + Object.defineProperty (cls, symbol, descrip); + } + return cls; + } +}; +py_metatype.__metaclass__ = py_metatype; +export var object = { + __init__: function (self) {}, + __metaclass__: py_metatype, + __name__: 'object', + __bases__: [], + __new__: function (args) { + var instance = Object.create (this, {__class__: {value: this, enumerable: true}}); + if ('__getattr__' in this || '__setattr__' in this) { + instance.__proxy__ = new Proxy (instance, { + get: function (target, name) { + let result = target [name]; + if (result == undefined) { + return target.__getattr__ (name); + } + else { + return result; + } + }, + set: function (target, name, value) { + try { + target.__setattr__ (name, value); + } + catch (exception) { + target [name] = value; + } + return true; + } + }) + instance = instance.__proxy__ + } + this.__init__.apply (null, [instance] .concat (args)); + return instance; + } +}; +export function __class__ (name, bases, attribs, meta) { + if (meta === undefined) { + meta = bases [0] .__metaclass__; + } + return meta.__new__ (meta, name, bases, attribs); +}; +export function __pragma__ () {}; +export function __call__ (/* , , * */) { + var args = [] .slice.apply (arguments); + if (typeof args [0] == 'object' && '__call__' in args [0]) { + return args [0] .__call__ .apply (args [1], args.slice (2)); + } + else { + return args [0] .apply (args [1], args.slice (2)); + } +}; +__envir__.executor_name = __envir__.transpiler_name; +var __main__ = {__file__: ''}; +var __except__ = null; +export function __kwargtrans__ (anObject) { + anObject.__kwargtrans__ = null; + anObject.constructor = Object; + return anObject; +} +export function __super__ (aClass, methodName) { + for (let base of aClass.__bases__) { + if (methodName in base) { + return base [methodName]; + } + } + throw new Exception ('Superclass method not found'); +} +export function property (getter, setter) { + if (!setter) { + setter = function () {}; + } + return {get: function () {return getter (this)}, set: function (value) {setter (this, value)}, enumerable: true}; +} +export function __setproperty__ (anObject, name, descriptor) { + if (!anObject.hasOwnProperty (name)) { + Object.defineProperty (anObject, name, descriptor); + } +} +export function assert (condition, message) { + if (!condition) { + throw AssertionError (message, new Error ()); + } +} +export function __mergekwargtrans__ (object0, object1) { + var result = {}; + for (var attrib in object0) { + result [attrib] = object0 [attrib]; + } + for (var attrib in object1) { + result [attrib] = object1 [attrib]; + } + return result; +}; +export function __mergefields__ (targetClass, sourceClass) { + let fieldNames = ['__reprfields__', '__comparefields__', '__initfields__'] + if (sourceClass [fieldNames [0]]) { + if (targetClass [fieldNames [0]]) { + for (let fieldName of fieldNames) { + targetClass [fieldName] = new Set ([...targetClass [fieldName], ...sourceClass [fieldName]]); + } + } + else { + for (let fieldName of fieldNames) { + targetClass [fieldName] = new Set (sourceClass [fieldName]); + } + } + } +} +export function __withblock__ (manager, statements) { + if (hasattr (manager, '__enter__')) { + try { + manager.__enter__ (); + statements (); + manager.__exit__ (); + } + catch (exception) { + if (! (manager.__exit__ (exception.name, exception, exception.stack))) { + throw exception; + } + } + } + else { + statements (); + manager.close (); + } +}; +export function dir (obj) { + var aList = []; + for (var aKey in obj) { + aList.push (aKey.startsWith ('py_') ? aKey.slice (3) : aKey); + } + aList.sort (); + return aList; +}; +export function setattr (obj, name, value) { + obj [name] = value; +}; +export function getattr (obj, name) { + return name in obj ? obj [name] : obj ['py_' + name]; +}; +export function hasattr (obj, name) { + try { + return name in obj || 'py_' + name in obj; + } + catch (exception) { + return false; + } +}; +export function delattr (obj, name) { + if (name in obj) { + delete obj [name]; + } + else { + delete obj ['py_' + name]; + } +}; +export function __in__ (element, container) { + if (container === undefined || container === null) { + return false; + } + if (container.__contains__ instanceof Function) { + return container.__contains__ (element); + } + else { + return ( + container.indexOf ? + container.indexOf (element) > -1 : + container.hasOwnProperty (element) + ); + } +}; +export function __specialattrib__ (attrib) { + return (attrib.startswith ('__') && attrib.endswith ('__')) || attrib == 'constructor' || attrib.startswith ('py_'); +}; +export function len (anObject) { + if (anObject === undefined || anObject === null) { + return 0; + } + if (anObject.__len__ instanceof Function) { + return anObject.__len__ (); + } + if (anObject.length !== undefined) { + return anObject.length; + } + var length = 0; + for (var attr in anObject) { + if (!__specialattrib__ (attr)) { + length++; + } + } + return length; +}; +export function __i__ (any) { + return py_typeof (any) == dict ? any.py_keys () : any; +} +export function __k__ (keyed, key) { + var result = keyed [key]; + if (typeof result == 'undefined') { + if (keyed instanceof Array) + if (key == +key && key >= 0 && keyed.length > key) + return result; + else + throw IndexError (key, new Error()); + else + throw KeyError (key, new Error()); + } + return result; +} +export function __t__ (target) { + return ( + target === undefined || target === null ? false : + ['boolean', 'number'] .indexOf (typeof target) >= 0 ? target : + target.__bool__ instanceof Function ? (target.__bool__ () ? target : false) : + target.__len__ instanceof Function ? (target.__len__ () !== 0 ? target : false) : + target instanceof Function ? target : + len (target) !== 0 ? target : + false + ); +} +export function float (any) { + if (any == 'inf') { + return Infinity; + } + else if (any == '-inf') { + return -Infinity; + } + else if (any == 'nan') { + return NaN; + } + else if (isNaN (parseFloat (any))) { + if (any === false) { + return 0; + } + else if (any === true) { + return 1; + } + else { + throw ValueError ("could not convert string to float: '" + str(any) + "'", new Error ()); + } + } + else { + return +any; + } +}; +float.__name__ = 'float'; +float.__bases__ = [object]; +export function int (any) { + return float (any) | 0 +}; +int.__name__ = 'int'; +int.__bases__ = [object]; +Number.prototype.__format__ = function (fmt_spec) { + if (fmt_spec == undefined || fmt_spec.strip ().length == 0) { + return this.toString (); + } + var thousand_sep = false; + var g_default = false; + var width = 0; + var zero = false; + var alternate = false; + var sign = '-'; + var align = '>'; + var fill = ' '; + var precision = undefined; + var ftype = undefined; + var val = this.valueOf (); + var is_negative = val < 0; + val = Math.abs (val); + function pad (s, width, fill, align) { + if (fill == undefined) { + fill = ' '; + } + if (align == undefined) { + align = '>'; + } + var alt = ''; + var sign = ''; + if (s.startswith (['+', '-'])) { + sign = s [0]; + s = s.substr (1); + } + if (alternate && s.startswith (['0b', '0o', '0x'])) { + alt = s.slice (0, 2); + s = s.substr (2); + } + var len = s.length + sign.length + alt.length; + var c = width - len; + switch (align) { + case '=': + return sign + alt + __mul__ (fill, c) + s; + case '>': + return __mul__ (fill, c) + sign + alt + s; + case '<': + return sign + alt + s + __mul__ (fill, c); + case '^': + var m = ((c % 2) + 2) % 2; + var c = Math.floor (c / 2); + return __mul__ (fill, c) + sign + alt + s + __mul__ (fill, c + m); + default: + throw ValueError ("Invalid align type: '" + align + "'", new Error ()); + } + }; + function format_float (val) { + if (val.indexOf ('e+') == -1 && (ftype == 'g' || ftype == 'G')) { + var parts = val.py_split ('.'); + var d = parts [0]; + var t = parts [1]; + while (t [t.length - 1] == '0') { + t = t.slice (0, -1); + } + val = t != '' ? '.'.join ([d, t]) : d; + } + if (alternate && val.indexOf ('.') == -1) { + val = val + '.'; + } + return val; + }; + if (fmt_spec.endswith (['b', 'c', 'd', 'e', 'E', 'f', 'F', 'g', 'G', 'n', 'o', 'x', 'X', '%'])) { + ftype = fmt_spec [fmt_spec.length - 1]; + fmt_spec = fmt_spec.slice (0, -1); + if (ftype == 'n') { + ftype = Number.isInteger (val) ? 'd' : 'f'; + } + } + else { + ftype = Number.isInteger (val) ? 'd' : 'g'; + g_default = true; + } + var parts = fmt_spec.split ('.'); + fmt_spec = parts [0]; + precision = parts [1]; + if (precision != undefined) { + precision = parseInt (precision); + } + if (fmt_spec.length > 0 && fmt_spec [fmt_spec.length - 1] == ',') { + thousand_sep = true; + fmt_spec = fmt_spec.slice (0, -1); + } + if (fmt_spec.length > 0) { + var _width = ''; + while (fmt_spec && fmt_spec [fmt_spec.length - 1].isnumeric ()) { + _width = fmt_spec [fmt_spec.length - 1] + _width; + fmt_spec = fmt_spec.slice (0, -1); + } + if (_width.length > 0) { + if (_width [0] == '0') { + width = parseInt (_width.substr (1)); + zero = true; + } + else { + width = parseInt (_width); + } + } + if (fmt_spec.length > 0 && fmt_spec [fmt_spec.length - 1] == '#') { + alternate = true; + fmt_spec = fmt_spec.slice (0, -1); + } + if (fmt_spec.length > 0 && fmt_spec.endswith (['+', '-', ' '])) { + sign = fmt_spec [fmt_spec.length - 1]; + fmt_spec = fmt_spec.slice (0, -1); + } + if (fmt_spec.length > 0 && fmt_spec.endswith (['<', '>', '=', '^'])) { + align = fmt_spec [fmt_spec.length - 1]; + fmt_spec = fmt_spec.slice (0, -1); + } + if (fmt_spec.length > 0) { + fill = fmt_spec [0]; + } + } + if (isNaN (val)) { + val = 'nan'; + } + else if (val == Infinity) { + val = 'inf'; + } + else { + switch (ftype) { + case 'b': + val = Math.floor (val).toString (2); + if (alternate) { + val = '0b' + val; + } + break; + case 'c': + val = String.fromCharCode (Math.floor (val)); + break; + case 'd': + val = Math.floor (val).toString (); + if (thousand_sep) { + val = val.replace (/\B(?=(\d{3})+(?!\d))/g, ','); + } + break; + case 'o': + val = Math.floor (val).toString (8); + if (alternate) { + val = '0o' + val; + } + break; + case 'x': + case 'X': + val = Math.floor (val).toString (16); + if (alternate) { + val = '0x' + val; + } + break; + case 'e': + case 'E': + if (precision == undefined) { + precision = 6; + } + var num_exp = val.toExponential (precision).split ('e+'); + var num = num_exp [0]; + var exp = num_exp [1]; + val = num.toString () + 'e+' + pad (exp.toString(), 2, '0'); + val = format_float (val); + break; + case 'f': + case 'F': + case '%': + if (precision == undefined) { + precision = 6; + } + if (ftype == '%') { + val *= 100; + } + val = val.toFixed (precision); + val = format_float (val); + if (ftype == '%') { + val += '%'; + } + break; + case 'g': + case 'G': + if (precision == undefined) { + precision = g_default ? 1 : 6; + } + if (precision == 0) { + precision = 1; + } + var convert_to_exponent = false; + if (g_default) { + var parts = val.toString ().split ('.'); + var digit_count = parts [0].length + parts [1].length; + if (digit_count >= precision) { + convert_to_exponent = true; + } + } + var num_exp = val.toExponential (precision - 1).split ('e+'); + var num = num_exp [0]; + var exp = num_exp [1]; + convert_to_exponent |= !((-4 <= exp && exp < precision)); + if (convert_to_exponent) { + val = num.toString() + 'e+' + pad (exp.toString(), 2, '0'); + } + else { + val = val.toFixed (precision - 1 - exp); + } + val = format_float (val); + break; + default: + throw ValueError ("Invalid format type: '" + ftype + "'", new Error ()); + } + } + if (ftype === ftype.toUpperCase ()) { + val = val.toUpperCase () + } + if (ftype != 'c') { + if (sign == '-') { + if (is_negative) { + val = '-' + val; + } + } + else { + val = is_negative ? '-' + val : sign + val; + } + } + if (zero) { + fill = '0'; + align = '='; + } + if (width > 0) { + val = pad (val, width, fill, align); + } + return val; +}; +export function bool (any) { + return !!__t__ (any); +}; +bool.__name__ = 'bool'; +bool.__bases__ = [int]; +export function py_typeof (anObject) { + var aType = typeof anObject; + if (aType == 'object') { + try { + return '__class__' in anObject ? anObject.__class__ : object; + } + catch (exception) { + return aType; + } + } + else { + return ( + aType == 'boolean' ? bool : + aType == 'string' ? str : + aType == 'number' ? (anObject % 1 == 0 ? int : float) : + null + ); + } +}; +export function issubclass (aClass, classinfo) { + if (classinfo instanceof Array) { + for (let aClass2 of classinfo) { + if (issubclass (aClass, aClass2)) { + return true; + } + } + return false; + } + try { + var aClass2 = aClass; + if (aClass2 == classinfo) { + return true; + } + else { + var bases = [].slice.call (aClass2.__bases__); + while (bases.length) { + aClass2 = bases.shift (); + if (aClass2 == classinfo) { + return true; + } + if (aClass2.__bases__.length) { + bases = [].slice.call (aClass2.__bases__).concat (bases); + } + } + return false; + } + } + catch (exception) { + return aClass == classinfo || classinfo == object; + } +}; +export function isinstance (anObject, classinfo) { + try { + return '__class__' in anObject ? issubclass (anObject.__class__, classinfo) : issubclass (py_typeof (anObject), classinfo); + } + catch (exception) { + return issubclass (py_typeof (anObject), classinfo); + } +}; +export function callable (anObject) { + return anObject && typeof anObject == 'object' && '__call__' in anObject ? true : typeof anObject === 'function'; +}; +export function repr (anObject) { + try { + return anObject.__repr__ (); + } + catch (exception) { + try { + return anObject.__str__ (); + } + catch (exception) { + try { + if (anObject == null) { + return 'None'; + } + else if (anObject.constructor == Object) { + var result = '{'; + var comma = false; + for (var attrib in anObject) { + if (!__specialattrib__ (attrib)) { + if (attrib.isnumeric ()) { + var attribRepr = attrib; + } + else { + var attribRepr = '\'' + attrib + '\''; + } + if (comma) { + result += ', '; + } + else { + comma = true; + } + result += attribRepr + ': ' + repr (anObject [attrib]); + } + } + result += '}'; + return result; + } + else { + return typeof anObject == 'boolean' ? anObject.toString () .capitalize () : anObject.toString (); + } + } + catch (exception) { + return ''; + } + } + } +}; +export function chr (charCode) { + return String.fromCharCode (charCode); +}; +export function ord (aChar) { + return aChar.charCodeAt (0); +}; +export function max (nrOrSeq) { + return arguments.length == 1 ? Math.max (...nrOrSeq) : Math.max (...arguments); +}; +export function min (nrOrSeq) { + return arguments.length == 1 ? Math.min (...nrOrSeq) : Math.min (...arguments); +}; +export function abs (x) { + try { + return Math.abs (x); + } + catch (exception) { + return Math.sqrt (x.real * x.real + x.imag * x.imag); + } +}; +export function round (number, ndigits) { + if (ndigits) { + var scale = Math.pow (10, ndigits); + number *= scale; + } + var rounded = Math.round (number); + if (rounded - number == 0.5 && rounded % 2) { + rounded -= 1; + } + if (ndigits) { + rounded /= scale; + } + return rounded; +}; +export function format (value, fmt_spec) { + if (value == undefined) { + return 'None'; + } + fmt_spec = fmt_spec || ''; + var tval = typeof value; + switch (tval) { + case 'number': + case 'string': + return value.__format__(fmt_spec); + case 'boolean': + return fmt_spec ? (value ? 1 : 0).__format__(fmt_spec) : str (value); + case 'object': + if ('__format__' in value) { + return value.__format__ (fmt_spec); + } + else { + return str (value).__format__ (fmt_spec); + } + default: + return str (value).__format__ (fmt_spec); + } +} +export function __jsUsePyNext__ () { + try { + var result = this.__next__ (); + return {value: result, done: false}; + } + catch (exception) { + return {value: undefined, done: true}; + } +} +export function __pyUseJsNext__ () { + var result = this.next (); + if (result.done) { + throw StopIteration (new Error ()); + } + else { + return result.value; + } +} +export function py_iter (iterable) { + if (typeof iterable == 'string' || '__iter__' in iterable) { + var result = iterable.__iter__ (); + result.next = __jsUsePyNext__; + } + else if ('selector' in iterable) { + var result = list (iterable) .__iter__ (); + result.next = __jsUsePyNext__; + } + else if ('next' in iterable) { + var result = iterable + if (! ('__next__' in result)) { + result.__next__ = __pyUseJsNext__; + } + } + else if (Symbol.iterator in iterable) { + var result = iterable [Symbol.iterator] (); + result.__next__ = __pyUseJsNext__; + } + else { + throw IterableError (new Error ()); + } + result [Symbol.iterator] = function () {return result;}; + return result; +} +export function py_next (iterator) { + try { + var result = iterator.__next__ (); + } + catch (exception) { + var result = iterator.next (); + if (result.done) { + throw StopIteration (new Error ()); + } + else { + return result.value; + } + } + if (result == undefined) { + throw StopIteration (new Error ()); + } + else { + return result; + } +} +export function __PyIterator__ (iterable) { + this.iterable = iterable; + this.index = 0; +} +__PyIterator__.prototype.__next__ = function() { + if (this.index < this.iterable.length) { + return this.iterable [this.index++]; + } + else { + throw StopIteration (new Error ()); + } +}; +export function __JsIterator__ (iterable) { + this.iterable = iterable; + this.index = 0; +} +__JsIterator__.prototype.next = function () { + if (this.index < this.iterable.py_keys.length) { + return {value: this.index++, done: false}; + } + else { + return {value: undefined, done: true}; + } +}; +export function py_reversed (iterable) { + iterable = iterable.slice (); + iterable.reverse (); + return iterable; +}; +export function zip () { + var args = [] .slice.call (arguments); + for (var i = 0; i < args.length; i++) { + if (typeof args [i] == 'string') { + args [i] = args [i] .split (''); + } + else if (!Array.isArray (args [i])) { + args [i] = Array.from (args [i]); + } + } + var shortest = args.length == 0 ? [] : args.reduce ( + function (array0, array1) { + return array0.length < array1.length ? array0 : array1; + } + ); + return shortest.map ( + function (current, index) { + return args.map ( + function (current) { + return current [index]; + } + ); + } + ); +}; +export function range (start, stop, step) { + if (stop == undefined) { + stop = start; + start = 0; + } + if (step == undefined) { + step = 1; + } + if ((step > 0 && start >= stop) || (step < 0 && start <= stop)) { + return []; + } + var result = []; + for (var i = start; step > 0 ? i < stop : i > stop; i += step) { + result.push(i); + } + return result; +}; +export function any (iterable) { + for (let item of iterable) { + if (bool (item)) { + return true; + } + } + return false; +} +export function all (iterable) { + for (let item of iterable) { + if (! bool (item)) { + return false; + } + } + return true; +} +export function sum (iterable) { + let result = 0; + for (let item of iterable) { + result += item; + } + return result; +} +export function enumerate (iterable) { + return zip (range (len (iterable)), iterable); +} +export function copy (anObject) { + if (anObject == null || typeof anObject == "object") { + return anObject; + } + else { + var result = {}; + for (var attrib in obj) { + if (anObject.hasOwnProperty (attrib)) { + result [attrib] = anObject [attrib]; + } + } + return result; + } +} +export function deepcopy (anObject) { + if (anObject == null || typeof anObject == "object") { + return anObject; + } + else { + var result = {}; + for (var attrib in obj) { + if (anObject.hasOwnProperty (attrib)) { + result [attrib] = deepcopy (anObject [attrib]); + } + } + return result; + } +} +export function list (iterable) { + let instance = iterable ? Array.from (iterable) : []; + return instance; +} +Array.prototype.__class__ = list; +list.__name__ = 'list'; +list.__bases__ = [object]; +Array.prototype.__iter__ = function () {return new __PyIterator__ (this);}; +Array.prototype.__getslice__ = function (start, stop, step) { + if (start < 0) { + start = this.length + start; + } + if (stop == null) { + stop = this.length; + } + else if (stop < 0) { + stop = this.length + stop; + } + else if (stop > this.length) { + stop = this.length; + } + if (step == 1) { + return Array.prototype.slice.call(this, start, stop); + } + let result = list ([]); + for (let index = start; index < stop; index += step) { + result.push (this [index]); + } + return result; +}; +Array.prototype.__setslice__ = function (start, stop, step, source) { + if (start < 0) { + start = this.length + start; + } + if (stop == null) { + stop = this.length; + } + else if (stop < 0) { + stop = this.length + stop; + } + if (step == null) { + Array.prototype.splice.apply (this, [start, stop - start] .concat (source)); + } + else { + let sourceIndex = 0; + for (let targetIndex = start; targetIndex < stop; targetIndex += step) { + this [targetIndex] = source [sourceIndex++]; + } + } +}; +Array.prototype.__repr__ = function () { + if (this.__class__ == set && !this.length) { + return 'set()'; + } + let result = !this.__class__ || this.__class__ == list ? '[' : this.__class__ == tuple ? '(' : '{'; + for (let index = 0; index < this.length; index++) { + if (index) { + result += ', '; + } + result += repr (this [index]); + } + if (this.__class__ == tuple && this.length == 1) { + result += ','; + } + result += !this.__class__ || this.__class__ == list ? ']' : this.__class__ == tuple ? ')' : '}';; + return result; +}; +Array.prototype.__str__ = Array.prototype.__repr__; +Array.prototype.append = function (element) { + this.push (element); +}; +Array.prototype.py_clear = function () { + this.length = 0; +}; +Array.prototype.extend = function (aList) { + this.push.apply (this, aList); +}; +Array.prototype.insert = function (index, element) { + this.splice (index, 0, element); +}; +Array.prototype.remove = function (element) { + let index = this.indexOf (element); + if (index == -1) { + throw ValueError ("list.remove(x): x not in list", new Error ()); + } + this.splice (index, 1); +}; +Array.prototype.index = function (element) { + return this.indexOf (element); +}; +Array.prototype.py_pop = function (index) { + if (index == undefined) { + return this.pop (); + } + else { + return this.splice (index, 1) [0]; + } +}; +Array.prototype.py_sort = function () { + __sort__.apply (null, [this].concat ([] .slice.apply (arguments))); +}; +Array.prototype.__add__ = function (aList) { + return list (this.concat (aList)); +}; +Array.prototype.__mul__ = function (scalar) { + let result = this; + for (let i = 1; i < scalar; i++) { + result = result.concat (this); + } + return result; +}; +Array.prototype.__rmul__ = Array.prototype.__mul__; +export function tuple (iterable) { + let instance = iterable ? [] .slice.apply (iterable) : []; + instance.__class__ = tuple; + return instance; +} +tuple.__name__ = 'tuple'; +tuple.__bases__ = [object]; +export function set (iterable) { + let instance = []; + if (iterable) { + for (let index = 0; index < iterable.length; index++) { + instance.add (iterable [index]); + } + } + instance.__class__ = set; + return instance; +} +set.__name__ = 'set'; +set.__bases__ = [object]; +Array.prototype.__bindexOf__ = function (element) { + element += ''; + let mindex = 0; + let maxdex = this.length - 1; + while (mindex <= maxdex) { + let index = (mindex + maxdex) / 2 | 0; + let middle = this [index] + ''; + if (middle < element) { + mindex = index + 1; + } + else if (middle > element) { + maxdex = index - 1; + } + else { + return index; + } + } + return -1; +}; +Array.prototype.add = function (element) { + if (this.indexOf (element) == -1) { + this.push (element); + } +}; +Array.prototype.discard = function (element) { + var index = this.indexOf (element); + if (index != -1) { + this.splice (index, 1); + } +}; +Array.prototype.isdisjoint = function (other) { + this.sort (); + for (let i = 0; i < other.length; i++) { + if (this.__bindexOf__ (other [i]) != -1) { + return false; + } + } + return true; +}; +Array.prototype.issuperset = function (other) { + this.sort (); + for (let i = 0; i < other.length; i++) { + if (this.__bindexOf__ (other [i]) == -1) { + return false; + } + } + return true; +}; +Array.prototype.issubset = function (other) { + return set (other.slice ()) .issuperset (this); +}; +Array.prototype.union = function (other) { + let result = set (this.slice () .sort ()); + for (let i = 0; i < other.length; i++) { + if (result.__bindexOf__ (other [i]) == -1) { + result.push (other [i]); + } + } + return result; +}; +Array.prototype.intersection = function (other) { + this.sort (); + let result = set (); + for (let i = 0; i < other.length; i++) { + if (this.__bindexOf__ (other [i]) != -1) { + result.push (other [i]); + } + } + return result; +}; +Array.prototype.difference = function (other) { + let sother = set (other.slice () .sort ()); + let result = set (); + for (let i = 0; i < this.length; i++) { + if (sother.__bindexOf__ (this [i]) == -1) { + result.push (this [i]); + } + } + return result; +}; +Array.prototype.symmetric_difference = function (other) { + return this.union (other) .difference (this.intersection (other)); +}; +Array.prototype.py_update = function () { + let updated = [] .concat.apply (this.slice (), arguments) .sort (); + this.py_clear (); + for (let i = 0; i < updated.length; i++) { + if (updated [i] != updated [i - 1]) { + this.push (updated [i]); + } + } +}; +Array.prototype.__eq__ = function (other) { + if (this.length != other.length) { + return false; + } + if (this.__class__ == set) { + this.sort (); + other.sort (); + } + for (let i = 0; i < this.length; i++) { + if (this [i] != other [i]) { + return false; + } + } + return true; +}; +Array.prototype.__ne__ = function (other) { + return !this.__eq__ (other); +}; +Array.prototype.__le__ = function (other) { + if (this.__class__ == set) { + return this.issubset (other); + } + else { + for (let i = 0; i < this.length; i++) { + if (this [i] > other [i]) { + return false; + } + else if (this [i] < other [i]) { + return true; + } + } + return true; + } +}; +Array.prototype.__ge__ = function (other) { + if (this.__class__ == set) { + return this.issuperset (other); + } + else { + for (let i = 0; i < this.length; i++) { + if (this [i] < other [i]) { + return false; + } + else if (this [i] > other [i]) { + return true; + } + } + return true; + } +}; +Array.prototype.__lt__ = function (other) { + return ( + this.__class__ == set ? + this.issubset (other) && !this.issuperset (other) : + !this.__ge__ (other) + ); +}; +Array.prototype.__gt__ = function (other) { + return ( + this.__class__ == set ? + this.issuperset (other) && !this.issubset (other) : + !this.__le__ (other) + ); +}; +export function bytearray (bytable, encoding) { + if (bytable == undefined) { + return new Uint8Array (0); + } + else { + let aType = py_typeof (bytable); + if (aType == int) { + return new Uint8Array (bytable); + } + else if (aType == str) { + let aBytes = new Uint8Array (len (bytable)); + for (let i = 0; i < len (bytable); i++) { + aBytes [i] = bytable.charCodeAt (i); + } + return aBytes; + } + else if (aType == list || aType == tuple) { + return new Uint8Array (bytable); + } + else { + throw py_TypeError; + } + } +} +export var bytes = bytearray; +Uint8Array.prototype.__add__ = function (aBytes) { + let result = new Uint8Array (this.length + aBytes.length); + result.set (this); + result.set (aBytes, this.length); + return result; +}; +Uint8Array.prototype.__mul__ = function (scalar) { + let result = new Uint8Array (scalar * this.length); + for (let i = 0; i < scalar; i++) { + result.set (this, i * this.length); + } + return result; +}; +Uint8Array.prototype.__rmul__ = Uint8Array.prototype.__mul__; +export function str (stringable) { + if (typeof stringable === 'number') + return stringable.toString(); + else { + try { + return stringable.__str__ (); + } + catch (exception) { + try { + return repr (stringable); + } + catch (exception) { + return String (stringable); + } + } + } +}; +String.prototype.__class__ = str; +str.__name__ = 'str'; +str.__bases__ = [object]; +String.prototype.__iter__ = function () {new __PyIterator__ (this);}; +String.prototype.__repr__ = function () { + return (this.indexOf ('\'') == -1 ? '\'' + this + '\'' : '"' + this + '"') .py_replace ('\t', '\\t') .py_replace ('\n', '\\n'); +}; +String.prototype.__str__ = function () { + return this; +}; +String.prototype.capitalize = function () { + return this.charAt (0).toUpperCase () + this.slice (1); +}; +String.prototype.endswith = function (suffix) { + if (suffix instanceof Array) { + for (var i=0;i': + return __mul__ (fill, c) + s; + case '<': + return s + __mul__ (fill, c); + case '^': + var m = ((c % 2) + 2) % 2; + var c = Math.floor (c / 2); + return __mul__ (fill, c) + s + __mul__ (fill, c + m); + default: + return s; + } + }; + if (fmt_spec [fmt_spec.length - 1] == 's') { + fmt_spec = fmt_spec.slice (0, -1); + } + if (fmt_spec.length > 0) { + var _width = ''; + while (fmt_spec && fmt_spec [fmt_spec.length - 1].isnumeric ()) { + _width = fmt_spec [fmt_spec.length - 1] + _width; + fmt_spec = fmt_spec.slice (0, -1); + } + if (_width.length > 0) { + width = parseInt (_width); + } + if (fmt_spec.length > 0 && fmt_spec.endswith (['<', '>', '^'])) { + align = fmt_spec [fmt_spec.length - 1]; + fmt_spec = fmt_spec.slice (0, -1); + } + if (fmt_spec.length > 0) { + fill = fmt_spec [0]; + } + } + if (width > 0) { + val = pad (val, width, fill, align); + } + return val; +}; +__setproperty__ (String.prototype, 'format', { + get: function () {return __get__ (this, function (self) { + var args = tuple ([] .slice.apply (arguments).slice (1)); + var autoIndex = 0; + return self.replace (/\{([^\{]*)\}/g, function (match, key) { + var parts = key.split (':'); + key = parts [0]; + var fmt_spec = parts [1]; + parts = key.split ('!') + key = parts [0]; + var conversion = parts [1]; + var value = undefined; + if (key == '') { + key = autoIndex++; + } + if (key == +key && args [key] !== undefined) { + value = args [key]; + } + else { + var attr = undefined; + var idx = ("" + key) .indexOf ('.'); + if (idx != -1) { + attr = key.substring (idx + 1); + key = key.substring (0, idx); + } + else { + idx = ("" + key) .indexOf ('['); + if (idx != -1) { + attr = key.substring (idx + 1).slice (0, -1); + key = key.substring (0, idx); + } + } + if ((key == +key) && attr && args [key] !== undefined) { + value = args [key][attr]; + } + else { + for (var index = 0; index < args.length; index++) { + if (typeof args [index] == 'object' && args [index] != null && args [index][key] !== undefined) { + if (attr) { + value = args [index][key][attr]; + } + else { + value = args [index][key]; + } + break; + } + } + } + } + if (value === undefined) { + return match; + } + if (conversion == 'r') { + value = repr (value); + } + else if (conversion == 's') { + value = str (value); + } + else if (conversion == 'a') { + throw ValueError ("Conversion to ascii not yet supported: '" + match + "'", new Error ()); + } + return format (value, fmt_spec); + }); + });}, + enumerable: true +}); +String.prototype.isalnum = function () { + return /^[0-9a-zA-Z]{1,}$/.test(this) +} +String.prototype.isalpha = function () { + return /^[a-zA-Z]{1,}$/.test(this) +} +String.prototype.isdecimal = function () { + return /^[0-9]{1,}$/.test(this) +} +String.prototype.isdigit = function () { + return this.isdecimal() +} +String.prototype.islower = function () { + return /^[a-z]{1,}$/.test(this) +} +String.prototype.isupper = function () { + return /^[A-Z]{1,}$/.test(this) +} +String.prototype.isspace = function () { + return /^[\s]{1,}$/.test(this) +} +String.prototype.isnumeric = function () { + return !isNaN (parseFloat (this)) && isFinite (this); +}; +String.prototype.join = function (strings) { + strings = Array.from (strings); + return strings.join (this); +}; +String.prototype.lower = function () { + return this.toLowerCase (); +}; +String.prototype.py_replace = function (old, aNew, maxreplace) { + return this.split (old, maxreplace) .join (aNew); +}; +String.prototype.lstrip = function () { + return this.replace (/^\s*/g, ''); +}; +String.prototype.rfind = function (sub, start) { + return this.lastIndexOf (sub, start); +}; +String.prototype.rsplit = function (sep, maxsplit) { + if (sep == undefined || sep == null) { + sep = /\s+/; + var stripped = this.strip (); + } + else { + var stripped = this; + } + if (maxsplit == undefined || maxsplit == -1) { + return stripped.split (sep); + } + else { + var result = stripped.split (sep); + if (maxsplit < result.length) { + var maxrsplit = result.length - maxsplit; + return [result.slice (0, maxrsplit) .join (sep)] .concat (result.slice (maxrsplit)); + } + else { + return result; + } + } +}; +String.prototype.rstrip = function () { + return this.replace (/\s*$/g, ''); +}; +String.prototype.py_split = function (sep, maxsplit) { + if (sep == undefined || sep == null) { + sep = /\s+/; + var stripped = this.strip (); + } + else { + var stripped = this; + } + if (maxsplit == undefined || maxsplit == -1) { + return stripped.split (sep); + } + else { + var result = stripped.split (sep); + if (maxsplit < result.length) { + return result.slice (0, maxsplit).concat ([result.slice (maxsplit).join (sep)]); + } + else { + return result; + } + } +}; +String.prototype.startswith = function (prefix) { + if (prefix instanceof Array) { + for (var i=0;i> b; + } +}; +export function __or__ (a, b) { + if (typeof a == 'object' && '__or__' in a) { + return a.__or__ (b); + } + else if (typeof b == 'object' && '__ror__' in b) { + return b.__ror__ (a); + } + else { + return a | b; + } +}; +export function __xor__ (a, b) { + if (typeof a == 'object' && '__xor__' in a) { + return a.__xor__ (b); + } + else if (typeof b == 'object' && '__rxor__' in b) { + return b.__rxor__ (a); + } + else { + return a ^ b; + } +}; +export function __and__ (a, b) { + if (typeof a == 'object' && '__and__' in a) { + return a.__and__ (b); + } + else if (typeof b == 'object' && '__rand__' in b) { + return b.__rand__ (a); + } + else { + return a & b; + } +}; +export function __eq__ (a, b) { + if (typeof a == 'object' && '__eq__' in a) { + return a.__eq__ (b); + } + else { + return a == b; + } +}; +export function __ne__ (a, b) { + if (typeof a == 'object' && '__ne__' in a) { + return a.__ne__ (b); + } + else { + return a != b + } +}; +export function __lt__ (a, b) { + if (typeof a == 'object' && '__lt__' in a) { + return a.__lt__ (b); + } + else { + return a < b; + } +}; +export function __le__ (a, b) { + if (typeof a == 'object' && '__le__' in a) { + return a.__le__ (b); + } + else { + return a <= b; + } +}; +export function __gt__ (a, b) { + if (typeof a == 'object' && '__gt__' in a) { + return a.__gt__ (b); + } + else { + return a > b; + } +}; +export function __ge__ (a, b) { + if (typeof a == 'object' && '__ge__' in a) { + return a.__ge__ (b); + } + else { + return a >= b; + } +}; +export function __imatmul__ (a, b) { + if ('__imatmul__' in a) { + return a.__imatmul__ (b); + } + else { + return a.__matmul__ (b); + } +}; +export function __ipow__ (a, b) { + if (typeof a == 'object' && '__pow__' in a) { + return a.__ipow__ (b); + } + else if (typeof a == 'object' && '__ipow__' in a) { + return a.__pow__ (b); + } + else if (typeof b == 'object' && '__rpow__' in b) { + return b.__rpow__ (a); + } + else { + return Math.pow (a, b); + } +}; +export function __ijsmod__ (a, b) { + if (typeof a == 'object' && '__imod__' in a) { + return a.__ismod__ (b); + } + else if (typeof a == 'object' && '__mod__' in a) { + return a.__mod__ (b); + } + else if (typeof b == 'object' && '__rpow__' in b) { + return b.__rmod__ (a); + } + else { + return a % b; + } +}; +export function __imod__ (a, b) { + if (typeof a == 'object' && '__imod__' in a) { + return a.__imod__ (b); + } + else if (typeof a == 'object' && '__mod__' in a) { + return a.__mod__ (b); + } + else if (typeof b == 'object' && '__rmod__' in b) { + return b.__rmod__ (a); + } + else { + return ((a % b) + b) % b; + } +}; +export function __imul__ (a, b) { + if (typeof a == 'object' && '__imul__' in a) { + return a.__imul__ (b); + } + else if (typeof a == 'object' && '__mul__' in a) { + return a = a.__mul__ (b); + } + else if (typeof b == 'object' && '__rmul__' in b) { + return a = b.__rmul__ (a); + } + else if (typeof a == 'string') { + return a = a.__mul__ (b); + } + else if (typeof b == 'string') { + return a = b.__rmul__ (a); + } + else { + return a *= b; + } +}; +export function __idiv__ (a, b) { + if (typeof a == 'object' && '__idiv__' in a) { + return a.__idiv__ (b); + } + else if (typeof a == 'object' && '__div__' in a) { + return a = a.__div__ (b); + } + else if (typeof b == 'object' && '__rdiv__' in b) { + return a = b.__rdiv__ (a); + } + else { + return a /= b; + } +}; +export function __iadd__ (a, b) { + if (typeof a == 'object' && '__iadd__' in a) { + return a.__iadd__ (b); + } + else if (typeof a == 'object' && '__add__' in a) { + return a = a.__add__ (b); + } + else if (typeof b == 'object' && '__radd__' in b) { + return a = b.__radd__ (a); + } + else { + return a += b; + } +}; +export function __isub__ (a, b) { + if (typeof a == 'object' && '__isub__' in a) { + return a.__isub__ (b); + } + else if (typeof a == 'object' && '__sub__' in a) { + return a = a.__sub__ (b); + } + else if (typeof b == 'object' && '__rsub__' in b) { + return a = b.__rsub__ (a); + } + else { + return a -= b; + } +}; +export function __ilshift__ (a, b) { + if (typeof a == 'object' && '__ilshift__' in a) { + return a.__ilshift__ (b); + } + else if (typeof a == 'object' && '__lshift__' in a) { + return a = a.__lshift__ (b); + } + else if (typeof b == 'object' && '__rlshift__' in b) { + return a = b.__rlshift__ (a); + } + else { + return a <<= b; + } +}; +export function __irshift__ (a, b) { + if (typeof a == 'object' && '__irshift__' in a) { + return a.__irshift__ (b); + } + else if (typeof a == 'object' && '__rshift__' in a) { + return a = a.__rshift__ (b); + } + else if (typeof b == 'object' && '__rrshift__' in b) { + return a = b.__rrshift__ (a); + } + else { + return a >>= b; + } +}; +export function __ior__ (a, b) { + if (typeof a == 'object' && '__ior__' in a) { + return a.__ior__ (b); + } + else if (typeof a == 'object' && '__or__' in a) { + return a = a.__or__ (b); + } + else if (typeof b == 'object' && '__ror__' in b) { + return a = b.__ror__ (a); + } + else { + return a |= b; + } +}; +export function __ixor__ (a, b) { + if (typeof a == 'object' && '__ixor__' in a) { + return a.__ixor__ (b); + } + else if (typeof a == 'object' && '__xor__' in a) { + return a = a.__xor__ (b); + } + else if (typeof b == 'object' && '__rxor__' in b) { + return a = b.__rxor__ (a); + } + else { + return a ^= b; + } +}; +export function __iand__ (a, b) { + if (typeof a == 'object' && '__iand__' in a) { + return a.__iand__ (b); + } + else if (typeof a == 'object' && '__and__' in a) { + return a = a.__and__ (b); + } + else if (typeof b == 'object' && '__rand__' in b) { + return a = b.__rand__ (a); + } + else { + return a &= b; + } +}; +export function __getitem__ (container, key) { + if (typeof container == 'object' && '__getitem__' in container) { + return container.__getitem__ (key); + } + else if ((typeof container == 'string' || container instanceof Array) && key < 0) { + return container [container.length + key]; + } + else { + return container [key]; + } +}; +export function __setitem__ (container, key, value) { + if (typeof container == 'object' && '__setitem__' in container) { + container.__setitem__ (key, value); + } + else if ((typeof container == 'string' || container instanceof Array) && key < 0) { + container [container.length + key] = value; + } + else { + container [key] = value; + } +}; +export function __getslice__ (container, lower, upper, step) { + if (typeof container == 'object' && '__getitem__' in container) { + return container.__getitem__ ([lower, upper, step]); + } + else { + return container.__getslice__ (lower, upper, step); + } +}; +export function __setslice__ (container, lower, upper, step, value) { + if (typeof container == 'object' && '__setitem__' in container) { + container.__setitem__ ([lower, upper, step], value); + } + else { + container.__setslice__ (lower, upper, step, value); + } +}; +export var BaseException = __class__ ('BaseException', [object], { + __module__: __name__, +}); +export var Exception = __class__ ('Exception', [BaseException], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self) { + var kwargs = dict (); + if (arguments.length) { + var __ilastarg0__ = arguments.length - 1; + if (arguments [__ilastarg0__] && arguments [__ilastarg0__].hasOwnProperty ("__kwargtrans__")) { + var __allkwargs0__ = arguments [__ilastarg0__--]; + for (var __attrib0__ in __allkwargs0__) { + switch (__attrib0__) { + case 'self': var self = __allkwargs0__ [__attrib0__]; break; + default: kwargs [__attrib0__] = __allkwargs0__ [__attrib0__]; + } + } + delete kwargs.__kwargtrans__; + } + var args = tuple ([].slice.apply (arguments).slice (1, __ilastarg0__ + 1)); + } + else { + var args = tuple (); + } + self.__args__ = args; + if (kwargs.error != null) { + self.stack = kwargs.error.stack; + } + else if (Error) { + self.stack = new Error ().stack; + } + else { + self.stack = 'No stack trace available'; + } + });}, + get __repr__ () {return __get__ (this, function (self) { + if (len (self.__args__) > 1) { + return '{}{}'.format (self.__class__.__name__, repr (tuple (self.__args__))); + } + else if (len (self.__args__)) { + return '{}({})'.format (self.__class__.__name__, repr (self.__args__ [0])); + } + else { + return '{}()'.format (self.__class__.__name__); + } + });}, + get __str__ () {return __get__ (this, function (self) { + if (len (self.__args__) > 1) { + return str (tuple (self.__args__)); + } + else if (len (self.__args__)) { + return str (self.__args__ [0]); + } + else { + return ''; + } + });} +}); +export var IterableError = __class__ ('IterableError', [Exception], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self, error) { + Exception.__init__ (self, "Can't iterate over non-iterable", __kwargtrans__ ({error: error})); + });} +}); +export var StopIteration = __class__ ('StopIteration', [Exception], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self, error) { + Exception.__init__ (self, 'Iterator exhausted', __kwargtrans__ ({error: error})); + });} +}); +export var ValueError = __class__ ('ValueError', [Exception], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self, message, error) { + Exception.__init__ (self, message, __kwargtrans__ ({error: error})); + });} +}); +export var KeyError = __class__ ('KeyError', [Exception], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self, message, error) { + Exception.__init__ (self, message, __kwargtrans__ ({error: error})); + });} +}); +export var AssertionError = __class__ ('AssertionError', [Exception], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self, message, error) { + if (message) { + Exception.__init__ (self, message, __kwargtrans__ ({error: error})); + } + else { + Exception.__init__ (self, __kwargtrans__ ({error: error})); + } + });} +}); +export var NotImplementedError = __class__ ('NotImplementedError', [Exception], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self, message, error) { + Exception.__init__ (self, message, __kwargtrans__ ({error: error})); + });} +}); +export var IndexError = __class__ ('IndexError', [Exception], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self, message, error) { + Exception.__init__ (self, message, __kwargtrans__ ({error: error})); + });} +}); +export var AttributeError = __class__ ('AttributeError', [Exception], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self, message, error) { + Exception.__init__ (self, message, __kwargtrans__ ({error: error})); + });} +}); +export var py_TypeError = __class__ ('py_TypeError', [Exception], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self, message, error) { + Exception.__init__ (self, message, __kwargtrans__ ({error: error})); + });} +}); +export var Warning = __class__ ('Warning', [Exception], { + __module__: __name__, +}); +export var UserWarning = __class__ ('UserWarning', [Warning], { + __module__: __name__, +}); +export var DeprecationWarning = __class__ ('DeprecationWarning', [Warning], { + __module__: __name__, +}); +export var RuntimeWarning = __class__ ('RuntimeWarning', [Warning], { + __module__: __name__, +}); +export var __sort__ = function (iterable, key, reverse) { + if (typeof key == 'undefined' || (key != null && key.hasOwnProperty ("__kwargtrans__"))) {; + var key = null; + }; + if (typeof reverse == 'undefined' || (reverse != null && reverse.hasOwnProperty ("__kwargtrans__"))) {; + var reverse = false; + }; + if (arguments.length) { + var __ilastarg0__ = arguments.length - 1; + if (arguments [__ilastarg0__] && arguments [__ilastarg0__].hasOwnProperty ("__kwargtrans__")) { + var __allkwargs0__ = arguments [__ilastarg0__--]; + for (var __attrib0__ in __allkwargs0__) { + switch (__attrib0__) { + case 'iterable': var iterable = __allkwargs0__ [__attrib0__]; break; + case 'key': var key = __allkwargs0__ [__attrib0__]; break; + case 'reverse': var reverse = __allkwargs0__ [__attrib0__]; break; + } + } + } + } + else { + } + if (key) { + iterable.sort ((function __lambda__ (a, b) { + if (arguments.length) { + var __ilastarg0__ = arguments.length - 1; + if (arguments [__ilastarg0__] && arguments [__ilastarg0__].hasOwnProperty ("__kwargtrans__")) { + var __allkwargs0__ = arguments [__ilastarg0__--]; + for (var __attrib0__ in __allkwargs0__) { + switch (__attrib0__) { + case 'a': var a = __allkwargs0__ [__attrib0__]; break; + case 'b': var b = __allkwargs0__ [__attrib0__]; break; + } + } + } + } + else { + } + return (key (a) > key (b) ? 1 : -(1)); + })); + } + else { + iterable.sort (); + } + if (reverse) { + iterable.reverse (); + } +}; +export var sorted = function (iterable, key, reverse) { + if (typeof key == 'undefined' || (key != null && key.hasOwnProperty ("__kwargtrans__"))) {; + var key = null; + }; + if (typeof reverse == 'undefined' || (reverse != null && reverse.hasOwnProperty ("__kwargtrans__"))) {; + var reverse = false; + }; + if (arguments.length) { + var __ilastarg0__ = arguments.length - 1; + if (arguments [__ilastarg0__] && arguments [__ilastarg0__].hasOwnProperty ("__kwargtrans__")) { + var __allkwargs0__ = arguments [__ilastarg0__--]; + for (var __attrib0__ in __allkwargs0__) { + switch (__attrib0__) { + case 'iterable': var iterable = __allkwargs0__ [__attrib0__]; break; + case 'key': var key = __allkwargs0__ [__attrib0__]; break; + case 'reverse': var reverse = __allkwargs0__ [__attrib0__]; break; + } + } + } + } + else { + } + if (py_typeof (iterable) == dict) { + var result = copy (iterable.py_keys ()); + } + else { + var result = copy (iterable); + } + __sort__ (result, key, reverse); + return result; +}; +export var map = function (func, iterable) { + return (function () { + var __accu0__ = []; + for (var item of iterable) { + __accu0__.append (func (item)); + } + return __accu0__; + }) (); +}; +export var filter = function (func, iterable) { + if (func == null) { + var func = bool; + } + return (function () { + var __accu0__ = []; + for (var item of iterable) { + if (func (item)) { + __accu0__.append (item); + } + } + return __accu0__; + }) (); +}; +export var divmod = function (n, d) { + return tuple ([Math.floor (n / d), __mod__ (n, d)]); +}; +export var complex = __class__ ('complex', [object], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self, real, imag) { + if (typeof imag == 'undefined' || (imag != null && imag.hasOwnProperty ("__kwargtrans__"))) {; + var imag = null; + }; + if (imag == null) { + if (py_typeof (real) == complex) { + self.real = real.real; + self.imag = real.imag; + } + else { + self.real = real; + self.imag = 0; + } + } + else { + self.real = real; + self.imag = imag; + } + });}, + get __neg__ () {return __get__ (this, function (self) { + return complex (-(self.real), -(self.imag)); + });}, + get __exp__ () {return __get__ (this, function (self) { + var modulus = Math.exp (self.real); + return complex (modulus * Math.cos (self.imag), modulus * Math.sin (self.imag)); + });}, + get __log__ () {return __get__ (this, function (self) { + return complex (Math.log (Math.sqrt (self.real * self.real + self.imag * self.imag)), Math.atan2 (self.imag, self.real)); + });}, + get __pow__ () {return __get__ (this, function (self, other) { + return self.__log__ ().__mul__ (other).__exp__ (); + });}, + get __rpow__ () {return __get__ (this, function (self, real) { + return self.__mul__ (Math.log (real)).__exp__ (); + });}, + get __mul__ () {return __get__ (this, function (self, other) { + if (typeof other === 'number') { + return complex (self.real * other, self.imag * other); + } + else { + return complex (self.real * other.real - self.imag * other.imag, self.real * other.imag + self.imag * other.real); + } + });}, + get __rmul__ () {return __get__ (this, function (self, real) { + return complex (self.real * real, self.imag * real); + });}, + get __div__ () {return __get__ (this, function (self, other) { + if (typeof other === 'number') { + return complex (self.real / other, self.imag / other); + } + else { + var denom = other.real * other.real + other.imag * other.imag; + return complex ((self.real * other.real + self.imag * other.imag) / denom, (self.imag * other.real - self.real * other.imag) / denom); + } + });}, + get __rdiv__ () {return __get__ (this, function (self, real) { + var denom = self.real * self.real; + return complex ((real * self.real) / denom, (real * self.imag) / denom); + });}, + get __add__ () {return __get__ (this, function (self, other) { + if (typeof other === 'number') { + return complex (self.real + other, self.imag); + } + else { + return complex (self.real + other.real, self.imag + other.imag); + } + });}, + get __radd__ () {return __get__ (this, function (self, real) { + return complex (self.real + real, self.imag); + });}, + get __sub__ () {return __get__ (this, function (self, other) { + if (typeof other === 'number') { + return complex (self.real - other, self.imag); + } + else { + return complex (self.real - other.real, self.imag - other.imag); + } + });}, + get __rsub__ () {return __get__ (this, function (self, real) { + return complex (real - self.real, -(self.imag)); + });}, + get __repr__ () {return __get__ (this, function (self) { + return '({}{}{}j)'.format (self.real, (self.imag >= 0 ? '+' : ''), self.imag); + });}, + get __str__ () {return __get__ (this, function (self) { + return __repr__ (self).__getslice__ (1, -(1), 1); + });}, + get __eq__ () {return __get__ (this, function (self, other) { + if (typeof other === 'number') { + return self.real == other; + } + else { + return self.real == other.real && self.imag == other.imag; + } + });}, + get __ne__ () {return __get__ (this, function (self, other) { + if (typeof other === 'number') { + return self.real != other; + } + else { + return self.real != other.real || self.imag != other.imag; + } + });}, + get conjugate () {return __get__ (this, function (self) { + return complex (self.real, -(self.imag)); + });} +}); +export var __conj__ = function (aNumber) { + if (isinstance (aNumber, complex)) { + return complex (aNumber.real, -(aNumber.imag)); + } + else { + return complex (aNumber, 0); + } +}; +export var __Terminal__ = __class__ ('__Terminal__', [object], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self) { + self.buffer = ''; + try { + self.element = document.getElementById ('__terminal__'); + } + catch (__except0__) { + self.element = null; + } + if (self.element) { + self.element.style.overflowX = 'auto'; + self.element.style.boxSizing = 'border-box'; + self.element.style.padding = '5px'; + self.element.innerHTML = '_'; + } + });}, + get print () {return __get__ (this, function (self) { + var sep = ' '; + var end = '\n'; + if (arguments.length) { + var __ilastarg0__ = arguments.length - 1; + if (arguments [__ilastarg0__] && arguments [__ilastarg0__].hasOwnProperty ("__kwargtrans__")) { + var __allkwargs0__ = arguments [__ilastarg0__--]; + for (var __attrib0__ in __allkwargs0__) { + switch (__attrib0__) { + case 'self': var self = __allkwargs0__ [__attrib0__]; break; + case 'sep': var sep = __allkwargs0__ [__attrib0__]; break; + case 'end': var end = __allkwargs0__ [__attrib0__]; break; + } + } + } + var args = tuple ([].slice.apply (arguments).slice (1, __ilastarg0__ + 1)); + } + else { + var args = tuple (); + } + self.buffer = '{}{}{}'.format (self.buffer, sep.join ((function () { + var __accu0__ = []; + for (var arg of args) { + __accu0__.append (str (arg)); + } + return __accu0__; + }) ()), end).__getslice__ (-(4096), null, 1); + if (self.element) { + self.element.innerHTML = self.buffer.py_replace ('\n', '
').py_replace (' ', ' '); + self.element.scrollTop = self.element.scrollHeight; + } + else { + console.log (sep.join ((function () { + var __accu0__ = []; + for (var arg of args) { + __accu0__.append (str (arg)); + } + return __accu0__; + }) ())); + } + });}, + get input () {return __get__ (this, function (self, question) { + if (arguments.length) { + var __ilastarg0__ = arguments.length - 1; + if (arguments [__ilastarg0__] && arguments [__ilastarg0__].hasOwnProperty ("__kwargtrans__")) { + var __allkwargs0__ = arguments [__ilastarg0__--]; + for (var __attrib0__ in __allkwargs0__) { + switch (__attrib0__) { + case 'self': var self = __allkwargs0__ [__attrib0__]; break; + case 'question': var question = __allkwargs0__ [__attrib0__]; break; + } + } + } + } + else { + } + self.print ('{}'.format (question), __kwargtrans__ ({end: ''})); + var answer = window.prompt ('\n'.join (self.buffer.py_split ('\n').__getslice__ (-(8), null, 1))); + self.print (answer); + return answer; + });} +}); +export var __terminal__ = __Terminal__ (); +export var print = __terminal__.print; +export var input = __terminal__.input; + +//# sourceMappingURL=org.transcrypt.__runtime__.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/org.transcrypt.__runtime__.tree b/transcrypt/development/automated_tests/transcrypt/__target__38/org.transcrypt.__runtime__.tree new file mode 100644 index 000000000..83d67aa1e --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/org.transcrypt.__runtime__.tree @@ -0,0 +1,3684 @@ +file: Module + body: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = js + kind: NoneType = None + element: Constant + value: str = export var __envir__ = {{}}; +{} + kind: NoneType = None + element: Call + func: Name + id: str = __include__ + ctx: Load + args: list + element: Constant + value: str = org/transcrypt/__envir__.js + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = js + kind: NoneType = None + element: Constant + value: str = {} + kind: NoneType = None + element: Call + func: Name + id: str = __include__ + ctx: Load + args: list + element: Constant + value: str = org/transcrypt/__core__.js + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = js + kind: NoneType = None + element: Constant + value: str = {} + kind: NoneType = None + element: Call + func: Name + id: str = __include__ + ctx: Load + args: list + element: Constant + value: str = org/transcrypt/__builtin__.js + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = skip + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = copy + ctx: Store + element: Name + id: str = Math + ctx: Store + element: Name + id: str = __typeof__ + ctx: Store + element: Name + id: str = __repr__ + ctx: Store + element: Name + id: str = document + ctx: Store + element: Name + id: str = console + ctx: Store + element: Name + id: str = window + ctx: Store + value: Constant + value: int = 0 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = noskip + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = notconv + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = nokwargs + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = noalias + kind: NoneType = None + element: Constant + value: str = sort + kind: NoneType = None + keywords: list + element: ClassDef + name: str = BaseException + bases: list + keywords: list + body: list + element: Pass + decorator_list: list + element: ClassDef + name: str = Exception + bases: list + element: Name + id: str = BaseException + ctx: Load + keywords: list + body: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = kwargs + kind: NoneType = None + keywords: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: arg + arg: str = args + annotation: NoneType = None + type_comment: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: arg + arg: str = kwargs + annotation: NoneType = None + type_comment: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = __args__ + ctx: Store + value: Name + id: str = args + ctx: Load + type_comment: NoneType = None + element: If + test: Compare + left: Attribute + value: Name + id: str = kwargs + ctx: Load + attr: str = error + ctx: Load + ops: list + element: NotEq + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = stack + ctx: Store + value: Attribute + value: Attribute + value: Name + id: str = kwargs + ctx: Load + attr: str = error + ctx: Load + attr: str = stack + ctx: Load + type_comment: NoneType = None + orelse: list + element: If + test: Name + id: str = Error + ctx: Load + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = stack + ctx: Store + value: Attribute + value: Call + func: Name + id: str = __new__ + ctx: Load + args: list + element: Call + func: Name + id: str = Error + ctx: Load + args: list + keywords: list + keywords: list + attr: str = stack + ctx: Load + type_comment: NoneType = None + orelse: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = stack + ctx: Store + value: Constant + value: str = No stack trace available + kind: NoneType = None + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = nokwargs + kind: NoneType = None + keywords: list + element: FunctionDef + name: str = __repr__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: Compare + left: Call + func: Name + id: str = len + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = __args__ + ctx: Load + keywords: list + ops: list + element: Gt + comparators: list + element: Constant + value: int = 1 + kind: NoneType = None + body: list + element: Return + value: Call + func: Attribute + value: Constant + value: str = {}{} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Attribute + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = __class__ + ctx: Load + attr: str = __name__ + ctx: Load + element: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Call + func: Name + id: str = tuple + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = __args__ + ctx: Load + keywords: list + keywords: list + keywords: list + orelse: list + element: If + test: Call + func: Name + id: str = len + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = __args__ + ctx: Load + keywords: list + body: list + element: Return + value: Call + func: Attribute + value: Constant + value: str = {}({}) + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Attribute + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = __class__ + ctx: Load + attr: str = __name__ + ctx: Load + element: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Subscript + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = __args__ + ctx: Load + slice: Index + value: Constant + value: int = 0 + kind: NoneType = None + ctx: Load + keywords: list + keywords: list + orelse: list + element: Return + value: Call + func: Attribute + value: Constant + value: str = {}() + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Attribute + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = __class__ + ctx: Load + attr: str = __name__ + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __str__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: Compare + left: Call + func: Name + id: str = len + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = __args__ + ctx: Load + keywords: list + ops: list + element: Gt + comparators: list + element: Constant + value: int = 1 + kind: NoneType = None + body: list + element: Return + value: Call + func: Name + id: str = str + ctx: Load + args: list + element: Call + func: Name + id: str = tuple + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = __args__ + ctx: Load + keywords: list + keywords: list + orelse: list + element: If + test: Call + func: Name + id: str = len + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = __args__ + ctx: Load + keywords: list + body: list + element: Return + value: Call + func: Name + id: str = str + ctx: Load + args: list + element: Subscript + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = __args__ + ctx: Load + slice: Index + value: Constant + value: int = 0 + kind: NoneType = None + ctx: Load + keywords: list + orelse: list + element: Return + value: Constant + value: str = + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: ClassDef + name: str = IterableError + bases: list + element: Name + id: str = Exception + ctx: Load + keywords: list + body: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = error + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = Exception + ctx: Load + attr: str = __init__ + ctx: Load + args: list + element: Name + id: str = self + ctx: Load + element: Constant + value: str = Can't iterate over non-iterable + kind: NoneType = None + keywords: list + element: keyword + arg: str = error + value: Name + id: str = error + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: ClassDef + name: str = StopIteration + bases: list + element: Name + id: str = Exception + ctx: Load + keywords: list + body: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = error + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = Exception + ctx: Load + attr: str = __init__ + ctx: Load + args: list + element: Name + id: str = self + ctx: Load + element: Constant + value: str = Iterator exhausted + kind: NoneType = None + keywords: list + element: keyword + arg: str = error + value: Name + id: str = error + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: ClassDef + name: str = ValueError + bases: list + element: Name + id: str = Exception + ctx: Load + keywords: list + body: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = message + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = error + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = Exception + ctx: Load + attr: str = __init__ + ctx: Load + args: list + element: Name + id: str = self + ctx: Load + element: Name + id: str = message + ctx: Load + keywords: list + element: keyword + arg: str = error + value: Name + id: str = error + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: ClassDef + name: str = KeyError + bases: list + element: Name + id: str = Exception + ctx: Load + keywords: list + body: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = message + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = error + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = Exception + ctx: Load + attr: str = __init__ + ctx: Load + args: list + element: Name + id: str = self + ctx: Load + element: Name + id: str = message + ctx: Load + keywords: list + element: keyword + arg: str = error + value: Name + id: str = error + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: ClassDef + name: str = AssertionError + bases: list + element: Name + id: str = Exception + ctx: Load + keywords: list + body: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = message + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = error + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: Name + id: str = message + ctx: Load + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = Exception + ctx: Load + attr: str = __init__ + ctx: Load + args: list + element: Name + id: str = self + ctx: Load + element: Name + id: str = message + ctx: Load + keywords: list + element: keyword + arg: str = error + value: Name + id: str = error + ctx: Load + orelse: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = Exception + ctx: Load + attr: str = __init__ + ctx: Load + args: list + element: Name + id: str = self + ctx: Load + keywords: list + element: keyword + arg: str = error + value: Name + id: str = error + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: ClassDef + name: str = NotImplementedError + bases: list + element: Name + id: str = Exception + ctx: Load + keywords: list + body: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = message + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = error + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = Exception + ctx: Load + attr: str = __init__ + ctx: Load + args: list + element: Name + id: str = self + ctx: Load + element: Name + id: str = message + ctx: Load + keywords: list + element: keyword + arg: str = error + value: Name + id: str = error + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: ClassDef + name: str = IndexError + bases: list + element: Name + id: str = Exception + ctx: Load + keywords: list + body: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = message + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = error + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = Exception + ctx: Load + attr: str = __init__ + ctx: Load + args: list + element: Name + id: str = self + ctx: Load + element: Name + id: str = message + ctx: Load + keywords: list + element: keyword + arg: str = error + value: Name + id: str = error + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: ClassDef + name: str = AttributeError + bases: list + element: Name + id: str = Exception + ctx: Load + keywords: list + body: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = message + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = error + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = Exception + ctx: Load + attr: str = __init__ + ctx: Load + args: list + element: Name + id: str = self + ctx: Load + element: Name + id: str = message + ctx: Load + keywords: list + element: keyword + arg: str = error + value: Name + id: str = error + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: ClassDef + name: str = TypeError + bases: list + element: Name + id: str = Exception + ctx: Load + keywords: list + body: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = message + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = error + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = Exception + ctx: Load + attr: str = __init__ + ctx: Load + args: list + element: Name + id: str = self + ctx: Load + element: Name + id: str = message + ctx: Load + keywords: list + element: keyword + arg: str = error + value: Name + id: str = error + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: ClassDef + name: str = Warning + bases: list + element: Name + id: str = Exception + ctx: Load + keywords: list + body: list + element: Expr + value: Constant + value: str = Warning Base Class + + kind: NoneType = None + element: Pass + decorator_list: list + element: ClassDef + name: str = UserWarning + bases: list + element: Name + id: str = Warning + ctx: Load + keywords: list + body: list + element: Pass + decorator_list: list + element: ClassDef + name: str = DeprecationWarning + bases: list + element: Name + id: str = Warning + ctx: Load + keywords: list + body: list + element: Pass + decorator_list: list + element: ClassDef + name: str = RuntimeWarning + bases: list + element: Name + id: str = Warning + ctx: Load + keywords: list + body: list + element: Pass + decorator_list: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = kwargs + kind: NoneType = None + keywords: list + element: FunctionDef + name: str = __sort__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = iterable + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = key + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = reverse + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + element: Constant + value: NoneType = None + kind: NoneType = None + element: Constant + value: bool = False + kind: NoneType = None + body: list + element: If + test: Name + id: str = key + ctx: Load + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = iterable + ctx: Load + attr: str = sort + ctx: Load + args: list + element: Lambda + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = a + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = b + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: IfExp + test: Compare + left: Call + func: Name + id: str = key + ctx: Load + args: list + element: Name + id: str = a + ctx: Load + keywords: list + ops: list + element: Gt + comparators: list + element: Call + func: Name + id: str = key + ctx: Load + args: list + element: Name + id: str = b + ctx: Load + keywords: list + body: Constant + value: int = 1 + kind: NoneType = None + orelse: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + keywords: list + orelse: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = iterable + ctx: Load + attr: str = sort + ctx: Load + args: list + keywords: list + element: If + test: Name + id: str = reverse + ctx: Load + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = iterable + ctx: Load + attr: str = reverse + ctx: Load + args: list + keywords: list + orelse: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = sorted + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = iterable + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = key + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = reverse + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + element: Constant + value: NoneType = None + kind: NoneType = None + element: Constant + value: bool = False + kind: NoneType = None + body: list + element: If + test: Compare + left: Call + func: Name + id: str = type + ctx: Load + args: list + element: Name + id: str = iterable + ctx: Load + keywords: list + ops: list + element: Eq + comparators: list + element: Name + id: str = dict + ctx: Load + body: list + element: Assign + targets: list + element: Name + id: str = result + ctx: Store + value: Call + func: Name + id: str = copy + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = iterable + ctx: Load + attr: str = keys + ctx: Load + args: list + keywords: list + keywords: list + type_comment: NoneType = None + orelse: list + element: Assign + targets: list + element: Name + id: str = result + ctx: Store + value: Call + func: Name + id: str = copy + ctx: Load + args: list + element: Name + id: str = iterable + ctx: Load + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __sort__ + ctx: Load + args: list + element: Name + id: str = result + ctx: Load + element: Name + id: str = key + ctx: Load + element: Name + id: str = reverse + ctx: Load + keywords: list + element: Return + value: Name + id: str = result + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = nokwargs + kind: NoneType = None + keywords: list + element: FunctionDef + name: str = map + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = func + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = iterable + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: ListComp + elt: Call + func: Name + id: str = func + ctx: Load + args: list + element: Name + id: str = item + ctx: Load + keywords: list + generators: list + element: comprehension + target: Name + id: str = item + ctx: Store + iter: Name + id: str = iterable + ctx: Load + ifs: list + is_async: int = 0 + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = filter + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = func + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = iterable + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: Compare + left: Name + id: str = func + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = func + ctx: Store + value: Name + id: str = bool + ctx: Load + type_comment: NoneType = None + orelse: list + element: Return + value: ListComp + elt: Name + id: str = item + ctx: Load + generators: list + element: comprehension + target: Name + id: str = item + ctx: Store + iter: Name + id: str = iterable + ctx: Load + ifs: list + element: Call + func: Name + id: str = func + ctx: Load + args: list + element: Name + id: str = item + ctx: Load + keywords: list + is_async: int = 0 + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = divmod + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = n + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = d + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Tuple + elts: list + element: BinOp + left: Name + id: str = n + ctx: Load + op: FloorDiv + right: Name + id: str = d + ctx: Load + element: BinOp + left: Name + id: str = n + ctx: Load + op: Mod + right: Name + id: str = d + ctx: Load + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = ifdef + kind: NoneType = None + element: Constant + value: str = __complex__ + kind: NoneType = None + keywords: list + element: ClassDef + name: str = complex + bases: list + keywords: list + body: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = real + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = imag + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: If + test: Compare + left: Name + id: str = imag + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: If + test: Compare + left: Call + func: Name + id: str = type + ctx: Load + args: list + element: Name + id: str = real + ctx: Load + keywords: list + ops: list + element: Eq + comparators: list + element: Name + id: str = complex + ctx: Load + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = real + ctx: Store + value: Attribute + value: Name + id: str = real + ctx: Load + attr: str = real + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = imag + ctx: Store + value: Attribute + value: Name + id: str = real + ctx: Load + attr: str = imag + ctx: Load + type_comment: NoneType = None + orelse: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = real + ctx: Store + value: Name + id: str = real + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = imag + ctx: Store + value: Constant + value: int = 0 + kind: NoneType = None + type_comment: NoneType = None + orelse: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = real + ctx: Store + value: Name + id: str = real + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = imag + ctx: Store + value: Name + id: str = imag + ctx: Load + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __neg__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Call + func: Name + id: str = complex + ctx: Load + args: list + element: UnaryOp + op: USub + operand: Attribute + value: Name + id: str = self + ctx: Load + attr: str = real + ctx: Load + element: UnaryOp + op: USub + operand: Attribute + value: Name + id: str = self + ctx: Load + attr: str = imag + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __exp__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Name + id: str = modulus + ctx: Store + value: Call + func: Attribute + value: Name + id: str = Math + ctx: Load + attr: str = exp + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = real + ctx: Load + keywords: list + type_comment: NoneType = None + element: Return + value: Call + func: Name + id: str = complex + ctx: Load + args: list + element: BinOp + left: Name + id: str = modulus + ctx: Load + op: Mult + right: Call + func: Attribute + value: Name + id: str = Math + ctx: Load + attr: str = cos + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = imag + ctx: Load + keywords: list + element: BinOp + left: Name + id: str = modulus + ctx: Load + op: Mult + right: Call + func: Attribute + value: Name + id: str = Math + ctx: Load + attr: str = sin + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = imag + ctx: Load + keywords: list + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __log__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Call + func: Name + id: str = complex + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = Math + ctx: Load + attr: str = log + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = Math + ctx: Load + attr: str = sqrt + ctx: Load + args: list + element: BinOp + left: BinOp + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = real + ctx: Load + op: Mult + right: Attribute + value: Name + id: str = self + ctx: Load + attr: str = real + ctx: Load + op: Add + right: BinOp + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = imag + ctx: Load + op: Mult + right: Attribute + value: Name + id: str = self + ctx: Load + attr: str = imag + ctx: Load + keywords: list + keywords: list + element: Call + func: Attribute + value: Name + id: str = Math + ctx: Load + attr: str = atan2 + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = imag + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = real + ctx: Load + keywords: list + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __pow__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Call + func: Attribute + value: Call + func: Attribute + value: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = __log__ + ctx: Load + args: list + keywords: list + attr: str = __mul__ + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + keywords: list + attr: str = __exp__ + ctx: Load + args: list + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __rpow__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = real + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Call + func: Attribute + value: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = __mul__ + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = Math + ctx: Load + attr: str = log + ctx: Load + args: list + element: Name + id: str = real + ctx: Load + keywords: list + keywords: list + attr: str = __exp__ + ctx: Load + args: list + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __mul__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: Compare + left: Call + func: Name + id: str = __typeof__ + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + keywords: list + ops: list + element: Is + comparators: list + element: Constant + value: str = number + kind: NoneType = None + body: list + element: Return + value: Call + func: Name + id: str = complex + ctx: Load + args: list + element: BinOp + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = real + ctx: Load + op: Mult + right: Name + id: str = other + ctx: Load + element: BinOp + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = imag + ctx: Load + op: Mult + right: Name + id: str = other + ctx: Load + keywords: list + orelse: list + element: Return + value: Call + func: Name + id: str = complex + ctx: Load + args: list + element: BinOp + left: BinOp + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = real + ctx: Load + op: Mult + right: Attribute + value: Name + id: str = other + ctx: Load + attr: str = real + ctx: Load + op: Sub + right: BinOp + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = imag + ctx: Load + op: Mult + right: Attribute + value: Name + id: str = other + ctx: Load + attr: str = imag + ctx: Load + element: BinOp + left: BinOp + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = real + ctx: Load + op: Mult + right: Attribute + value: Name + id: str = other + ctx: Load + attr: str = imag + ctx: Load + op: Add + right: BinOp + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = imag + ctx: Load + op: Mult + right: Attribute + value: Name + id: str = other + ctx: Load + attr: str = real + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __rmul__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = real + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Call + func: Name + id: str = complex + ctx: Load + args: list + element: BinOp + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = real + ctx: Load + op: Mult + right: Name + id: str = real + ctx: Load + element: BinOp + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = imag + ctx: Load + op: Mult + right: Name + id: str = real + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __div__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: Compare + left: Call + func: Name + id: str = __typeof__ + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + keywords: list + ops: list + element: Is + comparators: list + element: Constant + value: str = number + kind: NoneType = None + body: list + element: Return + value: Call + func: Name + id: str = complex + ctx: Load + args: list + element: BinOp + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = real + ctx: Load + op: Div + right: Name + id: str = other + ctx: Load + element: BinOp + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = imag + ctx: Load + op: Div + right: Name + id: str = other + ctx: Load + keywords: list + orelse: list + element: Assign + targets: list + element: Name + id: str = denom + ctx: Store + value: BinOp + left: BinOp + left: Attribute + value: Name + id: str = other + ctx: Load + attr: str = real + ctx: Load + op: Mult + right: Attribute + value: Name + id: str = other + ctx: Load + attr: str = real + ctx: Load + op: Add + right: BinOp + left: Attribute + value: Name + id: str = other + ctx: Load + attr: str = imag + ctx: Load + op: Mult + right: Attribute + value: Name + id: str = other + ctx: Load + attr: str = imag + ctx: Load + type_comment: NoneType = None + element: Return + value: Call + func: Name + id: str = complex + ctx: Load + args: list + element: BinOp + left: BinOp + left: BinOp + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = real + ctx: Load + op: Mult + right: Attribute + value: Name + id: str = other + ctx: Load + attr: str = real + ctx: Load + op: Add + right: BinOp + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = imag + ctx: Load + op: Mult + right: Attribute + value: Name + id: str = other + ctx: Load + attr: str = imag + ctx: Load + op: Div + right: Name + id: str = denom + ctx: Load + element: BinOp + left: BinOp + left: BinOp + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = imag + ctx: Load + op: Mult + right: Attribute + value: Name + id: str = other + ctx: Load + attr: str = real + ctx: Load + op: Sub + right: BinOp + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = real + ctx: Load + op: Mult + right: Attribute + value: Name + id: str = other + ctx: Load + attr: str = imag + ctx: Load + op: Div + right: Name + id: str = denom + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __rdiv__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = real + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Name + id: str = denom + ctx: Store + value: BinOp + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = real + ctx: Load + op: Mult + right: Attribute + value: Name + id: str = self + ctx: Load + attr: str = real + ctx: Load + type_comment: NoneType = None + element: Return + value: Call + func: Name + id: str = complex + ctx: Load + args: list + element: BinOp + left: BinOp + left: Name + id: str = real + ctx: Load + op: Mult + right: Attribute + value: Name + id: str = self + ctx: Load + attr: str = real + ctx: Load + op: Div + right: Name + id: str = denom + ctx: Load + element: BinOp + left: BinOp + left: Name + id: str = real + ctx: Load + op: Mult + right: Attribute + value: Name + id: str = self + ctx: Load + attr: str = imag + ctx: Load + op: Div + right: Name + id: str = denom + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __add__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: Compare + left: Call + func: Name + id: str = __typeof__ + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + keywords: list + ops: list + element: Is + comparators: list + element: Constant + value: str = number + kind: NoneType = None + body: list + element: Return + value: Call + func: Name + id: str = complex + ctx: Load + args: list + element: BinOp + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = real + ctx: Load + op: Add + right: Name + id: str = other + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = imag + ctx: Load + keywords: list + orelse: list + element: Return + value: Call + func: Name + id: str = complex + ctx: Load + args: list + element: BinOp + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = real + ctx: Load + op: Add + right: Attribute + value: Name + id: str = other + ctx: Load + attr: str = real + ctx: Load + element: BinOp + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = imag + ctx: Load + op: Add + right: Attribute + value: Name + id: str = other + ctx: Load + attr: str = imag + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __radd__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = real + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Call + func: Name + id: str = complex + ctx: Load + args: list + element: BinOp + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = real + ctx: Load + op: Add + right: Name + id: str = real + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = imag + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __sub__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: Compare + left: Call + func: Name + id: str = __typeof__ + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + keywords: list + ops: list + element: Is + comparators: list + element: Constant + value: str = number + kind: NoneType = None + body: list + element: Return + value: Call + func: Name + id: str = complex + ctx: Load + args: list + element: BinOp + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = real + ctx: Load + op: Sub + right: Name + id: str = other + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = imag + ctx: Load + keywords: list + orelse: list + element: Return + value: Call + func: Name + id: str = complex + ctx: Load + args: list + element: BinOp + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = real + ctx: Load + op: Sub + right: Attribute + value: Name + id: str = other + ctx: Load + attr: str = real + ctx: Load + element: BinOp + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = imag + ctx: Load + op: Sub + right: Attribute + value: Name + id: str = other + ctx: Load + attr: str = imag + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __rsub__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = real + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Call + func: Name + id: str = complex + ctx: Load + args: list + element: BinOp + left: Name + id: str = real + ctx: Load + op: Sub + right: Attribute + value: Name + id: str = self + ctx: Load + attr: str = real + ctx: Load + element: UnaryOp + op: USub + operand: Attribute + value: Name + id: str = self + ctx: Load + attr: str = imag + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __repr__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Call + func: Attribute + value: Constant + value: str = ({}{}{}j) + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = real + ctx: Load + element: IfExp + test: Compare + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = imag + ctx: Load + ops: list + element: GtE + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + body: Constant + value: str = + + kind: NoneType = None + orelse: Constant + value: str = + kind: NoneType = None + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = imag + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __str__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Subscript + value: Call + func: Name + id: str = __repr__ + ctx: Load + args: list + element: Name + id: str = self + ctx: Load + keywords: list + slice: Slice + lower: Constant + value: int = 1 + kind: NoneType = None + upper: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + step: NoneType = None + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __eq__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: Compare + left: Call + func: Name + id: str = __typeof__ + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + keywords: list + ops: list + element: Is + comparators: list + element: Constant + value: str = number + kind: NoneType = None + body: list + element: Return + value: Compare + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = real + ctx: Load + ops: list + element: Eq + comparators: list + element: Name + id: str = other + ctx: Load + orelse: list + element: Return + value: BoolOp + op: And + values: list + element: Compare + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = real + ctx: Load + ops: list + element: Eq + comparators: list + element: Attribute + value: Name + id: str = other + ctx: Load + attr: str = real + ctx: Load + element: Compare + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = imag + ctx: Load + ops: list + element: Eq + comparators: list + element: Attribute + value: Name + id: str = other + ctx: Load + attr: str = imag + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __ne__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: Compare + left: Call + func: Name + id: str = __typeof__ + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + keywords: list + ops: list + element: Is + comparators: list + element: Constant + value: str = number + kind: NoneType = None + body: list + element: Return + value: Compare + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = real + ctx: Load + ops: list + element: NotEq + comparators: list + element: Name + id: str = other + ctx: Load + orelse: list + element: Return + value: BoolOp + op: Or + values: list + element: Compare + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = real + ctx: Load + ops: list + element: NotEq + comparators: list + element: Attribute + value: Name + id: str = other + ctx: Load + attr: str = real + ctx: Load + element: Compare + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = imag + ctx: Load + ops: list + element: NotEq + comparators: list + element: Attribute + value: Name + id: str = other + ctx: Load + attr: str = imag + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = conjugate + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Call + func: Name + id: str = complex + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = real + ctx: Load + element: UnaryOp + op: USub + operand: Attribute + value: Name + id: str = self + ctx: Load + attr: str = imag + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: FunctionDef + name: str = __conj__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = aNumber + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = aNumber + ctx: Load + element: Name + id: str = complex + ctx: Load + keywords: list + body: list + element: Return + value: Call + func: Name + id: str = complex + ctx: Load + args: list + element: Attribute + value: Name + id: str = aNumber + ctx: Load + attr: str = real + ctx: Load + element: UnaryOp + op: USub + operand: Attribute + value: Name + id: str = aNumber + ctx: Load + attr: str = imag + ctx: Load + keywords: list + orelse: list + element: Return + value: Call + func: Name + id: str = complex + ctx: Load + args: list + element: Name + id: str = aNumber + ctx: Load + element: Constant + value: int = 0 + kind: NoneType = None + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = endif + kind: NoneType = None + keywords: list + element: ClassDef + name: str = __Terminal__ + bases: list + keywords: list + body: list + element: Expr + value: Constant + value: str = + Printing to either the console or to html happens async, but is blocked by calling window.prompt. + So while all input and print statements are encountered in normal order, the print's exit immediately without yet having actually printed + This means the next input takes control, blocking actual printing and so on indefinitely + The effect is that everything's only printed after all inputs are done + To prevent that, what's needed is to only execute the next window.prompt after actual printing has been done + Since we've no way to find out when that is, a timeout is used. + + kind: NoneType = None + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = buffer + ctx: Store + value: Constant + value: str = + kind: NoneType = None + type_comment: NoneType = None + element: Try + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = element + ctx: Store + value: Call + func: Attribute + value: Name + id: str = document + ctx: Load + attr: str = getElementById + ctx: Load + args: list + element: Constant + value: str = __terminal__ + kind: NoneType = None + keywords: list + type_comment: NoneType = None + handlers: list + element: ExceptHandler + type: NoneType = None + name: NoneType = None + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = element + ctx: Store + value: Constant + value: NoneType = None + kind: NoneType = None + type_comment: NoneType = None + orelse: list + finalbody: list + element: If + test: Attribute + value: Name + id: str = self + ctx: Load + attr: str = element + ctx: Load + body: list + element: Assign + targets: list + element: Attribute + value: Attribute + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = element + ctx: Load + attr: str = style + ctx: Load + attr: str = overflowX + ctx: Store + value: Constant + value: str = auto + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Attribute + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = element + ctx: Load + attr: str = style + ctx: Load + attr: str = boxSizing + ctx: Store + value: Constant + value: str = border-box + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Attribute + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = element + ctx: Load + attr: str = style + ctx: Load + attr: str = padding + ctx: Store + value: Constant + value: str = 5px + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = element + ctx: Load + attr: str = innerHTML + ctx: Store + value: Constant + value: str = _ + kind: NoneType = None + type_comment: NoneType = None + orelse: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = kwargs + kind: NoneType = None + keywords: list + element: FunctionDef + name: str = print + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: arg + arg: str = args + annotation: NoneType = None + type_comment: NoneType = None + kwonlyargs: list + element: arg + arg: str = sep + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = end + annotation: NoneType = None + type_comment: NoneType = None + kw_defaults: list + element: Constant + value: str = + kind: NoneType = None + element: Constant + value: str = + + kind: NoneType = None + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = buffer + ctx: Store + value: Subscript + value: Call + func: Attribute + value: Constant + value: str = {}{}{} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = buffer + ctx: Load + element: Call + func: Attribute + value: Name + id: str = sep + ctx: Load + attr: str = join + ctx: Load + args: list + element: ListComp + elt: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = arg + ctx: Load + keywords: list + generators: list + element: comprehension + target: Name + id: str = arg + ctx: Store + iter: Name + id: str = args + ctx: Load + ifs: list + is_async: int = 0 + keywords: list + element: Name + id: str = end + ctx: Load + keywords: list + slice: Slice + lower: UnaryOp + op: USub + operand: Constant + value: int = 4096 + kind: NoneType = None + upper: NoneType = None + step: NoneType = None + ctx: Load + type_comment: NoneType = None + element: If + test: Attribute + value: Name + id: str = self + ctx: Load + attr: str = element + ctx: Load + body: list + element: Assign + targets: list + element: Attribute + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = element + ctx: Load + attr: str = innerHTML + ctx: Store + value: Call + func: Attribute + value: Call + func: Attribute + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = buffer + ctx: Load + attr: str = replace + ctx: Load + args: list + element: Constant + value: str = + + kind: NoneType = None + element: Constant + value: str =
+ kind: NoneType = None + keywords: list + attr: str = replace + ctx: Load + args: list + element: Constant + value: str = + kind: NoneType = None + element: Constant + value: str =   + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = element + ctx: Load + attr: str = scrollTop + ctx: Store + value: Attribute + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = element + ctx: Load + attr: str = scrollHeight + ctx: Load + type_comment: NoneType = None + orelse: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = console + ctx: Load + attr: str = log + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = sep + ctx: Load + attr: str = join + ctx: Load + args: list + element: ListComp + elt: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = arg + ctx: Load + keywords: list + generators: list + element: comprehension + target: Name + id: str = arg + ctx: Store + iter: Name + id: str = args + ctx: Load + ifs: list + is_async: int = 0 + keywords: list + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = input + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = question + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = print + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = {} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Name + id: str = question + ctx: Load + keywords: list + keywords: list + element: keyword + arg: str = end + value: Constant + value: str = + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = answer + ctx: Store + value: Call + func: Attribute + value: Name + id: str = window + ctx: Load + attr: str = prompt + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = + + kind: NoneType = None + attr: str = join + ctx: Load + args: list + element: Subscript + value: Call + func: Attribute + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = buffer + ctx: Load + attr: str = split + ctx: Load + args: list + element: Constant + value: str = + + kind: NoneType = None + keywords: list + slice: Slice + lower: UnaryOp + op: USub + operand: Constant + value: int = 8 + kind: NoneType = None + upper: NoneType = None + step: NoneType = None + ctx: Load + keywords: list + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = print + ctx: Load + args: list + element: Name + id: str = answer + ctx: Load + keywords: list + element: Return + value: Name + id: str = answer + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = nokwargs + kind: NoneType = None + keywords: list + decorator_list: list + element: Assign + targets: list + element: Name + id: str = __terminal__ + ctx: Store + value: Call + func: Name + id: str = __Terminal__ + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = print + ctx: Store + value: Attribute + value: Name + id: str = __terminal__ + ctx: Load + attr: str = print + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = input + ctx: Store + value: Attribute + value: Name + id: str = __terminal__ + ctx: Load + attr: str = input + ctx: Load + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/org.transcrypt.autotester.html.js b/transcrypt/development/automated_tests/transcrypt/__target__38/org.transcrypt.autotester.html.js new file mode 100644 index 000000000..a6bd33b3b --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/org.transcrypt.autotester.html.js @@ -0,0 +1,293 @@ +// Transcrypt'ed from Python, 2021-05-14 15:00:26 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +var __all__ = dict ({get DataConverter () {return DataConverter;}, set DataConverter (value) {DataConverter = value;}, get HTMLGenerator () {return HTMLGenerator;}, set HTMLGenerator (value) {HTMLGenerator = value;}, get JSTesterUI () {return JSTesterUI;}, set JSTesterUI (value) {JSTesterUI = value;}, get TestModuleExpander () {return TestModuleExpander;}, set TestModuleExpander (value) {TestModuleExpander = value;}, get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get errorColor () {return errorColor;}, set errorColor (value) {errorColor = value;}, get excAreaId () {return excAreaId;}, set excAreaId (value) {excAreaId = value;}, get excHeaderClass () {return excHeaderClass;}, set excHeaderClass (value) {excHeaderClass = value;}, get faultRowClass () {return faultRowClass;}, set faultRowClass (value) {faultRowClass = value;}, get forceCollapseId () {return forceCollapseId;}, set forceCollapseId (value) {forceCollapseId = value;}, get forceExpandId () {return forceExpandId;}, set forceExpandId (value) {forceExpandId = value;}, get getRowClsName () {return getRowClsName;}, set getRowClsName (value) {getRowClsName = value;}, get highlightColor () {return highlightColor;}, set highlightColor (value) {highlightColor = value;}, get itemsAreEqual () {return itemsAreEqual;}, set itemsAreEqual (value) {itemsAreEqual = value;}, get messageDivId () {return messageDivId;}, set messageDivId (value) {messageDivId = value;}, get okColor () {return okColor;}, set okColor (value) {okColor = value;}, get pyPosClass () {return pyPosClass;}, set pyPosClass (value) {pyPosClass = value;}, get pyValClass () {return pyValClass;}, set pyValClass (value) {pyValClass = value;}, get refPosDivId () {return refPosDivId;}, set refPosDivId (value) {refPosDivId = value;}, get refResultDivId () {return refResultDivId;}, set refResultDivId (value) {refResultDivId = value;}, get referenceDivId () {return referenceDivId;}, set referenceDivId (value) {referenceDivId = value;}, get resultsDivId () {return resultsDivId;}, set resultsDivId (value) {resultsDivId = value;}, get tableId () {return tableId;}, set tableId (value) {tableId = value;}, get testDivId () {return testDivId;}, set testDivId (value) {testDivId = value;}, get testletHeaderClass () {return testletHeaderClass;}, set testletHeaderClass (value) {testletHeaderClass = value;}, get testletNameColor () {return testletNameColor;}, set testletNameColor (value) {testletNameColor = value;}, get transPosClass () {return transPosClass;}, set transPosClass (value) {transPosClass = value;}, get transValClass () {return transValClass;}, set transValClass (value) {transValClass = value;}}); +var __name__ = 'org.transcrypt.autotester.html'; +export var okColor = 'green'; +export var errorColor = 'red'; +export var highlightColor = 'yellow'; +export var testletNameColor = 'blue'; +export var messageDivId = 'message'; +export var referenceDivId = 'python'; +export var refResultDivId = 'pyresults'; +export var refPosDivId = 'pypos'; +export var testDivId = 'transcrypt'; +export var tableId = 'resulttable'; +export var resultsDivId = 'results'; +export var faultRowClass = 'faultrow'; +export var testletHeaderClass = 'testletheader'; +export var transValClass = 'trans-val'; +export var transPosClass = 'trans-pos'; +export var pyValClass = 'py-val'; +export var pyPosClass = 'py-pos'; +export var excAreaId = 'exc-area'; +export var excHeaderClass = 'exc-header'; +export var forceCollapseId = 'force-collapse'; +export var forceExpandId = 'force-expand'; +export var itemsAreEqual = function (item0, item1) { + return ' '.join (item0.py_split ()) == ' '.join (item1.py_split ()); +}; +export var HTMLGenerator = __class__ ('HTMLGenerator', [object], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self, filenameBase) { + if (typeof filenameBase == 'undefined' || (filenameBase != null && filenameBase.hasOwnProperty ("__kwargtrans__"))) {; + var filenameBase = null; + }; + self._fnameBase = filenameBase; + });}, + get generate_html () {return __get__ (this, function (self, refDict) { + var minified = false; + if (self._fnameBase === null) { + var __except0__ = ValueError ('Filename Base must be defined to generate'); + __except0__.__cause__ = null; + throw __except0__; + } + var fname = self._fnameBase + '.html'; + print ('Generating {}'.format (fname)); + var jsPath = '__target__/{}.js'.format (self._fnameBase.py_split ('/') [-(1)]); + var f = open (fname, 'w', __kwargtrans__ ({encoding: 'UTF-8'})); + try { + f.__enter__ (); + f.write (""); + self._writeCSS (f); + f.write (''); + self._writeStatusHeaderTemplate (f); + var dc = DataConverter (); + dc.writeHiddenResults (f, refDict); + self._writeTableArea (f); + f.write ('\n\n'.format (jsPath)); + f.write (''); + f.__exit__ (); + } + catch (__except0__) { + if (! (f.__exit__ (__except0__.name, __except0__, __except0__.stack))) { + throw __except0__; + } + } + });}, + get _writeCSS () {return __get__ (this, function (self, f) { + var cssOut = '\n \n '; + f.write (cssOut); + });}, + get _writeStatusHeaderTemplate () {return __get__ (this, function (self, f) { + f.write ('Status:\n'); + f.write ('


\n\n'.format (messageDivId)); + });}, + get _writeTableArea () {return __get__ (this, function (self, f) { + f.write ('
'.format (excAreaId)); + f.write ('
'.format (resultsDivId)); + f.write (''.format (forceCollapseId, forceExpandId)); + f.write (''.format (tableId)); + f.write (''); + f.write ('
CPython Transcrypt
Location Value Value Location
'); + f.write ('
'); + });} +}); +export var DataConverter = __class__ ('DataConverter', [object], { + __module__: __name__, + get writeHiddenResults () {return __get__ (this, function (self, f, refDict) { + f.write ('\n'); + });}, + get getPythonResults () {return __get__ (this, function (self) { + var refData = document.getElementById (referenceDivId); + var refDict = dict ({}); + for (var child of refData.children) { + var keyName = child.getAttribute ('id'); + var __left0__ = self._extractPosResult (child); + var posData = __left0__ [0]; + var resultData = __left0__ [1]; + refDict [keyName] = zip (posData, resultData); + } + return refDict; + });}, + get _extractPosResult () {return __get__ (this, function (self, elem) { + var resultData = null; + var posData = null; + for (var e of elem.children) { + var idStr = e.getAttribute ('id'); + if (idStr == refResultDivId) { + var resultData = e.innerHTML.py_split (' | '); + } + else if (idStr == refPosDivId) { + var posData = e.innerHTML.py_split (' | '); + } + else { + // pass; + } + } + return tuple ([posData, resultData]); + });} +}); +export var getRowClsName = function (py_name) { + return 'mod-' + py_name; +}; +export var JSTesterUI = __class__ ('JSTesterUI', [object], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self) { + self.expander = TestModuleExpander (); + });}, + get setOutputStatus () {return __get__ (this, function (self, success) { + if (success) { + document.getElementById (messageDivId).innerHTML = '
Test succeeded
'.format (okColor); + } + else { + document.getElementById (messageDivId).innerHTML = '
Test failed
'.format (errorColor); + } + });}, + get appendSeqRowName () {return __get__ (this, function (self, py_name, errCount) { + var table = document.getElementById (tableId); + var row = table.insertRow (-(1)); + row.id = py_name; + row.classList.add (testletHeaderClass); + self.expander.setupCollapseableHeader (row, errCount == 0); + var headerCell = row.insertCell (0); + headerCell.innerHTML = (py_name + ' | Errors = ') + str (errCount); + headerCell.colSpan = 4; + headerCell.style.textAlign = 'center'; + });}, + get appendTableResult () {return __get__ (this, function (self, py_name, testPos, testItem, refPos, refItem, collapse) { + if (typeof collapse == 'undefined' || (collapse != null && collapse.hasOwnProperty ("__kwargtrans__"))) {; + var collapse = false; + }; + var clsName = getRowClsName (py_name); + var table = document.getElementById (tableId); + var row = table.insertRow (-(1)); + row.classList.add (clsName); + if (!(itemsAreEqual (testItem, refItem))) { + row.classList.add (faultRowClass); + var refPos = '!!!' + refPos; + } + else { + self.expander.setCollapsed (row, collapse); + } + var cpy_pos = row.insertCell (0); + cpy_pos.innerHTML = refPos; + cpy_pos.classList.add (pyPosClass); + var cpy_val = row.insertCell (1); + cpy_val.innerHTML = refItem; + cpy_val.classList.add (pyValClass); + var trans_val = row.insertCell (2); + if (testItem !== null) { + trans_val.innerHTML = testItem; + } + trans_val.classList.add (transValClass); + var trans_pos = row.insertCell (3); + if (testPos !== null) { + trans_pos.innerHTML = testPos; + } + trans_pos.classList.add (transPosClass); + });}, + get showException () {return __get__ (this, function (self, testname, exc) { + var excElem = document.getElementById (excAreaId); + var header = document.createElement ('H2'); + header.classList.add (excHeaderClass); + header.innerHTML = 'Exception Thrown in JS Runtime'; + excElem.appendChild (header); + var content = document.createElement ('p'); + content.innerHTML = 'Exception in {}: {}'.format (testname, str (exc)); + excElem.appendChild (content); + var stacktrace = document.createElement ('p'); + if (exc.stack !== null) { + stacktrace.innerHTML = str (exc.stack); + } + else { + stacktrace.innerHTML = 'No Stack Trace Available!'; + } + });} +}); +export var TestModuleExpander = __class__ ('TestModuleExpander', [object], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self) { + self.collapsedClass = 'collapsed'; + self.modCollapseClass = 'mod-collapsed'; + self._expandCollapseAllFuncs (); + });}, + get setCollapsed () {return __get__ (this, function (self, row, collapse) { + if (collapse) { + row.classList.add (self.collapsedClass); + } + else { + row.classList.remove (self.collapsedClass); + } + });}, + get setupCollapseableHeader () {return __get__ (this, function (self, row, startCollapsed) { + if (typeof startCollapsed == 'undefined' || (startCollapsed != null && startCollapsed.hasOwnProperty ("__kwargtrans__"))) {; + var startCollapsed = false; + }; + if (startCollapsed) { + row.classList.add (self.modCollapseClass); + } + var toggleCollapse = function (evt) { + var headerRow = evt.target.parentElement; + var doCollapse = !(headerRow.classList.contains (self.modCollapseClass)); + self.collapseModule (headerRow, doCollapse); + }; + row.onclick = toggleCollapse; + });}, + get collapseModule () {return __get__ (this, function (self, headerRow, doCollapse) { + var py_name = headerRow.id; + var table = document.getElementById (tableId); + var clsName = getRowClsName (py_name); + var allRows = table.tHead.children; + var rows = filter ((function __lambda__ (x) { + return x.classList.contains (clsName); + }), allRows); + for (var row of rows) { + self.setCollapsed (row, doCollapse); + } + if (doCollapse) { + headerRow.classList.add (self.modCollapseClass); + } + else { + headerRow.classList.remove (self.modCollapseClass); + } + });}, + get _expandCollapseAllFuncs () {return __get__ (this, function (self) { + var applyToAll = function (evt, collapse) { + var table = document.getElementById (tableId); + var filtFunc = (function __lambda__ (x) { + return x.classList.contains (testletHeaderClass); + }); + var headerRows = filter (filtFunc, table.tHead.children); + for (var headerRow of headerRows) { + self.collapseModule (headerRow, collapse); + } + }; + var collapseAll = function (evt) { + evt.preventDefault (); + applyToAll (evt, true); + return false; + }; + var expandAll = function (evt) { + evt.preventDefault (); + applyToAll (evt, false); + return false; + }; + var forceCollapse = document.getElementById (forceCollapseId); + forceCollapse.onclick = collapseAll; + var forceExpand = document.getElementById (forceExpandId); + forceExpand.onclick = expandAll; + });} +}); + +//# sourceMappingURL=org.transcrypt.autotester.html.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/org.transcrypt.autotester.html.tree b/transcrypt/development/automated_tests/transcrypt/__target__38/org.transcrypt.autotester.html.tree new file mode 100644 index 000000000..489d6911a --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/org.transcrypt.autotester.html.tree @@ -0,0 +1,3306 @@ +file: Module + body: list + element: ImportFrom + module: str = org.transcrypt.stubs.browser + names: list + element: alias + name: str = __main__ + asname: NoneType = None + element: alias + name: str = __envir__ + asname: NoneType = None + element: alias + name: str = __pragma__ + asname: NoneType = None + level: int = 0 + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = nokwargs + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = okColor + ctx: Store + value: Constant + value: str = green + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = errorColor + ctx: Store + value: Constant + value: str = red + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = highlightColor + ctx: Store + value: Constant + value: str = yellow + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = testletNameColor + ctx: Store + value: Constant + value: str = blue + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = messageDivId + ctx: Store + value: Constant + value: str = message + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = referenceDivId + ctx: Store + value: Constant + value: str = python + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = refResultDivId + ctx: Store + value: Constant + value: str = pyresults + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = refPosDivId + ctx: Store + value: Constant + value: str = pypos + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = testDivId + ctx: Store + value: Constant + value: str = transcrypt + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = tableId + ctx: Store + value: Constant + value: str = resulttable + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = resultsDivId + ctx: Store + value: Constant + value: str = results + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = faultRowClass + ctx: Store + value: Constant + value: str = faultrow + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = testletHeaderClass + ctx: Store + value: Constant + value: str = testletheader + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = transValClass + ctx: Store + value: Constant + value: str = trans-val + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = transPosClass + ctx: Store + value: Constant + value: str = trans-pos + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = pyValClass + ctx: Store + value: Constant + value: str = py-val + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = pyPosClass + ctx: Store + value: Constant + value: str = py-pos + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = excAreaId + ctx: Store + value: Constant + value: str = exc-area + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = excHeaderClass + ctx: Store + value: Constant + value: str = exc-header + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = forceCollapseId + ctx: Store + value: Constant + value: str = force-collapse + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = forceExpandId + ctx: Store + value: Constant + value: str = force-expand + kind: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = itemsAreEqual + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = item0 + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = item1 + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Compare + left: Call + func: Attribute + value: Constant + value: str = + kind: NoneType = None + attr: str = join + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = item0 + ctx: Load + attr: str = split + ctx: Load + args: list + keywords: list + keywords: list + ops: list + element: Eq + comparators: list + element: Call + func: Attribute + value: Constant + value: str = + kind: NoneType = None + attr: str = join + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = item1 + ctx: Load + attr: str = split + ctx: Load + args: list + keywords: list + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: ClassDef + name: str = HTMLGenerator + bases: list + element: Name + id: str = object + ctx: Load + keywords: list + body: list + element: Expr + value: Constant + value: str = This class generates the HTML template for the autotester results. + This code is primarily run during the Python execution cycle but + does define strings that are referenced by the javascript as well. + + kind: NoneType = None + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = filenameBase + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Expr + value: Constant + value: str = + @param filenameBase string denoting the base filename for the + files this class will generate. This should NOT include the + file extension (.html for example). This will be tacked on + later depending on minified state. + + kind: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _fnameBase + ctx: Store + value: Name + id: str = filenameBase + ctx: Load + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = generate_html + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = refDict + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = Generate the HTML file that gets generated by the + Python script portion of the test. File will be named + ' + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _writeCSS + ctx: Load + args: list + element: Name + id: str = f + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = f + ctx: Load + attr: str = write + ctx: Load + args: list + element: Constant + value: str = + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _writeStatusHeaderTemplate + ctx: Load + args: list + element: Name + id: str = f + ctx: Load + keywords: list + element: Assign + targets: list + element: Name + id: str = dc + ctx: Store + value: Call + func: Name + id: str = DataConverter + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = dc + ctx: Load + attr: str = writeHiddenResults + ctx: Load + args: list + element: Name + id: str = f + ctx: Load + element: Name + id: str = refDict + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _writeTableArea + ctx: Load + args: list + element: Name + id: str = f + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = f + ctx: Load + attr: str = write + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = + + + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Name + id: str = jsPath + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = f + ctx: Load + attr: str = write + ctx: Load + args: list + element: Constant + value: str = + kind: NoneType = None + keywords: list + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = _writeCSS + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = f + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Name + id: str = cssOut + ctx: Store + value: Constant + value: str = + + + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = f + ctx: Load + attr: str = write + ctx: Load + args: list + element: Name + id: str = cssOut + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = _writeStatusHeaderTemplate + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = f + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = f + ctx: Load + attr: str = write + ctx: Load + args: list + element: Constant + value: str = Status: + + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = f + ctx: Load + attr: str = write + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str =


+ + + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Name + id: str = messageDivId + ctx: Load + keywords: list + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = _writeTableArea + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = f + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = f + ctx: Load + attr: str = write + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str =
+ kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Name + id: str = excAreaId + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = f + ctx: Load + attr: str = write + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str =
+ kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Name + id: str = resultsDivId + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = f + ctx: Load + attr: str = write + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Name + id: str = forceCollapseId + ctx: Load + element: Name + id: str = forceExpandId + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = f + ctx: Load + attr: str = write + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Name + id: str = tableId + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = f + ctx: Load + attr: str = write + ctx: Load + args: list + element: Constant + value: str = + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = f + ctx: Load + attr: str = write + ctx: Load + args: list + element: Constant + value: str =
CPython Transcrypt
Location Value Value Location
+ kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = f + ctx: Load + attr: str = write + ctx: Load + args: list + element: Constant + value: str =
+ kind: NoneType = None + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: ClassDef + name: str = DataConverter + bases: list + element: Name + id: str = object + ctx: Load + keywords: list + body: list + element: Expr + value: Constant + value: str = This class contains code that stores the python results in + the HTML document and can extract the data from the HTML to + prepare it for comparison with the javascript results. + + kind: NoneType = None + element: FunctionDef + name: str = writeHiddenResults + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = f + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = refDict + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = Write the Python results into a div that is hidden by + default so that we can extract it at runtime. + @param f file that we are writing the content into + @param refDict python reference result data in the form of + a dict. The keys are the names of the individual test modules. + + kind: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = f + ctx: Load + attr: str = write + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = + + kind: NoneType = None + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = getPythonResults + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = Acquire the python unit test results from the + hidden div and parse into a dictionary. + @return dict whose keys are the names of the test + submodules. + + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = refData + ctx: Store + value: Call + func: Attribute + value: Name + id: str = document + ctx: Load + attr: str = getElementById + ctx: Load + args: list + element: Name + id: str = referenceDivId + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = refDict + ctx: Store + value: Dict + keys: list + values: list + type_comment: NoneType = None + element: For + target: Name + id: str = child + ctx: Store + iter: Attribute + value: Name + id: str = refData + ctx: Load + attr: str = children + ctx: Load + body: list + element: Assign + targets: list + element: Name + id: str = keyName + ctx: Store + value: Call + func: Attribute + value: Name + id: str = child + ctx: Load + attr: str = getAttribute + ctx: Load + args: list + element: Constant + value: str = id + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = posData + ctx: Store + element: Name + id: str = resultData + ctx: Store + ctx: Store + value: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _extractPosResult + ctx: Load + args: list + element: Name + id: str = child + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Subscript + value: Name + id: str = refDict + ctx: Load + slice: Index + value: Name + id: str = keyName + ctx: Load + ctx: Store + value: Call + func: Name + id: str = zip + ctx: Load + args: list + element: Name + id: str = posData + ctx: Load + element: Name + id: str = resultData + ctx: Load + keywords: list + type_comment: NoneType = None + orelse: list + type_comment: NoneType = None + element: Return + value: Name + id: str = refDict + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = _extractPosResult + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = elem + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Name + id: str = resultData + ctx: Store + value: Constant + value: NoneType = None + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = posData + ctx: Store + value: Constant + value: NoneType = None + kind: NoneType = None + type_comment: NoneType = None + element: For + target: Name + id: str = e + ctx: Store + iter: Attribute + value: Name + id: str = elem + ctx: Load + attr: str = children + ctx: Load + body: list + element: Assign + targets: list + element: Name + id: str = idStr + ctx: Store + value: Call + func: Attribute + value: Name + id: str = e + ctx: Load + attr: str = getAttribute + ctx: Load + args: list + element: Constant + value: str = id + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: If + test: Compare + left: Name + id: str = idStr + ctx: Load + ops: list + element: Eq + comparators: list + element: Name + id: str = refResultDivId + ctx: Load + body: list + element: Assign + targets: list + element: Name + id: str = resultData + ctx: Store + value: Call + func: Attribute + value: Attribute + value: Name + id: str = e + ctx: Load + attr: str = innerHTML + ctx: Load + attr: str = split + ctx: Load + args: list + element: Constant + value: str = | + kind: NoneType = None + keywords: list + type_comment: NoneType = None + orelse: list + element: If + test: Compare + left: Name + id: str = idStr + ctx: Load + ops: list + element: Eq + comparators: list + element: Name + id: str = refPosDivId + ctx: Load + body: list + element: Assign + targets: list + element: Name + id: str = posData + ctx: Store + value: Call + func: Attribute + value: Attribute + value: Name + id: str = e + ctx: Load + attr: str = innerHTML + ctx: Load + attr: str = split + ctx: Load + args: list + element: Constant + value: str = | + kind: NoneType = None + keywords: list + type_comment: NoneType = None + orelse: list + element: Pass + orelse: list + type_comment: NoneType = None + element: Return + value: Tuple + elts: list + element: Name + id: str = posData + ctx: Load + element: Name + id: str = resultData + ctx: Load + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: FunctionDef + name: str = getRowClsName + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = name + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = Utility method for naming the test module class that + a row belows to + + kind: NoneType = None + element: Return + value: BinOp + left: Constant + value: str = mod- + kind: NoneType = None + op: Add + right: Name + id: str = name + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: ClassDef + name: str = JSTesterUI + bases: list + element: Name + id: str = object + ctx: Load + keywords: list + body: list + element: Expr + value: Constant + value: str = This class contains the code that populates the autotester results + while running in the javascript runtime. + + kind: NoneType = None + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = + + kind: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = expander + ctx: Store + value: Call + func: Name + id: str = TestModuleExpander + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = setOutputStatus + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = success + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: Name + id: str = success + ctx: Load + body: list + element: Assign + targets: list + element: Attribute + value: Call + func: Attribute + value: Name + id: str = document + ctx: Load + attr: str = getElementById + ctx: Load + args: list + element: Name + id: str = messageDivId + ctx: Load + keywords: list + attr: str = innerHTML + ctx: Store + value: Call + func: Attribute + value: Constant + value: str =
Test succeeded
+ kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Name + id: str = okColor + ctx: Load + keywords: list + type_comment: NoneType = None + orelse: list + element: Assign + targets: list + element: Attribute + value: Call + func: Attribute + value: Name + id: str = document + ctx: Load + attr: str = getElementById + ctx: Load + args: list + element: Name + id: str = messageDivId + ctx: Load + keywords: list + attr: str = innerHTML + ctx: Store + value: Call + func: Attribute + value: Constant + value: str =
Test failed
+ kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Name + id: str = errorColor + ctx: Load + keywords: list + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = appendSeqRowName + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = name + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = errCount + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = + + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = table + ctx: Store + value: Call + func: Attribute + value: Name + id: str = document + ctx: Load + attr: str = getElementById + ctx: Load + args: list + element: Name + id: str = tableId + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = row + ctx: Store + value: Call + func: Attribute + value: Name + id: str = table + ctx: Load + attr: str = insertRow + ctx: Load + args: list + element: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = row + ctx: Load + attr: str = id + ctx: Store + value: Name + id: str = name + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Attribute + value: Name + id: str = row + ctx: Load + attr: str = classList + ctx: Load + attr: str = add + ctx: Load + args: list + element: Name + id: str = testletHeaderClass + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = expander + ctx: Load + attr: str = setupCollapseableHeader + ctx: Load + args: list + element: Name + id: str = row + ctx: Load + element: Compare + left: Name + id: str = errCount + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = headerCell + ctx: Store + value: Call + func: Attribute + value: Name + id: str = row + ctx: Load + attr: str = insertCell + ctx: Load + args: list + element: Constant + value: int = 0 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = headerCell + ctx: Load + attr: str = innerHTML + ctx: Store + value: BinOp + left: BinOp + left: Name + id: str = name + ctx: Load + op: Add + right: Constant + value: str = | Errors = + kind: NoneType = None + op: Add + right: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = errCount + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = headerCell + ctx: Load + attr: str = colSpan + ctx: Store + value: Constant + value: int = 4 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Attribute + value: Name + id: str = headerCell + ctx: Load + attr: str = style + ctx: Load + attr: str = textAlign + ctx: Store + value: Constant + value: str = center + kind: NoneType = None + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = appendTableResult + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = name + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = testPos + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = testItem + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = refPos + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = refItem + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = collapse + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + element: Constant + value: bool = False + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = clsName + ctx: Store + value: Call + func: Name + id: str = getRowClsName + ctx: Load + args: list + element: Name + id: str = name + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = table + ctx: Store + value: Call + func: Attribute + value: Name + id: str = document + ctx: Load + attr: str = getElementById + ctx: Load + args: list + element: Name + id: str = tableId + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = row + ctx: Store + value: Call + func: Attribute + value: Name + id: str = table + ctx: Load + attr: str = insertRow + ctx: Load + args: list + element: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Attribute + value: Name + id: str = row + ctx: Load + attr: str = classList + ctx: Load + attr: str = add + ctx: Load + args: list + element: Name + id: str = clsName + ctx: Load + keywords: list + element: If + test: UnaryOp + op: Not + operand: Call + func: Name + id: str = itemsAreEqual + ctx: Load + args: list + element: Name + id: str = testItem + ctx: Load + element: Name + id: str = refItem + ctx: Load + keywords: list + body: list + element: Expr + value: Call + func: Attribute + value: Attribute + value: Name + id: str = row + ctx: Load + attr: str = classList + ctx: Load + attr: str = add + ctx: Load + args: list + element: Name + id: str = faultRowClass + ctx: Load + keywords: list + element: Assign + targets: list + element: Name + id: str = refPos + ctx: Store + value: BinOp + left: Constant + value: str = !!! + kind: NoneType = None + op: Add + right: Name + id: str = refPos + ctx: Load + type_comment: NoneType = None + orelse: list + element: Expr + value: Call + func: Attribute + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = expander + ctx: Load + attr: str = setCollapsed + ctx: Load + args: list + element: Name + id: str = row + ctx: Load + element: Name + id: str = collapse + ctx: Load + keywords: list + element: Assign + targets: list + element: Name + id: str = cpy_pos + ctx: Store + value: Call + func: Attribute + value: Name + id: str = row + ctx: Load + attr: str = insertCell + ctx: Load + args: list + element: Constant + value: int = 0 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = cpy_pos + ctx: Load + attr: str = innerHTML + ctx: Store + value: Name + id: str = refPos + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Attribute + value: Name + id: str = cpy_pos + ctx: Load + attr: str = classList + ctx: Load + attr: str = add + ctx: Load + args: list + element: Name + id: str = pyPosClass + ctx: Load + keywords: list + element: Assign + targets: list + element: Name + id: str = cpy_val + ctx: Store + value: Call + func: Attribute + value: Name + id: str = row + ctx: Load + attr: str = insertCell + ctx: Load + args: list + element: Constant + value: int = 1 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = cpy_val + ctx: Load + attr: str = innerHTML + ctx: Store + value: Name + id: str = refItem + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Attribute + value: Name + id: str = cpy_val + ctx: Load + attr: str = classList + ctx: Load + attr: str = add + ctx: Load + args: list + element: Name + id: str = pyValClass + ctx: Load + keywords: list + element: Assign + targets: list + element: Name + id: str = trans_val + ctx: Store + value: Call + func: Attribute + value: Name + id: str = row + ctx: Load + attr: str = insertCell + ctx: Load + args: list + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: If + test: Compare + left: Name + id: str = testItem + ctx: Load + ops: list + element: IsNot + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = trans_val + ctx: Load + attr: str = innerHTML + ctx: Store + value: Name + id: str = testItem + ctx: Load + type_comment: NoneType = None + orelse: list + element: Expr + value: Call + func: Attribute + value: Attribute + value: Name + id: str = trans_val + ctx: Load + attr: str = classList + ctx: Load + attr: str = add + ctx: Load + args: list + element: Name + id: str = transValClass + ctx: Load + keywords: list + element: Assign + targets: list + element: Name + id: str = trans_pos + ctx: Store + value: Call + func: Attribute + value: Name + id: str = row + ctx: Load + attr: str = insertCell + ctx: Load + args: list + element: Constant + value: int = 3 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: If + test: Compare + left: Name + id: str = testPos + ctx: Load + ops: list + element: IsNot + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = trans_pos + ctx: Load + attr: str = innerHTML + ctx: Store + value: Name + id: str = testPos + ctx: Load + type_comment: NoneType = None + orelse: list + element: Expr + value: Call + func: Attribute + value: Attribute + value: Name + id: str = trans_pos + ctx: Load + attr: str = classList + ctx: Load + attr: str = add + ctx: Load + args: list + element: Name + id: str = transPosClass + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = showException + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = testname + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = exc + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = + + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = excElem + ctx: Store + value: Call + func: Attribute + value: Name + id: str = document + ctx: Load + attr: str = getElementById + ctx: Load + args: list + element: Name + id: str = excAreaId + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = header + ctx: Store + value: Call + func: Attribute + value: Name + id: str = document + ctx: Load + attr: str = createElement + ctx: Load + args: list + element: Constant + value: str = H2 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Attribute + value: Name + id: str = header + ctx: Load + attr: str = classList + ctx: Load + attr: str = add + ctx: Load + args: list + element: Name + id: str = excHeaderClass + ctx: Load + keywords: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = header + ctx: Load + attr: str = innerHTML + ctx: Store + value: Constant + value: str = Exception Thrown in JS Runtime + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = excElem + ctx: Load + attr: str = appendChild + ctx: Load + args: list + element: Name + id: str = header + ctx: Load + keywords: list + element: Assign + targets: list + element: Name + id: str = content + ctx: Store + value: Call + func: Attribute + value: Name + id: str = document + ctx: Load + attr: str = createElement + ctx: Load + args: list + element: Constant + value: str = p + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = content + ctx: Load + attr: str = innerHTML + ctx: Store + value: Call + func: Attribute + value: Constant + value: str = Exception in {}: {} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Name + id: str = testname + ctx: Load + element: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = exc + ctx: Load + keywords: list + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = excElem + ctx: Load + attr: str = appendChild + ctx: Load + args: list + element: Name + id: str = content + ctx: Load + keywords: list + element: Assign + targets: list + element: Name + id: str = stacktrace + ctx: Store + value: Call + func: Attribute + value: Name + id: str = document + ctx: Load + attr: str = createElement + ctx: Load + args: list + element: Constant + value: str = p + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: If + test: Compare + left: Attribute + value: Name + id: str = exc + ctx: Load + attr: str = stack + ctx: Load + ops: list + element: IsNot + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = stacktrace + ctx: Load + attr: str = innerHTML + ctx: Store + value: Call + func: Name + id: str = str + ctx: Load + args: list + element: Attribute + value: Name + id: str = exc + ctx: Load + attr: str = stack + ctx: Load + keywords: list + type_comment: NoneType = None + orelse: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = stacktrace + ctx: Load + attr: str = innerHTML + ctx: Store + value: Constant + value: str = No Stack Trace Available! + kind: NoneType = None + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: ClassDef + name: str = TestModuleExpander + bases: list + element: Name + id: str = object + ctx: Load + keywords: list + body: list + element: Expr + value: Constant + value: str = This class handles expanding or contracting a set of + test row results under a particular test. + + kind: NoneType = None + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = + + kind: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = collapsedClass + ctx: Store + value: Constant + value: str = collapsed + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = modCollapseClass + ctx: Store + value: Constant + value: str = mod-collapsed + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _expandCollapseAllFuncs + ctx: Load + args: list + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = setCollapsed + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = row + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = collapse + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = + + kind: NoneType = None + element: If + test: Name + id: str = collapse + ctx: Load + body: list + element: Expr + value: Call + func: Attribute + value: Attribute + value: Name + id: str = row + ctx: Load + attr: str = classList + ctx: Load + attr: str = add + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = collapsedClass + ctx: Load + keywords: list + orelse: list + element: Expr + value: Call + func: Attribute + value: Attribute + value: Name + id: str = row + ctx: Load + attr: str = classList + ctx: Load + attr: str = remove + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = collapsedClass + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = setupCollapseableHeader + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = row + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = startCollapsed + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + element: Constant + value: bool = False + kind: NoneType = None + body: list + element: Expr + value: Constant + value: str = + + kind: NoneType = None + element: If + test: Name + id: str = startCollapsed + ctx: Load + body: list + element: Expr + value: Call + func: Attribute + value: Attribute + value: Name + id: str = row + ctx: Load + attr: str = classList + ctx: Load + attr: str = add + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = modCollapseClass + ctx: Load + keywords: list + orelse: list + element: FunctionDef + name: str = toggleCollapse + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = evt + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = Toggle whether the + + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = headerRow + ctx: Store + value: Attribute + value: Attribute + value: Name + id: str = evt + ctx: Load + attr: str = target + ctx: Load + attr: str = parentElement + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = doCollapse + ctx: Store + value: UnaryOp + op: Not + operand: Call + func: Attribute + value: Attribute + value: Name + id: str = headerRow + ctx: Load + attr: str = classList + ctx: Load + attr: str = contains + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = modCollapseClass + ctx: Load + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = collapseModule + ctx: Load + args: list + element: Name + id: str = headerRow + ctx: Load + element: Name + id: str = doCollapse + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = row + ctx: Load + attr: str = onclick + ctx: Store + value: Name + id: str = toggleCollapse + ctx: Load + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = collapseModule + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = headerRow + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = doCollapse + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = collapse/expand particular module in the table of results + + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = name + ctx: Store + value: Attribute + value: Name + id: str = headerRow + ctx: Load + attr: str = id + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = table + ctx: Store + value: Call + func: Attribute + value: Name + id: str = document + ctx: Load + attr: str = getElementById + ctx: Load + args: list + element: Name + id: str = tableId + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = clsName + ctx: Store + value: Call + func: Name + id: str = getRowClsName + ctx: Load + args: list + element: Name + id: str = name + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = allRows + ctx: Store + value: Attribute + value: Attribute + value: Name + id: str = table + ctx: Load + attr: str = tHead + ctx: Load + attr: str = children + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = rows + ctx: Store + value: Call + func: Name + id: str = filter + ctx: Load + args: list + element: Lambda + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: Call + func: Attribute + value: Attribute + value: Name + id: str = x + ctx: Load + attr: str = classList + ctx: Load + attr: str = contains + ctx: Load + args: list + element: Name + id: str = clsName + ctx: Load + keywords: list + element: Name + id: str = allRows + ctx: Load + keywords: list + type_comment: NoneType = None + element: For + target: Name + id: str = row + ctx: Store + iter: Name + id: str = rows + ctx: Load + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = setCollapsed + ctx: Load + args: list + element: Name + id: str = row + ctx: Load + element: Name + id: str = doCollapse + ctx: Load + keywords: list + orelse: list + type_comment: NoneType = None + element: If + test: Name + id: str = doCollapse + ctx: Load + body: list + element: Expr + value: Call + func: Attribute + value: Attribute + value: Name + id: str = headerRow + ctx: Load + attr: str = classList + ctx: Load + attr: str = add + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = modCollapseClass + ctx: Load + keywords: list + orelse: list + element: Expr + value: Call + func: Attribute + value: Attribute + value: Name + id: str = headerRow + ctx: Load + attr: str = classList + ctx: Load + attr: str = remove + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = modCollapseClass + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = _expandCollapseAllFuncs + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = This function sets up the callback handlers for the + collapse all and expand all links + + kind: NoneType = None + element: FunctionDef + name: str = applyToAll + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = evt + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = collapse + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = + + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = table + ctx: Store + value: Call + func: Attribute + value: Name + id: str = document + ctx: Load + attr: str = getElementById + ctx: Load + args: list + element: Name + id: str = tableId + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = filtFunc + ctx: Store + value: Lambda + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: Call + func: Attribute + value: Attribute + value: Name + id: str = x + ctx: Load + attr: str = classList + ctx: Load + attr: str = contains + ctx: Load + args: list + element: Name + id: str = testletHeaderClass + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = headerRows + ctx: Store + value: Call + func: Name + id: str = filter + ctx: Load + args: list + element: Name + id: str = filtFunc + ctx: Load + element: Attribute + value: Attribute + value: Name + id: str = table + ctx: Load + attr: str = tHead + ctx: Load + attr: str = children + ctx: Load + keywords: list + type_comment: NoneType = None + element: For + target: Name + id: str = headerRow + ctx: Store + iter: Name + id: str = headerRows + ctx: Load + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = collapseModule + ctx: Load + args: list + element: Name + id: str = headerRow + ctx: Load + element: Name + id: str = collapse + ctx: Load + keywords: list + orelse: list + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = collapseAll + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = evt + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = collapse all rows handler + + kind: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = evt + ctx: Load + attr: str = preventDefault + ctx: Load + args: list + keywords: list + element: Expr + value: Call + func: Name + id: str = applyToAll + ctx: Load + args: list + element: Name + id: str = evt + ctx: Load + element: Constant + value: bool = True + kind: NoneType = None + keywords: list + element: Return + value: Constant + value: bool = False + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = expandAll + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = evt + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = Expand All Rows Handler + + kind: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = evt + ctx: Load + attr: str = preventDefault + ctx: Load + args: list + keywords: list + element: Expr + value: Call + func: Name + id: str = applyToAll + ctx: Load + args: list + element: Name + id: str = evt + ctx: Load + element: Constant + value: bool = False + kind: NoneType = None + keywords: list + element: Return + value: Constant + value: bool = False + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = forceCollapse + ctx: Store + value: Call + func: Attribute + value: Name + id: str = document + ctx: Load + attr: str = getElementById + ctx: Load + args: list + element: Name + id: str = forceCollapseId + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = forceCollapse + ctx: Load + attr: str = onclick + ctx: Store + value: Name + id: str = collapseAll + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = forceExpand + ctx: Store + value: Call + func: Attribute + value: Name + id: str = document + ctx: Load + attr: str = getElementById + ctx: Load + args: list + element: Name + id: str = forceExpandId + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = forceExpand + ctx: Load + attr: str = onclick + ctx: Store + value: Name + id: str = expandAll + ctx: Load + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/org.transcrypt.autotester.js b/transcrypt/development/automated_tests/transcrypt/__target__38/org.transcrypt.autotester.js new file mode 100644 index 000000000..579294e2e --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/org.transcrypt.autotester.js @@ -0,0 +1,307 @@ +// Transcrypt'ed from Python, 2021-05-14 15:00:26 +var itertools = {}; +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +import * as __module_itertools__ from './itertools.js'; +__nest__ (itertools, '', __module_itertools__); +import {DataConverter, HTMLGenerator, JSTesterUI, itemsAreEqual} from './org.transcrypt.autotester.html.js'; +export {JSTesterUI, itemsAreEqual, HTMLGenerator, DataConverter}; +var __all__ = dict ({get AutoTester () {return AutoTester;}, set AutoTester (value) {AutoTester = value;}, get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get getFileLocation () {return getFileLocation;}, set getFileLocation (value) {getFileLocation = value;}}); +var __name__ = 'org.transcrypt.autotester'; +export var getFileLocation = function (ancestor) { + if (__envir__.executor_name == __envir__.transpiler_name) { + var s = null; + + var e = new Error(); + if ( ! e.stack ) { + console.log("MAJOR ISSUE: Browser Error lacks Stack"); + } else { + s = e.stack; + } + + var frames = null; + + var linereg = new RegExp("\n\r|\n", "g"); + frames = s.toString().split(linereg); + + if (frames === null || len (frames) < 2) { + console.log("Failed to Split Stack"); + return 'UNKNOWN:???'; + } + var gpFrame = frames [ancestor * 2 + 1]; + var frameReg = '([^(]*)\\(?([^:]*:)\\/{2,3}([^:/]*:?)([^:]*):(\\d+):(\\d+)'; + var m = null; + + var r = new RegExp(frameReg); + m = r.exec(gpFrame); + + if (m) { + var filepath = m [4]; + var pathParts = filepath.py_split ('/'); + var filename = pathParts [len (pathParts) - 1]; + var lineno = m [5]; + return '{}:{}'.format (filename, lineno); + } + else { + console.log("Failed to Match Frame", gpFrame); + return 'UNKNOWN:???'; + } + } +}; +export var AutoTester = __class__ ('AutoTester', [object], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self, symbols) { + if (typeof symbols == 'undefined' || (symbols != null && symbols.hasOwnProperty ("__kwargtrans__"))) {; + var symbols = []; + }; + self.symbols = symbols; + self._currTestlet = 'UNKNOWN'; + self.testDict = dict ({}); + self.refDict = dict ({}); + if (__envir__.executor_name == __envir__.transpiler_name) { + self.ui = JSTesterUI (); + } + else { + self.ui = null; + } + });}, + get sortedRepr () {return __get__ (this, function (self, any) { + var tryGetNumKey = function (key) { + if (py_typeof (key) == str) { + try { + return int (key); + } + catch (__except0__) { + try { + return float (key); + } + catch (__except1__) { + return key; + } + } + } + else { + return key; + } + }; + if (py_typeof (any) == dict) { + return ('{' + ', '.join ((function () { + var __accu0__ = []; + for (var [index, key] of enumerate (sorted ((function () { + var __accu1__ = []; + for (var key of any.py_keys ()) { + __accu1__.append (tryGetNumKey (key)); + } + return __accu1__; + }) (), __kwargtrans__ ({key: (function __lambda__ (aKey) { + return str (aKey); + })})))) { + __accu0__.append ('{}: {}'.format (repr (key), repr (any [key]))); + } + return __accu0__; + }) ())) + '}'; + } + else if (py_typeof (any) == set) { + if (len (any)) { + return ('{' + ', '.join (sorted ((function () { + var __accu0__ = []; + for (var item of list (any)) { + __accu0__.append (str (item)); + } + return __accu0__; + }) ()))) + '}'; + } + else { + return repr (any); + } + } + else if (py_typeof (any) == range) { + return repr (list (any)); + } + else { + return repr (any); + } + });}, + get check () {return __get__ (this, function (self) { + var ancestor = 2; + if (arguments.length) { + var __ilastarg0__ = arguments.length - 1; + if (arguments [__ilastarg0__] && arguments [__ilastarg0__].hasOwnProperty ("__kwargtrans__")) { + var __allkwargs0__ = arguments [__ilastarg0__--]; + for (var __attrib0__ in __allkwargs0__) { + switch (__attrib0__) { + case 'self': var self = __allkwargs0__ [__attrib0__]; break; + case 'ancestor': var ancestor = __allkwargs0__ [__attrib0__]; break; + } + } + } + var args = tuple ([].slice.apply (arguments).slice (1, __ilastarg0__ + 1)); + } + else { + var args = tuple (); + } + var position = getFileLocation (ancestor); + var item = ' '.join ((function () { + var __accu0__ = []; + for (var arg of args) { + __accu0__.append (self.sortedRepr (arg)); + } + return __accu0__; + }) ()); + if (__envir__.executor_name == __envir__.transpiler_name) { + self.testDict [self._currTestlet].append (tuple ([position, item])); + } + else { + self.refDict [self._currTestlet].append (tuple ([position, item])); + } + });}, + get expectException () {return __get__ (this, function (self, func) { + try { + func (); + return 'no exception'; + } + catch (__except0__) { + if (isinstance (__except0__, Exception)) { + var exc = __except0__; + return 'exception'; + } + else { + throw __except0__; + } + } + });}, + get throwToError () {return __get__ (this, function (self, func) { + try { + return func (); + } + catch (__except0__) { + if (isinstance (__except0__, Exception)) { + var exc = __except0__; + return tuple ([null, '!!!{}'.format (str (exc))]); + } + else { + throw __except0__; + } + } + });}, + get checkEval () {return __get__ (this, function (self, func) { + var ret = self.throwToError (func); + self.check (ret, __kwargtrans__ ({ancestor: 3})); + });}, + get checkPad () {return __get__ (this, function (self, val, count) { + for (var i = 0; i < count; i++) { + self.check (val); + } + });}, + get _getTotalErrorCnt () {return __get__ (this, function (self, testData, refData) { + var errCount = 0; + for (var [i, [refPos, refItem]] of enumerate (refData)) { + try { + var __left0__ = testData [i]; + var testPos = __left0__ [0]; + var testItem = __left0__ [1]; + if (!(itemsAreEqual (testItem, refItem))) { + errCount++; + } + } + catch (__except0__) { + errCount++; + } + } + return errCount; + });}, + get compare () {return __get__ (this, function (self) { + var dc = DataConverter (); + self.refDict = dc.getPythonResults (); + var totalErrors = 0; + var sKeys = sorted (self.refDict.py_keys ()); + for (var key of sKeys) { + var refData = self.refDict [key]; + try { + var testData = self.testDict [key]; + if (testData === null) { + var __except0__ = KeyError ('No Test Data Module: {}'.format (key)); + __except0__.__cause__ = null; + throw __except0__; + } + } + catch (__except0__) { + if (isinstance (__except0__, KeyError)) { + self.ui.appendSeqRowName (key, len (refData)); + for (var [i, [refPos, refItem]] of enumerate (refData)) { + self.ui.appendTableResult (key, null, null, refPos, refItem, false); + } + continue; + } + else { + throw __except0__; + } + } + var errCount = self._getTotalErrorCnt (testData, refData); + var collapse = errCount == 0; + self.ui.appendSeqRowName (key, errCount); + for (var [i, [refPos, refItem]] of enumerate (refData)) { + try { + var __left0__ = testData [i]; + var testPos = __left0__ [0]; + var testItem = __left0__ [1]; + } + catch (__except0__) { + var testPos = null; + var testItem = null; + } + self.ui.appendTableResult (key, testPos, testItem, refPos, refItem, collapse); + } + totalErrors += errCount; + } + self.ui.setOutputStatus (totalErrors == 0); + });}, + get _cleanName () {return __get__ (this, function (self, py_name) { + var ret = py_name; + var invalidChars = ['~', '!', '@', '$', '%', '^', '&', '*', '(', ')', '+', '=', ',', '.', '/', "'", ';', ':', '"', '?', '>', '<', '[', ']', '\\', '{', '}', '|', '`', '#', ' ']; + for (var ch of invalidChars) { + var ret = ret.py_replace (ch, '_'); + } + return ret; + });}, + get run () {return __get__ (this, function (self, testlet, testletName) { + var testletName = self._cleanName (testletName); + self._currTestlet = testletName; + if (__envir__.executor_name == __envir__.transpiler_name) { + self.testDict [self._currTestlet] = []; + } + else { + self.refDict [self._currTestlet] = []; + } + try { + testlet.run (self); + } + catch (__except0__) { + if (isinstance (__except0__, Exception)) { + var exc = __except0__; + if (self.ui !== null) { + self.ui.setOutputStatus (false); + self.ui.showException (testletName, exc); + } + else { + __except0__.__cause__ = null; + throw __except0__; + } + } + else { + throw __except0__; + } + } + });}, + get done () {return __get__ (this, function (self) { + if (__envir__.executor_name == __envir__.transpiler_name) { + self.compare (); + } + else { + var fnameBase = __main__.__file__.py_replace ('\\', '/'); + var hg = HTMLGenerator (fnameBase); + hg.generate_html (self.refDict); + } + });} +}); + +//# sourceMappingURL=org.transcrypt.autotester.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/org.transcrypt.autotester.tree b/transcrypt/development/automated_tests/transcrypt/__target__38/org.transcrypt.autotester.tree new file mode 100644 index 000000000..5c3ee8ec7 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/org.transcrypt.autotester.tree @@ -0,0 +1,2561 @@ +file: Module + body: list + element: ImportFrom + module: str = org.transcrypt.stubs.browser + names: list + element: alias + name: str = __main__ + asname: NoneType = None + element: alias + name: str = __envir__ + asname: NoneType = None + element: alias + name: str = __pragma__ + asname: NoneType = None + level: int = 0 + element: ImportFrom + module: str = org.transcrypt.autotester.html + names: list + element: alias + name: str = HTMLGenerator + asname: NoneType = None + element: alias + name: str = DataConverter + asname: NoneType = None + element: alias + name: str = JSTesterUI + asname: NoneType = None + element: alias + name: str = itemsAreEqual + asname: NoneType = None + level: int = 0 + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = nokwargs + kind: NoneType = None + keywords: list + element: Import + names: list + element: alias + name: str = itertools + asname: NoneType = None + element: FunctionDef + name: str = getFileLocation + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = ancestor + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = This function needs to crawl up the stack + and find out where the ancestor caller of + this function was in the source code of either the + python or javascript, depending on environment. + @param ancestor the ancestor of this function that + we want to capture file information about. + @return string indicating the file position and line number + + kind: NoneType = None + element: If + test: Compare + left: Attribute + value: Name + id: str = __envir__ + ctx: Load + attr: str = executor_name + ctx: Load + ops: list + element: Eq + comparators: list + element: Attribute + value: Name + id: str = __envir__ + ctx: Load + attr: str = transpiler_name + ctx: Load + body: list + element: Assign + targets: list + element: Name + id: str = s + ctx: Store + value: Constant + value: NoneType = None + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = js + kind: NoneType = None + element: Constant + value: str = {} + kind: NoneType = None + element: Constant + value: str = + var e = new Error(); + if ( ! e.stack ) { + console.log("MAJOR ISSUE: Browser Error lacks Stack"); + } else { + s = e.stack; + } + + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = frames + ctx: Store + value: Constant + value: NoneType = None + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = js + kind: NoneType = None + element: Constant + value: str = {} + kind: NoneType = None + element: Constant + value: str = + var linereg = new RegExp("\n\r|\n", "g"); + frames = s.toString().split(linereg); + + kind: NoneType = None + keywords: list + element: If + test: BoolOp + op: Or + values: list + element: Compare + left: Name + id: str = frames + ctx: Load + ops: list + element: Is + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + element: Compare + left: Call + func: Name + id: str = len + ctx: Load + args: list + element: Name + id: str = frames + ctx: Load + keywords: list + ops: list + element: Lt + comparators: list + element: Constant + value: int = 2 + kind: NoneType = None + body: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = js + kind: NoneType = None + element: Constant + value: str = {} + kind: NoneType = None + element: Constant + value: str = console.log("Failed to Split Stack"); + kind: NoneType = None + keywords: list + element: Return + value: Constant + value: str = UNKNOWN:??? + kind: NoneType = None + orelse: list + element: Assign + targets: list + element: Name + id: str = gpFrame + ctx: Store + value: Subscript + value: Name + id: str = frames + ctx: Load + slice: Index + value: BinOp + left: BinOp + left: Name + id: str = ancestor + ctx: Load + op: Mult + right: Constant + value: int = 2 + kind: NoneType = None + op: Add + right: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = frameReg + ctx: Store + value: Constant + value: str = ([^(]*)\(?([^:]*:)\/{2,3}([^:/]*:?)([^:]*):(\d+):(\d+) + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = m + ctx: Store + value: Constant + value: NoneType = None + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = js + kind: NoneType = None + element: Constant + value: str = {} + kind: NoneType = None + element: Constant + value: str = + var r = new RegExp(frameReg); + m = r.exec(gpFrame); + + kind: NoneType = None + keywords: list + element: If + test: Name + id: str = m + ctx: Load + body: list + element: Assign + targets: list + element: Name + id: str = filepath + ctx: Store + value: Subscript + value: Name + id: str = m + ctx: Load + slice: Index + value: Constant + value: int = 4 + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = pathParts + ctx: Store + value: Call + func: Attribute + value: Name + id: str = filepath + ctx: Load + attr: str = split + ctx: Load + args: list + element: Constant + value: str = / + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = filename + ctx: Store + value: Subscript + value: Name + id: str = pathParts + ctx: Load + slice: Index + value: BinOp + left: Call + func: Name + id: str = len + ctx: Load + args: list + element: Name + id: str = pathParts + ctx: Load + keywords: list + op: Sub + right: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = lineno + ctx: Store + value: Subscript + value: Name + id: str = m + ctx: Load + slice: Index + value: Constant + value: int = 5 + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Return + value: Call + func: Attribute + value: Constant + value: str = {}:{} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Name + id: str = filename + ctx: Load + element: Name + id: str = lineno + ctx: Load + keywords: list + orelse: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = js + kind: NoneType = None + element: Constant + value: str = {} + kind: NoneType = None + element: Constant + value: str = console.log("Failed to Match Frame", gpFrame); + kind: NoneType = None + keywords: list + element: Return + value: Constant + value: str = UNKNOWN:??? + kind: NoneType = None + orelse: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = skip + kind: NoneType = None + keywords: list + element: ImportFrom + module: str = inspect + names: list + element: alias + name: str = getframeinfo + asname: NoneType = None + element: alias + name: str = stack + asname: NoneType = None + level: int = 0 + element: Assign + targets: list + element: Name + id: str = s + ctx: Store + value: Call + func: Name + id: str = stack + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = caller + ctx: Store + value: Call + func: Name + id: str = getframeinfo + ctx: Load + args: list + element: Subscript + value: Subscript + value: Name + id: str = s + ctx: Load + slice: Index + value: Name + id: str = ancestor + ctx: Load + ctx: Load + slice: Index + value: Constant + value: int = 0 + kind: NoneType = None + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = filepath + ctx: Store + value: Attribute + value: Name + id: str = caller + ctx: Load + attr: str = filename + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = pathParts + ctx: Store + value: Call + func: Attribute + value: Name + id: str = filepath + ctx: Load + attr: str = split + ctx: Load + args: list + element: Constant + value: str = / + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = filename + ctx: Store + value: Call + func: Attribute + value: Constant + value: str = / + kind: NoneType = None + attr: str = join + ctx: Load + args: list + element: Subscript + value: Name + id: str = pathParts + ctx: Load + slice: Slice + lower: UnaryOp + op: USub + operand: Constant + value: int = 2 + kind: NoneType = None + upper: NoneType = None + step: NoneType = None + ctx: Load + keywords: list + type_comment: NoneType = None + element: Return + value: BinOp + left: Constant + value: str = %s:%d + kind: NoneType = None + op: Mod + right: Tuple + elts: list + element: Name + id: str = filename + ctx: Load + element: Attribute + value: Name + id: str = caller + ctx: Load + attr: str = lineno + ctx: Load + ctx: Load + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = noskip + kind: NoneType = None + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: ClassDef + name: str = AutoTester + bases: list + keywords: list + body: list + element: Expr + value: Constant + value: str = Main testing class for comparing CPython to Transcrypt. This + class is primarily used by calling the "check" method to confirm that + the result is the same in both environments and "done" when all checks + for a particular module have been completed. + + kind: NoneType = None + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = symbols + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + element: List + elts: list + ctx: Load + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = symbols + ctx: Store + value: Name + id: str = symbols + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _currTestlet + ctx: Store + value: Constant + value: str = UNKNOWN + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = testDict + ctx: Store + value: Dict + keys: list + values: list + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = refDict + ctx: Store + value: Dict + keys: list + values: list + type_comment: NoneType = None + element: If + test: Compare + left: Attribute + value: Name + id: str = __envir__ + ctx: Load + attr: str = executor_name + ctx: Load + ops: list + element: Eq + comparators: list + element: Attribute + value: Name + id: str = __envir__ + ctx: Load + attr: str = transpiler_name + ctx: Load + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = ui + ctx: Store + value: Call + func: Name + id: str = JSTesterUI + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + orelse: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = ui + ctx: Store + value: Constant + value: NoneType = None + kind: NoneType = None + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = sortedRepr + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = any + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: FunctionDef + name: str = tryGetNumKey + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = key + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: Compare + left: Call + func: Name + id: str = type + ctx: Load + args: list + element: Name + id: str = key + ctx: Load + keywords: list + ops: list + element: Eq + comparators: list + element: Name + id: str = str + ctx: Load + body: list + element: Try + body: list + element: Return + value: Call + func: Name + id: str = int + ctx: Load + args: list + element: Name + id: str = key + ctx: Load + keywords: list + handlers: list + element: ExceptHandler + type: NoneType = None + name: NoneType = None + body: list + element: Try + body: list + element: Return + value: Call + func: Name + id: str = float + ctx: Load + args: list + element: Name + id: str = key + ctx: Load + keywords: list + handlers: list + element: ExceptHandler + type: NoneType = None + name: NoneType = None + body: list + element: Return + value: Name + id: str = key + ctx: Load + orelse: list + finalbody: list + orelse: list + finalbody: list + orelse: list + element: Return + value: Name + id: str = key + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: If + test: Compare + left: Call + func: Name + id: str = type + ctx: Load + args: list + element: Name + id: str = any + ctx: Load + keywords: list + ops: list + element: Eq + comparators: list + element: Name + id: str = dict + ctx: Load + body: list + element: Return + value: BinOp + left: BinOp + left: Constant + value: str = { + kind: NoneType = None + op: Add + right: Call + func: Attribute + value: Constant + value: str = , + kind: NoneType = None + attr: str = join + ctx: Load + args: list + element: ListComp + elt: Call + func: Attribute + value: Constant + value: str = {}: {} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Name + id: str = key + ctx: Load + keywords: list + element: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Subscript + value: Name + id: str = any + ctx: Load + slice: Index + value: Name + id: str = key + ctx: Load + ctx: Load + keywords: list + keywords: list + generators: list + element: comprehension + target: Tuple + elts: list + element: Name + id: str = index + ctx: Store + element: Name + id: str = key + ctx: Store + ctx: Store + iter: Call + func: Name + id: str = enumerate + ctx: Load + args: list + element: Call + func: Name + id: str = sorted + ctx: Load + args: list + element: ListComp + elt: Call + func: Name + id: str = tryGetNumKey + ctx: Load + args: list + element: Name + id: str = key + ctx: Load + keywords: list + generators: list + element: comprehension + target: Name + id: str = key + ctx: Store + iter: Call + func: Attribute + value: Name + id: str = any + ctx: Load + attr: str = keys + ctx: Load + args: list + keywords: list + ifs: list + is_async: int = 0 + keywords: list + element: keyword + arg: str = key + value: Lambda + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = aKey + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = aKey + ctx: Load + keywords: list + keywords: list + ifs: list + is_async: int = 0 + keywords: list + op: Add + right: Constant + value: str = } + kind: NoneType = None + orelse: list + element: If + test: Compare + left: Call + func: Name + id: str = type + ctx: Load + args: list + element: Name + id: str = any + ctx: Load + keywords: list + ops: list + element: Eq + comparators: list + element: Name + id: str = set + ctx: Load + body: list + element: If + test: Call + func: Name + id: str = len + ctx: Load + args: list + element: Name + id: str = any + ctx: Load + keywords: list + body: list + element: Return + value: BinOp + left: BinOp + left: Constant + value: str = { + kind: NoneType = None + op: Add + right: Call + func: Attribute + value: Constant + value: str = , + kind: NoneType = None + attr: str = join + ctx: Load + args: list + element: Call + func: Name + id: str = sorted + ctx: Load + args: list + element: ListComp + elt: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = item + ctx: Load + keywords: list + generators: list + element: comprehension + target: Name + id: str = item + ctx: Store + iter: Call + func: Name + id: str = list + ctx: Load + args: list + element: Name + id: str = any + ctx: Load + keywords: list + ifs: list + is_async: int = 0 + keywords: list + keywords: list + op: Add + right: Constant + value: str = } + kind: NoneType = None + orelse: list + element: Return + value: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Name + id: str = any + ctx: Load + keywords: list + orelse: list + element: If + test: Compare + left: Call + func: Name + id: str = type + ctx: Load + args: list + element: Name + id: str = any + ctx: Load + keywords: list + ops: list + element: Eq + comparators: list + element: Name + id: str = range + ctx: Load + body: list + element: Return + value: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Call + func: Name + id: str = list + ctx: Load + args: list + element: Name + id: str = any + ctx: Load + keywords: list + keywords: list + orelse: list + element: Return + value: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Name + id: str = any + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = kwargs + kind: NoneType = None + keywords: list + element: FunctionDef + name: str = check + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: arg + arg: str = args + annotation: NoneType = None + type_comment: NoneType = None + kwonlyargs: list + element: arg + arg: str = ancestor + annotation: NoneType = None + type_comment: NoneType = None + kw_defaults: list + element: Constant + value: int = 2 + kind: NoneType = None + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = Given a set of values from either the python or transcrypt + environments, we log the position of the check call in the test + and representative values of the passed arguments for later + comparison. + + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = position + ctx: Store + value: Call + func: Name + id: str = getFileLocation + ctx: Load + args: list + element: Name + id: str = ancestor + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = item + ctx: Store + value: Call + func: Attribute + value: Constant + value: str = + kind: NoneType = None + attr: str = join + ctx: Load + args: list + element: ListComp + elt: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = sortedRepr + ctx: Load + args: list + element: Name + id: str = arg + ctx: Load + keywords: list + generators: list + element: comprehension + target: Name + id: str = arg + ctx: Store + iter: Name + id: str = args + ctx: Load + ifs: list + is_async: int = 0 + keywords: list + type_comment: NoneType = None + element: If + test: Compare + left: Attribute + value: Name + id: str = __envir__ + ctx: Load + attr: str = executor_name + ctx: Load + ops: list + element: Eq + comparators: list + element: Attribute + value: Name + id: str = __envir__ + ctx: Load + attr: str = transpiler_name + ctx: Load + body: list + element: Expr + value: Call + func: Attribute + value: Subscript + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = testDict + ctx: Load + slice: Index + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _currTestlet + ctx: Load + ctx: Load + attr: str = append + ctx: Load + args: list + element: Tuple + elts: list + element: Name + id: str = position + ctx: Load + element: Name + id: str = item + ctx: Load + ctx: Load + keywords: list + orelse: list + element: Expr + value: Call + func: Attribute + value: Subscript + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = refDict + ctx: Load + slice: Index + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _currTestlet + ctx: Load + ctx: Load + attr: str = append + ctx: Load + args: list + element: Tuple + elts: list + element: Name + id: str = position + ctx: Load + element: Name + id: str = item + ctx: Load + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = nokwargs + kind: NoneType = None + keywords: list + element: FunctionDef + name: str = expectException + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = func + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = This method attempts to call the passed method and + checks to see whether an exception was generated. + @return string indicating "no exception" or "exception" + + kind: NoneType = None + element: Try + body: list + element: Expr + value: Call + func: Name + id: str = func + ctx: Load + args: list + keywords: list + element: Return + value: Constant + value: str = no exception + kind: NoneType = None + handlers: list + element: ExceptHandler + type: Name + id: str = Exception + ctx: Load + name: str = exc + body: list + element: Return + value: Constant + value: str = exception + kind: NoneType = None + orelse: list + finalbody: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = throwToError + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = func + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = This function invokes the passed function and then + converts an exception to an error response so that + the unit test can continue even in the case where an + exception may or may not occur. + + kind: NoneType = None + element: Try + body: list + element: Return + value: Call + func: Name + id: str = func + ctx: Load + args: list + keywords: list + handlers: list + element: ExceptHandler + type: Name + id: str = Exception + ctx: Load + name: str = exc + body: list + element: Return + value: Tuple + elts: list + element: Constant + value: NoneType = None + kind: NoneType = None + element: Call + func: Attribute + value: Constant + value: str = !!!{} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = exc + ctx: Load + keywords: list + keywords: list + ctx: Load + orelse: list + finalbody: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = checkEval + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = func + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = Check the result of the passed function which is + invoked without arguments. If this function throws an + exception, that exception is caught and converted to an error + with can be compared against the result. This allows the + user to control for exception that may or may not be generated + in the unit tests + + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = ret + ctx: Store + value: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = throwToError + ctx: Load + args: list + element: Name + id: str = func + ctx: Load + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = ret + ctx: Load + keywords: list + element: keyword + arg: str = ancestor + value: Constant + value: int = 3 + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = checkPad + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = val + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = count + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = This method is to help manage flow control in unit tests and + keep all unit tests aligned + + kind: NoneType = None + element: For + target: Name + id: str = i + ctx: Store + iter: Call + func: Name + id: str = range + ctx: Load + args: list + element: Constant + value: int = 0 + kind: NoneType = None + element: Name + id: str = count + ctx: Load + keywords: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = val + ctx: Load + keywords: list + orelse: list + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = _getTotalErrorCnt + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = testData + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = refData + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = This method determines the total number of non-matching + values in the test and reference data for a particular module. + + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = errCount + ctx: Store + value: Constant + value: int = 0 + kind: NoneType = None + type_comment: NoneType = None + element: For + target: Tuple + elts: list + element: Name + id: str = i + ctx: Store + element: Tuple + elts: list + element: Name + id: str = refPos + ctx: Store + element: Name + id: str = refItem + ctx: Store + ctx: Store + ctx: Store + iter: Call + func: Name + id: str = enumerate + ctx: Load + args: list + element: Name + id: str = refData + ctx: Load + keywords: list + body: list + element: Try + body: list + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = testPos + ctx: Store + element: Name + id: str = testItem + ctx: Store + ctx: Store + value: Subscript + value: Name + id: str = testData + ctx: Load + slice: Index + value: Name + id: str = i + ctx: Load + ctx: Load + type_comment: NoneType = None + element: If + test: UnaryOp + op: Not + operand: Call + func: Name + id: str = itemsAreEqual + ctx: Load + args: list + element: Name + id: str = testItem + ctx: Load + element: Name + id: str = refItem + ctx: Load + keywords: list + body: list + element: AugAssign + target: Name + id: str = errCount + ctx: Store + op: Add + value: Constant + value: int = 1 + kind: NoneType = None + orelse: list + handlers: list + element: ExceptHandler + type: NoneType = None + name: NoneType = None + body: list + element: AugAssign + target: Name + id: str = errCount + ctx: Store + op: Add + value: Constant + value: int = 1 + kind: NoneType = None + orelse: list + finalbody: list + orelse: list + type_comment: NoneType = None + element: Return + value: Name + id: str = errCount + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = compare + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Name + id: str = dc + ctx: Store + value: Call + func: Name + id: str = DataConverter + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = refDict + ctx: Store + value: Call + func: Attribute + value: Name + id: str = dc + ctx: Load + attr: str = getPythonResults + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = totalErrors + ctx: Store + value: Constant + value: int = 0 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = sKeys + ctx: Store + value: Call + func: Name + id: str = sorted + ctx: Load + args: list + element: Call + func: Attribute + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = refDict + ctx: Load + attr: str = keys + ctx: Load + args: list + keywords: list + keywords: list + type_comment: NoneType = None + element: For + target: Name + id: str = key + ctx: Store + iter: Name + id: str = sKeys + ctx: Load + body: list + element: Assign + targets: list + element: Name + id: str = refData + ctx: Store + value: Subscript + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = refDict + ctx: Load + slice: Index + value: Name + id: str = key + ctx: Load + ctx: Load + type_comment: NoneType = None + element: Try + body: list + element: Assign + targets: list + element: Name + id: str = testData + ctx: Store + value: Subscript + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = testDict + ctx: Load + slice: Index + value: Name + id: str = key + ctx: Load + ctx: Load + type_comment: NoneType = None + element: If + test: Compare + left: Name + id: str = testData + ctx: Load + ops: list + element: Is + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Raise + exc: Call + func: Name + id: str = KeyError + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = No Test Data Module: {} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Name + id: str = key + ctx: Load + keywords: list + keywords: list + cause: NoneType = None + orelse: list + handlers: list + element: ExceptHandler + type: Name + id: str = KeyError + ctx: Load + name: NoneType = None + body: list + element: Expr + value: Call + func: Attribute + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = ui + ctx: Load + attr: str = appendSeqRowName + ctx: Load + args: list + element: Name + id: str = key + ctx: Load + element: Call + func: Name + id: str = len + ctx: Load + args: list + element: Name + id: str = refData + ctx: Load + keywords: list + keywords: list + element: For + target: Tuple + elts: list + element: Name + id: str = i + ctx: Store + element: Tuple + elts: list + element: Name + id: str = refPos + ctx: Store + element: Name + id: str = refItem + ctx: Store + ctx: Store + ctx: Store + iter: Call + func: Name + id: str = enumerate + ctx: Load + args: list + element: Name + id: str = refData + ctx: Load + keywords: list + body: list + element: Expr + value: Call + func: Attribute + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = ui + ctx: Load + attr: str = appendTableResult + ctx: Load + args: list + element: Name + id: str = key + ctx: Load + element: Constant + value: NoneType = None + kind: NoneType = None + element: Constant + value: NoneType = None + kind: NoneType = None + element: Name + id: str = refPos + ctx: Load + element: Name + id: str = refItem + ctx: Load + element: Constant + value: bool = False + kind: NoneType = None + keywords: list + orelse: list + type_comment: NoneType = None + element: Continue + orelse: list + finalbody: list + element: Assign + targets: list + element: Name + id: str = errCount + ctx: Store + value: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _getTotalErrorCnt + ctx: Load + args: list + element: Name + id: str = testData + ctx: Load + element: Name + id: str = refData + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = collapse + ctx: Store + value: Compare + left: Name + id: str = errCount + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = ui + ctx: Load + attr: str = appendSeqRowName + ctx: Load + args: list + element: Name + id: str = key + ctx: Load + element: Name + id: str = errCount + ctx: Load + keywords: list + element: For + target: Tuple + elts: list + element: Name + id: str = i + ctx: Store + element: Tuple + elts: list + element: Name + id: str = refPos + ctx: Store + element: Name + id: str = refItem + ctx: Store + ctx: Store + ctx: Store + iter: Call + func: Name + id: str = enumerate + ctx: Load + args: list + element: Name + id: str = refData + ctx: Load + keywords: list + body: list + element: Try + body: list + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = testPos + ctx: Store + element: Name + id: str = testItem + ctx: Store + ctx: Store + value: Subscript + value: Name + id: str = testData + ctx: Load + slice: Index + value: Name + id: str = i + ctx: Load + ctx: Load + type_comment: NoneType = None + handlers: list + element: ExceptHandler + type: NoneType = None + name: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = testPos + ctx: Store + value: Constant + value: NoneType = None + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = testItem + ctx: Store + value: Constant + value: NoneType = None + kind: NoneType = None + type_comment: NoneType = None + orelse: list + finalbody: list + element: Expr + value: Call + func: Attribute + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = ui + ctx: Load + attr: str = appendTableResult + ctx: Load + args: list + element: Name + id: str = key + ctx: Load + element: Name + id: str = testPos + ctx: Load + element: Name + id: str = testItem + ctx: Load + element: Name + id: str = refPos + ctx: Load + element: Name + id: str = refItem + ctx: Load + element: Name + id: str = collapse + ctx: Load + keywords: list + orelse: list + type_comment: NoneType = None + element: AugAssign + target: Name + id: str = totalErrors + ctx: Store + op: Add + value: Name + id: str = errCount + ctx: Load + orelse: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = ui + ctx: Load + attr: str = setOutputStatus + ctx: Load + args: list + element: Compare + left: Name + id: str = totalErrors + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = _cleanName + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = name + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = Clean the passed name of characters that won't be allowed + in CSS class or HTML id strings. + + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = ret + ctx: Store + value: Name + id: str = name + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = invalidChars + ctx: Store + value: List + elts: list + element: Constant + value: str = ~ + kind: NoneType = None + element: Constant + value: str = ! + kind: NoneType = None + element: Constant + value: str = @ + kind: NoneType = None + element: Constant + value: str = $ + kind: NoneType = None + element: Constant + value: str = % + kind: NoneType = None + element: Constant + value: str = ^ + kind: NoneType = None + element: Constant + value: str = & + kind: NoneType = None + element: Constant + value: str = * + kind: NoneType = None + element: Constant + value: str = ( + kind: NoneType = None + element: Constant + value: str = ) + kind: NoneType = None + element: Constant + value: str = + + kind: NoneType = None + element: Constant + value: str = = + kind: NoneType = None + element: Constant + value: str = , + kind: NoneType = None + element: Constant + value: str = . + kind: NoneType = None + element: Constant + value: str = / + kind: NoneType = None + element: Constant + value: str = ' + kind: NoneType = None + element: Constant + value: str = ; + kind: NoneType = None + element: Constant + value: str = : + kind: NoneType = None + element: Constant + value: str = " + kind: NoneType = None + element: Constant + value: str = ? + kind: NoneType = None + element: Constant + value: str = > + kind: NoneType = None + element: Constant + value: str = < + kind: NoneType = None + element: Constant + value: str = [ + kind: NoneType = None + element: Constant + value: str = ] + kind: NoneType = None + element: Constant + value: str = \ + kind: NoneType = None + element: Constant + value: str = { + kind: NoneType = None + element: Constant + value: str = } + kind: NoneType = None + element: Constant + value: str = | + kind: NoneType = None + element: Constant + value: str = ` + kind: NoneType = None + element: Constant + value: str = # + kind: NoneType = None + element: Constant + value: str = + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: For + target: Name + id: str = ch + ctx: Store + iter: Name + id: str = invalidChars + ctx: Load + body: list + element: Assign + targets: list + element: Name + id: str = ret + ctx: Store + value: Call + func: Attribute + value: Name + id: str = ret + ctx: Load + attr: str = replace + ctx: Load + args: list + element: Name + id: str = ch + ctx: Load + element: Constant + value: str = _ + kind: NoneType = None + keywords: list + type_comment: NoneType = None + orelse: list + type_comment: NoneType = None + element: Return + value: Name + id: str = ret + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = run + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = testlet + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = testletName + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Name + id: str = testletName + ctx: Store + value: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _cleanName + ctx: Load + args: list + element: Name + id: str = testletName + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _currTestlet + ctx: Store + value: Name + id: str = testletName + ctx: Load + type_comment: NoneType = None + element: If + test: Compare + left: Attribute + value: Name + id: str = __envir__ + ctx: Load + attr: str = executor_name + ctx: Load + ops: list + element: Eq + comparators: list + element: Attribute + value: Name + id: str = __envir__ + ctx: Load + attr: str = transpiler_name + ctx: Load + body: list + element: Assign + targets: list + element: Subscript + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = testDict + ctx: Load + slice: Index + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _currTestlet + ctx: Load + ctx: Store + value: List + elts: list + ctx: Load + type_comment: NoneType = None + orelse: list + element: Assign + targets: list + element: Subscript + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = refDict + ctx: Load + slice: Index + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _currTestlet + ctx: Load + ctx: Store + value: List + elts: list + ctx: Load + type_comment: NoneType = None + element: Try + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = testlet + ctx: Load + attr: str = run + ctx: Load + args: list + element: Name + id: str = self + ctx: Load + keywords: list + handlers: list + element: ExceptHandler + type: Name + id: str = Exception + ctx: Load + name: str = exc + body: list + element: If + test: Compare + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = ui + ctx: Load + ops: list + element: IsNot + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Expr + value: Call + func: Attribute + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = ui + ctx: Load + attr: str = setOutputStatus + ctx: Load + args: list + element: Constant + value: bool = False + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = ui + ctx: Load + attr: str = showException + ctx: Load + args: list + element: Name + id: str = testletName + ctx: Load + element: Name + id: str = exc + ctx: Load + keywords: list + orelse: list + element: Raise + exc: NoneType = None + cause: NoneType = None + orelse: list + finalbody: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = done + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: Compare + left: Attribute + value: Name + id: str = __envir__ + ctx: Load + attr: str = executor_name + ctx: Load + ops: list + element: Eq + comparators: list + element: Attribute + value: Name + id: str = __envir__ + ctx: Load + attr: str = transpiler_name + ctx: Load + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = compare + ctx: Load + args: list + keywords: list + orelse: list + element: Assign + targets: list + element: Name + id: str = fnameBase + ctx: Store + value: Call + func: Attribute + value: Attribute + value: Name + id: str = __main__ + ctx: Load + attr: str = __file__ + ctx: Load + attr: str = replace + ctx: Load + args: list + element: Constant + value: str = \ + kind: NoneType = None + element: Constant + value: str = / + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = hg + ctx: Store + value: Call + func: Name + id: str = HTMLGenerator + ctx: Load + args: list + element: Name + id: str = fnameBase + ctx: Load + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = hg + ctx: Load + attr: str = generate_html + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = refDict + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/properties.js b/transcrypt/development/automated_tests/transcrypt/__target__38/properties.js new file mode 100644 index 000000000..5805538a7 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/properties.js @@ -0,0 +1,96 @@ +// Transcrypt'ed from Python, 2021-05-14 15:00:24 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +var __all__ = dict ({get A () {return A;}, set A (value) {A = value;}, get B () {return B;}, set B (value) {B = value;}, get C () {return C;}, set C (value) {C = value;}, get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get run () {return run;}, set run (value) {run = value;}}); +var __name__ = 'properties'; +export var A = __class__ ('A', [object], { + __module__: __name__, + p: 1234, + get getX () {return __get__ (this, function (self) { + return self._x; + });}, + get setX () {return __get__ (this, function (self, value) { + self._x = value; + });}, + get getY () {return __get__ (this, function (self) { + return self._y; + });}, + get setY () {return __get__ (this, function (self, value) { + self._y = 1000 + value; + });}, + get getY2 () {return __get__ (this, function (self) { + return self._y; + });}, + get setY2 () {return __get__ (this, function (self, value) { + self._y = value; + });}, + get getT () {return __get__ (this, function (self) { + return self._t; + });}, + get setT () {return __get__ (this, function (self, value) { + self._t = value; + });}, + get getU () {return __get__ (this, function (self) { + return self._u + 10000; + });}, + get setU () {return __get__ (this, function (self, value) { + self._u = value - 5000; + });} +}); +var __left0__ = tuple ([property.call (A, A.getX, A.setX), property.call (A, A.getY, A.setY), property.call (A, A.getY2, A.setY2)]); +Object.defineProperty (A, 'x', __left0__ [0]); +Object.defineProperty (A, 'y', __left0__ [1]); +Object.defineProperty (A, 'y2', __left0__ [2]); +Object.defineProperty (A, 't', property.call (A, A.getT, A.setT)); +Object.defineProperty (A, 'u', property.call (A, A.getU, A.setU)); +A.q = 5678; +export var B = __class__ ('B', [object], { + __module__: __name__, + get getZ () {return __get__ (this, function (self) { + return self.z_; + });}, + get setZ () {return __get__ (this, function (self, value) { + self.z_ = value; + });} +}); +Object.defineProperty (B, 'z', property.call (B, B.getZ, B.setZ)); +export var C = __class__ ('C', [object], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self) { + self.offset = 1234; + });}, + get getW () {return __get__ (this, function (self) { + return self.w_ + self.offset; + });}, + get setW () {return __get__ (this, function (self, value) { + self.w_ = value - self.offset; + });} +}); +Object.defineProperty (C, 'w', property.call (C, C.getW, C.setW)); +export var run = function (autoTester) { + var a1 = A (); + var a2 = A (); + a1.y2 = 1000; + a2.y2 = 2000; + a1.x = 5; + a1.y = 6; + a2.x = 7; + a2.y = 8; + a1.t = 77; + a1.u = 88; + autoTester.check (a1.x, a1.y, a1.y2); + autoTester.check (a2.x, a2.y, a2.y2); + autoTester.check (a1.p, a2.p, a1.q, a2.q); + autoTester.check (a1.t, a1.u); + var b = B (); + var c = C (); + b.z = 100100; + c.z = 200200; + c.w = 300300; + autoTester.check (a1.x, b.z, c.z, c.w); + c.w = 400400; + c.z = 500500; + b.z = 600600; + autoTester.check (a1.x, b.z, c.z, c.w); +}; + +//# sourceMappingURL=properties.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/properties.tree b/transcrypt/development/automated_tests/transcrypt/__target__38/properties.tree new file mode 100644 index 000000000..c6df78f74 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/properties.tree @@ -0,0 +1,1056 @@ +file: Module + body: list + element: ClassDef + name: str = A + bases: list + keywords: list + body: list + element: Assign + targets: list + element: Name + id: str = p + ctx: Store + value: Constant + value: int = 1234 + kind: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = getX + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _x + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = setX + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = value + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _x + ctx: Store + value: Name + id: str = value + ctx: Load + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = getY + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _y + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = setY + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = value + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _y + ctx: Store + value: BinOp + left: Constant + value: int = 1000 + kind: NoneType = None + op: Add + right: Name + id: str = value + ctx: Load + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = getY2 + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _y + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = setY2 + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = value + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _y + ctx: Store + value: Name + id: str = value + ctx: Load + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = getT + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _t + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = setT + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = value + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _t + ctx: Store + value: Name + id: str = value + ctx: Load + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = getU + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: BinOp + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _u + ctx: Load + op: Add + right: Constant + value: int = 10000 + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = setU + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = value + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _u + ctx: Store + value: BinOp + left: Name + id: str = value + ctx: Load + op: Sub + right: Constant + value: int = 5000 + kind: NoneType = None + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = x + ctx: Store + element: Name + id: str = y + ctx: Store + element: Name + id: str = y2 + ctx: Store + ctx: Store + value: Tuple + elts: list + element: Call + func: Name + id: str = property + ctx: Load + args: list + element: Name + id: str = getX + ctx: Load + element: Name + id: str = setX + ctx: Load + keywords: list + element: Call + func: Name + id: str = property + ctx: Load + args: list + element: Name + id: str = getY + ctx: Load + element: Name + id: str = setY + ctx: Load + keywords: list + element: Call + func: Name + id: str = property + ctx: Load + args: list + element: Name + id: str = getY2 + ctx: Load + element: Name + id: str = setY2 + ctx: Load + keywords: list + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = t + ctx: Store + value: Call + func: Name + id: str = property + ctx: Load + args: list + element: Name + id: str = getT + ctx: Load + element: Name + id: str = setT + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = u + ctx: Store + value: Call + func: Name + id: str = property + ctx: Load + args: list + element: Name + id: str = getU + ctx: Load + element: Name + id: str = setU + ctx: Load + keywords: list + type_comment: NoneType = None + decorator_list: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = A + ctx: Load + attr: str = q + ctx: Store + value: Constant + value: int = 5678 + kind: NoneType = None + type_comment: NoneType = None + element: ClassDef + name: str = B + bases: list + keywords: list + body: list + element: FunctionDef + name: str = getZ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = z_ + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = setZ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = value + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = z_ + ctx: Store + value: Name + id: str = value + ctx: Load + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = z + ctx: Store + value: Call + func: Name + id: str = property + ctx: Load + args: list + element: Name + id: str = getZ + ctx: Load + element: Name + id: str = setZ + ctx: Load + keywords: list + type_comment: NoneType = None + decorator_list: list + element: ClassDef + name: str = C + bases: list + keywords: list + body: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = offset + ctx: Store + value: Constant + value: int = 1234 + kind: NoneType = None + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = getW + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: BinOp + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = w_ + ctx: Load + op: Add + right: Attribute + value: Name + id: str = self + ctx: Load + attr: str = offset + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = setW + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = value + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = w_ + ctx: Store + value: BinOp + left: Name + id: str = value + ctx: Load + op: Sub + right: Attribute + value: Name + id: str = self + ctx: Load + attr: str = offset + ctx: Load + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = w + ctx: Store + value: Call + func: Name + id: str = property + ctx: Load + args: list + element: Name + id: str = getW + ctx: Load + element: Name + id: str = setW + ctx: Load + keywords: list + type_comment: NoneType = None + decorator_list: list + element: FunctionDef + name: str = run + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = autoTester + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Name + id: str = a1 + ctx: Store + value: Call + func: Name + id: str = A + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = a2 + ctx: Store + value: Call + func: Name + id: str = A + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = a1 + ctx: Load + attr: str = y2 + ctx: Store + value: Constant + value: int = 1000 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = a2 + ctx: Load + attr: str = y2 + ctx: Store + value: Constant + value: int = 2000 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = a1 + ctx: Load + attr: str = x + ctx: Store + value: Constant + value: int = 5 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = a1 + ctx: Load + attr: str = y + ctx: Store + value: Constant + value: int = 6 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = a2 + ctx: Load + attr: str = x + ctx: Store + value: Constant + value: int = 7 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = a2 + ctx: Load + attr: str = y + ctx: Store + value: Constant + value: int = 8 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = a1 + ctx: Load + attr: str = t + ctx: Store + value: Constant + value: int = 77 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = a1 + ctx: Load + attr: str = u + ctx: Store + value: Constant + value: int = 88 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = a1 + ctx: Load + attr: str = x + ctx: Load + element: Attribute + value: Name + id: str = a1 + ctx: Load + attr: str = y + ctx: Load + element: Attribute + value: Name + id: str = a1 + ctx: Load + attr: str = y2 + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = a2 + ctx: Load + attr: str = x + ctx: Load + element: Attribute + value: Name + id: str = a2 + ctx: Load + attr: str = y + ctx: Load + element: Attribute + value: Name + id: str = a2 + ctx: Load + attr: str = y2 + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = a1 + ctx: Load + attr: str = p + ctx: Load + element: Attribute + value: Name + id: str = a2 + ctx: Load + attr: str = p + ctx: Load + element: Attribute + value: Name + id: str = a1 + ctx: Load + attr: str = q + ctx: Load + element: Attribute + value: Name + id: str = a2 + ctx: Load + attr: str = q + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = a1 + ctx: Load + attr: str = t + ctx: Load + element: Attribute + value: Name + id: str = a1 + ctx: Load + attr: str = u + ctx: Load + keywords: list + element: Assign + targets: list + element: Name + id: str = b + ctx: Store + value: Call + func: Name + id: str = B + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = c + ctx: Store + value: Call + func: Name + id: str = C + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = b + ctx: Load + attr: str = z + ctx: Store + value: Constant + value: int = 100100 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = c + ctx: Load + attr: str = z + ctx: Store + value: Constant + value: int = 200200 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = c + ctx: Load + attr: str = w + ctx: Store + value: Constant + value: int = 300300 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = a1 + ctx: Load + attr: str = x + ctx: Load + element: Attribute + value: Name + id: str = b + ctx: Load + attr: str = z + ctx: Load + element: Attribute + value: Name + id: str = c + ctx: Load + attr: str = z + ctx: Load + element: Attribute + value: Name + id: str = c + ctx: Load + attr: str = w + ctx: Load + keywords: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = c + ctx: Load + attr: str = w + ctx: Store + value: Constant + value: int = 400400 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = c + ctx: Load + attr: str = z + ctx: Store + value: Constant + value: int = 500500 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = b + ctx: Load + attr: str = z + ctx: Store + value: Constant + value: int = 600600 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = a1 + ctx: Load + attr: str = x + ctx: Load + element: Attribute + value: Name + id: str = b + ctx: Load + attr: str = z + ctx: Load + element: Attribute + value: Name + id: str = c + ctx: Load + attr: str = z + ctx: Load + element: Attribute + value: Name + id: str = c + ctx: Load + attr: str = w + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/proxies.js b/transcrypt/development/automated_tests/transcrypt/__target__38/proxies.js new file mode 100644 index 000000000..61be58cbb --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/proxies.js @@ -0,0 +1,124 @@ +// Transcrypt'ed from Python, 2021-05-14 15:00:24 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get run () {return run;}, set run (value) {run = value;}}); +var __name__ = 'proxies'; +export var run = function (autoTester) { + var CodedStore = __class__ ('CodedStore', [object], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self) { + try { + self ["__dict__"] = {} + } + catch (__except0__) { + // pass; + } + });}, + get __setattr__ () {return __get__ (this, function (self, py_name, message) { + self.__dict__ ['_' + py_name] = 'coded_' + message; + });}, + get __getattr__ () {return __get__ (this, function (self, py_name) { + return 'decoded_' + self.__dict__ ['_' + py_name]; + });}, + get peek () {return __get__ (this, function (self, py_name) { + return self.__dict__ ['_' + py_name]; + });} + }); + var s = CodedStore (); + s.john = 'brown'; + s.mary = 'white'; + autoTester.check (s.peek ('john')); + autoTester.check (s.peek ('mary')); + autoTester.check (s.john); + autoTester.check (s.mary); + var A = __class__ ('A', [object], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self) { + self.p = 1; + self.q = 2; + });} + }); + var B = __class__ ('B', [A], { + __module__: __name__, + get __getattr__ () {return __get__ (this, function (self, py_name) { + return 'Faked {}'.format (py_name); + });} + }); + var C = __class__ ('C', [A], { + __module__: __name__, + get __setattr__ () {return __get__ (this, function (self, py_name, value) { + autoTester.check ('Set faked {}'.format (py_name)); + A.__setattr__ (self, py_name, value); + });} + }); + var D = __class__ ('D', [B, C], { + __module__: __name__, + }); + var a = A (); + var b = B (); + var c = C (); + var d = D (); + autoTester.check (a.p, a.q); + a.p = 3; + autoTester.check (a.p, a.q); + autoTester.check (b.p, b.q, b.r, b.s); + b.p = 4; + b.r = 5; + autoTester.check (b.p, b.q, b.r, b.s); + autoTester.check (c.p, c.q); + c.p = 6; + c.q = 7; + autoTester.check (c.p, c.q); + autoTester.check (d.p, d.q, d.r, d.s); + d.p = 8; + d.q = 9; + d.r = 10; + d.s = 11; + autoTester.check (d.p, d.q, d.r, d.s); + autoTester.check ('Issue 587'); + var Element = __class__ ('Element', [object], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self) { + self.message = 'Goodbye'; + });}, + get sayBye () {return __get__ (this, function (self) { + autoTester.check (self.message); + });} + }); + var Wrapper = __class__ ('Wrapper', [object], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self, element) { + self.element = element; + });}, + get __setattr__ () {return __get__ (this, function (self, py_name, value) { + if (py_name != 'element' && hasattr (self.element, py_name)) { + setattr (self.element, py_name, value); + } + else { + self.__dict__ [py_name] = value; + } + });}, + get __getattr__ () {return __get__ (this, function (self, py_name) { + var result = getattr (self.element, py_name); + if (hasattr (result, 'call') && hasattr (result, 'bind')) { + var result = result.bind (self.element); + } + return result; + });}, + get sayHello () {return __get__ (this, function (self) { + autoTester.check ('Hello'); + return self; + });} + }); + var e = Element (); + var w = Wrapper (e); + e.sayBye (); + w.sayBye (); + w.sayHello ().sayBye (); + w.message = 'Bye'; + e.sayBye (); + w.sayBye (); + w.sayHello ().sayBye (); + autoTester.check ('End issue 587'); +}; + +//# sourceMappingURL=proxies.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/proxies.tree b/transcrypt/development/automated_tests/transcrypt/__target__38/proxies.tree new file mode 100644 index 000000000..699e87598 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/proxies.tree @@ -0,0 +1,1382 @@ +file: Module + body: list + element: ImportFrom + module: str = org.transcrypt.stubs.browser + names: list + element: alias + name: str = __pragma__ + asname: NoneType = None + level: int = 0 + element: FunctionDef + name: str = run + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = autoTester + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: ClassDef + name: str = CodedStore + bases: list + keywords: list + body: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Try + body: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = js + kind: NoneType = None + element: Constant + value: str = {} + kind: NoneType = None + element: Constant + value: str = self ["__dict__"] = {} + kind: NoneType = None + keywords: list + handlers: list + element: ExceptHandler + type: NoneType = None + name: NoneType = None + body: list + element: Pass + orelse: list + finalbody: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __setattr__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = name + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = message + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Subscript + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = __dict__ + ctx: Load + slice: Index + value: BinOp + left: Constant + value: str = _ + kind: NoneType = None + op: Add + right: Name + id: str = name + ctx: Load + ctx: Store + value: BinOp + left: Constant + value: str = coded_ + kind: NoneType = None + op: Add + right: Name + id: str = message + ctx: Load + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __getattr__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = name + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: BinOp + left: Constant + value: str = decoded_ + kind: NoneType = None + op: Add + right: Subscript + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = __dict__ + ctx: Load + slice: Index + value: BinOp + left: Constant + value: str = _ + kind: NoneType = None + op: Add + right: Name + id: str = name + ctx: Load + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = peek + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = name + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Subscript + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = __dict__ + ctx: Load + slice: Index + value: BinOp + left: Constant + value: str = _ + kind: NoneType = None + op: Add + right: Name + id: str = name + ctx: Load + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: Assign + targets: list + element: Name + id: str = s + ctx: Store + value: Call + func: Name + id: str = CodedStore + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = s + ctx: Load + attr: str = john + ctx: Store + value: Constant + value: str = brown + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = s + ctx: Load + attr: str = mary + ctx: Store + value: Constant + value: str = white + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = s + ctx: Load + attr: str = peek + ctx: Load + args: list + element: Constant + value: str = john + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = s + ctx: Load + attr: str = peek + ctx: Load + args: list + element: Constant + value: str = mary + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = s + ctx: Load + attr: str = john + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = s + ctx: Load + attr: str = mary + ctx: Load + keywords: list + element: Expr + value: Constant + value: str = + The code above produces the following output: + 'coded_brown' + 'coded_white' + 'decoded_coded_brown' + 'decoded_coded_white' + + kind: NoneType = None + element: ClassDef + name: str = A + bases: list + keywords: list + body: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = p + ctx: Store + value: Constant + value: int = 1 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = q + ctx: Store + value: Constant + value: int = 2 + kind: NoneType = None + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: ClassDef + name: str = B + bases: list + element: Name + id: str = A + ctx: Load + keywords: list + body: list + element: FunctionDef + name: str = __getattr__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = name + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Call + func: Attribute + value: Constant + value: str = Faked {} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Name + id: str = name + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: ClassDef + name: str = C + bases: list + element: Name + id: str = A + ctx: Load + keywords: list + body: list + element: FunctionDef + name: str = __setattr__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = name + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = value + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = Set faked {} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Name + id: str = name + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = A + ctx: Load + attr: str = __setattr__ + ctx: Load + args: list + element: Name + id: str = self + ctx: Load + element: Name + id: str = name + ctx: Load + element: Name + id: str = value + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: ClassDef + name: str = D + bases: list + element: Name + id: str = B + ctx: Load + element: Name + id: str = C + ctx: Load + keywords: list + body: list + element: Pass + decorator_list: list + element: Assign + targets: list + element: Name + id: str = a + ctx: Store + value: Call + func: Name + id: str = A + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = b + ctx: Store + value: Call + func: Name + id: str = B + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = c + ctx: Store + value: Call + func: Name + id: str = C + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = d + ctx: Store + value: Call + func: Name + id: str = D + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = a + ctx: Load + attr: str = p + ctx: Load + element: Attribute + value: Name + id: str = a + ctx: Load + attr: str = q + ctx: Load + keywords: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = a + ctx: Load + attr: str = p + ctx: Store + value: Constant + value: int = 3 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = a + ctx: Load + attr: str = p + ctx: Load + element: Attribute + value: Name + id: str = a + ctx: Load + attr: str = q + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = b + ctx: Load + attr: str = p + ctx: Load + element: Attribute + value: Name + id: str = b + ctx: Load + attr: str = q + ctx: Load + element: Attribute + value: Name + id: str = b + ctx: Load + attr: str = r + ctx: Load + element: Attribute + value: Name + id: str = b + ctx: Load + attr: str = s + ctx: Load + keywords: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = b + ctx: Load + attr: str = p + ctx: Store + value: Constant + value: int = 4 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = b + ctx: Load + attr: str = r + ctx: Store + value: Constant + value: int = 5 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = b + ctx: Load + attr: str = p + ctx: Load + element: Attribute + value: Name + id: str = b + ctx: Load + attr: str = q + ctx: Load + element: Attribute + value: Name + id: str = b + ctx: Load + attr: str = r + ctx: Load + element: Attribute + value: Name + id: str = b + ctx: Load + attr: str = s + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = c + ctx: Load + attr: str = p + ctx: Load + element: Attribute + value: Name + id: str = c + ctx: Load + attr: str = q + ctx: Load + keywords: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = c + ctx: Load + attr: str = p + ctx: Store + value: Constant + value: int = 6 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = c + ctx: Load + attr: str = q + ctx: Store + value: Constant + value: int = 7 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = c + ctx: Load + attr: str = p + ctx: Load + element: Attribute + value: Name + id: str = c + ctx: Load + attr: str = q + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = d + ctx: Load + attr: str = p + ctx: Load + element: Attribute + value: Name + id: str = d + ctx: Load + attr: str = q + ctx: Load + element: Attribute + value: Name + id: str = d + ctx: Load + attr: str = r + ctx: Load + element: Attribute + value: Name + id: str = d + ctx: Load + attr: str = s + ctx: Load + keywords: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = d + ctx: Load + attr: str = p + ctx: Store + value: Constant + value: int = 8 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = d + ctx: Load + attr: str = q + ctx: Store + value: Constant + value: int = 9 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = d + ctx: Load + attr: str = r + ctx: Store + value: Constant + value: int = 10 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = d + ctx: Load + attr: str = s + ctx: Store + value: Constant + value: int = 11 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = d + ctx: Load + attr: str = p + ctx: Load + element: Attribute + value: Name + id: str = d + ctx: Load + attr: str = q + ctx: Load + element: Attribute + value: Name + id: str = d + ctx: Load + attr: str = r + ctx: Load + element: Attribute + value: Name + id: str = d + ctx: Load + attr: str = s + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Issue 587 + kind: NoneType = None + keywords: list + element: ClassDef + name: str = Element + bases: list + keywords: list + body: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = message + ctx: Store + value: Constant + value: str = Goodbye + kind: NoneType = None + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = sayBye + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = message + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: ClassDef + name: str = Wrapper + bases: list + keywords: list + body: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = element + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = element + ctx: Store + value: Name + id: str = element + ctx: Load + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __setattr__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = name + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = value + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = set attribute on element if it already has the attribute + kind: NoneType = None + element: If + test: BoolOp + op: And + values: list + element: Compare + left: Name + id: str = name + ctx: Load + ops: list + element: NotEq + comparators: list + element: Constant + value: str = element + kind: NoneType = None + element: Call + func: Name + id: str = hasattr + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = element + ctx: Load + element: Name + id: str = name + ctx: Load + keywords: list + body: list + element: Expr + value: Call + func: Name + id: str = setattr + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = element + ctx: Load + element: Name + id: str = name + ctx: Load + element: Name + id: str = value + ctx: Load + keywords: list + orelse: list + element: Assign + targets: list + element: Subscript + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = __dict__ + ctx: Load + slice: Index + value: Name + id: str = name + ctx: Load + ctx: Store + value: Name + id: str = value + ctx: Load + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __getattr__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = name + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = get attribute from element if this object doesn't have the attribute + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = result + ctx: Store + value: Call + func: Name + id: str = getattr + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = element + ctx: Load + element: Name + id: str = name + ctx: Load + keywords: list + type_comment: NoneType = None + element: If + test: BoolOp + op: And + values: list + element: Call + func: Name + id: str = hasattr + ctx: Load + args: list + element: Name + id: str = result + ctx: Load + element: Constant + value: str = call + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = hasattr + ctx: Load + args: list + element: Name + id: str = result + ctx: Load + element: Constant + value: str = bind + kind: NoneType = None + keywords: list + body: list + element: Assign + targets: list + element: Name + id: str = result + ctx: Store + value: Call + func: Attribute + value: Name + id: str = result + ctx: Load + attr: str = bind + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = element + ctx: Load + keywords: list + type_comment: NoneType = None + orelse: list + element: Return + value: Name + id: str = result + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = sayHello + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Hello + kind: NoneType = None + keywords: list + element: Return + value: Name + id: str = self + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: Assign + targets: list + element: Name + id: str = e + ctx: Store + value: Call + func: Name + id: str = Element + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = w + ctx: Store + value: Call + func: Name + id: str = Wrapper + ctx: Load + args: list + element: Name + id: str = e + ctx: Load + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = e + ctx: Load + attr: str = sayBye + ctx: Load + args: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = w + ctx: Load + attr: str = sayBye + ctx: Load + args: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Call + func: Attribute + value: Name + id: str = w + ctx: Load + attr: str = sayHello + ctx: Load + args: list + keywords: list + attr: str = sayBye + ctx: Load + args: list + keywords: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = w + ctx: Load + attr: str = message + ctx: Store + value: Constant + value: str = Bye + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = e + ctx: Load + attr: str = sayBye + ctx: Load + args: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = w + ctx: Load + attr: str = sayBye + ctx: Load + args: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Call + func: Attribute + value: Name + id: str = w + ctx: Load + attr: str = sayHello + ctx: Load + args: list + keywords: list + attr: str = sayBye + ctx: Load + args: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = End issue 587 + kind: NoneType = None + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/re.js b/transcrypt/development/automated_tests/transcrypt/__target__38/re.js new file mode 100644 index 000000000..65742409b --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/re.js @@ -0,0 +1,812 @@ +// Transcrypt'ed from Python, 2021-05-14 15:00:25 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +import {translate} from './re.translate.js'; +export {translate}; +var __all__ = dict ({get A () {return A;}, set A (value) {A = value;}, get ASCII () {return ASCII;}, set ASCII (value) {ASCII = value;}, get DEBUG () {return DEBUG;}, set DEBUG (value) {DEBUG = value;}, get DOTALL () {return DOTALL;}, set DOTALL (value) {DOTALL = value;}, get G () {return G;}, set G (value) {G = value;}, get GLOBAL () {return GLOBAL;}, set GLOBAL (value) {GLOBAL = value;}, get I () {return I;}, set I (value) {I = value;}, get IGNORECASE () {return IGNORECASE;}, set IGNORECASE (value) {IGNORECASE = value;}, get J () {return J;}, set J (value) {J = value;}, get JSSTRICT () {return JSSTRICT;}, set JSSTRICT (value) {JSSTRICT = value;}, get L () {return L;}, set L (value) {L = value;}, get LOCALE () {return LOCALE;}, set LOCALE (value) {LOCALE = value;}, get M () {return M;}, set M (value) {M = value;}, get MULTILINE () {return MULTILINE;}, set MULTILINE (value) {MULTILINE = value;}, get Match () {return Match;}, set Match (value) {Match = value;}, get PyRegExp () {return PyRegExp;}, set PyRegExp (value) {PyRegExp = value;}, get ReIndexError () {return ReIndexError;}, set ReIndexError (value) {ReIndexError = value;}, get Regex () {return Regex;}, set Regex (value) {Regex = value;}, get S () {return S;}, set S (value) {S = value;}, get STICKY () {return STICKY;}, set STICKY (value) {STICKY = value;}, get T () {return T;}, set T (value) {T = value;}, get TEMPLATE () {return TEMPLATE;}, set TEMPLATE (value) {TEMPLATE = value;}, get U () {return U;}, set U (value) {U = value;}, get UNICODE () {return UNICODE;}, set UNICODE (value) {UNICODE = value;}, get VERBOSE () {return VERBOSE;}, set VERBOSE (value) {VERBOSE = value;}, get X () {return X;}, set X (value) {X = value;}, get Y () {return Y;}, set Y (value) {Y = value;}, get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get compile () {return compile;}, set compile (value) {compile = value;}, get error () {return error;}, set error (value) {error = value;}, get escape () {return escape;}, set escape (value) {escape = value;}, get findall () {return findall;}, set findall (value) {findall = value;}, get finditer () {return finditer;}, set finditer (value) {finditer = value;}, get fullmatch () {return fullmatch;}, set fullmatch (value) {fullmatch = value;}, get match () {return match;}, set match (value) {match = value;}, get purge () {return purge;}, set purge (value) {purge = value;}, get search () {return search;}, set search (value) {search = value;}, get split () {return split;}, set split (value) {split = value;}, get sub () {return sub;}, set sub (value) {sub = value;}, get subn () {return subn;}, set subn (value) {subn = value;}}); +var __name__ = 're'; +export var T = 1 << 0; +export var TEMPLATE = T; +export var I = 1 << 1; +export var IGNORECASE = I; +export var L = 1 << 2; +export var LOCALE = L; +export var M = 1 << 3; +export var MULTILINE = M; +export var S = 1 << 4; +export var DOTALL = S; +export var U = 1 << 5; +export var UNICODE = U; +export var X = 1 << 6; +export var VERBOSE = X; +export var DEBUG = 1 << 7; +export var A = 1 << 8; +export var ASCII = A; +export var Y = 1 << 16; +export var STICKY = Y; +export var G = 1 << 17; +export var GLOBAL = G; +export var J = 1 << 19; +export var JSSTRICT = J; +export var error = __class__ ('error', [Exception], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self, msg, error, pattern, flags, pos) { + if (typeof pattern == 'undefined' || (pattern != null && pattern.hasOwnProperty ("__kwargtrans__"))) {; + var pattern = null; + }; + if (typeof flags == 'undefined' || (flags != null && flags.hasOwnProperty ("__kwargtrans__"))) {; + var flags = 0; + }; + if (typeof pos == 'undefined' || (pos != null && pos.hasOwnProperty ("__kwargtrans__"))) {; + var pos = null; + }; + Exception.__init__ (self, msg, __kwargtrans__ ({error: error})); + self.pattern = pattern; + self.flags = flags; + self.pos = pos; + });} +}); +export var ReIndexError = __class__ ('ReIndexError', [IndexError], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self) { + IndexError.__init__ (self, 'no such group'); + });} +}); +export var Match = __class__ ('Match', [object], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self, mObj, string, pos, endpos, rObj, namedGroups) { + if (typeof namedGroups == 'undefined' || (namedGroups != null && namedGroups.hasOwnProperty ("__kwargtrans__"))) {; + var namedGroups = null; + }; + for (var [index, match] of enumerate (mObj)) { + mObj [index] = (mObj [index] == undefined ? null : mObj [index]); + } + self._obj = mObj; + self._pos = pos; + self._endpos = endpos; + self._re = rObj; + self._string = string; + self._namedGroups = namedGroups; + self._lastindex = self._lastMatchGroup (); + if (self._namedGroups !== null) { + self._lastgroup = self._namedGroups [self._lastindex]; + } + else { + self._lastgroup = null; + } + });}, + get _getPos () {return __get__ (this, function (self) { + return self._pos; + });}, + get _setPos () {return __get__ (this, function (self, val) { + var __except0__ = AttributeError ('readonly attribute'); + __except0__.__cause__ = null; + throw __except0__; + });}, + get _getEndPos () {return __get__ (this, function (self) { + return self._endpos; + });}, + get _setEndPos () {return __get__ (this, function (self, val) { + var __except0__ = AttributeError ('readonly attribute'); + __except0__.__cause__ = null; + throw __except0__; + });}, + get _getRe () {return __get__ (this, function (self) { + return self._re; + });}, + get _setRe () {return __get__ (this, function (self, val) { + var __except0__ = AttributeError ('readonly attribute'); + __except0__.__cause__ = null; + throw __except0__; + });}, + get _getString () {return __get__ (this, function (self) { + return self._string; + });}, + get _setString () {return __get__ (this, function (self, val) { + var __except0__ = AttributeError ('readonly attribute'); + __except0__.__cause__ = null; + throw __except0__; + });}, + get _getLastGroup () {return __get__ (this, function (self) { + return self._lastgroup; + });}, + get _setLastGroup () {return __get__ (this, function (self, val) { + var __except0__ = AttributeError ('readonly attribute'); + __except0__.__cause__ = null; + throw __except0__; + });}, + get _getLastIndex () {return __get__ (this, function (self) { + return self._lastindex; + });}, + get _setLastIndex () {return __get__ (this, function (self, val) { + var __except0__ = AttributeError ('readonly attribute'); + __except0__.__cause__ = null; + throw __except0__; + });}, + get _lastMatchGroup () {return __get__ (this, function (self) { + if (len (self._obj) > 1) { + for (var i = len (self._obj) - 1; i > 0; i--) { + if (self._obj [i] !== null) { + return i; + } + } + return null; + } + else { + return null; + } + });}, + get expand () {return __get__ (this, function (self, template) { + var __except0__ = NotImplementedError (); + __except0__.__cause__ = null; + throw __except0__; + });}, + get group () {return __get__ (this, function (self) { + var args = tuple ([].slice.apply (arguments).slice (1)); + var ret = []; + if (len (args) > 0) { + for (var index of args) { + if (py_typeof (index) === str) { + if (self._namedGroups !== null) { + if (!__in__ (index, self._namedGroups.py_keys ())) { + var __except0__ = ReIndexError (); + __except0__.__cause__ = null; + throw __except0__; + } + ret.append (self._obj [self._namedGroups [index]]); + } + else { + var __except0__ = NotImplementedError ('No NamedGroups Available'); + __except0__.__cause__ = null; + throw __except0__; + } + } + else { + if (index >= len (self._obj)) { + var __except0__ = ReIndexError (); + __except0__.__cause__ = null; + throw __except0__; + } + ret.append (self._obj [index]); + } + } + } + else { + ret.append (self._obj [0]); + } + if (len (ret) == 1) { + return ret [0]; + } + else { + return tuple (ret); + } + });}, + get groups () {return __get__ (this, function (self, py_default) { + if (typeof py_default == 'undefined' || (py_default != null && py_default.hasOwnProperty ("__kwargtrans__"))) {; + var py_default = null; + }; + if (len (self._obj) > 1) { + var ret = self._obj.__getslice__ (1, null, 1); + return tuple ((function () { + var __accu0__ = []; + for (var x of ret) { + __accu0__.append ((x !== null ? x : py_default)); + } + return __accu0__; + }) ()); + } + else { + return tuple (); + } + });}, + get groupdict () {return __get__ (this, function (self, py_default) { + if (typeof py_default == 'undefined' || (py_default != null && py_default.hasOwnProperty ("__kwargtrans__"))) {; + var py_default = null; + }; + if (self._namedGroups !== null) { + var ret = dict ({}); + for (var [gName, gId] of self._namedGroups.py_items ()) { + var value = self._obj [gId]; + ret [gName] = (value !== null ? value : py_default); + } + return ret; + } + else { + var __except0__ = NotImplementedError ('No NamedGroups Available'); + __except0__.__cause__ = null; + throw __except0__; + } + });}, + get start () {return __get__ (this, function (self, group) { + if (typeof group == 'undefined' || (group != null && group.hasOwnProperty ("__kwargtrans__"))) {; + var group = 0; + }; + var gId = 0; + if (py_typeof (group) === str) { + if (self._namedGroups !== null) { + if (!__in__ (group, self._namedGroups.py_keys ())) { + var __except0__ = ReIndexError (); + __except0__.__cause__ = null; + throw __except0__; + } + var gId = self._namedGroups [group]; + } + else { + var __except0__ = NotImplementedError ('No NamedGroups Available'); + __except0__.__cause__ = null; + throw __except0__; + } + } + else { + var gId = group; + } + if (gId >= len (self._obj)) { + var __except0__ = ReIndexError (); + __except0__.__cause__ = null; + throw __except0__; + } + if (gId == 0) { + return self._obj.index; + } + else if (self._obj [gId] !== null) { + var r = compile (escape (self._obj [gId]), self._re.flags); + var m = r.search (self._obj [0]); + if (m) { + return self._obj.index + m.start (); + } + else { + var __except0__ = Exception ('Failed to find capture group'); + __except0__.__cause__ = null; + throw __except0__; + } + } + else { + return -(1); + } + });}, + get end () {return __get__ (this, function (self, group) { + if (typeof group == 'undefined' || (group != null && group.hasOwnProperty ("__kwargtrans__"))) {; + var group = 0; + }; + var gId = 0; + if (py_typeof (group) === str) { + if (self._namedGroups !== null) { + if (!__in__ (group, self._namedGroups.py_keys ())) { + var __except0__ = ReIndexError (); + __except0__.__cause__ = null; + throw __except0__; + } + var gId = self._namedGroups [group]; + } + else { + var __except0__ = NotImplementedError ('No NamedGroups Available'); + __except0__.__cause__ = null; + throw __except0__; + } + } + else { + var gId = group; + } + if (gId >= len (self._obj)) { + var __except0__ = ReIndexError (); + __except0__.__cause__ = null; + throw __except0__; + } + if (gId == 0) { + return self._obj.index + len (self._obj [0]); + } + else if (self._obj [gId] !== null) { + var r = compile (escape (self._obj [gId]), self._re.flags); + var m = r.search (self._obj [0]); + if (m) { + return self._obj.index + m.end (); + } + else { + var __except0__ = Exception ('Failed to find capture group'); + __except0__.__cause__ = null; + throw __except0__; + } + } + else { + return -(1); + } + });}, + get span () {return __get__ (this, function (self, group) { + if (typeof group == 'undefined' || (group != null && group.hasOwnProperty ("__kwargtrans__"))) {; + var group = 0; + }; + return tuple ([self.start (group), self.end (group)]); + });} +}); +Object.defineProperty (Match, 'pos', property.call (Match, Match._getPos, Match._setPos)); +Object.defineProperty (Match, 'endpos', property.call (Match, Match._getEndPos, Match._setEndPos)); +Object.defineProperty (Match, 're', property.call (Match, Match._getRe, Match._setRe)); +Object.defineProperty (Match, 'string', property.call (Match, Match._getString, Match._setString)); +Object.defineProperty (Match, 'lastgroup', property.call (Match, Match._getLastGroup, Match._setLastGroup)); +Object.defineProperty (Match, 'lastindex', property.call (Match, Match._getLastIndex, Match._setLastIndex)); +export var Regex = __class__ ('Regex', [object], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self, pattern, flags) { + if (!((flags & ASCII) > 0)) { + flags |= UNICODE; + } + self._flags = flags; + var __left0__ = self._compileWrapper (pattern, flags); + self._jsFlags = __left0__ [0]; + self._obj = __left0__ [1]; + self._jspattern = pattern; + self._pypattern = pattern; + var __left0__ = self._compileWrapper (pattern + '|', flags); + var _ = __left0__ [0]; + var groupCounterRegex = __left0__ [1]; + self._groups = groupCounterRegex.exec ('').length - 1; + self._groupindex = null; + });}, + get _getPattern () {return __get__ (this, function (self) { + var ret = self._pypattern.py_replace ('\\', '\\\\'); + return ret; + });}, + get _setPattern () {return __get__ (this, function (self, val) { + var __except0__ = AttributeError ('readonly attribute'); + __except0__.__cause__ = null; + throw __except0__; + });}, + get _getFlags () {return __get__ (this, function (self) { + return self._flags; + });}, + get _setFlags () {return __get__ (this, function (self, val) { + var __except0__ = AttributeError ('readonly attribute'); + __except0__.__cause__ = null; + throw __except0__; + });}, + get _getGroups () {return __get__ (this, function (self) { + return self._groups; + });}, + get _setGroups () {return __get__ (this, function (self, val) { + var __except0__ = AttributeError ('readonly attribute'); + __except0__.__cause__ = null; + throw __except0__; + });}, + get _getGroupIndex () {return __get__ (this, function (self) { + if (self._groupindex === null) { + return dict ({}); + } + else { + return self._groupindex; + } + });}, + get _setGroupIndex () {return __get__ (this, function (self, val) { + var __except0__ = AttributeError ('readonly attribute'); + __except0__.__cause__ = null; + throw __except0__; + });}, + get _compileWrapper () {return __get__ (this, function (self, pattern, flags) { + if (typeof flags == 'undefined' || (flags != null && flags.hasOwnProperty ("__kwargtrans__"))) {; + var flags = 0; + }; + var jsFlags = self._convertFlags (flags); + var rObj = null; + var errObj = null; + + try { + rObj = new RegExp(pattern, jsFlags) + } catch( err ) { + errObj = err + } + + if (errObj !== null) { + var __except0__ = error (errObj.message, errObj, pattern, flags); + __except0__.__cause__ = null; + throw __except0__; + } + return tuple ([jsFlags, rObj]); + });}, + get _convertFlags () {return __get__ (this, function (self, flags) { + var bitmaps = [tuple ([DEBUG, '']), tuple ([IGNORECASE, 'i']), tuple ([MULTILINE, 'm']), tuple ([STICKY, 'y']), tuple ([GLOBAL, 'g']), tuple ([UNICODE, 'u'])]; + var ret = ''.join ((function () { + var __accu0__ = []; + for (var x of bitmaps) { + if ((x [0] & flags) > 0) { + __accu0__.append (x [1]); + } + } + return __accu0__; + }) ()); + return ret; + });}, + get _getTargetStr () {return __get__ (this, function (self, string, pos, endpos) { + var endPtr = len (string); + if (endpos !== null) { + if (endpos < endPtr) { + var endPtr = endpos; + } + } + if (endPtr < 0) { + var endPtr = 0; + } + var ret = string.__getslice__ (pos, endPtr, 1); + return ret; + });}, + get _patternHasCaptures () {return __get__ (this, function (self) { + return self._groups > 0; + });}, + get search () {return __get__ (this, function (self, string, pos, endpos) { + if (typeof pos == 'undefined' || (pos != null && pos.hasOwnProperty ("__kwargtrans__"))) {; + var pos = 0; + }; + if (typeof endpos == 'undefined' || (endpos != null && endpos.hasOwnProperty ("__kwargtrans__"))) {; + var endpos = null; + }; + if (endpos === null) { + var endpos = len (string); + } + var rObj = self._obj; + var m = rObj.exec (string); + if (m) { + if (m.index < pos || m.index > endpos) { + return null; + } + else { + return Match (m, string, pos, endpos, self, self._groupindex); + } + } + else { + return null; + } + });}, + get match () {return __get__ (this, function (self, string, pos, endpos) { + if (typeof pos == 'undefined' || (pos != null && pos.hasOwnProperty ("__kwargtrans__"))) {; + var pos = 0; + }; + if (typeof endpos == 'undefined' || (endpos != null && endpos.hasOwnProperty ("__kwargtrans__"))) {; + var endpos = null; + }; + var target = string; + if (endpos !== null) { + var target = target.__getslice__ (0, endpos, 1); + } + else { + var endpos = len (string); + } + var rObj = self._obj; + var m = rObj.exec (target); + if (m) { + if (m.index == pos) { + return Match (m, string, pos, endpos, self, self._groupindex); + } + else { + return null; + } + } + else { + return null; + } + });}, + get fullmatch () {return __get__ (this, function (self, string, pos, endpos) { + if (typeof pos == 'undefined' || (pos != null && pos.hasOwnProperty ("__kwargtrans__"))) {; + var pos = 0; + }; + if (typeof endpos == 'undefined' || (endpos != null && endpos.hasOwnProperty ("__kwargtrans__"))) {; + var endpos = null; + }; + var target = string; + var strEndPos = len (string); + if (endpos !== null) { + var target = target.__getslice__ (0, endpos, 1); + var strEndPos = endpos; + } + var rObj = self._obj; + var m = rObj.exec (target); + if (m) { + var obsEndPos = m.index + len (m [0]); + if (m.index == pos && obsEndPos == strEndPos) { + return Match (m, string, pos, strEndPos, self, self._groupindex); + } + else { + return null; + } + } + else { + return null; + } + });}, + get py_split () {return __get__ (this, function (self, string, maxsplit) { + if (typeof maxsplit == 'undefined' || (maxsplit != null && maxsplit.hasOwnProperty ("__kwargtrans__"))) {; + var maxsplit = 0; + }; + if (maxsplit < 0) { + return [string]; + } + var mObj = null; + var rObj = self._obj; + if (maxsplit == 0) { + var mObj = string.py_split (rObj); + return mObj; + } + else { + var flags = self._flags; + flags |= GLOBAL; + var __left0__ = self._compileWrapper (self._jspattern, flags); + var _ = __left0__ [0]; + var rObj = __left0__ [1]; + var ret = []; + var lastM = null; + var cnt = 0; + for (var i = 0; i < maxsplit; i++) { + var m = rObj.exec (string); + if (m) { + cnt++; + if (lastM !== null) { + var start = lastM.index + len (lastM [0]); + var head = string.__getslice__ (start, m.index, 1); + ret.append (head); + if (len (m) > 1) { + ret.extend (m.__getslice__ (1, null, 1)); + } + } + else { + var head = string.__getslice__ (0, m.index, 1); + ret.append (head); + if (len (m) > 1) { + ret.extend (m.__getslice__ (1, null, 1)); + } + } + var lastM = m; + } + else { + break; + } + } + if (lastM !== null) { + var endPos = lastM.index + len (lastM [0]); + var end = string.__getslice__ (endPos, null, 1); + ret.append (end); + } + return ret; + } + });}, + get _findAllMatches () {return __get__ (this, function (self, string, pos, endpos) { + if (typeof pos == 'undefined' || (pos != null && pos.hasOwnProperty ("__kwargtrans__"))) {; + var pos = 0; + }; + if (typeof endpos == 'undefined' || (endpos != null && endpos.hasOwnProperty ("__kwargtrans__"))) {; + var endpos = null; + }; + var target = self._getTargetStr (string, pos, endpos); + var flags = self._flags; + flags |= GLOBAL; + var __left0__ = self._compileWrapper (self._jspattern, flags); + var _ = __left0__ [0]; + var rObj = __left0__ [1]; + var ret = []; + while (true) { + var m = rObj.exec (target); + if (m) { + ret.append (m); + } + else { + break; + } + } + return ret; + });}, + get findall () {return __get__ (this, function (self, string, pos, endpos) { + if (typeof pos == 'undefined' || (pos != null && pos.hasOwnProperty ("__kwargtrans__"))) {; + var pos = 0; + }; + if (typeof endpos == 'undefined' || (endpos != null && endpos.hasOwnProperty ("__kwargtrans__"))) {; + var endpos = null; + }; + var mlist = self._findAllMatches (string, pos, endpos); + var mSelect = function (m) { + if (len (m) > 2) { + return tuple (m.__getslice__ (1, null, 1)); + } + else if (len (m) == 2) { + return m [1]; + } + else { + return m [0]; + } + }; + var ret = map (mSelect, mlist); + return ret; + });}, + get finditer () {return __get__ (this, function (self, string, pos, endpos) { + if (typeof endpos == 'undefined' || (endpos != null && endpos.hasOwnProperty ("__kwargtrans__"))) {; + var endpos = null; + }; + var mlist = self._findAllMatches (string, pos, endpos); + var ret = map ((function __lambda__ (m) { + return Match (m, string, 0, len (string), self, self._groupindex); + }), mlist); + return py_iter (ret); + });}, + get sub () {return __get__ (this, function (self, repl, string, count) { + if (typeof count == 'undefined' || (count != null && count.hasOwnProperty ("__kwargtrans__"))) {; + var count = 0; + }; + var __left0__ = self.subn (repl, string, count); + var ret = __left0__ [0]; + var _ = __left0__ [1]; + return ret; + });}, + get subn () {return __get__ (this, function (self, repl, string, count) { + if (typeof count == 'undefined' || (count != null && count.hasOwnProperty ("__kwargtrans__"))) {; + var count = 0; + }; + var flags = self._flags; + flags |= GLOBAL; + var __left0__ = self._compileWrapper (self._jspattern, flags); + var _ = __left0__ [0]; + var rObj = __left0__ [1]; + var ret = ''; + var totalMatch = 0; + var lastEnd = -(1); + while (true) { + if (count > 0) { + if (totalMatch >= count) { + if (lastEnd < 0) { + return tuple ([ret, totalMatch]); + } + else { + ret += string.__getslice__ (lastEnd, m.index, 1); + return tuple ([ret, totalMatch]); + } + } + } + var m = rObj.exec (string); + if (m) { + if (lastEnd < 0) { + ret += string.__getslice__ (0, m.index, 1); + } + else { + ret += string.__getslice__ (lastEnd, m.index, 1); + } + if (callable (repl)) { + var content = repl (Match (m, string, 0, len (string), self, self._groupindex)); + ret += content; + } + else { + ret += repl; + } + totalMatch++; + var lastEnd = m.index + len (m [0]); + } + else if (lastEnd < 0) { + return tuple ([string, 0]); + } + else { + ret += string.__getslice__ (lastEnd, null, 1); + return tuple ([ret, totalMatch]); + } + } + });} +}); +Object.defineProperty (Regex, 'pattern', property.call (Regex, Regex._getPattern, Regex._setPattern)); +Object.defineProperty (Regex, 'flags', property.call (Regex, Regex._getFlags, Regex._setFlags)); +Object.defineProperty (Regex, 'groups', property.call (Regex, Regex._getGroups, Regex._setGroups)); +Object.defineProperty (Regex, 'groupindex', property.call (Regex, Regex._getGroupIndex, Regex._setGroupIndex)); +export var PyRegExp = __class__ ('PyRegExp', [Regex], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self, pyPattern, flags) { + var __left0__ = translate (pyPattern); + var jsTokens = __left0__ [0]; + var inlineFlags = __left0__ [1]; + var namedGroups = __left0__ [2]; + var nCapGroups = __left0__ [3]; + var n_splits = __left0__ [4]; + flags |= inlineFlags; + var jsPattern = ''.join (jsTokens); + Regex.__init__ (self, jsPattern, flags); + self._pypattern = pyPattern; + self._nsplits = n_splits; + self._jsTokens = jsTokens; + self._capgroups = nCapGroups; + self._groupindex = namedGroups; + });} +}); +export var compile = function (pattern, flags) { + if (typeof flags == 'undefined' || (flags != null && flags.hasOwnProperty ("__kwargtrans__"))) {; + var flags = 0; + }; + if (flags & JSSTRICT) { + var p = Regex (pattern, flags); + } + else { + var p = PyRegExp (pattern, flags); + } + return p; +}; +export var search = function (pattern, string, flags) { + if (typeof flags == 'undefined' || (flags != null && flags.hasOwnProperty ("__kwargtrans__"))) {; + var flags = 0; + }; + var p = compile (pattern, flags); + return p.search (string); +}; +export var match = function (pattern, string, flags) { + if (typeof flags == 'undefined' || (flags != null && flags.hasOwnProperty ("__kwargtrans__"))) {; + var flags = 0; + }; + var p = compile (pattern, flags); + return p.match (string); +}; +export var fullmatch = function (pattern, string, flags) { + if (typeof flags == 'undefined' || (flags != null && flags.hasOwnProperty ("__kwargtrans__"))) {; + var flags = 0; + }; + var p = compile (pattern, flags); + return p.fullmatch (string); +}; +export var py_split = function (pattern, string, maxsplit, flags) { + if (typeof maxsplit == 'undefined' || (maxsplit != null && maxsplit.hasOwnProperty ("__kwargtrans__"))) {; + var maxsplit = 0; + }; + if (typeof flags == 'undefined' || (flags != null && flags.hasOwnProperty ("__kwargtrans__"))) {; + var flags = 0; + }; + var p = compile (pattern, flags); + return p.py_split (string, maxsplit); +}; +export var findall = function (pattern, string, flags) { + if (typeof flags == 'undefined' || (flags != null && flags.hasOwnProperty ("__kwargtrans__"))) {; + var flags = 0; + }; + var p = compile (pattern, flags); + return p.findall (string); +}; +export var finditer = function (pattern, string, flags) { + if (typeof flags == 'undefined' || (flags != null && flags.hasOwnProperty ("__kwargtrans__"))) {; + var flags = 0; + }; + var p = compile (pattern, flags); + return p.finditer (string); +}; +export var sub = function (pattern, repl, string, count, flags) { + if (typeof count == 'undefined' || (count != null && count.hasOwnProperty ("__kwargtrans__"))) {; + var count = 0; + }; + if (typeof flags == 'undefined' || (flags != null && flags.hasOwnProperty ("__kwargtrans__"))) {; + var flags = 0; + }; + var p = compile (pattern, flags); + return p.sub (repl, string, count); +}; +export var subn = function (pattern, repl, string, count, flags) { + if (typeof count == 'undefined' || (count != null && count.hasOwnProperty ("__kwargtrans__"))) {; + var count = 0; + }; + if (typeof flags == 'undefined' || (flags != null && flags.hasOwnProperty ("__kwargtrans__"))) {; + var flags = 0; + }; + var p = compile (pattern, flags); + return p.subn (repl, string, count); +}; +export var escape = function (string) { + var ret = null; + var replfunc = function (m) { + if (m [0] == '\\') { + return '\\\\\\\\'; + } + else { + return '\\\\' + m [0]; + } + }; + + var r = /[^A-Za-z:;\d]/g; + ret = string.replace(r, replfunc); + + if (ret !== null) { + return ret; + } + else { + var __except0__ = Exception ('Failed to escape the passed string'); + __except0__.__cause__ = null; + throw __except0__; + } +}; +export var purge = function () { + // pass; +}; + +//# sourceMappingURL=re.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/re.translate.js b/transcrypt/development/automated_tests/transcrypt/__target__38/re.translate.js new file mode 100644 index 000000000..3a51deac8 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/re.translate.js @@ -0,0 +1,364 @@ +// Transcrypt'ed from Python, 2021-05-14 15:00:25 +var re = {}; +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +import * as __module_re__ from './re.js'; +__nest__ (re, '', __module_re__); +var __all__ = dict ({get Group () {return Group;}, set Group (value) {Group = value;}, get MAX_SHIFTREDUCE_LOOPS () {return MAX_SHIFTREDUCE_LOOPS;}, set MAX_SHIFTREDUCE_LOOPS (value) {MAX_SHIFTREDUCE_LOOPS = value;}, get Token () {return Token;}, set Token (value) {Token = value;}, get VERBOSE () {return VERBOSE;}, set VERBOSE (value) {VERBOSE = value;}, get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get countCaptureGroups () {return countCaptureGroups;}, set countCaptureGroups (value) {countCaptureGroups = value;}, get generateGroupSpans () {return generateGroupSpans;}, set generateGroupSpans (value) {generateGroupSpans = value;}, get getCaptureGroup () {return getCaptureGroup;}, set getCaptureGroup (value) {getCaptureGroup = value;}, get shift () {return shift;}, set shift (value) {shift = value;}, get shiftReduce () {return shiftReduce;}, set shiftReduce (value) {shiftReduce = value;}, get splitIfElse () {return splitIfElse;}, set splitIfElse (value) {splitIfElse = value;}, get stringFlags () {return stringFlags;}, set stringFlags (value) {stringFlags = value;}, get translate () {return translate;}, set translate (value) {translate = value;}}); +var __name__ = 're.translate'; +export var VERBOSE = false; +export var MAX_SHIFTREDUCE_LOOPS = 1000; +export var stringFlags = 'aiLmsux'; +export var Group = __class__ ('Group', [object], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self, start, end, klass) { + self.start = start; + self.end = end; + self.klass = klass; + });}, + get __repr__ () {return __get__ (this, function (self) { + return str (tuple ([self.start, self.end, self.klass])); + });} +}); +export var generateGroupSpans = function (tokens) { + var groupInfo = []; + var idx = 0; + for (var token of tokens) { + if (__t__ (token.py_name.startswith ('('))) { + groupInfo.append (Group (idx, null, token.py_name)); + } + else if (__t__ (token.py_name == ')')) { + for (var group of py_reversed (groupInfo)) { + if (__t__ (group.end === null)) { + group.end = idx; + } + } + } + idx++; + } + return groupInfo; +}; +export var countCaptureGroups = function (tokens) { + var groupInfo = generateGroupSpans (tokens); + var count = 0; + for (var token of tokens) { + if (__t__ (token.py_name == '(')) { + count++; + } + } + return count; +}; +export var getCaptureGroup = function (groupInfo, namedGroups, groupRef) { + try { + var id = int (groupRef); + } + catch (__except0__) { + var id = namedGroups [groupRef]; + } + var search = 0; + for (var group of groupInfo) { + if (__t__ (group.klass == '(')) { + search++; + if (__t__ (search == id)) { + return group; + } + } + } +}; +export var splitIfElse = function (tokens, namedGroups) { + var variants = []; + var groupInfo = generateGroupSpans (tokens); + for (var group of groupInfo) { + if (__t__ (group.klass == '(?<')) { + var iff = tokens.__getslice__ (0, null, 1); + var els = tokens.__getslice__ (0, null, 1); + var conStart = group.start; + var conEnd = group.end; + var ref = tokens [conStart + 1].py_name; + var captureGroup = getCaptureGroup (groupInfo, namedGroups, ref); + var captureGroupModifier = tokens [captureGroup.end + 1]; + if (__t__ (__t__ (__in__ (captureGroupModifier.py_name, ['?', '*'])) || captureGroupModifier.py_name.startswith ('{0,'))) { + if (__t__ (captureGroupModifier.py_name == '?')) { + iff [captureGroup.end + 1] = null; + } + else if (__t__ (captureGroupModifier.py_name == '*')) { + iff [captureGroup.end + 1] = Token ('+'); + } + else if (__t__ (captureGroupModifier.py_name.startswith ('{0,'))) { + iff [captureGroup.end + 1].py_name.__setslice__ (0, 3, null, '{1,'); + } + els [captureGroup.end + 1] = null; + var hasElse = false; + for (var idx = conStart; idx < conEnd; idx++) { + if (__t__ (tokens [idx].py_name == '|')) { + var hasElse = true; + els.py_pop (conEnd); + iff.__setslice__ (idx, conEnd + 1, null, []); + els.__setslice__ (conStart, idx + 1, null, []); + break; + } + } + if (__t__ (!__t__ ((hasElse)))) { + els.__setslice__ (conStart, conEnd + 1, null, []); + iff.py_pop (conEnd); + } + iff.__setslice__ (conStart, conStart + 3, null, []); + els.__setslice__ (captureGroup.start, captureGroup.end + 1, null, [Token ('('), Token (')')]); + iff.remove (null); + els.remove (null); + variants.append (iff); + variants.append (els); + } + else { + var pastIff = false; + for (var idx = conStart; idx < conEnd; idx++) { + if (__t__ (iff [idx].py_name == '|')) { + var iff = tokens.__getslice__ (0, idx, 1); + iff.extend (tokens.__getslice__ (conEnd + 1, null, 1)); + break; + } + } + iff.__setslice__ (conStart, conStart + 3, null, []); + variants.append (iff); + } + break; + } + } + if (__t__ (!__t__ ((variants)))) { + return [tokens]; + } + var allVariants = []; + for (var variant of variants) { + allVariants.extend (splitIfElse (variant, namedGroups)); + } + return allVariants; +}; +export var Token = __class__ ('Token', [object], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self, py_name, paras, pure) { + if (typeof paras == 'undefined' || (paras != null && paras.hasOwnProperty ("__kwargtrans__"))) {; + var paras = null; + }; + if (typeof pure == 'undefined' || (pure != null && pure.hasOwnProperty ("__kwargtrans__"))) {; + var pure = false; + }; + if (__t__ (paras === null)) { + var paras = []; + } + self.py_name = py_name; + self.paras = paras; + self.pure = pure; + self.isModeGroup = false; + });}, + get __repr__ () {return __get__ (this, function (self) { + return self.py_name; + });}, + get resolve () {return __get__ (this, function (self) { + var paras = ''; + for (var para of self.paras) { + paras += str (para); + } + return self.py_name + paras; + });} +}); +export var shift = function (stack, queue) { + var done = !__t__ ((bool (queue))); + if (__t__ (!__t__ ((done)))) { + stack.append (Token (queue [0], [], true)); + var queue = queue.__getslice__ (1, null, 1); + } + return tuple ([stack, queue, done]); +}; +export var shiftReduce = function (stack, queue, namedGroups, flags) { + var done = false; + var high = len (stack) - 1; + if (__t__ (len (stack) < 2)) { + var __left0__ = shift (stack, queue); + var stack = __left0__ [0]; + var queue = __left0__ [1]; + var done = __left0__ [2]; + return tuple ([stack, queue, flags, done]); + } + var s0 = (__t__ (len (stack) > 0) ? stack [high] : Token ('')); + var s1 = (__t__ (len (stack) > 1) ? stack [high - 1] : Token ('')); + if (__t__ (VERBOSE)) { + for (var token of stack) { + console.log (token.resolve (), '\t', __kwargtrans__ ({end: ''})); + } + console.log (''); + } + if (__t__ (s1.py_name == '\\')) { + if (__t__ (s0.py_name == 'A')) { + stack.__setslice__ (-__t__ ((2)), null, null, [Token ('^')]); + } + else if (__t__ (s0.py_name == 'a')) { + stack.__setslice__ (-__t__ ((2)), null, null, [Token ('\\07')]); + } + else if (__t__ (s0.py_name == 'Z')) { + stack.__setslice__ (-__t__ ((2)), null, null, [Token ('$')]); + } + else { + stack.__setslice__ (-__t__ ((2)), null, null, [Token ('\\' + s0.py_name)]); + } + } + else if (__t__ (__t__ (s0.py_name == '$') && s0.pure)) { + stack.py_pop (); + stack.extend ([Token ('(?='), Token ('\\n'), Token ('?'), Token ('$'), Token (')')]); + } + else if (__t__ (s1.py_name == '{')) { + if (__t__ (__t__ (s0.py_name == ',') && len (s1.paras) == 0)) { + s1.paras.append ('0'); + s1.paras.append (','); + } + else if (__t__ (s0.py_name == '}')) { + s1.paras.append ('}'); + s1.py_name = s1.resolve (); + s1.paras = []; + } + else { + s1.paras.append (s0.py_name); + } + var stack = stack.__getslice__ (0, -__t__ ((1)), 1); + } + else if (__t__ (__t__ (s1.py_name == '[') && s0.py_name == '^')) { + stack.__setslice__ (-__t__ ((2)), null, null, [Token ('[^')]); + } + else if (__t__ (__t__ (s1.py_name == '(') && s0.py_name == '?')) { + stack.__setslice__ (-__t__ ((2)), null, null, [Token ('(?')]); + } + else if (__t__ (__t__ (__in__ (s1.py_name, ['*', '+', '?'])) && s0.py_name == '?')) { + stack.__setslice__ (-__t__ ((2)), null, null, [Token (s1.py_name + '?')]); + } + else if (__t__ (__t__ (s1.isModeGroup) && s0.py_name == ')')) { + var stack = stack.__getslice__ (0, -__t__ ((2)), 1); + } + else if (__t__ (s1.py_name == '(?')) { + if (__t__ (__in__ (s0.py_name, stringFlags))) { + if (__t__ (s0.py_name == 'i')) { + flags |= re.IGNORECASE; + } + else if (__t__ (s0.py_name == 'L')) { + flags |= re.LOCALE; + } + else if (__t__ (s0.py_name == 'm')) { + flags |= re.MULTILINE; + } + else if (__t__ (s0.py_name == 's')) { + flags |= re.DOTALL; + } + else if (__t__ (s0.py_name == 'u')) { + flags |= re.UNICODE; + } + else if (__t__ (s0.py_name == 'x')) { + flags |= re.VERBOSE; + } + else if (__t__ (s0.py_name == 'a')) { + flags |= re.ASCII; + } + stack.py_pop (); + s1.isModeGroup = true; + } + else { + if (__t__ (s0.py_name == '(')) { + s0.py_name = '<'; + } + var newToken = Token ('(?' + s0.py_name); + stack.__setslice__ (-__t__ ((2)), null, null, [newToken]); + } + } + else if (__t__ (s1.py_name == '(?<')) { + if (__t__ (s0.py_name == ')')) { + stack.__setslice__ (-__t__ ((1)), null, null, [Token (''.join (s1.paras)), Token ('>')]); + s1.paras = []; + } + else { + s1.paras.append (s0.py_name); + stack.py_pop (); + } + } + else if (__t__ (s1.py_name == '(?P')) { + stack.__setslice__ (-__t__ ((2)), null, null, [Token ('(?P' + s0.py_name)]); + } + else if (__t__ (s1.py_name == '(?P<')) { + if (__t__ (s0.py_name == '>')) { + namedGroups [''.join (s1.paras)] = countCaptureGroups (stack) + 1; + stack.__setslice__ (-__t__ ((2)), null, null, [Token ('(')]); + } + else { + s1.paras.append (s0.py_name); + stack.py_pop (); + } + } + else if (__t__ (s1.py_name == '(?P=')) { + if (__t__ (s0.py_name == ')')) { + stack.__setslice__ (-__t__ ((2)), null, null, [Token ('\\' + str (namedGroups [s1.paras [0]]))]); + } + else if (__t__ (!__t__ ((s1.paras)))) { + s1.paras.append (s0.py_name); + stack.py_pop (); + } + else { + s1.paras [0] += s0.py_name; + stack.py_pop (); + } + } + else if (__t__ (s1.py_name == '(?#')) { + if (__t__ (s0.py_name == ')')) { + var stack = stack.__getslice__ (0, -__t__ ((2)), 1); + } + else { + var stack = stack.__getslice__ (0, -__t__ ((1)), 1); + } + } + else { + var __left0__ = shift (stack, queue); + var stack = __left0__ [0]; + var queue = __left0__ [1]; + var done = __left0__ [2]; + } + return tuple ([stack, queue, flags, done]); +}; +export var translate = function (rgx) { + var stack = []; + var queue = list (rgx); + var flags = 0; + var namedGroups = dict (); + var nloop = 0; + while (__t__ (true)) { + nloop++; + if (__t__ (nloop > MAX_SHIFTREDUCE_LOOPS)) { + var __except0__ = Exception ('Too many iterations in converting regex from Python to JavaScript'); + __except0__.__cause__ = null; + throw __except0__; + } + var __left0__ = shiftReduce (stack, queue, namedGroups, flags); + var stack = __left0__ [0]; + var queue = __left0__ [1]; + var flags = __left0__ [2]; + var done = __left0__ [3]; + if (__t__ (done)) { + break; + } + } + var variants = splitIfElse (stack, namedGroups); + var n_splits = len (variants); + var final = []; + for (var i = 0; i < len (variants); i++) { + final.extend (variants [i]); + if (__t__ (i < len (variants) - 1)) { + final.append (Token ('|')); + } + } + var stack = final; + var groupInfo = generateGroupSpans (stack); + var resolvedTokens = []; + for (var token of stack) { + var stringed = token.resolve (); + if (__t__ (__t__ (flags & re.DOTALL) && stringed == '.')) { + var stringed = '[\\s\\S]'; + } + resolvedTokens.append (stringed); + } + return tuple ([resolvedTokens, flags, namedGroups, countCaptureGroups (stack), n_splits]); +}; + +//# sourceMappingURL=re.translate.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/re.translate.tree b/transcrypt/development/automated_tests/transcrypt/__target__38/re.translate.tree new file mode 100644 index 000000000..71bb0e91e --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/re.translate.tree @@ -0,0 +1,3987 @@ +file: Module + body: list + element: Import + names: list + element: alias + name: str = re + asname: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = tconv + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = VERBOSE + ctx: Store + value: Constant + value: bool = False + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = MAX_SHIFTREDUCE_LOOPS + ctx: Store + value: Constant + value: int = 1000 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = stringFlags + ctx: Store + value: Constant + value: str = aiLmsux + kind: NoneType = None + type_comment: NoneType = None + element: ClassDef + name: str = Group + bases: list + keywords: list + body: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = start + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = end + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = klass + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = start + ctx: Store + value: Name + id: str = start + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = end + ctx: Store + value: Name + id: str = end + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = klass + ctx: Store + value: Name + id: str = klass + ctx: Load + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __repr__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Call + func: Name + id: str = str + ctx: Load + args: list + element: Tuple + elts: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = start + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = end + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = klass + ctx: Load + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: FunctionDef + name: str = generateGroupSpans + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = tokens + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Name + id: str = groupInfo + ctx: Store + value: List + elts: list + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = idx + ctx: Store + value: Constant + value: int = 0 + kind: NoneType = None + type_comment: NoneType = None + element: For + target: Name + id: str = token + ctx: Store + iter: Name + id: str = tokens + ctx: Load + body: list + element: If + test: Call + func: Attribute + value: Attribute + value: Name + id: str = token + ctx: Load + attr: str = name + ctx: Load + attr: str = startswith + ctx: Load + args: list + element: Constant + value: str = ( + kind: NoneType = None + keywords: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = groupInfo + ctx: Load + attr: str = append + ctx: Load + args: list + element: Call + func: Name + id: str = Group + ctx: Load + args: list + element: Name + id: str = idx + ctx: Load + element: Constant + value: NoneType = None + kind: NoneType = None + element: Attribute + value: Name + id: str = token + ctx: Load + attr: str = name + ctx: Load + keywords: list + keywords: list + orelse: list + element: If + test: Compare + left: Attribute + value: Name + id: str = token + ctx: Load + attr: str = name + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = ) + kind: NoneType = None + body: list + element: For + target: Name + id: str = group + ctx: Store + iter: Call + func: Name + id: str = reversed + ctx: Load + args: list + element: Name + id: str = groupInfo + ctx: Load + keywords: list + body: list + element: If + test: Compare + left: Attribute + value: Name + id: str = group + ctx: Load + attr: str = end + ctx: Load + ops: list + element: Is + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = group + ctx: Load + attr: str = end + ctx: Store + value: Name + id: str = idx + ctx: Load + type_comment: NoneType = None + orelse: list + orelse: list + type_comment: NoneType = None + orelse: list + element: AugAssign + target: Name + id: str = idx + ctx: Store + op: Add + value: Constant + value: int = 1 + kind: NoneType = None + orelse: list + type_comment: NoneType = None + element: Return + value: Name + id: str = groupInfo + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = countCaptureGroups + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = tokens + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Name + id: str = groupInfo + ctx: Store + value: Call + func: Name + id: str = generateGroupSpans + ctx: Load + args: list + element: Name + id: str = tokens + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = count + ctx: Store + value: Constant + value: int = 0 + kind: NoneType = None + type_comment: NoneType = None + element: For + target: Name + id: str = token + ctx: Store + iter: Name + id: str = tokens + ctx: Load + body: list + element: If + test: Compare + left: Attribute + value: Name + id: str = token + ctx: Load + attr: str = name + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = ( + kind: NoneType = None + body: list + element: AugAssign + target: Name + id: str = count + ctx: Store + op: Add + value: Constant + value: int = 1 + kind: NoneType = None + orelse: list + orelse: list + type_comment: NoneType = None + element: Return + value: Name + id: str = count + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = getCaptureGroup + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = groupInfo + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = namedGroups + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = groupRef + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Try + body: list + element: Assign + targets: list + element: Name + id: str = id + ctx: Store + value: Call + func: Name + id: str = int + ctx: Load + args: list + element: Name + id: str = groupRef + ctx: Load + keywords: list + type_comment: NoneType = None + handlers: list + element: ExceptHandler + type: NoneType = None + name: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = id + ctx: Store + value: Subscript + value: Name + id: str = namedGroups + ctx: Load + slice: Index + value: Name + id: str = groupRef + ctx: Load + ctx: Load + type_comment: NoneType = None + orelse: list + finalbody: list + element: Assign + targets: list + element: Name + id: str = search + ctx: Store + value: Constant + value: int = 0 + kind: NoneType = None + type_comment: NoneType = None + element: For + target: Name + id: str = group + ctx: Store + iter: Name + id: str = groupInfo + ctx: Load + body: list + element: If + test: Compare + left: Attribute + value: Name + id: str = group + ctx: Load + attr: str = klass + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = ( + kind: NoneType = None + body: list + element: AugAssign + target: Name + id: str = search + ctx: Store + op: Add + value: Constant + value: int = 1 + kind: NoneType = None + element: If + test: Compare + left: Name + id: str = search + ctx: Load + ops: list + element: Eq + comparators: list + element: Name + id: str = id + ctx: Load + body: list + element: Return + value: Name + id: str = group + ctx: Load + orelse: list + orelse: list + orelse: list + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = splitIfElse + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = tokens + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = namedGroups + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Name + id: str = variants + ctx: Store + value: List + elts: list + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = groupInfo + ctx: Store + value: Call + func: Name + id: str = generateGroupSpans + ctx: Load + args: list + element: Name + id: str = tokens + ctx: Load + keywords: list + type_comment: NoneType = None + element: For + target: Name + id: str = group + ctx: Store + iter: Name + id: str = groupInfo + ctx: Load + body: list + element: If + test: Compare + left: Attribute + value: Name + id: str = group + ctx: Load + attr: str = klass + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = (?< + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = iff + ctx: Store + value: Subscript + value: Name + id: str = tokens + ctx: Load + slice: Slice + lower: NoneType = None + upper: NoneType = None + step: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = els + ctx: Store + value: Subscript + value: Name + id: str = tokens + ctx: Load + slice: Slice + lower: NoneType = None + upper: NoneType = None + step: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = conStart + ctx: Store + value: Attribute + value: Name + id: str = group + ctx: Load + attr: str = start + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = conEnd + ctx: Store + value: Attribute + value: Name + id: str = group + ctx: Load + attr: str = end + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = ref + ctx: Store + value: Attribute + value: Subscript + value: Name + id: str = tokens + ctx: Load + slice: Index + value: BinOp + left: Name + id: str = conStart + ctx: Load + op: Add + right: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + attr: str = name + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = captureGroup + ctx: Store + value: Call + func: Name + id: str = getCaptureGroup + ctx: Load + args: list + element: Name + id: str = groupInfo + ctx: Load + element: Name + id: str = namedGroups + ctx: Load + element: Name + id: str = ref + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = captureGroupModifier + ctx: Store + value: Subscript + value: Name + id: str = tokens + ctx: Load + slice: Index + value: BinOp + left: Attribute + value: Name + id: str = captureGroup + ctx: Load + attr: str = end + ctx: Load + op: Add + right: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: If + test: BoolOp + op: Or + values: list + element: Compare + left: Attribute + value: Name + id: str = captureGroupModifier + ctx: Load + attr: str = name + ctx: Load + ops: list + element: In + comparators: list + element: List + elts: list + element: Constant + value: str = ? + kind: NoneType = None + element: Constant + value: str = * + kind: NoneType = None + ctx: Load + element: Call + func: Attribute + value: Attribute + value: Name + id: str = captureGroupModifier + ctx: Load + attr: str = name + ctx: Load + attr: str = startswith + ctx: Load + args: list + element: Constant + value: str = {0, + kind: NoneType = None + keywords: list + body: list + element: If + test: Compare + left: Attribute + value: Name + id: str = captureGroupModifier + ctx: Load + attr: str = name + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = ? + kind: NoneType = None + body: list + element: Assign + targets: list + element: Subscript + value: Name + id: str = iff + ctx: Load + slice: Index + value: BinOp + left: Attribute + value: Name + id: str = captureGroup + ctx: Load + attr: str = end + ctx: Load + op: Add + right: Constant + value: int = 1 + kind: NoneType = None + ctx: Store + value: Constant + value: NoneType = None + kind: NoneType = None + type_comment: NoneType = None + orelse: list + element: If + test: Compare + left: Attribute + value: Name + id: str = captureGroupModifier + ctx: Load + attr: str = name + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = * + kind: NoneType = None + body: list + element: Assign + targets: list + element: Subscript + value: Name + id: str = iff + ctx: Load + slice: Index + value: BinOp + left: Attribute + value: Name + id: str = captureGroup + ctx: Load + attr: str = end + ctx: Load + op: Add + right: Constant + value: int = 1 + kind: NoneType = None + ctx: Store + value: Call + func: Name + id: str = Token + ctx: Load + args: list + element: Constant + value: str = + + kind: NoneType = None + keywords: list + type_comment: NoneType = None + orelse: list + element: If + test: Call + func: Attribute + value: Attribute + value: Name + id: str = captureGroupModifier + ctx: Load + attr: str = name + ctx: Load + attr: str = startswith + ctx: Load + args: list + element: Constant + value: str = {0, + kind: NoneType = None + keywords: list + body: list + element: Assign + targets: list + element: Subscript + value: Attribute + value: Subscript + value: Name + id: str = iff + ctx: Load + slice: Index + value: BinOp + left: Attribute + value: Name + id: str = captureGroup + ctx: Load + attr: str = end + ctx: Load + op: Add + right: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + attr: str = name + ctx: Load + slice: Slice + lower: Constant + value: int = 0 + kind: NoneType = None + upper: Constant + value: int = 3 + kind: NoneType = None + step: NoneType = None + ctx: Store + value: Constant + value: str = {1, + kind: NoneType = None + type_comment: NoneType = None + orelse: list + element: Assign + targets: list + element: Subscript + value: Name + id: str = els + ctx: Load + slice: Index + value: BinOp + left: Attribute + value: Name + id: str = captureGroup + ctx: Load + attr: str = end + ctx: Load + op: Add + right: Constant + value: int = 1 + kind: NoneType = None + ctx: Store + value: Constant + value: NoneType = None + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = hasElse + ctx: Store + value: Constant + value: bool = False + kind: NoneType = None + type_comment: NoneType = None + element: For + target: Name + id: str = idx + ctx: Store + iter: Call + func: Name + id: str = range + ctx: Load + args: list + element: Name + id: str = conStart + ctx: Load + element: Name + id: str = conEnd + ctx: Load + keywords: list + body: list + element: If + test: Compare + left: Attribute + value: Subscript + value: Name + id: str = tokens + ctx: Load + slice: Index + value: Name + id: str = idx + ctx: Load + ctx: Load + attr: str = name + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = | + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = hasElse + ctx: Store + value: Constant + value: bool = True + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = els + ctx: Load + attr: str = pop + ctx: Load + args: list + element: Name + id: str = conEnd + ctx: Load + keywords: list + element: Assign + targets: list + element: Subscript + value: Name + id: str = iff + ctx: Load + slice: Slice + lower: Name + id: str = idx + ctx: Load + upper: BinOp + left: Name + id: str = conEnd + ctx: Load + op: Add + right: Constant + value: int = 1 + kind: NoneType = None + step: NoneType = None + ctx: Store + value: List + elts: list + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Subscript + value: Name + id: str = els + ctx: Load + slice: Slice + lower: Name + id: str = conStart + ctx: Load + upper: BinOp + left: Name + id: str = idx + ctx: Load + op: Add + right: Constant + value: int = 1 + kind: NoneType = None + step: NoneType = None + ctx: Store + value: List + elts: list + ctx: Load + type_comment: NoneType = None + element: Break + orelse: list + orelse: list + type_comment: NoneType = None + element: If + test: UnaryOp + op: Not + operand: Name + id: str = hasElse + ctx: Load + body: list + element: Assign + targets: list + element: Subscript + value: Name + id: str = els + ctx: Load + slice: Slice + lower: Name + id: str = conStart + ctx: Load + upper: BinOp + left: Name + id: str = conEnd + ctx: Load + op: Add + right: Constant + value: int = 1 + kind: NoneType = None + step: NoneType = None + ctx: Store + value: List + elts: list + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = iff + ctx: Load + attr: str = pop + ctx: Load + args: list + element: Name + id: str = conEnd + ctx: Load + keywords: list + orelse: list + element: Assign + targets: list + element: Subscript + value: Name + id: str = iff + ctx: Load + slice: Slice + lower: Name + id: str = conStart + ctx: Load + upper: BinOp + left: Name + id: str = conStart + ctx: Load + op: Add + right: Constant + value: int = 3 + kind: NoneType = None + step: NoneType = None + ctx: Store + value: List + elts: list + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Subscript + value: Name + id: str = els + ctx: Load + slice: Slice + lower: Attribute + value: Name + id: str = captureGroup + ctx: Load + attr: str = start + ctx: Load + upper: BinOp + left: Attribute + value: Name + id: str = captureGroup + ctx: Load + attr: str = end + ctx: Load + op: Add + right: Constant + value: int = 1 + kind: NoneType = None + step: NoneType = None + ctx: Store + value: List + elts: list + element: Call + func: Name + id: str = Token + ctx: Load + args: list + element: Constant + value: str = ( + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = Token + ctx: Load + args: list + element: Constant + value: str = ) + kind: NoneType = None + keywords: list + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = iff + ctx: Load + attr: str = remove + ctx: Load + args: list + element: Constant + value: NoneType = None + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = els + ctx: Load + attr: str = remove + ctx: Load + args: list + element: Constant + value: NoneType = None + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = variants + ctx: Load + attr: str = append + ctx: Load + args: list + element: Name + id: str = iff + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = variants + ctx: Load + attr: str = append + ctx: Load + args: list + element: Name + id: str = els + ctx: Load + keywords: list + orelse: list + element: Assign + targets: list + element: Name + id: str = pastIff + ctx: Store + value: Constant + value: bool = False + kind: NoneType = None + type_comment: NoneType = None + element: For + target: Name + id: str = idx + ctx: Store + iter: Call + func: Name + id: str = range + ctx: Load + args: list + element: Name + id: str = conStart + ctx: Load + element: Name + id: str = conEnd + ctx: Load + keywords: list + body: list + element: If + test: Compare + left: Attribute + value: Subscript + value: Name + id: str = iff + ctx: Load + slice: Index + value: Name + id: str = idx + ctx: Load + ctx: Load + attr: str = name + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = | + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = iff + ctx: Store + value: Subscript + value: Name + id: str = tokens + ctx: Load + slice: Slice + lower: NoneType = None + upper: Name + id: str = idx + ctx: Load + step: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = iff + ctx: Load + attr: str = extend + ctx: Load + args: list + element: Subscript + value: Name + id: str = tokens + ctx: Load + slice: Slice + lower: BinOp + left: Name + id: str = conEnd + ctx: Load + op: Add + right: Constant + value: int = 1 + kind: NoneType = None + upper: NoneType = None + step: NoneType = None + ctx: Load + keywords: list + element: Break + orelse: list + orelse: list + type_comment: NoneType = None + element: Assign + targets: list + element: Subscript + value: Name + id: str = iff + ctx: Load + slice: Slice + lower: Name + id: str = conStart + ctx: Load + upper: BinOp + left: Name + id: str = conStart + ctx: Load + op: Add + right: Constant + value: int = 3 + kind: NoneType = None + step: NoneType = None + ctx: Store + value: List + elts: list + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = variants + ctx: Load + attr: str = append + ctx: Load + args: list + element: Name + id: str = iff + ctx: Load + keywords: list + element: Break + orelse: list + orelse: list + type_comment: NoneType = None + element: If + test: UnaryOp + op: Not + operand: Name + id: str = variants + ctx: Load + body: list + element: Return + value: List + elts: list + element: Name + id: str = tokens + ctx: Load + ctx: Load + orelse: list + element: Assign + targets: list + element: Name + id: str = allVariants + ctx: Store + value: List + elts: list + ctx: Load + type_comment: NoneType = None + element: For + target: Name + id: str = variant + ctx: Store + iter: Name + id: str = variants + ctx: Load + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = allVariants + ctx: Load + attr: str = extend + ctx: Load + args: list + element: Call + func: Name + id: str = splitIfElse + ctx: Load + args: list + element: Name + id: str = variant + ctx: Load + element: Name + id: str = namedGroups + ctx: Load + keywords: list + keywords: list + orelse: list + type_comment: NoneType = None + element: Return + value: Name + id: str = allVariants + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: ClassDef + name: str = Token + bases: list + keywords: list + body: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = name + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = paras + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = pure + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + element: Constant + value: NoneType = None + kind: NoneType = None + element: Constant + value: bool = False + kind: NoneType = None + body: list + element: If + test: Compare + left: Name + id: str = paras + ctx: Load + ops: list + element: Is + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = paras + ctx: Store + value: List + elts: list + ctx: Load + type_comment: NoneType = None + orelse: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = name + ctx: Store + value: Name + id: str = name + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = paras + ctx: Store + value: Name + id: str = paras + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = pure + ctx: Store + value: Name + id: str = pure + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = isModeGroup + ctx: Store + value: Constant + value: bool = False + kind: NoneType = None + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __repr__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = name + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = resolve + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Name + id: str = paras + ctx: Store + value: Constant + value: str = + kind: NoneType = None + type_comment: NoneType = None + element: For + target: Name + id: str = para + ctx: Store + iter: Attribute + value: Name + id: str = self + ctx: Load + attr: str = paras + ctx: Load + body: list + element: AugAssign + target: Name + id: str = paras + ctx: Store + op: Add + value: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = para + ctx: Load + keywords: list + orelse: list + type_comment: NoneType = None + element: Return + value: BinOp + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = name + ctx: Load + op: Add + right: Name + id: str = paras + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: FunctionDef + name: str = shift + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = stack + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = queue + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Name + id: str = done + ctx: Store + value: UnaryOp + op: Not + operand: Call + func: Name + id: str = bool + ctx: Load + args: list + element: Name + id: str = queue + ctx: Load + keywords: list + type_comment: NoneType = None + element: If + test: UnaryOp + op: Not + operand: Name + id: str = done + ctx: Load + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = stack + ctx: Load + attr: str = append + ctx: Load + args: list + element: Call + func: Name + id: str = Token + ctx: Load + args: list + element: Subscript + value: Name + id: str = queue + ctx: Load + slice: Index + value: Constant + value: int = 0 + kind: NoneType = None + ctx: Load + element: List + elts: list + ctx: Load + element: Constant + value: bool = True + kind: NoneType = None + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = queue + ctx: Store + value: Subscript + value: Name + id: str = queue + ctx: Load + slice: Slice + lower: Constant + value: int = 1 + kind: NoneType = None + upper: NoneType = None + step: NoneType = None + ctx: Load + type_comment: NoneType = None + orelse: list + element: Return + value: Tuple + elts: list + element: Name + id: str = stack + ctx: Load + element: Name + id: str = queue + ctx: Load + element: Name + id: str = done + ctx: Load + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = shiftReduce + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = stack + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = queue + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = namedGroups + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = flags + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Name + id: str = done + ctx: Store + value: Constant + value: bool = False + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = high + ctx: Store + value: BinOp + left: Call + func: Name + id: str = len + ctx: Load + args: list + element: Name + id: str = stack + ctx: Load + keywords: list + op: Sub + right: Constant + value: int = 1 + kind: NoneType = None + type_comment: NoneType = None + element: If + test: Compare + left: Call + func: Name + id: str = len + ctx: Load + args: list + element: Name + id: str = stack + ctx: Load + keywords: list + ops: list + element: Lt + comparators: list + element: Constant + value: int = 2 + kind: NoneType = None + body: list + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = stack + ctx: Store + element: Name + id: str = queue + ctx: Store + element: Name + id: str = done + ctx: Store + ctx: Store + value: Call + func: Name + id: str = shift + ctx: Load + args: list + element: Name + id: str = stack + ctx: Load + element: Name + id: str = queue + ctx: Load + keywords: list + type_comment: NoneType = None + element: Return + value: Tuple + elts: list + element: Name + id: str = stack + ctx: Load + element: Name + id: str = queue + ctx: Load + element: Name + id: str = flags + ctx: Load + element: Name + id: str = done + ctx: Load + ctx: Load + orelse: list + element: Assign + targets: list + element: Name + id: str = s0 + ctx: Store + value: IfExp + test: Compare + left: Call + func: Name + id: str = len + ctx: Load + args: list + element: Name + id: str = stack + ctx: Load + keywords: list + ops: list + element: Gt + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + body: Subscript + value: Name + id: str = stack + ctx: Load + slice: Index + value: Name + id: str = high + ctx: Load + ctx: Load + orelse: Call + func: Name + id: str = Token + ctx: Load + args: list + element: Constant + value: str = + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = s1 + ctx: Store + value: IfExp + test: Compare + left: Call + func: Name + id: str = len + ctx: Load + args: list + element: Name + id: str = stack + ctx: Load + keywords: list + ops: list + element: Gt + comparators: list + element: Constant + value: int = 1 + kind: NoneType = None + body: Subscript + value: Name + id: str = stack + ctx: Load + slice: Index + value: BinOp + left: Name + id: str = high + ctx: Load + op: Sub + right: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + orelse: Call + func: Name + id: str = Token + ctx: Load + args: list + element: Constant + value: str = + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: If + test: Name + id: str = VERBOSE + ctx: Load + body: list + element: For + target: Name + id: str = token + ctx: Store + iter: Name + id: str = stack + ctx: Load + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = console + ctx: Load + attr: str = log + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = token + ctx: Load + attr: str = resolve + ctx: Load + args: list + keywords: list + element: Constant + value: str = + kind: NoneType = None + keywords: list + element: keyword + arg: str = end + value: Constant + value: str = + kind: NoneType = None + orelse: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = console + ctx: Load + attr: str = log + ctx: Load + args: list + element: Constant + value: str = + kind: NoneType = None + keywords: list + orelse: list + element: If + test: Compare + left: Attribute + value: Name + id: str = s1 + ctx: Load + attr: str = name + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = \ + kind: NoneType = None + body: list + element: If + test: Compare + left: Attribute + value: Name + id: str = s0 + ctx: Load + attr: str = name + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = A + kind: NoneType = None + body: list + element: Assign + targets: list + element: Subscript + value: Name + id: str = stack + ctx: Load + slice: Slice + lower: UnaryOp + op: USub + operand: Constant + value: int = 2 + kind: NoneType = None + upper: NoneType = None + step: NoneType = None + ctx: Store + value: List + elts: list + element: Call + func: Name + id: str = Token + ctx: Load + args: list + element: Constant + value: str = ^ + kind: NoneType = None + keywords: list + ctx: Load + type_comment: NoneType = None + orelse: list + element: If + test: Compare + left: Attribute + value: Name + id: str = s0 + ctx: Load + attr: str = name + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = a + kind: NoneType = None + body: list + element: Assign + targets: list + element: Subscript + value: Name + id: str = stack + ctx: Load + slice: Slice + lower: UnaryOp + op: USub + operand: Constant + value: int = 2 + kind: NoneType = None + upper: NoneType = None + step: NoneType = None + ctx: Store + value: List + elts: list + element: Call + func: Name + id: str = Token + ctx: Load + args: list + element: Constant + value: str = \07 + kind: NoneType = None + keywords: list + ctx: Load + type_comment: NoneType = None + orelse: list + element: If + test: Compare + left: Attribute + value: Name + id: str = s0 + ctx: Load + attr: str = name + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = Z + kind: NoneType = None + body: list + element: Assign + targets: list + element: Subscript + value: Name + id: str = stack + ctx: Load + slice: Slice + lower: UnaryOp + op: USub + operand: Constant + value: int = 2 + kind: NoneType = None + upper: NoneType = None + step: NoneType = None + ctx: Store + value: List + elts: list + element: Call + func: Name + id: str = Token + ctx: Load + args: list + element: Constant + value: str = $ + kind: NoneType = None + keywords: list + ctx: Load + type_comment: NoneType = None + orelse: list + element: Assign + targets: list + element: Subscript + value: Name + id: str = stack + ctx: Load + slice: Slice + lower: UnaryOp + op: USub + operand: Constant + value: int = 2 + kind: NoneType = None + upper: NoneType = None + step: NoneType = None + ctx: Store + value: List + elts: list + element: Call + func: Name + id: str = Token + ctx: Load + args: list + element: BinOp + left: Constant + value: str = \ + kind: NoneType = None + op: Add + right: Attribute + value: Name + id: str = s0 + ctx: Load + attr: str = name + ctx: Load + keywords: list + ctx: Load + type_comment: NoneType = None + orelse: list + element: If + test: BoolOp + op: And + values: list + element: Compare + left: Attribute + value: Name + id: str = s0 + ctx: Load + attr: str = name + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = $ + kind: NoneType = None + element: Attribute + value: Name + id: str = s0 + ctx: Load + attr: str = pure + ctx: Load + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = stack + ctx: Load + attr: str = pop + ctx: Load + args: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = stack + ctx: Load + attr: str = extend + ctx: Load + args: list + element: List + elts: list + element: Call + func: Name + id: str = Token + ctx: Load + args: list + element: Constant + value: str = (?= + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = Token + ctx: Load + args: list + element: Constant + value: str = \n + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = Token + ctx: Load + args: list + element: Constant + value: str = ? + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = Token + ctx: Load + args: list + element: Constant + value: str = $ + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = Token + ctx: Load + args: list + element: Constant + value: str = ) + kind: NoneType = None + keywords: list + ctx: Load + keywords: list + orelse: list + element: If + test: Compare + left: Attribute + value: Name + id: str = s1 + ctx: Load + attr: str = name + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = { + kind: NoneType = None + body: list + element: If + test: BoolOp + op: And + values: list + element: Compare + left: Attribute + value: Name + id: str = s0 + ctx: Load + attr: str = name + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = , + kind: NoneType = None + element: Compare + left: Call + func: Name + id: str = len + ctx: Load + args: list + element: Attribute + value: Name + id: str = s1 + ctx: Load + attr: str = paras + ctx: Load + keywords: list + ops: list + element: Eq + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + body: list + element: Expr + value: Call + func: Attribute + value: Attribute + value: Name + id: str = s1 + ctx: Load + attr: str = paras + ctx: Load + attr: str = append + ctx: Load + args: list + element: Constant + value: str = 0 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Attribute + value: Name + id: str = s1 + ctx: Load + attr: str = paras + ctx: Load + attr: str = append + ctx: Load + args: list + element: Constant + value: str = , + kind: NoneType = None + keywords: list + orelse: list + element: If + test: Compare + left: Attribute + value: Name + id: str = s0 + ctx: Load + attr: str = name + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = } + kind: NoneType = None + body: list + element: Expr + value: Call + func: Attribute + value: Attribute + value: Name + id: str = s1 + ctx: Load + attr: str = paras + ctx: Load + attr: str = append + ctx: Load + args: list + element: Constant + value: str = } + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = s1 + ctx: Load + attr: str = name + ctx: Store + value: Call + func: Attribute + value: Name + id: str = s1 + ctx: Load + attr: str = resolve + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = s1 + ctx: Load + attr: str = paras + ctx: Store + value: List + elts: list + ctx: Load + type_comment: NoneType = None + orelse: list + element: Expr + value: Call + func: Attribute + value: Attribute + value: Name + id: str = s1 + ctx: Load + attr: str = paras + ctx: Load + attr: str = append + ctx: Load + args: list + element: Attribute + value: Name + id: str = s0 + ctx: Load + attr: str = name + ctx: Load + keywords: list + element: Assign + targets: list + element: Name + id: str = stack + ctx: Store + value: Subscript + value: Name + id: str = stack + ctx: Load + slice: Slice + lower: NoneType = None + upper: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + step: NoneType = None + ctx: Load + type_comment: NoneType = None + orelse: list + element: If + test: BoolOp + op: And + values: list + element: Compare + left: Attribute + value: Name + id: str = s1 + ctx: Load + attr: str = name + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = [ + kind: NoneType = None + element: Compare + left: Attribute + value: Name + id: str = s0 + ctx: Load + attr: str = name + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = ^ + kind: NoneType = None + body: list + element: Assign + targets: list + element: Subscript + value: Name + id: str = stack + ctx: Load + slice: Slice + lower: UnaryOp + op: USub + operand: Constant + value: int = 2 + kind: NoneType = None + upper: NoneType = None + step: NoneType = None + ctx: Store + value: List + elts: list + element: Call + func: Name + id: str = Token + ctx: Load + args: list + element: Constant + value: str = [^ + kind: NoneType = None + keywords: list + ctx: Load + type_comment: NoneType = None + orelse: list + element: If + test: BoolOp + op: And + values: list + element: Compare + left: Attribute + value: Name + id: str = s1 + ctx: Load + attr: str = name + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = ( + kind: NoneType = None + element: Compare + left: Attribute + value: Name + id: str = s0 + ctx: Load + attr: str = name + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = ? + kind: NoneType = None + body: list + element: Assign + targets: list + element: Subscript + value: Name + id: str = stack + ctx: Load + slice: Slice + lower: UnaryOp + op: USub + operand: Constant + value: int = 2 + kind: NoneType = None + upper: NoneType = None + step: NoneType = None + ctx: Store + value: List + elts: list + element: Call + func: Name + id: str = Token + ctx: Load + args: list + element: Constant + value: str = (? + kind: NoneType = None + keywords: list + ctx: Load + type_comment: NoneType = None + orelse: list + element: If + test: BoolOp + op: And + values: list + element: Compare + left: Attribute + value: Name + id: str = s1 + ctx: Load + attr: str = name + ctx: Load + ops: list + element: In + comparators: list + element: List + elts: list + element: Constant + value: str = * + kind: NoneType = None + element: Constant + value: str = + + kind: NoneType = None + element: Constant + value: str = ? + kind: NoneType = None + ctx: Load + element: Compare + left: Attribute + value: Name + id: str = s0 + ctx: Load + attr: str = name + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = ? + kind: NoneType = None + body: list + element: Assign + targets: list + element: Subscript + value: Name + id: str = stack + ctx: Load + slice: Slice + lower: UnaryOp + op: USub + operand: Constant + value: int = 2 + kind: NoneType = None + upper: NoneType = None + step: NoneType = None + ctx: Store + value: List + elts: list + element: Call + func: Name + id: str = Token + ctx: Load + args: list + element: BinOp + left: Attribute + value: Name + id: str = s1 + ctx: Load + attr: str = name + ctx: Load + op: Add + right: Constant + value: str = ? + kind: NoneType = None + keywords: list + ctx: Load + type_comment: NoneType = None + orelse: list + element: If + test: BoolOp + op: And + values: list + element: Attribute + value: Name + id: str = s1 + ctx: Load + attr: str = isModeGroup + ctx: Load + element: Compare + left: Attribute + value: Name + id: str = s0 + ctx: Load + attr: str = name + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = ) + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = stack + ctx: Store + value: Subscript + value: Name + id: str = stack + ctx: Load + slice: Slice + lower: NoneType = None + upper: UnaryOp + op: USub + operand: Constant + value: int = 2 + kind: NoneType = None + step: NoneType = None + ctx: Load + type_comment: NoneType = None + orelse: list + element: If + test: Compare + left: Attribute + value: Name + id: str = s1 + ctx: Load + attr: str = name + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = (? + kind: NoneType = None + body: list + element: If + test: Compare + left: Attribute + value: Name + id: str = s0 + ctx: Load + attr: str = name + ctx: Load + ops: list + element: In + comparators: list + element: Name + id: str = stringFlags + ctx: Load + body: list + element: If + test: Compare + left: Attribute + value: Name + id: str = s0 + ctx: Load + attr: str = name + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = i + kind: NoneType = None + body: list + element: AugAssign + target: Name + id: str = flags + ctx: Store + op: BitOr + value: Attribute + value: Name + id: str = re + ctx: Load + attr: str = IGNORECASE + ctx: Load + orelse: list + element: If + test: Compare + left: Attribute + value: Name + id: str = s0 + ctx: Load + attr: str = name + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = L + kind: NoneType = None + body: list + element: AugAssign + target: Name + id: str = flags + ctx: Store + op: BitOr + value: Attribute + value: Name + id: str = re + ctx: Load + attr: str = LOCALE + ctx: Load + orelse: list + element: If + test: Compare + left: Attribute + value: Name + id: str = s0 + ctx: Load + attr: str = name + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = m + kind: NoneType = None + body: list + element: AugAssign + target: Name + id: str = flags + ctx: Store + op: BitOr + value: Attribute + value: Name + id: str = re + ctx: Load + attr: str = MULTILINE + ctx: Load + orelse: list + element: If + test: Compare + left: Attribute + value: Name + id: str = s0 + ctx: Load + attr: str = name + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = s + kind: NoneType = None + body: list + element: AugAssign + target: Name + id: str = flags + ctx: Store + op: BitOr + value: Attribute + value: Name + id: str = re + ctx: Load + attr: str = DOTALL + ctx: Load + orelse: list + element: If + test: Compare + left: Attribute + value: Name + id: str = s0 + ctx: Load + attr: str = name + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = u + kind: NoneType = None + body: list + element: AugAssign + target: Name + id: str = flags + ctx: Store + op: BitOr + value: Attribute + value: Name + id: str = re + ctx: Load + attr: str = UNICODE + ctx: Load + orelse: list + element: If + test: Compare + left: Attribute + value: Name + id: str = s0 + ctx: Load + attr: str = name + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = x + kind: NoneType = None + body: list + element: AugAssign + target: Name + id: str = flags + ctx: Store + op: BitOr + value: Attribute + value: Name + id: str = re + ctx: Load + attr: str = VERBOSE + ctx: Load + orelse: list + element: If + test: Compare + left: Attribute + value: Name + id: str = s0 + ctx: Load + attr: str = name + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = a + kind: NoneType = None + body: list + element: AugAssign + target: Name + id: str = flags + ctx: Store + op: BitOr + value: Attribute + value: Name + id: str = re + ctx: Load + attr: str = ASCII + ctx: Load + orelse: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = stack + ctx: Load + attr: str = pop + ctx: Load + args: list + keywords: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = s1 + ctx: Load + attr: str = isModeGroup + ctx: Store + value: Constant + value: bool = True + kind: NoneType = None + type_comment: NoneType = None + orelse: list + element: If + test: Compare + left: Attribute + value: Name + id: str = s0 + ctx: Load + attr: str = name + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = ( + kind: NoneType = None + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = s0 + ctx: Load + attr: str = name + ctx: Store + value: Constant + value: str = < + kind: NoneType = None + type_comment: NoneType = None + orelse: list + element: Assign + targets: list + element: Name + id: str = newToken + ctx: Store + value: Call + func: Name + id: str = Token + ctx: Load + args: list + element: BinOp + left: Constant + value: str = (? + kind: NoneType = None + op: Add + right: Attribute + value: Name + id: str = s0 + ctx: Load + attr: str = name + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Subscript + value: Name + id: str = stack + ctx: Load + slice: Slice + lower: UnaryOp + op: USub + operand: Constant + value: int = 2 + kind: NoneType = None + upper: NoneType = None + step: NoneType = None + ctx: Store + value: List + elts: list + element: Name + id: str = newToken + ctx: Load + ctx: Load + type_comment: NoneType = None + orelse: list + element: If + test: Compare + left: Attribute + value: Name + id: str = s1 + ctx: Load + attr: str = name + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = (?< + kind: NoneType = None + body: list + element: If + test: Compare + left: Attribute + value: Name + id: str = s0 + ctx: Load + attr: str = name + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = ) + kind: NoneType = None + body: list + element: Assign + targets: list + element: Subscript + value: Name + id: str = stack + ctx: Load + slice: Slice + lower: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + upper: NoneType = None + step: NoneType = None + ctx: Store + value: List + elts: list + element: Call + func: Name + id: str = Token + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = + kind: NoneType = None + attr: str = join + ctx: Load + args: list + element: Attribute + value: Name + id: str = s1 + ctx: Load + attr: str = paras + ctx: Load + keywords: list + keywords: list + element: Call + func: Name + id: str = Token + ctx: Load + args: list + element: Constant + value: str = > + kind: NoneType = None + keywords: list + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = s1 + ctx: Load + attr: str = paras + ctx: Store + value: List + elts: list + ctx: Load + type_comment: NoneType = None + orelse: list + element: Expr + value: Call + func: Attribute + value: Attribute + value: Name + id: str = s1 + ctx: Load + attr: str = paras + ctx: Load + attr: str = append + ctx: Load + args: list + element: Attribute + value: Name + id: str = s0 + ctx: Load + attr: str = name + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = stack + ctx: Load + attr: str = pop + ctx: Load + args: list + keywords: list + orelse: list + element: If + test: Compare + left: Attribute + value: Name + id: str = s1 + ctx: Load + attr: str = name + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = (?P + kind: NoneType = None + body: list + element: Assign + targets: list + element: Subscript + value: Name + id: str = stack + ctx: Load + slice: Slice + lower: UnaryOp + op: USub + operand: Constant + value: int = 2 + kind: NoneType = None + upper: NoneType = None + step: NoneType = None + ctx: Store + value: List + elts: list + element: Call + func: Name + id: str = Token + ctx: Load + args: list + element: BinOp + left: Constant + value: str = (?P + kind: NoneType = None + op: Add + right: Attribute + value: Name + id: str = s0 + ctx: Load + attr: str = name + ctx: Load + keywords: list + ctx: Load + type_comment: NoneType = None + orelse: list + element: If + test: Compare + left: Attribute + value: Name + id: str = s1 + ctx: Load + attr: str = name + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = (?P< + kind: NoneType = None + body: list + element: If + test: Compare + left: Attribute + value: Name + id: str = s0 + ctx: Load + attr: str = name + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = > + kind: NoneType = None + body: list + element: Assign + targets: list + element: Subscript + value: Name + id: str = namedGroups + ctx: Load + slice: Index + value: Call + func: Attribute + value: Constant + value: str = + kind: NoneType = None + attr: str = join + ctx: Load + args: list + element: Attribute + value: Name + id: str = s1 + ctx: Load + attr: str = paras + ctx: Load + keywords: list + ctx: Store + value: BinOp + left: Call + func: Name + id: str = countCaptureGroups + ctx: Load + args: list + element: Name + id: str = stack + ctx: Load + keywords: list + op: Add + right: Constant + value: int = 1 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Subscript + value: Name + id: str = stack + ctx: Load + slice: Slice + lower: UnaryOp + op: USub + operand: Constant + value: int = 2 + kind: NoneType = None + upper: NoneType = None + step: NoneType = None + ctx: Store + value: List + elts: list + element: Call + func: Name + id: str = Token + ctx: Load + args: list + element: Constant + value: str = ( + kind: NoneType = None + keywords: list + ctx: Load + type_comment: NoneType = None + orelse: list + element: Expr + value: Call + func: Attribute + value: Attribute + value: Name + id: str = s1 + ctx: Load + attr: str = paras + ctx: Load + attr: str = append + ctx: Load + args: list + element: Attribute + value: Name + id: str = s0 + ctx: Load + attr: str = name + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = stack + ctx: Load + attr: str = pop + ctx: Load + args: list + keywords: list + orelse: list + element: If + test: Compare + left: Attribute + value: Name + id: str = s1 + ctx: Load + attr: str = name + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = (?P= + kind: NoneType = None + body: list + element: If + test: Compare + left: Attribute + value: Name + id: str = s0 + ctx: Load + attr: str = name + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = ) + kind: NoneType = None + body: list + element: Assign + targets: list + element: Subscript + value: Name + id: str = stack + ctx: Load + slice: Slice + lower: UnaryOp + op: USub + operand: Constant + value: int = 2 + kind: NoneType = None + upper: NoneType = None + step: NoneType = None + ctx: Store + value: List + elts: list + element: Call + func: Name + id: str = Token + ctx: Load + args: list + element: BinOp + left: Constant + value: str = \ + kind: NoneType = None + op: Add + right: Call + func: Name + id: str = str + ctx: Load + args: list + element: Subscript + value: Name + id: str = namedGroups + ctx: Load + slice: Index + value: Subscript + value: Attribute + value: Name + id: str = s1 + ctx: Load + attr: str = paras + ctx: Load + slice: Index + value: Constant + value: int = 0 + kind: NoneType = None + ctx: Load + ctx: Load + keywords: list + keywords: list + ctx: Load + type_comment: NoneType = None + orelse: list + element: If + test: UnaryOp + op: Not + operand: Attribute + value: Name + id: str = s1 + ctx: Load + attr: str = paras + ctx: Load + body: list + element: Expr + value: Call + func: Attribute + value: Attribute + value: Name + id: str = s1 + ctx: Load + attr: str = paras + ctx: Load + attr: str = append + ctx: Load + args: list + element: Attribute + value: Name + id: str = s0 + ctx: Load + attr: str = name + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = stack + ctx: Load + attr: str = pop + ctx: Load + args: list + keywords: list + orelse: list + element: AugAssign + target: Subscript + value: Attribute + value: Name + id: str = s1 + ctx: Load + attr: str = paras + ctx: Load + slice: Index + value: Constant + value: int = 0 + kind: NoneType = None + ctx: Store + op: Add + value: Attribute + value: Name + id: str = s0 + ctx: Load + attr: str = name + ctx: Load + element: Expr + value: Call + func: Attribute + value: Name + id: str = stack + ctx: Load + attr: str = pop + ctx: Load + args: list + keywords: list + orelse: list + element: If + test: Compare + left: Attribute + value: Name + id: str = s1 + ctx: Load + attr: str = name + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = (?# + kind: NoneType = None + body: list + element: If + test: Compare + left: Attribute + value: Name + id: str = s0 + ctx: Load + attr: str = name + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = ) + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = stack + ctx: Store + value: Subscript + value: Name + id: str = stack + ctx: Load + slice: Slice + lower: NoneType = None + upper: UnaryOp + op: USub + operand: Constant + value: int = 2 + kind: NoneType = None + step: NoneType = None + ctx: Load + type_comment: NoneType = None + orelse: list + element: Assign + targets: list + element: Name + id: str = stack + ctx: Store + value: Subscript + value: Name + id: str = stack + ctx: Load + slice: Slice + lower: NoneType = None + upper: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + step: NoneType = None + ctx: Load + type_comment: NoneType = None + orelse: list + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = stack + ctx: Store + element: Name + id: str = queue + ctx: Store + element: Name + id: str = done + ctx: Store + ctx: Store + value: Call + func: Name + id: str = shift + ctx: Load + args: list + element: Name + id: str = stack + ctx: Load + element: Name + id: str = queue + ctx: Load + keywords: list + type_comment: NoneType = None + element: Return + value: Tuple + elts: list + element: Name + id: str = stack + ctx: Load + element: Name + id: str = queue + ctx: Load + element: Name + id: str = flags + ctx: Load + element: Name + id: str = done + ctx: Load + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = translate + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = rgx + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Name + id: str = stack + ctx: Store + value: List + elts: list + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = queue + ctx: Store + value: Call + func: Name + id: str = list + ctx: Load + args: list + element: Name + id: str = rgx + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = flags + ctx: Store + value: Constant + value: int = 0 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = namedGroups + ctx: Store + value: Call + func: Name + id: str = dict + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = nloop + ctx: Store + value: Constant + value: int = 0 + kind: NoneType = None + type_comment: NoneType = None + element: While + test: Constant + value: bool = True + kind: NoneType = None + body: list + element: AugAssign + target: Name + id: str = nloop + ctx: Store + op: Add + value: Constant + value: int = 1 + kind: NoneType = None + element: If + test: Compare + left: Name + id: str = nloop + ctx: Load + ops: list + element: Gt + comparators: list + element: Name + id: str = MAX_SHIFTREDUCE_LOOPS + ctx: Load + body: list + element: Raise + exc: Call + func: Name + id: str = Exception + ctx: Load + args: list + element: Constant + value: str = Too many iterations in converting regex from Python to JavaScript + kind: NoneType = None + keywords: list + cause: NoneType = None + orelse: list + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = stack + ctx: Store + element: Name + id: str = queue + ctx: Store + element: Name + id: str = flags + ctx: Store + element: Name + id: str = done + ctx: Store + ctx: Store + value: Call + func: Name + id: str = shiftReduce + ctx: Load + args: list + element: Name + id: str = stack + ctx: Load + element: Name + id: str = queue + ctx: Load + element: Name + id: str = namedGroups + ctx: Load + element: Name + id: str = flags + ctx: Load + keywords: list + type_comment: NoneType = None + element: If + test: Name + id: str = done + ctx: Load + body: list + element: Break + orelse: list + orelse: list + element: Assign + targets: list + element: Name + id: str = variants + ctx: Store + value: Call + func: Name + id: str = splitIfElse + ctx: Load + args: list + element: Name + id: str = stack + ctx: Load + element: Name + id: str = namedGroups + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = n_splits + ctx: Store + value: Call + func: Name + id: str = len + ctx: Load + args: list + element: Name + id: str = variants + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = final + ctx: Store + value: List + elts: list + ctx: Load + type_comment: NoneType = None + element: For + target: Name + id: str = i + ctx: Store + iter: Call + func: Name + id: str = range + ctx: Load + args: list + element: Constant + value: int = 0 + kind: NoneType = None + element: Call + func: Name + id: str = len + ctx: Load + args: list + element: Name + id: str = variants + ctx: Load + keywords: list + keywords: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = final + ctx: Load + attr: str = extend + ctx: Load + args: list + element: Subscript + value: Name + id: str = variants + ctx: Load + slice: Index + value: Name + id: str = i + ctx: Load + ctx: Load + keywords: list + element: If + test: Compare + left: Name + id: str = i + ctx: Load + ops: list + element: Lt + comparators: list + element: BinOp + left: Call + func: Name + id: str = len + ctx: Load + args: list + element: Name + id: str = variants + ctx: Load + keywords: list + op: Sub + right: Constant + value: int = 1 + kind: NoneType = None + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = final + ctx: Load + attr: str = append + ctx: Load + args: list + element: Call + func: Name + id: str = Token + ctx: Load + args: list + element: Constant + value: str = | + kind: NoneType = None + keywords: list + keywords: list + orelse: list + orelse: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = stack + ctx: Store + value: Name + id: str = final + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = groupInfo + ctx: Store + value: Call + func: Name + id: str = generateGroupSpans + ctx: Load + args: list + element: Name + id: str = stack + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = resolvedTokens + ctx: Store + value: List + elts: list + ctx: Load + type_comment: NoneType = None + element: For + target: Name + id: str = token + ctx: Store + iter: Name + id: str = stack + ctx: Load + body: list + element: Assign + targets: list + element: Name + id: str = stringed + ctx: Store + value: Call + func: Attribute + value: Name + id: str = token + ctx: Load + attr: str = resolve + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: If + test: BoolOp + op: And + values: list + element: BinOp + left: Name + id: str = flags + ctx: Load + op: BitAnd + right: Attribute + value: Name + id: str = re + ctx: Load + attr: str = DOTALL + ctx: Load + element: Compare + left: Name + id: str = stringed + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = . + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = stringed + ctx: Store + value: Constant + value: str = [\s\S] + kind: NoneType = None + type_comment: NoneType = None + orelse: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = resolvedTokens + ctx: Load + attr: str = append + ctx: Load + args: list + element: Name + id: str = stringed + ctx: Load + keywords: list + orelse: list + type_comment: NoneType = None + element: Return + value: Tuple + elts: list + element: Name + id: str = resolvedTokens + ctx: Load + element: Name + id: str = flags + ctx: Load + element: Name + id: str = namedGroups + ctx: Load + element: Call + func: Name + id: str = countCaptureGroups + ctx: Load + args: list + element: Name + id: str = stack + ctx: Load + keywords: list + element: Name + id: str = n_splits + ctx: Load + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/re.tree b/transcrypt/development/automated_tests/transcrypt/__target__38/re.tree new file mode 100644 index 000000000..c312c626e --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/re.tree @@ -0,0 +1,6770 @@ +file: Module + body: list + element: ImportFrom + module: str = org.transcrypt.stubs.browser + names: list + element: alias + name: str = __pragma__ + asname: NoneType = None + level: int = 0 + element: ImportFrom + module: str = re.translate + names: list + element: alias + name: str = translate + asname: NoneType = None + level: int = 0 + element: Assign + targets: list + element: Name + id: str = T + ctx: Store + value: BinOp + left: Constant + value: int = 1 + kind: NoneType = None + op: LShift + right: Constant + value: int = 0 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = TEMPLATE + ctx: Store + value: Name + id: str = T + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = I + ctx: Store + value: BinOp + left: Constant + value: int = 1 + kind: NoneType = None + op: LShift + right: Constant + value: int = 1 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = IGNORECASE + ctx: Store + value: Name + id: str = I + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = L + ctx: Store + value: BinOp + left: Constant + value: int = 1 + kind: NoneType = None + op: LShift + right: Constant + value: int = 2 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = LOCALE + ctx: Store + value: Name + id: str = L + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = M + ctx: Store + value: BinOp + left: Constant + value: int = 1 + kind: NoneType = None + op: LShift + right: Constant + value: int = 3 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = MULTILINE + ctx: Store + value: Name + id: str = M + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = S + ctx: Store + value: BinOp + left: Constant + value: int = 1 + kind: NoneType = None + op: LShift + right: Constant + value: int = 4 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = DOTALL + ctx: Store + value: Name + id: str = S + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = U + ctx: Store + value: BinOp + left: Constant + value: int = 1 + kind: NoneType = None + op: LShift + right: Constant + value: int = 5 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = UNICODE + ctx: Store + value: Name + id: str = U + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = X + ctx: Store + value: BinOp + left: Constant + value: int = 1 + kind: NoneType = None + op: LShift + right: Constant + value: int = 6 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = VERBOSE + ctx: Store + value: Name + id: str = X + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = DEBUG + ctx: Store + value: BinOp + left: Constant + value: int = 1 + kind: NoneType = None + op: LShift + right: Constant + value: int = 7 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = A + ctx: Store + value: BinOp + left: Constant + value: int = 1 + kind: NoneType = None + op: LShift + right: Constant + value: int = 8 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = ASCII + ctx: Store + value: Name + id: str = A + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = Y + ctx: Store + value: BinOp + left: Constant + value: int = 1 + kind: NoneType = None + op: LShift + right: Constant + value: int = 16 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = STICKY + ctx: Store + value: Name + id: str = Y + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = G + ctx: Store + value: BinOp + left: Constant + value: int = 1 + kind: NoneType = None + op: LShift + right: Constant + value: int = 17 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = GLOBAL + ctx: Store + value: Name + id: str = G + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = J + ctx: Store + value: BinOp + left: Constant + value: int = 1 + kind: NoneType = None + op: LShift + right: Constant + value: int = 19 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = JSSTRICT + ctx: Store + value: Name + id: str = J + ctx: Load + type_comment: NoneType = None + element: ClassDef + name: str = error + bases: list + element: Name + id: str = Exception + ctx: Load + keywords: list + body: list + element: Expr + value: Constant + value: str = Regular Expression Exception Class + + kind: NoneType = None + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = msg + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = error + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = pattern + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = flags + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = pos + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + element: Constant + value: NoneType = None + kind: NoneType = None + element: Constant + value: int = 0 + kind: NoneType = None + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Expr + value: Constant + value: str = + + kind: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = Exception + ctx: Load + attr: str = __init__ + ctx: Load + args: list + element: Name + id: str = self + ctx: Load + element: Name + id: str = msg + ctx: Load + keywords: list + element: keyword + arg: str = error + value: Name + id: str = error + ctx: Load + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = pattern + ctx: Store + value: Name + id: str = pattern + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = flags + ctx: Store + value: Name + id: str = flags + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = pos + ctx: Store + value: Name + id: str = pos + ctx: Load + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: ClassDef + name: str = ReIndexError + bases: list + element: Name + id: str = IndexError + ctx: Load + keywords: list + body: list + element: Expr + value: Constant + value: str = Index Error variant for the re module - primarily used for + the group method in the Match Object. + + kind: NoneType = None + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = IndexError + ctx: Load + attr: str = __init__ + ctx: Load + args: list + element: Name + id: str = self + ctx: Load + element: Constant + value: str = no such group + kind: NoneType = None + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: ClassDef + name: str = Match + bases: list + element: Name + id: str = object + ctx: Load + keywords: list + body: list + element: Expr + value: Constant + value: str = Resulting Match from a Regex Operation + + kind: NoneType = None + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = mObj + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = string + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = pos + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = endpos + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = rObj + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = namedGroups + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Expr + value: Constant + value: str = + + kind: NoneType = None + element: For + target: Tuple + elts: list + element: Name + id: str = index + ctx: Store + element: Name + id: str = match + ctx: Store + ctx: Store + iter: Call + func: Name + id: str = enumerate + ctx: Load + args: list + element: Name + id: str = mObj + ctx: Load + keywords: list + body: list + element: Assign + targets: list + element: Subscript + value: Name + id: str = mObj + ctx: Load + slice: Index + value: Name + id: str = index + ctx: Load + ctx: Store + value: IfExp + test: Compare + left: Subscript + value: Name + id: str = mObj + ctx: Load + slice: Index + value: Name + id: str = index + ctx: Load + ctx: Load + ops: list + element: Eq + comparators: list + element: Name + id: str = js_undefined + ctx: Load + body: Constant + value: NoneType = None + kind: NoneType = None + orelse: Subscript + value: Name + id: str = mObj + ctx: Load + slice: Index + value: Name + id: str = index + ctx: Load + ctx: Load + type_comment: NoneType = None + orelse: list + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _obj + ctx: Store + value: Name + id: str = mObj + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _pos + ctx: Store + value: Name + id: str = pos + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _endpos + ctx: Store + value: Name + id: str = endpos + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _re + ctx: Store + value: Name + id: str = rObj + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _string + ctx: Store + value: Name + id: str = string + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _namedGroups + ctx: Store + value: Name + id: str = namedGroups + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _lastindex + ctx: Store + value: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _lastMatchGroup + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: If + test: Compare + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _namedGroups + ctx: Load + ops: list + element: IsNot + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _lastgroup + ctx: Store + value: Subscript + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _namedGroups + ctx: Load + slice: Index + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _lastindex + ctx: Load + ctx: Load + type_comment: NoneType = None + orelse: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _lastgroup + ctx: Store + value: Constant + value: NoneType = None + kind: NoneType = None + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = _getPos + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _pos + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = _setPos + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = val + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Raise + exc: Call + func: Name + id: str = AttributeError + ctx: Load + args: list + element: Constant + value: str = readonly attribute + kind: NoneType = None + keywords: list + cause: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = pos + ctx: Store + value: Call + func: Name + id: str = property + ctx: Load + args: list + element: Name + id: str = _getPos + ctx: Load + element: Name + id: str = _setPos + ctx: Load + keywords: list + type_comment: NoneType = None + element: FunctionDef + name: str = _getEndPos + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _endpos + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = _setEndPos + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = val + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Raise + exc: Call + func: Name + id: str = AttributeError + ctx: Load + args: list + element: Constant + value: str = readonly attribute + kind: NoneType = None + keywords: list + cause: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = endpos + ctx: Store + value: Call + func: Name + id: str = property + ctx: Load + args: list + element: Name + id: str = _getEndPos + ctx: Load + element: Name + id: str = _setEndPos + ctx: Load + keywords: list + type_comment: NoneType = None + element: FunctionDef + name: str = _getRe + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _re + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = _setRe + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = val + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Raise + exc: Call + func: Name + id: str = AttributeError + ctx: Load + args: list + element: Constant + value: str = readonly attribute + kind: NoneType = None + keywords: list + cause: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = re + ctx: Store + value: Call + func: Name + id: str = property + ctx: Load + args: list + element: Name + id: str = _getRe + ctx: Load + element: Name + id: str = _setRe + ctx: Load + keywords: list + type_comment: NoneType = None + element: FunctionDef + name: str = _getString + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _string + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = _setString + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = val + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Raise + exc: Call + func: Name + id: str = AttributeError + ctx: Load + args: list + element: Constant + value: str = readonly attribute + kind: NoneType = None + keywords: list + cause: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = string + ctx: Store + value: Call + func: Name + id: str = property + ctx: Load + args: list + element: Name + id: str = _getString + ctx: Load + element: Name + id: str = _setString + ctx: Load + keywords: list + type_comment: NoneType = None + element: FunctionDef + name: str = _getLastGroup + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _lastgroup + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = _setLastGroup + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = val + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Raise + exc: Call + func: Name + id: str = AttributeError + ctx: Load + args: list + element: Constant + value: str = readonly attribute + kind: NoneType = None + keywords: list + cause: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = lastgroup + ctx: Store + value: Call + func: Name + id: str = property + ctx: Load + args: list + element: Name + id: str = _getLastGroup + ctx: Load + element: Name + id: str = _setLastGroup + ctx: Load + keywords: list + type_comment: NoneType = None + element: FunctionDef + name: str = _getLastIndex + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _lastindex + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = _setLastIndex + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = val + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Raise + exc: Call + func: Name + id: str = AttributeError + ctx: Load + args: list + element: Constant + value: str = readonly attribute + kind: NoneType = None + keywords: list + cause: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = lastindex + ctx: Store + value: Call + func: Name + id: str = property + ctx: Load + args: list + element: Name + id: str = _getLastIndex + ctx: Load + element: Name + id: str = _setLastIndex + ctx: Load + keywords: list + type_comment: NoneType = None + element: FunctionDef + name: str = _lastMatchGroup + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = Determine the last matching group in the object + + kind: NoneType = None + element: If + test: Compare + left: Call + func: Name + id: str = len + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _obj + ctx: Load + keywords: list + ops: list + element: Gt + comparators: list + element: Constant + value: int = 1 + kind: NoneType = None + body: list + element: For + target: Name + id: str = i + ctx: Store + iter: Call + func: Name + id: str = range + ctx: Load + args: list + element: BinOp + left: Call + func: Name + id: str = len + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _obj + ctx: Load + keywords: list + op: Sub + right: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 0 + kind: NoneType = None + element: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + keywords: list + body: list + element: If + test: Compare + left: Subscript + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _obj + ctx: Load + slice: Index + value: Name + id: str = i + ctx: Load + ctx: Load + ops: list + element: IsNot + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Return + value: Name + id: str = i + ctx: Load + orelse: list + orelse: list + type_comment: NoneType = None + element: Return + value: Constant + value: NoneType = None + kind: NoneType = None + orelse: list + element: Return + value: Constant + value: NoneType = None + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = expand + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = template + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = + + kind: NoneType = None + element: Raise + exc: Call + func: Name + id: str = NotImplementedError + ctx: Load + args: list + keywords: list + cause: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = group + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: arg + arg: str = args + annotation: NoneType = None + type_comment: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = Return the string[s] for a group[s] + if only one group is provided, a string is returned + if multiple groups are provided, a tuple of strings is returned + + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = ret + ctx: Store + value: List + elts: list + ctx: Load + type_comment: NoneType = None + element: If + test: Compare + left: Call + func: Name + id: str = len + ctx: Load + args: list + element: Name + id: str = args + ctx: Load + keywords: list + ops: list + element: Gt + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + body: list + element: For + target: Name + id: str = index + ctx: Store + iter: Name + id: str = args + ctx: Load + body: list + element: If + test: Compare + left: Call + func: Name + id: str = type + ctx: Load + args: list + element: Name + id: str = index + ctx: Load + keywords: list + ops: list + element: Is + comparators: list + element: Name + id: str = str + ctx: Load + body: list + element: If + test: Compare + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _namedGroups + ctx: Load + ops: list + element: IsNot + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: If + test: Compare + left: Name + id: str = index + ctx: Load + ops: list + element: NotIn + comparators: list + element: Call + func: Attribute + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _namedGroups + ctx: Load + attr: str = keys + ctx: Load + args: list + keywords: list + body: list + element: Raise + exc: Call + func: Name + id: str = ReIndexError + ctx: Load + args: list + keywords: list + cause: NoneType = None + orelse: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = ret + ctx: Load + attr: str = append + ctx: Load + args: list + element: Subscript + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _obj + ctx: Load + slice: Index + value: Subscript + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _namedGroups + ctx: Load + slice: Index + value: Name + id: str = index + ctx: Load + ctx: Load + ctx: Load + keywords: list + orelse: list + element: Raise + exc: Call + func: Name + id: str = NotImplementedError + ctx: Load + args: list + element: Constant + value: str = No NamedGroups Available + kind: NoneType = None + keywords: list + cause: NoneType = None + orelse: list + element: If + test: Compare + left: Name + id: str = index + ctx: Load + ops: list + element: GtE + comparators: list + element: Call + func: Name + id: str = len + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _obj + ctx: Load + keywords: list + body: list + element: Raise + exc: Call + func: Name + id: str = ReIndexError + ctx: Load + args: list + keywords: list + cause: NoneType = None + orelse: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = ret + ctx: Load + attr: str = append + ctx: Load + args: list + element: Subscript + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _obj + ctx: Load + slice: Index + value: Name + id: str = index + ctx: Load + ctx: Load + keywords: list + orelse: list + type_comment: NoneType = None + orelse: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = ret + ctx: Load + attr: str = append + ctx: Load + args: list + element: Subscript + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _obj + ctx: Load + slice: Index + value: Constant + value: int = 0 + kind: NoneType = None + ctx: Load + keywords: list + element: If + test: Compare + left: Call + func: Name + id: str = len + ctx: Load + args: list + element: Name + id: str = ret + ctx: Load + keywords: list + ops: list + element: Eq + comparators: list + element: Constant + value: int = 1 + kind: NoneType = None + body: list + element: Return + value: Subscript + value: Name + id: str = ret + ctx: Load + slice: Index + value: Constant + value: int = 0 + kind: NoneType = None + ctx: Load + orelse: list + element: Return + value: Call + func: Name + id: str = tuple + ctx: Load + args: list + element: Name + id: str = ret + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = groups + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = default + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Expr + value: Constant + value: str = Get all the groups in this match. Replace any + groups that did not contribute to the match with default + value. + + kind: NoneType = None + element: If + test: Compare + left: Call + func: Name + id: str = len + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _obj + ctx: Load + keywords: list + ops: list + element: Gt + comparators: list + element: Constant + value: int = 1 + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = ret + ctx: Store + value: Subscript + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _obj + ctx: Load + slice: Slice + lower: Constant + value: int = 1 + kind: NoneType = None + upper: NoneType = None + step: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Return + value: Call + func: Name + id: str = tuple + ctx: Load + args: list + element: ListComp + elt: IfExp + test: Compare + left: Name + id: str = x + ctx: Load + ops: list + element: IsNot + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: Name + id: str = x + ctx: Load + orelse: Name + id: str = default + ctx: Load + generators: list + element: comprehension + target: Name + id: str = x + ctx: Store + iter: Name + id: str = ret + ctx: Load + ifs: list + is_async: int = 0 + keywords: list + orelse: list + element: Return + value: Call + func: Name + id: str = tuple + ctx: Load + args: list + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = groupdict + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = default + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Expr + value: Constant + value: str = The concept of named captures doesn't exist + in javascript so this will likely never be implemented. + For the python translated re we will have a group dict where + possible. + + kind: NoneType = None + element: If + test: Compare + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _namedGroups + ctx: Load + ops: list + element: IsNot + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = ret + ctx: Store + value: Dict + keys: list + values: list + type_comment: NoneType = None + element: For + target: Tuple + elts: list + element: Name + id: str = gName + ctx: Store + element: Name + id: str = gId + ctx: Store + ctx: Store + iter: Call + func: Attribute + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _namedGroups + ctx: Load + attr: str = items + ctx: Load + args: list + keywords: list + body: list + element: Assign + targets: list + element: Name + id: str = value + ctx: Store + value: Subscript + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _obj + ctx: Load + slice: Index + value: Name + id: str = gId + ctx: Load + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Subscript + value: Name + id: str = ret + ctx: Load + slice: Index + value: Name + id: str = gName + ctx: Load + ctx: Store + value: IfExp + test: Compare + left: Name + id: str = value + ctx: Load + ops: list + element: IsNot + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: Name + id: str = value + ctx: Load + orelse: Name + id: str = default + ctx: Load + type_comment: NoneType = None + orelse: list + type_comment: NoneType = None + element: Return + value: Name + id: str = ret + ctx: Load + orelse: list + element: Raise + exc: Call + func: Name + id: str = NotImplementedError + ctx: Load + args: list + element: Constant + value: str = No NamedGroups Available + kind: NoneType = None + keywords: list + cause: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = start + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = group + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + element: Constant + value: int = 0 + kind: NoneType = None + body: list + element: Expr + value: Constant + value: str = Find the starting index in the string for the passed + group id or named group string. + @param group + if the type of group is a str, then the named groups dict + is searched for a matching string. + if the type of group is an int, then the groups are + indexed starting with 0 = entire match, and 1,... are + the indices of the matched sub-groups + + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = gId + ctx: Store + value: Constant + value: int = 0 + kind: NoneType = None + type_comment: NoneType = None + element: If + test: Compare + left: Call + func: Name + id: str = type + ctx: Load + args: list + element: Name + id: str = group + ctx: Load + keywords: list + ops: list + element: Is + comparators: list + element: Name + id: str = str + ctx: Load + body: list + element: If + test: Compare + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _namedGroups + ctx: Load + ops: list + element: IsNot + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: If + test: Compare + left: Name + id: str = group + ctx: Load + ops: list + element: NotIn + comparators: list + element: Call + func: Attribute + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _namedGroups + ctx: Load + attr: str = keys + ctx: Load + args: list + keywords: list + body: list + element: Raise + exc: Call + func: Name + id: str = ReIndexError + ctx: Load + args: list + keywords: list + cause: NoneType = None + orelse: list + element: Assign + targets: list + element: Name + id: str = gId + ctx: Store + value: Subscript + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _namedGroups + ctx: Load + slice: Index + value: Name + id: str = group + ctx: Load + ctx: Load + type_comment: NoneType = None + orelse: list + element: Raise + exc: Call + func: Name + id: str = NotImplementedError + ctx: Load + args: list + element: Constant + value: str = No NamedGroups Available + kind: NoneType = None + keywords: list + cause: NoneType = None + orelse: list + element: Assign + targets: list + element: Name + id: str = gId + ctx: Store + value: Name + id: str = group + ctx: Load + type_comment: NoneType = None + element: If + test: Compare + left: Name + id: str = gId + ctx: Load + ops: list + element: GtE + comparators: list + element: Call + func: Name + id: str = len + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _obj + ctx: Load + keywords: list + body: list + element: Raise + exc: Call + func: Name + id: str = ReIndexError + ctx: Load + args: list + keywords: list + cause: NoneType = None + orelse: list + element: If + test: Compare + left: Name + id: str = gId + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + body: list + element: Return + value: Attribute + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _obj + ctx: Load + attr: str = index + ctx: Load + orelse: list + element: If + test: Compare + left: Subscript + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _obj + ctx: Load + slice: Index + value: Name + id: str = gId + ctx: Load + ctx: Load + ops: list + element: IsNot + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = r + ctx: Store + value: Call + func: Name + id: str = compile + ctx: Load + args: list + element: Call + func: Name + id: str = escape + ctx: Load + args: list + element: Subscript + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _obj + ctx: Load + slice: Index + value: Name + id: str = gId + ctx: Load + ctx: Load + keywords: list + element: Attribute + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _re + ctx: Load + attr: str = flags + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = m + ctx: Store + value: Call + func: Attribute + value: Name + id: str = r + ctx: Load + attr: str = search + ctx: Load + args: list + element: Subscript + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _obj + ctx: Load + slice: Index + value: Constant + value: int = 0 + kind: NoneType = None + ctx: Load + keywords: list + type_comment: NoneType = None + element: If + test: Name + id: str = m + ctx: Load + body: list + element: Return + value: BinOp + left: Attribute + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _obj + ctx: Load + attr: str = index + ctx: Load + op: Add + right: Call + func: Attribute + value: Name + id: str = m + ctx: Load + attr: str = start + ctx: Load + args: list + keywords: list + orelse: list + element: Raise + exc: Call + func: Name + id: str = Exception + ctx: Load + args: list + element: Constant + value: str = Failed to find capture group + kind: NoneType = None + keywords: list + cause: NoneType = None + orelse: list + element: Return + value: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = end + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = group + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + element: Constant + value: int = 0 + kind: NoneType = None + body: list + element: Expr + value: Constant + value: str = Find the ending index in the string for the passed + group id or named group string. + @param group + if the type of group is a str, then the named groups dict + is searched for a matching string. + if the type of group is an int, then the groups are + indexed starting with 0 = entire match, and 1,... are + the indices of the matched sub-groups + + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = gId + ctx: Store + value: Constant + value: int = 0 + kind: NoneType = None + type_comment: NoneType = None + element: If + test: Compare + left: Call + func: Name + id: str = type + ctx: Load + args: list + element: Name + id: str = group + ctx: Load + keywords: list + ops: list + element: Is + comparators: list + element: Name + id: str = str + ctx: Load + body: list + element: If + test: Compare + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _namedGroups + ctx: Load + ops: list + element: IsNot + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: If + test: Compare + left: Name + id: str = group + ctx: Load + ops: list + element: NotIn + comparators: list + element: Call + func: Attribute + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _namedGroups + ctx: Load + attr: str = keys + ctx: Load + args: list + keywords: list + body: list + element: Raise + exc: Call + func: Name + id: str = ReIndexError + ctx: Load + args: list + keywords: list + cause: NoneType = None + orelse: list + element: Assign + targets: list + element: Name + id: str = gId + ctx: Store + value: Subscript + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _namedGroups + ctx: Load + slice: Index + value: Name + id: str = group + ctx: Load + ctx: Load + type_comment: NoneType = None + orelse: list + element: Raise + exc: Call + func: Name + id: str = NotImplementedError + ctx: Load + args: list + element: Constant + value: str = No NamedGroups Available + kind: NoneType = None + keywords: list + cause: NoneType = None + orelse: list + element: Assign + targets: list + element: Name + id: str = gId + ctx: Store + value: Name + id: str = group + ctx: Load + type_comment: NoneType = None + element: If + test: Compare + left: Name + id: str = gId + ctx: Load + ops: list + element: GtE + comparators: list + element: Call + func: Name + id: str = len + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _obj + ctx: Load + keywords: list + body: list + element: Raise + exc: Call + func: Name + id: str = ReIndexError + ctx: Load + args: list + keywords: list + cause: NoneType = None + orelse: list + element: If + test: Compare + left: Name + id: str = gId + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + body: list + element: Return + value: BinOp + left: Attribute + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _obj + ctx: Load + attr: str = index + ctx: Load + op: Add + right: Call + func: Name + id: str = len + ctx: Load + args: list + element: Subscript + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _obj + ctx: Load + slice: Index + value: Constant + value: int = 0 + kind: NoneType = None + ctx: Load + keywords: list + orelse: list + element: If + test: Compare + left: Subscript + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _obj + ctx: Load + slice: Index + value: Name + id: str = gId + ctx: Load + ctx: Load + ops: list + element: IsNot + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = r + ctx: Store + value: Call + func: Name + id: str = compile + ctx: Load + args: list + element: Call + func: Name + id: str = escape + ctx: Load + args: list + element: Subscript + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _obj + ctx: Load + slice: Index + value: Name + id: str = gId + ctx: Load + ctx: Load + keywords: list + element: Attribute + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _re + ctx: Load + attr: str = flags + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = m + ctx: Store + value: Call + func: Attribute + value: Name + id: str = r + ctx: Load + attr: str = search + ctx: Load + args: list + element: Subscript + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _obj + ctx: Load + slice: Index + value: Constant + value: int = 0 + kind: NoneType = None + ctx: Load + keywords: list + type_comment: NoneType = None + element: If + test: Name + id: str = m + ctx: Load + body: list + element: Return + value: BinOp + left: Attribute + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _obj + ctx: Load + attr: str = index + ctx: Load + op: Add + right: Call + func: Attribute + value: Name + id: str = m + ctx: Load + attr: str = end + ctx: Load + args: list + keywords: list + orelse: list + element: Raise + exc: Call + func: Name + id: str = Exception + ctx: Load + args: list + element: Constant + value: str = Failed to find capture group + kind: NoneType = None + keywords: list + cause: NoneType = None + orelse: list + element: Return + value: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = span + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = group + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + element: Constant + value: int = 0 + kind: NoneType = None + body: list + element: Expr + value: Constant + value: str = Find the start and end index in the string for the passed + group id or named group string. + @param group + if the type of group is a str, then the named groups dict + is searched for a matching string. + if the type of group is an int, then the groups are + indexed starting with 0 = entire match, and 1,... are + the indices of the matched sub-groups + @return tuple of (start, end) + + kind: NoneType = None + element: Return + value: Tuple + elts: list + element: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = start + ctx: Load + args: list + element: Name + id: str = group + ctx: Load + keywords: list + element: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = end + ctx: Load + args: list + element: Name + id: str = group + ctx: Load + keywords: list + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: ClassDef + name: str = Regex + bases: list + element: Name + id: str = object + ctx: Load + keywords: list + body: list + element: Expr + value: Constant + value: str = Regular Expression Object + + kind: NoneType = None + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = pattern + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = flags + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = Initial the Regex Object + @param pattern - javascript regular expression pattern as a string + @param flags - string of javascript flags for the subsequently + created RegExp object. + + kind: NoneType = None + element: If + test: UnaryOp + op: Not + operand: Compare + left: BinOp + left: Name + id: str = flags + ctx: Load + op: BitAnd + right: Name + id: str = ASCII + ctx: Load + ops: list + element: Gt + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + body: list + element: AugAssign + target: Name + id: str = flags + ctx: Store + op: BitOr + value: Name + id: str = UNICODE + ctx: Load + orelse: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _flags + ctx: Store + value: Name + id: str = flags + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Tuple + elts: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _jsFlags + ctx: Store + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _obj + ctx: Store + ctx: Store + value: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _compileWrapper + ctx: Load + args: list + element: Name + id: str = pattern + ctx: Load + element: Name + id: str = flags + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _jspattern + ctx: Store + value: Name + id: str = pattern + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _pypattern + ctx: Store + value: Name + id: str = pattern + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = _ + ctx: Store + element: Name + id: str = groupCounterRegex + ctx: Store + ctx: Store + value: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _compileWrapper + ctx: Load + args: list + element: BinOp + left: Name + id: str = pattern + ctx: Load + op: Add + right: Constant + value: str = | + kind: NoneType = None + element: Name + id: str = flags + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _groups + ctx: Store + value: BinOp + left: Attribute + value: Call + func: Attribute + value: Name + id: str = groupCounterRegex + ctx: Load + attr: str = exec + ctx: Load + args: list + element: Constant + value: str = + kind: NoneType = None + keywords: list + attr: str = length + ctx: Load + op: Sub + right: Constant + value: int = 1 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _groupindex + ctx: Store + value: Constant + value: NoneType = None + kind: NoneType = None + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = _getPattern + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Name + id: str = ret + ctx: Store + value: Call + func: Attribute + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _pypattern + ctx: Load + attr: str = replace + ctx: Load + args: list + element: Constant + value: str = \ + kind: NoneType = None + element: Constant + value: str = \\ + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Return + value: Name + id: str = ret + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = _setPattern + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = val + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Raise + exc: Call + func: Name + id: str = AttributeError + ctx: Load + args: list + element: Constant + value: str = readonly attribute + kind: NoneType = None + keywords: list + cause: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = pattern + ctx: Store + value: Call + func: Name + id: str = property + ctx: Load + args: list + element: Name + id: str = _getPattern + ctx: Load + element: Name + id: str = _setPattern + ctx: Load + keywords: list + type_comment: NoneType = None + element: FunctionDef + name: str = _getFlags + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _flags + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = _setFlags + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = val + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Raise + exc: Call + func: Name + id: str = AttributeError + ctx: Load + args: list + element: Constant + value: str = readonly attribute + kind: NoneType = None + keywords: list + cause: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = flags + ctx: Store + value: Call + func: Name + id: str = property + ctx: Load + args: list + element: Name + id: str = _getFlags + ctx: Load + element: Name + id: str = _setFlags + ctx: Load + keywords: list + type_comment: NoneType = None + element: FunctionDef + name: str = _getGroups + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _groups + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = _setGroups + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = val + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Raise + exc: Call + func: Name + id: str = AttributeError + ctx: Load + args: list + element: Constant + value: str = readonly attribute + kind: NoneType = None + keywords: list + cause: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = groups + ctx: Store + value: Call + func: Name + id: str = property + ctx: Load + args: list + element: Name + id: str = _getGroups + ctx: Load + element: Name + id: str = _setGroups + ctx: Load + keywords: list + type_comment: NoneType = None + element: FunctionDef + name: str = _getGroupIndex + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: Compare + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _groupindex + ctx: Load + ops: list + element: Is + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Return + value: Dict + keys: list + values: list + orelse: list + element: Return + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _groupindex + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = _setGroupIndex + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = val + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Raise + exc: Call + func: Name + id: str = AttributeError + ctx: Load + args: list + element: Constant + value: str = readonly attribute + kind: NoneType = None + keywords: list + cause: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = groupindex + ctx: Store + value: Call + func: Name + id: str = property + ctx: Load + args: list + element: Name + id: str = _getGroupIndex + ctx: Load + element: Name + id: str = _setGroupIndex + ctx: Load + keywords: list + type_comment: NoneType = None + element: FunctionDef + name: str = _compileWrapper + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = pattern + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = flags + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + element: Constant + value: int = 0 + kind: NoneType = None + body: list + element: Expr + value: Constant + value: str = This function wraps the creation of the the + regular expresion so that we can catch the + Syntax Error exception and turn it into a + Python Exception + + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = jsFlags + ctx: Store + value: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _convertFlags + ctx: Load + args: list + element: Name + id: str = flags + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = rObj + ctx: Store + value: Constant + value: NoneType = None + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = errObj + ctx: Store + value: Constant + value: NoneType = None + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = js + kind: NoneType = None + element: Constant + value: str = {} + kind: NoneType = None + element: Constant + value: str = + try { + rObj = new RegExp(pattern, jsFlags) + } catch( err ) { + errObj = err + } + + kind: NoneType = None + keywords: list + element: If + test: Compare + left: Name + id: str = errObj + ctx: Load + ops: list + element: IsNot + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Raise + exc: Call + func: Name + id: str = error + ctx: Load + args: list + element: Attribute + value: Name + id: str = errObj + ctx: Load + attr: str = message + ctx: Load + element: Name + id: str = errObj + ctx: Load + element: Name + id: str = pattern + ctx: Load + element: Name + id: str = flags + ctx: Load + keywords: list + cause: NoneType = None + orelse: list + element: Return + value: Tuple + elts: list + element: Name + id: str = jsFlags + ctx: Load + element: Name + id: str = rObj + ctx: Load + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = _convertFlags + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = flags + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = Convert the Integer map based flags to a + string list of flags for js + + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = bitmaps + ctx: Store + value: List + elts: list + element: Tuple + elts: list + element: Name + id: str = DEBUG + ctx: Load + element: Constant + value: str = + kind: NoneType = None + ctx: Load + element: Tuple + elts: list + element: Name + id: str = IGNORECASE + ctx: Load + element: Constant + value: str = i + kind: NoneType = None + ctx: Load + element: Tuple + elts: list + element: Name + id: str = MULTILINE + ctx: Load + element: Constant + value: str = m + kind: NoneType = None + ctx: Load + element: Tuple + elts: list + element: Name + id: str = STICKY + ctx: Load + element: Constant + value: str = y + kind: NoneType = None + ctx: Load + element: Tuple + elts: list + element: Name + id: str = GLOBAL + ctx: Load + element: Constant + value: str = g + kind: NoneType = None + ctx: Load + element: Tuple + elts: list + element: Name + id: str = UNICODE + ctx: Load + element: Constant + value: str = u + kind: NoneType = None + ctx: Load + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = ret + ctx: Store + value: Call + func: Attribute + value: Constant + value: str = + kind: NoneType = None + attr: str = join + ctx: Load + args: list + element: ListComp + elt: Subscript + value: Name + id: str = x + ctx: Load + slice: Index + value: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + generators: list + element: comprehension + target: Name + id: str = x + ctx: Store + iter: Name + id: str = bitmaps + ctx: Load + ifs: list + element: Compare + left: BinOp + left: Subscript + value: Name + id: str = x + ctx: Load + slice: Index + value: Constant + value: int = 0 + kind: NoneType = None + ctx: Load + op: BitAnd + right: Name + id: str = flags + ctx: Load + ops: list + element: Gt + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + is_async: int = 0 + keywords: list + type_comment: NoneType = None + element: Return + value: Name + id: str = ret + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = _getTargetStr + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = string + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = pos + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = endpos + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = Given an start and endpos, slice out a target string. + + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = endPtr + ctx: Store + value: Call + func: Name + id: str = len + ctx: Load + args: list + element: Name + id: str = string + ctx: Load + keywords: list + type_comment: NoneType = None + element: If + test: Compare + left: Name + id: str = endpos + ctx: Load + ops: list + element: IsNot + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: If + test: Compare + left: Name + id: str = endpos + ctx: Load + ops: list + element: Lt + comparators: list + element: Name + id: str = endPtr + ctx: Load + body: list + element: Assign + targets: list + element: Name + id: str = endPtr + ctx: Store + value: Name + id: str = endpos + ctx: Load + type_comment: NoneType = None + orelse: list + orelse: list + element: If + test: Compare + left: Name + id: str = endPtr + ctx: Load + ops: list + element: Lt + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = endPtr + ctx: Store + value: Constant + value: int = 0 + kind: NoneType = None + type_comment: NoneType = None + orelse: list + element: Assign + targets: list + element: Name + id: str = ret + ctx: Store + value: Subscript + value: Name + id: str = string + ctx: Load + slice: Slice + lower: Name + id: str = pos + ctx: Load + upper: Name + id: str = endPtr + ctx: Load + step: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Return + value: Name + id: str = ret + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = _patternHasCaptures + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = Check if the regex pattern contains a capture + necessary to make split behave correctly + + kind: NoneType = None + element: Return + value: Compare + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _groups + ctx: Load + ops: list + element: Gt + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = search + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = string + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = pos + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = endpos + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + element: Constant + value: int = 0 + kind: NoneType = None + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Expr + value: Constant + value: str = Search through a string for matches to + this regex object. @see the python docs + + kind: NoneType = None + element: If + test: Compare + left: Name + id: str = endpos + ctx: Load + ops: list + element: Is + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = endpos + ctx: Store + value: Call + func: Name + id: str = len + ctx: Load + args: list + element: Name + id: str = string + ctx: Load + keywords: list + type_comment: NoneType = None + orelse: list + element: Assign + targets: list + element: Name + id: str = rObj + ctx: Store + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _obj + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = m + ctx: Store + value: Call + func: Attribute + value: Name + id: str = rObj + ctx: Load + attr: str = exec + ctx: Load + args: list + element: Name + id: str = string + ctx: Load + keywords: list + type_comment: NoneType = None + element: If + test: Name + id: str = m + ctx: Load + body: list + element: If + test: BoolOp + op: Or + values: list + element: Compare + left: Attribute + value: Name + id: str = m + ctx: Load + attr: str = index + ctx: Load + ops: list + element: Lt + comparators: list + element: Name + id: str = pos + ctx: Load + element: Compare + left: Attribute + value: Name + id: str = m + ctx: Load + attr: str = index + ctx: Load + ops: list + element: Gt + comparators: list + element: Name + id: str = endpos + ctx: Load + body: list + element: Return + value: Constant + value: NoneType = None + kind: NoneType = None + orelse: list + element: Return + value: Call + func: Name + id: str = Match + ctx: Load + args: list + element: Name + id: str = m + ctx: Load + element: Name + id: str = string + ctx: Load + element: Name + id: str = pos + ctx: Load + element: Name + id: str = endpos + ctx: Load + element: Name + id: str = self + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _groupindex + ctx: Load + keywords: list + orelse: list + element: Return + value: Constant + value: NoneType = None + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = match + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = string + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = pos + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = endpos + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + element: Constant + value: int = 0 + kind: NoneType = None + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Expr + value: Constant + value: str = Match this regex at the beginning of the passed + string. @see the python docs + + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = target + ctx: Store + value: Name + id: str = string + ctx: Load + type_comment: NoneType = None + element: If + test: Compare + left: Name + id: str = endpos + ctx: Load + ops: list + element: IsNot + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = target + ctx: Store + value: Subscript + value: Name + id: str = target + ctx: Load + slice: Slice + lower: NoneType = None + upper: Name + id: str = endpos + ctx: Load + step: NoneType = None + ctx: Load + type_comment: NoneType = None + orelse: list + element: Assign + targets: list + element: Name + id: str = endpos + ctx: Store + value: Call + func: Name + id: str = len + ctx: Load + args: list + element: Name + id: str = string + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = rObj + ctx: Store + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _obj + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = m + ctx: Store + value: Call + func: Attribute + value: Name + id: str = rObj + ctx: Load + attr: str = exec + ctx: Load + args: list + element: Name + id: str = target + ctx: Load + keywords: list + type_comment: NoneType = None + element: If + test: Name + id: str = m + ctx: Load + body: list + element: If + test: Compare + left: Attribute + value: Name + id: str = m + ctx: Load + attr: str = index + ctx: Load + ops: list + element: Eq + comparators: list + element: Name + id: str = pos + ctx: Load + body: list + element: Return + value: Call + func: Name + id: str = Match + ctx: Load + args: list + element: Name + id: str = m + ctx: Load + element: Name + id: str = string + ctx: Load + element: Name + id: str = pos + ctx: Load + element: Name + id: str = endpos + ctx: Load + element: Name + id: str = self + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _groupindex + ctx: Load + keywords: list + orelse: list + element: Return + value: Constant + value: NoneType = None + kind: NoneType = None + orelse: list + element: Return + value: Constant + value: NoneType = None + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = fullmatch + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = string + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = pos + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = endpos + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + element: Constant + value: int = 0 + kind: NoneType = None + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Expr + value: Constant + value: str = Match the entirety of the passed string to this regex + object. @see the python docs + + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = target + ctx: Store + value: Name + id: str = string + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = strEndPos + ctx: Store + value: Call + func: Name + id: str = len + ctx: Load + args: list + element: Name + id: str = string + ctx: Load + keywords: list + type_comment: NoneType = None + element: If + test: Compare + left: Name + id: str = endpos + ctx: Load + ops: list + element: IsNot + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = target + ctx: Store + value: Subscript + value: Name + id: str = target + ctx: Load + slice: Slice + lower: NoneType = None + upper: Name + id: str = endpos + ctx: Load + step: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = strEndPos + ctx: Store + value: Name + id: str = endpos + ctx: Load + type_comment: NoneType = None + orelse: list + element: Assign + targets: list + element: Name + id: str = rObj + ctx: Store + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _obj + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = m + ctx: Store + value: Call + func: Attribute + value: Name + id: str = rObj + ctx: Load + attr: str = exec + ctx: Load + args: list + element: Name + id: str = target + ctx: Load + keywords: list + type_comment: NoneType = None + element: If + test: Name + id: str = m + ctx: Load + body: list + element: Assign + targets: list + element: Name + id: str = obsEndPos + ctx: Store + value: BinOp + left: Attribute + value: Name + id: str = m + ctx: Load + attr: str = index + ctx: Load + op: Add + right: Call + func: Name + id: str = len + ctx: Load + args: list + element: Subscript + value: Name + id: str = m + ctx: Load + slice: Index + value: Constant + value: int = 0 + kind: NoneType = None + ctx: Load + keywords: list + type_comment: NoneType = None + element: If + test: BoolOp + op: And + values: list + element: Compare + left: Attribute + value: Name + id: str = m + ctx: Load + attr: str = index + ctx: Load + ops: list + element: Eq + comparators: list + element: Name + id: str = pos + ctx: Load + element: Compare + left: Name + id: str = obsEndPos + ctx: Load + ops: list + element: Eq + comparators: list + element: Name + id: str = strEndPos + ctx: Load + body: list + element: Return + value: Call + func: Name + id: str = Match + ctx: Load + args: list + element: Name + id: str = m + ctx: Load + element: Name + id: str = string + ctx: Load + element: Name + id: str = pos + ctx: Load + element: Name + id: str = strEndPos + ctx: Load + element: Name + id: str = self + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _groupindex + ctx: Load + keywords: list + orelse: list + element: Return + value: Constant + value: NoneType = None + kind: NoneType = None + orelse: list + element: Return + value: Constant + value: NoneType = None + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = split + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = string + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = maxsplit + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + element: Constant + value: int = 0 + kind: NoneType = None + body: list + element: Expr + value: Constant + value: str = Split the passed string on each match of this regex + object. If the regex contains captures, then the match + content is included as a separate item. If no captures are + in the regex, then only the non-matching split content is + returned. @see the python docs + @param maxsplit max number of times to split the string + at a matching substring. + @return list of sub-strings + + kind: NoneType = None + element: If + test: Compare + left: Name + id: str = maxsplit + ctx: Load + ops: list + element: Lt + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + body: list + element: Return + value: List + elts: list + element: Name + id: str = string + ctx: Load + ctx: Load + orelse: list + element: Assign + targets: list + element: Name + id: str = mObj + ctx: Store + value: Constant + value: NoneType = None + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = rObj + ctx: Store + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _obj + ctx: Load + type_comment: NoneType = None + element: If + test: Compare + left: Name + id: str = maxsplit + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = mObj + ctx: Store + value: Call + func: Attribute + value: Name + id: str = string + ctx: Load + attr: str = split + ctx: Load + args: list + element: Name + id: str = rObj + ctx: Load + keywords: list + type_comment: NoneType = None + element: Return + value: Name + id: str = mObj + ctx: Load + orelse: list + element: Assign + targets: list + element: Name + id: str = flags + ctx: Store + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _flags + ctx: Load + type_comment: NoneType = None + element: AugAssign + target: Name + id: str = flags + ctx: Store + op: BitOr + value: Name + id: str = GLOBAL + ctx: Load + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = _ + ctx: Store + element: Name + id: str = rObj + ctx: Store + ctx: Store + value: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _compileWrapper + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _jspattern + ctx: Load + element: Name + id: str = flags + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = ret + ctx: Store + value: List + elts: list + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = lastM + ctx: Store + value: Constant + value: NoneType = None + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = cnt + ctx: Store + value: Constant + value: int = 0 + kind: NoneType = None + type_comment: NoneType = None + element: For + target: Name + id: str = i + ctx: Store + iter: Call + func: Name + id: str = range + ctx: Load + args: list + element: Constant + value: int = 0 + kind: NoneType = None + element: Name + id: str = maxsplit + ctx: Load + keywords: list + body: list + element: Assign + targets: list + element: Name + id: str = m + ctx: Store + value: Call + func: Attribute + value: Name + id: str = rObj + ctx: Load + attr: str = exec + ctx: Load + args: list + element: Name + id: str = string + ctx: Load + keywords: list + type_comment: NoneType = None + element: If + test: Name + id: str = m + ctx: Load + body: list + element: AugAssign + target: Name + id: str = cnt + ctx: Store + op: Add + value: Constant + value: int = 1 + kind: NoneType = None + element: If + test: Compare + left: Name + id: str = lastM + ctx: Load + ops: list + element: IsNot + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = start + ctx: Store + value: BinOp + left: Attribute + value: Name + id: str = lastM + ctx: Load + attr: str = index + ctx: Load + op: Add + right: Call + func: Name + id: str = len + ctx: Load + args: list + element: Subscript + value: Name + id: str = lastM + ctx: Load + slice: Index + value: Constant + value: int = 0 + kind: NoneType = None + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = head + ctx: Store + value: Subscript + value: Name + id: str = string + ctx: Load + slice: Slice + lower: Name + id: str = start + ctx: Load + upper: Attribute + value: Name + id: str = m + ctx: Load + attr: str = index + ctx: Load + step: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = ret + ctx: Load + attr: str = append + ctx: Load + args: list + element: Name + id: str = head + ctx: Load + keywords: list + element: If + test: Compare + left: Call + func: Name + id: str = len + ctx: Load + args: list + element: Name + id: str = m + ctx: Load + keywords: list + ops: list + element: Gt + comparators: list + element: Constant + value: int = 1 + kind: NoneType = None + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = ret + ctx: Load + attr: str = extend + ctx: Load + args: list + element: Subscript + value: Name + id: str = m + ctx: Load + slice: Slice + lower: Constant + value: int = 1 + kind: NoneType = None + upper: NoneType = None + step: NoneType = None + ctx: Load + keywords: list + orelse: list + orelse: list + element: Assign + targets: list + element: Name + id: str = head + ctx: Store + value: Subscript + value: Name + id: str = string + ctx: Load + slice: Slice + lower: NoneType = None + upper: Attribute + value: Name + id: str = m + ctx: Load + attr: str = index + ctx: Load + step: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = ret + ctx: Load + attr: str = append + ctx: Load + args: list + element: Name + id: str = head + ctx: Load + keywords: list + element: If + test: Compare + left: Call + func: Name + id: str = len + ctx: Load + args: list + element: Name + id: str = m + ctx: Load + keywords: list + ops: list + element: Gt + comparators: list + element: Constant + value: int = 1 + kind: NoneType = None + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = ret + ctx: Load + attr: str = extend + ctx: Load + args: list + element: Subscript + value: Name + id: str = m + ctx: Load + slice: Slice + lower: Constant + value: int = 1 + kind: NoneType = None + upper: NoneType = None + step: NoneType = None + ctx: Load + keywords: list + orelse: list + element: Assign + targets: list + element: Name + id: str = lastM + ctx: Store + value: Name + id: str = m + ctx: Load + type_comment: NoneType = None + orelse: list + element: Break + orelse: list + type_comment: NoneType = None + element: If + test: Compare + left: Name + id: str = lastM + ctx: Load + ops: list + element: IsNot + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = endPos + ctx: Store + value: BinOp + left: Attribute + value: Name + id: str = lastM + ctx: Load + attr: str = index + ctx: Load + op: Add + right: Call + func: Name + id: str = len + ctx: Load + args: list + element: Subscript + value: Name + id: str = lastM + ctx: Load + slice: Index + value: Constant + value: int = 0 + kind: NoneType = None + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = end + ctx: Store + value: Subscript + value: Name + id: str = string + ctx: Load + slice: Slice + lower: Name + id: str = endPos + ctx: Load + upper: NoneType = None + step: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = ret + ctx: Load + attr: str = append + ctx: Load + args: list + element: Name + id: str = end + ctx: Load + keywords: list + orelse: list + element: Return + value: Name + id: str = ret + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = _findAllMatches + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = string + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = pos + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = endpos + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + element: Constant + value: int = 0 + kind: NoneType = None + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = target + ctx: Store + value: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _getTargetStr + ctx: Load + args: list + element: Name + id: str = string + ctx: Load + element: Name + id: str = pos + ctx: Load + element: Name + id: str = endpos + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = flags + ctx: Store + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _flags + ctx: Load + type_comment: NoneType = None + element: AugAssign + target: Name + id: str = flags + ctx: Store + op: BitOr + value: Name + id: str = GLOBAL + ctx: Load + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = _ + ctx: Store + element: Name + id: str = rObj + ctx: Store + ctx: Store + value: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _compileWrapper + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _jspattern + ctx: Load + element: Name + id: str = flags + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = ret + ctx: Store + value: List + elts: list + ctx: Load + type_comment: NoneType = None + element: While + test: Constant + value: bool = True + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = m + ctx: Store + value: Call + func: Attribute + value: Name + id: str = rObj + ctx: Load + attr: str = exec + ctx: Load + args: list + element: Name + id: str = target + ctx: Load + keywords: list + type_comment: NoneType = None + element: If + test: Name + id: str = m + ctx: Load + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = ret + ctx: Load + attr: str = append + ctx: Load + args: list + element: Name + id: str = m + ctx: Load + keywords: list + orelse: list + element: Break + orelse: list + element: Return + value: Name + id: str = ret + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = findall + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = string + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = pos + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = endpos + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + element: Constant + value: int = 0 + kind: NoneType = None + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Expr + value: Constant + value: str = Find All the matches to this regex in the passed string + @return either: + List of strings of the matched regex has 1 or 0 capture + groups + List of elements that are each a list of the groups matched + at each location in the string. + @see the python docs + + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = mlist + ctx: Store + value: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _findAllMatches + ctx: Load + args: list + element: Name + id: str = string + ctx: Load + element: Name + id: str = pos + ctx: Load + element: Name + id: str = endpos + ctx: Load + keywords: list + type_comment: NoneType = None + element: FunctionDef + name: str = mSelect + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = m + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: Compare + left: Call + func: Name + id: str = len + ctx: Load + args: list + element: Name + id: str = m + ctx: Load + keywords: list + ops: list + element: Gt + comparators: list + element: Constant + value: int = 2 + kind: NoneType = None + body: list + element: Return + value: Call + func: Name + id: str = tuple + ctx: Load + args: list + element: Subscript + value: Name + id: str = m + ctx: Load + slice: Slice + lower: Constant + value: int = 1 + kind: NoneType = None + upper: NoneType = None + step: NoneType = None + ctx: Load + keywords: list + orelse: list + element: If + test: Compare + left: Call + func: Name + id: str = len + ctx: Load + args: list + element: Name + id: str = m + ctx: Load + keywords: list + ops: list + element: Eq + comparators: list + element: Constant + value: int = 2 + kind: NoneType = None + body: list + element: Return + value: Subscript + value: Name + id: str = m + ctx: Load + slice: Index + value: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + orelse: list + element: Return + value: Subscript + value: Name + id: str = m + ctx: Load + slice: Index + value: Constant + value: int = 0 + kind: NoneType = None + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = ret + ctx: Store + value: Call + func: Name + id: str = map + ctx: Load + args: list + element: Name + id: str = mSelect + ctx: Load + element: Name + id: str = mlist + ctx: Load + keywords: list + type_comment: NoneType = None + element: Return + value: Name + id: str = ret + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = finditer + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = string + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = pos + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = endpos + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Expr + value: Constant + value: str = Like findall but returns an iterator instead of + a list. + @see the python docs + + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = mlist + ctx: Store + value: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _findAllMatches + ctx: Load + args: list + element: Name + id: str = string + ctx: Load + element: Name + id: str = pos + ctx: Load + element: Name + id: str = endpos + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = ret + ctx: Store + value: Call + func: Name + id: str = map + ctx: Load + args: list + element: Lambda + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = m + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: Call + func: Name + id: str = Match + ctx: Load + args: list + element: Name + id: str = m + ctx: Load + element: Name + id: str = string + ctx: Load + element: Constant + value: int = 0 + kind: NoneType = None + element: Call + func: Name + id: str = len + ctx: Load + args: list + element: Name + id: str = string + ctx: Load + keywords: list + element: Name + id: str = self + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _groupindex + ctx: Load + keywords: list + element: Name + id: str = mlist + ctx: Load + keywords: list + type_comment: NoneType = None + element: Return + value: Call + func: Name + id: str = iter + ctx: Load + args: list + element: Name + id: str = ret + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = sub + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = repl + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = string + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = count + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + element: Constant + value: int = 0 + kind: NoneType = None + body: list + element: Expr + value: Constant + value: str = Substitude each match of this regex in the passed string + with either: + if repl is of type string, + replace with repl + if repl is a callable object, then the returned value + from repl(m) where m is the match object at a particular + point in the string. + @see the python docs + @return the augmented string with substitutions + + kind: NoneType = None + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = ret + ctx: Store + element: Name + id: str = _ + ctx: Store + ctx: Store + value: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = subn + ctx: Load + args: list + element: Name + id: str = repl + ctx: Load + element: Name + id: str = string + ctx: Load + element: Name + id: str = count + ctx: Load + keywords: list + type_comment: NoneType = None + element: Return + value: Name + id: str = ret + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = subn + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = repl + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = string + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = count + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + element: Constant + value: int = 0 + kind: NoneType = None + body: list + element: Expr + value: Constant + value: str = Similar to sub except that instead of just returning the + augmented string, it returns a tuple of the augmented string + and the number of times that the replacement op occured. + (augstr, numreplacements) + @see the python docs + + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = flags + ctx: Store + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _flags + ctx: Load + type_comment: NoneType = None + element: AugAssign + target: Name + id: str = flags + ctx: Store + op: BitOr + value: Name + id: str = GLOBAL + ctx: Load + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = _ + ctx: Store + element: Name + id: str = rObj + ctx: Store + ctx: Store + value: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _compileWrapper + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _jspattern + ctx: Load + element: Name + id: str = flags + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = ret + ctx: Store + value: Constant + value: str = + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = totalMatch + ctx: Store + value: Constant + value: int = 0 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = lastEnd + ctx: Store + value: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + type_comment: NoneType = None + element: While + test: Constant + value: bool = True + kind: NoneType = None + body: list + element: If + test: Compare + left: Name + id: str = count + ctx: Load + ops: list + element: Gt + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + body: list + element: If + test: Compare + left: Name + id: str = totalMatch + ctx: Load + ops: list + element: GtE + comparators: list + element: Name + id: str = count + ctx: Load + body: list + element: If + test: Compare + left: Name + id: str = lastEnd + ctx: Load + ops: list + element: Lt + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + body: list + element: Return + value: Tuple + elts: list + element: Name + id: str = ret + ctx: Load + element: Name + id: str = totalMatch + ctx: Load + ctx: Load + orelse: list + element: AugAssign + target: Name + id: str = ret + ctx: Store + op: Add + value: Subscript + value: Name + id: str = string + ctx: Load + slice: Slice + lower: Name + id: str = lastEnd + ctx: Load + upper: Attribute + value: Name + id: str = m + ctx: Load + attr: str = index + ctx: Load + step: NoneType = None + ctx: Load + element: Return + value: Tuple + elts: list + element: Name + id: str = ret + ctx: Load + element: Name + id: str = totalMatch + ctx: Load + ctx: Load + orelse: list + orelse: list + element: Assign + targets: list + element: Name + id: str = m + ctx: Store + value: Call + func: Attribute + value: Name + id: str = rObj + ctx: Load + attr: str = exec + ctx: Load + args: list + element: Name + id: str = string + ctx: Load + keywords: list + type_comment: NoneType = None + element: If + test: Name + id: str = m + ctx: Load + body: list + element: If + test: Compare + left: Name + id: str = lastEnd + ctx: Load + ops: list + element: Lt + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + body: list + element: AugAssign + target: Name + id: str = ret + ctx: Store + op: Add + value: Subscript + value: Name + id: str = string + ctx: Load + slice: Slice + lower: NoneType = None + upper: Attribute + value: Name + id: str = m + ctx: Load + attr: str = index + ctx: Load + step: NoneType = None + ctx: Load + orelse: list + element: AugAssign + target: Name + id: str = ret + ctx: Store + op: Add + value: Subscript + value: Name + id: str = string + ctx: Load + slice: Slice + lower: Name + id: str = lastEnd + ctx: Load + upper: Attribute + value: Name + id: str = m + ctx: Load + attr: str = index + ctx: Load + step: NoneType = None + ctx: Load + element: If + test: Call + func: Name + id: str = callable + ctx: Load + args: list + element: Name + id: str = repl + ctx: Load + keywords: list + body: list + element: Assign + targets: list + element: Name + id: str = content + ctx: Store + value: Call + func: Name + id: str = repl + ctx: Load + args: list + element: Call + func: Name + id: str = Match + ctx: Load + args: list + element: Name + id: str = m + ctx: Load + element: Name + id: str = string + ctx: Load + element: Constant + value: int = 0 + kind: NoneType = None + element: Call + func: Name + id: str = len + ctx: Load + args: list + element: Name + id: str = string + ctx: Load + keywords: list + element: Name + id: str = self + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _groupindex + ctx: Load + keywords: list + keywords: list + type_comment: NoneType = None + element: AugAssign + target: Name + id: str = ret + ctx: Store + op: Add + value: Name + id: str = content + ctx: Load + orelse: list + element: AugAssign + target: Name + id: str = ret + ctx: Store + op: Add + value: Name + id: str = repl + ctx: Load + element: AugAssign + target: Name + id: str = totalMatch + ctx: Store + op: Add + value: Constant + value: int = 1 + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = lastEnd + ctx: Store + value: BinOp + left: Attribute + value: Name + id: str = m + ctx: Load + attr: str = index + ctx: Load + op: Add + right: Call + func: Name + id: str = len + ctx: Load + args: list + element: Subscript + value: Name + id: str = m + ctx: Load + slice: Index + value: Constant + value: int = 0 + kind: NoneType = None + ctx: Load + keywords: list + type_comment: NoneType = None + orelse: list + element: If + test: Compare + left: Name + id: str = lastEnd + ctx: Load + ops: list + element: Lt + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + body: list + element: Return + value: Tuple + elts: list + element: Name + id: str = string + ctx: Load + element: Constant + value: int = 0 + kind: NoneType = None + ctx: Load + orelse: list + element: AugAssign + target: Name + id: str = ret + ctx: Store + op: Add + value: Subscript + value: Name + id: str = string + ctx: Load + slice: Slice + lower: Name + id: str = lastEnd + ctx: Load + upper: NoneType = None + step: NoneType = None + ctx: Load + element: Return + value: Tuple + elts: list + element: Name + id: str = ret + ctx: Load + element: Name + id: str = totalMatch + ctx: Load + ctx: Load + orelse: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: ClassDef + name: str = PyRegExp + bases: list + element: Name + id: str = Regex + ctx: Load + keywords: list + body: list + element: Expr + value: Constant + value: str = Python Regular Expression object which translates a python + regex syntax string into a format that can be passed to the + js regex engine. + + kind: NoneType = None + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = pyPattern + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = flags + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = + @pattern Python Regex String + @pattern flags bit flags passed by the user. + + kind: NoneType = None + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = jsTokens + ctx: Store + element: Name + id: str = inlineFlags + ctx: Store + element: Name + id: str = namedGroups + ctx: Store + element: Name + id: str = nCapGroups + ctx: Store + element: Name + id: str = n_splits + ctx: Store + ctx: Store + value: Call + func: Name + id: str = translate + ctx: Load + args: list + element: Name + id: str = pyPattern + ctx: Load + keywords: list + type_comment: NoneType = None + element: AugAssign + target: Name + id: str = flags + ctx: Store + op: BitOr + value: Name + id: str = inlineFlags + ctx: Load + element: Assign + targets: list + element: Name + id: str = jsPattern + ctx: Store + value: Call + func: Attribute + value: Constant + value: str = + kind: NoneType = None + attr: str = join + ctx: Load + args: list + element: Name + id: str = jsTokens + ctx: Load + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = Regex + ctx: Load + attr: str = __init__ + ctx: Load + args: list + element: Name + id: str = self + ctx: Load + element: Name + id: str = jsPattern + ctx: Load + element: Name + id: str = flags + ctx: Load + keywords: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _pypattern + ctx: Store + value: Name + id: str = pyPattern + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _nsplits + ctx: Store + value: Name + id: str = n_splits + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _jsTokens + ctx: Store + value: Name + id: str = jsTokens + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _capgroups + ctx: Store + value: Name + id: str = nCapGroups + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _groupindex + ctx: Store + value: Name + id: str = namedGroups + ctx: Load + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: FunctionDef + name: str = compile + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = pattern + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = flags + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + element: Constant + value: int = 0 + kind: NoneType = None + body: list + element: Expr + value: Constant + value: str = Compile a regex object and return + an object that can be used for further processing. + + kind: NoneType = None + element: If + test: BinOp + left: Name + id: str = flags + ctx: Load + op: BitAnd + right: Name + id: str = JSSTRICT + ctx: Load + body: list + element: Assign + targets: list + element: Name + id: str = p + ctx: Store + value: Call + func: Name + id: str = Regex + ctx: Load + args: list + element: Name + id: str = pattern + ctx: Load + element: Name + id: str = flags + ctx: Load + keywords: list + type_comment: NoneType = None + orelse: list + element: Assign + targets: list + element: Name + id: str = p + ctx: Store + value: Call + func: Name + id: str = PyRegExp + ctx: Load + args: list + element: Name + id: str = pattern + ctx: Load + element: Name + id: str = flags + ctx: Load + keywords: list + type_comment: NoneType = None + element: Return + value: Name + id: str = p + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = search + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = pattern + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = string + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = flags + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + element: Constant + value: int = 0 + kind: NoneType = None + body: list + element: Expr + value: Constant + value: str = Search a string for a particular matching pattern + + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = p + ctx: Store + value: Call + func: Name + id: str = compile + ctx: Load + args: list + element: Name + id: str = pattern + ctx: Load + element: Name + id: str = flags + ctx: Load + keywords: list + type_comment: NoneType = None + element: Return + value: Call + func: Attribute + value: Name + id: str = p + ctx: Load + attr: str = search + ctx: Load + args: list + element: Name + id: str = string + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = match + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = pattern + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = string + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = flags + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + element: Constant + value: int = 0 + kind: NoneType = None + body: list + element: Expr + value: Constant + value: str = Match a string for a particular pattern + + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = p + ctx: Store + value: Call + func: Name + id: str = compile + ctx: Load + args: list + element: Name + id: str = pattern + ctx: Load + element: Name + id: str = flags + ctx: Load + keywords: list + type_comment: NoneType = None + element: Return + value: Call + func: Attribute + value: Name + id: str = p + ctx: Load + attr: str = match + ctx: Load + args: list + element: Name + id: str = string + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = fullmatch + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = pattern + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = string + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = flags + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + element: Constant + value: int = 0 + kind: NoneType = None + body: list + element: Expr + value: Constant + value: str = + + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = p + ctx: Store + value: Call + func: Name + id: str = compile + ctx: Load + args: list + element: Name + id: str = pattern + ctx: Load + element: Name + id: str = flags + ctx: Load + keywords: list + type_comment: NoneType = None + element: Return + value: Call + func: Attribute + value: Name + id: str = p + ctx: Load + attr: str = fullmatch + ctx: Load + args: list + element: Name + id: str = string + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = split + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = pattern + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = string + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = maxsplit + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = flags + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + element: Constant + value: int = 0 + kind: NoneType = None + element: Constant + value: int = 0 + kind: NoneType = None + body: list + element: Expr + value: Constant + value: str = + + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = p + ctx: Store + value: Call + func: Name + id: str = compile + ctx: Load + args: list + element: Name + id: str = pattern + ctx: Load + element: Name + id: str = flags + ctx: Load + keywords: list + type_comment: NoneType = None + element: Return + value: Call + func: Attribute + value: Name + id: str = p + ctx: Load + attr: str = split + ctx: Load + args: list + element: Name + id: str = string + ctx: Load + element: Name + id: str = maxsplit + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = findall + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = pattern + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = string + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = flags + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + element: Constant + value: int = 0 + kind: NoneType = None + body: list + element: Expr + value: Constant + value: str = + + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = p + ctx: Store + value: Call + func: Name + id: str = compile + ctx: Load + args: list + element: Name + id: str = pattern + ctx: Load + element: Name + id: str = flags + ctx: Load + keywords: list + type_comment: NoneType = None + element: Return + value: Call + func: Attribute + value: Name + id: str = p + ctx: Load + attr: str = findall + ctx: Load + args: list + element: Name + id: str = string + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = finditer + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = pattern + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = string + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = flags + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + element: Constant + value: int = 0 + kind: NoneType = None + body: list + element: Expr + value: Constant + value: str = + + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = p + ctx: Store + value: Call + func: Name + id: str = compile + ctx: Load + args: list + element: Name + id: str = pattern + ctx: Load + element: Name + id: str = flags + ctx: Load + keywords: list + type_comment: NoneType = None + element: Return + value: Call + func: Attribute + value: Name + id: str = p + ctx: Load + attr: str = finditer + ctx: Load + args: list + element: Name + id: str = string + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = sub + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = pattern + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = repl + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = string + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = count + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = flags + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + element: Constant + value: int = 0 + kind: NoneType = None + element: Constant + value: int = 0 + kind: NoneType = None + body: list + element: Expr + value: Constant + value: str = + + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = p + ctx: Store + value: Call + func: Name + id: str = compile + ctx: Load + args: list + element: Name + id: str = pattern + ctx: Load + element: Name + id: str = flags + ctx: Load + keywords: list + type_comment: NoneType = None + element: Return + value: Call + func: Attribute + value: Name + id: str = p + ctx: Load + attr: str = sub + ctx: Load + args: list + element: Name + id: str = repl + ctx: Load + element: Name + id: str = string + ctx: Load + element: Name + id: str = count + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = subn + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = pattern + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = repl + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = string + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = count + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = flags + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + element: Constant + value: int = 0 + kind: NoneType = None + element: Constant + value: int = 0 + kind: NoneType = None + body: list + element: Expr + value: Constant + value: str = + + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = p + ctx: Store + value: Call + func: Name + id: str = compile + ctx: Load + args: list + element: Name + id: str = pattern + ctx: Load + element: Name + id: str = flags + ctx: Load + keywords: list + type_comment: NoneType = None + element: Return + value: Call + func: Attribute + value: Name + id: str = p + ctx: Load + attr: str = subn + ctx: Load + args: list + element: Name + id: str = repl + ctx: Load + element: Name + id: str = string + ctx: Load + element: Name + id: str = count + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = escape + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = string + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = Escape a passed string so that we can send it to the + regular expressions engine. + + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = ret + ctx: Store + value: Constant + value: NoneType = None + kind: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = replfunc + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = m + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: Compare + left: Subscript + value: Name + id: str = m + ctx: Load + slice: Index + value: Constant + value: int = 0 + kind: NoneType = None + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = \ + kind: NoneType = None + body: list + element: Return + value: Constant + value: str = \\\\ + kind: NoneType = None + orelse: list + element: Return + value: BinOp + left: Constant + value: str = \\ + kind: NoneType = None + op: Add + right: Subscript + value: Name + id: str = m + ctx: Load + slice: Index + value: Constant + value: int = 0 + kind: NoneType = None + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = js + kind: NoneType = None + element: Constant + value: str = {} + kind: NoneType = None + element: Constant + value: str = + var r = /[^A-Za-z:;\d]/g; + ret = string.replace(r, replfunc); + + kind: NoneType = None + keywords: list + element: If + test: Compare + left: Name + id: str = ret + ctx: Load + ops: list + element: IsNot + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Return + value: Name + id: str = ret + ctx: Load + orelse: list + element: Raise + exc: Call + func: Name + id: str = Exception + ctx: Load + args: list + element: Constant + value: str = Failed to escape the passed string + kind: NoneType = None + keywords: list + cause: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = purge + args: arguments + posonlyargs: list + args: list + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = I think this function is unnecessary but included to keep interface + consistent. + + kind: NoneType = None + element: Pass + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/reprtest.js b/transcrypt/development/automated_tests/transcrypt/__target__38/reprtest.js new file mode 100644 index 000000000..92a369b81 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/reprtest.js @@ -0,0 +1,195 @@ +// Transcrypt'ed from Python, 2021-05-14 15:00:23 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get run () {return run;}, set run (value) {run = value;}}); +var __name__ = 'reprtest'; +export var run = function (test) { + var v = 1; + test.check (repr (v)); + test.check (str (v)); + var v = 'asdf'; + test.check (repr (v)); + test.check (str (v)); + var v = true; + test.check (repr (v)); + test.check (str (v)); + var v = false; + test.check (repr (v)); + test.check (str (v)); + var v = 1.2; + test.check (repr (v)); + test.check (str (v)); + var v = -(31.2); + test.check (repr (v)); + test.check (str (v)); + var v = 6.3e-11; + test.check (repr (v)); + test.check (str (v)); + var v = 2.4e+38; + test.check (repr (v)); + test.check (str (v)); + var v = -(3.4e-22); + test.check (repr (v)); + test.check (str (v)); + var v = -(8.9e+33); + test.check (repr (v)); + test.check (str (v)); + var v = null; + test.check (repr (v)); + test.check (str (v)); + var v = [null]; + test.check (repr (v)); + test.check (str (v)); + var v = [null, null]; + test.check (repr (v)); + test.check (str (v)); + var v = [null, 1.02]; + test.check (repr (v)); + test.check (str (v)); + var v = [1, 3.000234]; + test.check (repr (v)); + test.check (str (v)); + var v = [1, 2, 3]; + test.check (repr (v)); + test.check (str (v)); + var v = [1.04, 2.03, 3.005]; + test.check (repr (v)); + test.check (str (v)); + var v = ['asdf', 2.00009, '1234']; + test.check (repr (v)); + test.check (str (v)); + var v = set ([1, 2, 3]); + test.check (repr (v)); + test.check (str (v)); + var v = set ([]); + test.check (repr (v)); + test.check (str (v)); + var v = tuple ([1, 2]); + test.check (repr (v)); + test.check (str (v)); + var v = tuple ([3.4, 4.4]); + test.check (repr (v)); + test.check (str (v)); + var v = tuple ([null, 5.32]); + test.check (repr (v)); + test.check (str (v)); + var v = dict ({}); + test.check (repr (v)); + test.check (str (v)); + var v = dict ({'a': 1}); + test.check (repr (v)); + test.check (str (v)); + var d = dict ({'asdf': 3.4}); + test.check (repr (d)); + test.check (str (d)); + var d = dict ({'qwer': 'qwerqwer qwerqwer'}); + test.check (repr (d)); + test.check (str (d)); + var d = dict ({'a9342': null}); + test.check (repr (d)); + test.check (str (d)); + var d = dict ({'nfdns': true}); + test.check (repr (d)); + test.check (str (d)); + var d = dict ({'alel;e;': false}); + test.check (repr (d)); + test.check (str (d)); + var d = dict ({'didi': [true, false, true]}); + test.check (repr (d)); + test.check (str (d)); + var d = dict ({'bibi': [1, 2, 3]}); + test.check (repr (d)); + test.check (str (d)); + var d = dict ({'gigi': ['Asdf', 'qwer', 'rewer']}); + test.check (repr (d)); + test.check (str (d)); + var d = dict ({'hihi': tuple (['esdf', 'qwer', 'rewer'])}); + test.check (repr (d)); + test.check (str (d)); + var d = dict ({'jiji': [null, null, null]}); + test.check (repr (d)); + test.check (str (d)); + var d = dict ({'jiji': tuple ([1.3, 3.4])}); + test.check (repr (d)); + test.check (str (d)); + var d = dict ({'jiji': dict ({'c': 4})}); + test.check (repr (d)); + test.check (str (d)); + var Test1 = __class__ ('Test1', [object], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self, val) { + self._val = val; + });}, + get __str__ () {return __get__ (this, function (self) { + return '[Test1 {}]'.format (self._val); + });}, + get __repr__ () {return __get__ (this, function (self) { + return str (self); + });} + }); + var Test2 = __class__ ('Test2', [object], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self, val) { + self._val = val; + });}, + get __repr__ () {return __get__ (this, function (self) { + return '[Test2 {},{}]'.format (self._val, self._val * 2); + });}, + get __str__ () {return __get__ (this, function (self) { + return repr (self); + });} + }); + var Test3 = __class__ ('Test3', [Test2], { + __module__: __name__, + get __str__ () {return __get__ (this, function (self) { + return '[Test3 {}]'.format (self._val); + });} + }); + var Test4 = __class__ ('Test4', [object], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self, val) { + self._val = val; + });}, + get __repr__ () {return __get__ (this, function (self) { + return '[Test4 {}]'.format (self._val); + });} + }); + var t1 = Test1 (2); + test.check (repr (t1)); + test.check (str (t1)); + var t1 = Test1 (4.5); + test.check (repr (t1)); + test.check (str (t1)); + var t1 = Test1 ('blarg'); + test.check (repr (t1)); + test.check (str (t1)); + var t1 = Test1 ([1, 2, 3]); + test.check (repr (t1)); + test.check (str (t1)); + var t2 = Test2 (3); + test.check (repr (t2)); + test.check (str (t2)); + var t2 = Test2 (7.6); + test.check (repr (t2)); + test.check (str (t2)); + var t2 = Test2 (-(8.9)); + test.check (repr (t2)); + test.check (str (t2)); + var t3 = Test3 (8); + test.check (repr (t3)); + test.check (str (t3)); + var t3 = Test3 (3.4); + test.check (repr (t3)); + test.check (str (t3)); + test.check (repr ([t1, t2, 3])); + var d = dict ({'irew': t1}); + test.check (repr (d)); + test.check (str (d)); + var d = dict ({'irew': [t1, t2, t3]}); + test.check (repr (d)); + test.check (str (d)); + var t4 = Test4 ('qwer'); + test.check (repr (t4)); + test.check (str (t4)); +}; + +//# sourceMappingURL=reprtest.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/reprtest.tree b/transcrypt/development/automated_tests/transcrypt/__target__38/reprtest.tree new file mode 100644 index 000000000..bbd7f1059 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/reprtest.tree @@ -0,0 +1,3018 @@ +file: Module + body: list + element: FunctionDef + name: str = run + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = test + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = Test the repr and string implementations + + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = v + ctx: Store + value: Constant + value: int = 1 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Name + id: str = v + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = v + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = v + ctx: Store + value: Constant + value: str = asdf + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Name + id: str = v + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = v + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = v + ctx: Store + value: Constant + value: bool = True + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Name + id: str = v + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = v + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = v + ctx: Store + value: Constant + value: bool = False + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Name + id: str = v + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = v + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = v + ctx: Store + value: Constant + value: float = 1.2 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Name + id: str = v + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = v + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = v + ctx: Store + value: UnaryOp + op: USub + operand: Constant + value: float = 31.2 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Name + id: str = v + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = v + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = v + ctx: Store + value: Constant + value: float = 6.3e-11 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Name + id: str = v + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = v + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = v + ctx: Store + value: Constant + value: float = 2.4e+38 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Name + id: str = v + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = v + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = v + ctx: Store + value: UnaryOp + op: USub + operand: Constant + value: float = 3.4e-22 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Name + id: str = v + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = v + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = v + ctx: Store + value: UnaryOp + op: USub + operand: Constant + value: float = 8.9e+33 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Name + id: str = v + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = v + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = v + ctx: Store + value: Constant + value: NoneType = None + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Name + id: str = v + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = v + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = v + ctx: Store + value: List + elts: list + element: Constant + value: NoneType = None + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Name + id: str = v + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = v + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = v + ctx: Store + value: List + elts: list + element: Constant + value: NoneType = None + kind: NoneType = None + element: Constant + value: NoneType = None + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Name + id: str = v + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = v + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = v + ctx: Store + value: List + elts: list + element: Constant + value: NoneType = None + kind: NoneType = None + element: Constant + value: float = 1.02 + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Name + id: str = v + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = v + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = v + ctx: Store + value: List + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: float = 3.000234 + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Name + id: str = v + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = v + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = v + ctx: Store + value: List + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Name + id: str = v + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = v + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = v + ctx: Store + value: List + elts: list + element: Constant + value: float = 1.04 + kind: NoneType = None + element: Constant + value: float = 2.03 + kind: NoneType = None + element: Constant + value: float = 3.005 + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Name + id: str = v + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = v + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = v + ctx: Store + value: List + elts: list + element: Constant + value: str = asdf + kind: NoneType = None + element: Constant + value: float = 2.00009 + kind: NoneType = None + element: Constant + value: str = 1234 + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Name + id: str = v + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = v + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = v + ctx: Store + value: Call + func: Name + id: str = set + ctx: Load + args: list + element: List + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Name + id: str = v + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = v + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = v + ctx: Store + value: Call + func: Name + id: str = set + ctx: Load + args: list + element: List + elts: list + ctx: Load + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Name + id: str = v + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = v + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = v + ctx: Store + value: Tuple + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Name + id: str = v + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = v + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = v + ctx: Store + value: Tuple + elts: list + element: Constant + value: float = 3.4 + kind: NoneType = None + element: Constant + value: float = 4.4 + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Name + id: str = v + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = v + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = v + ctx: Store + value: Tuple + elts: list + element: Constant + value: NoneType = None + kind: NoneType = None + element: Constant + value: float = 5.32 + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Name + id: str = v + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = v + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = v + ctx: Store + value: Dict + keys: list + values: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Name + id: str = v + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = v + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = v + ctx: Store + value: Dict + keys: list + element: Constant + value: str = a + kind: NoneType = None + values: list + element: Constant + value: int = 1 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Name + id: str = v + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = v + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = d + ctx: Store + value: Dict + keys: list + element: Constant + value: str = asdf + kind: NoneType = None + values: list + element: Constant + value: float = 3.4 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Name + id: str = d + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = d + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = d + ctx: Store + value: Dict + keys: list + element: Constant + value: str = qwer + kind: NoneType = None + values: list + element: Constant + value: str = qwerqwer qwerqwer + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Name + id: str = d + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = d + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = d + ctx: Store + value: Dict + keys: list + element: Constant + value: str = a9342 + kind: NoneType = None + values: list + element: Constant + value: NoneType = None + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Name + id: str = d + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = d + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = d + ctx: Store + value: Dict + keys: list + element: Constant + value: str = nfdns + kind: NoneType = None + values: list + element: Constant + value: bool = True + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Name + id: str = d + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = d + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = d + ctx: Store + value: Dict + keys: list + element: Constant + value: str = alel;e; + kind: NoneType = None + values: list + element: Constant + value: bool = False + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Name + id: str = d + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = d + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = d + ctx: Store + value: Dict + keys: list + element: Constant + value: str = didi + kind: NoneType = None + values: list + element: List + elts: list + element: Constant + value: bool = True + kind: NoneType = None + element: Constant + value: bool = False + kind: NoneType = None + element: Constant + value: bool = True + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Name + id: str = d + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = d + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = d + ctx: Store + value: Dict + keys: list + element: Constant + value: str = bibi + kind: NoneType = None + values: list + element: List + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Name + id: str = d + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = d + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = d + ctx: Store + value: Dict + keys: list + element: Constant + value: str = gigi + kind: NoneType = None + values: list + element: List + elts: list + element: Constant + value: str = Asdf + kind: NoneType = None + element: Constant + value: str = qwer + kind: NoneType = None + element: Constant + value: str = rewer + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Name + id: str = d + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = d + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = d + ctx: Store + value: Dict + keys: list + element: Constant + value: str = hihi + kind: NoneType = None + values: list + element: Tuple + elts: list + element: Constant + value: str = esdf + kind: NoneType = None + element: Constant + value: str = qwer + kind: NoneType = None + element: Constant + value: str = rewer + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Name + id: str = d + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = d + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = d + ctx: Store + value: Dict + keys: list + element: Constant + value: str = jiji + kind: NoneType = None + values: list + element: List + elts: list + element: Constant + value: NoneType = None + kind: NoneType = None + element: Constant + value: NoneType = None + kind: NoneType = None + element: Constant + value: NoneType = None + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Name + id: str = d + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = d + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = d + ctx: Store + value: Dict + keys: list + element: Constant + value: str = jiji + kind: NoneType = None + values: list + element: Tuple + elts: list + element: Constant + value: float = 1.3 + kind: NoneType = None + element: Constant + value: float = 3.4 + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Name + id: str = d + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = d + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = d + ctx: Store + value: Dict + keys: list + element: Constant + value: str = jiji + kind: NoneType = None + values: list + element: Dict + keys: list + element: Constant + value: str = c + kind: NoneType = None + values: list + element: Constant + value: int = 4 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Name + id: str = d + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = d + ctx: Load + keywords: list + keywords: list + element: ClassDef + name: str = Test1 + bases: list + element: Name + id: str = object + ctx: Load + keywords: list + body: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = val + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _val + ctx: Store + value: Name + id: str = val + ctx: Load + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __str__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Call + func: Attribute + value: Constant + value: str = [Test1 {}] + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _val + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __repr__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = self + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: ClassDef + name: str = Test2 + bases: list + element: Name + id: str = object + ctx: Load + keywords: list + body: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = val + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _val + ctx: Store + value: Name + id: str = val + ctx: Load + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __repr__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Call + func: Attribute + value: Constant + value: str = [Test2 {},{}] + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _val + ctx: Load + element: BinOp + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _val + ctx: Load + op: Mult + right: Constant + value: int = 2 + kind: NoneType = None + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __str__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Name + id: str = self + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: ClassDef + name: str = Test3 + bases: list + element: Name + id: str = Test2 + ctx: Load + keywords: list + body: list + element: FunctionDef + name: str = __str__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Call + func: Attribute + value: Constant + value: str = [Test3 {}] + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _val + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: ClassDef + name: str = Test4 + bases: list + element: Name + id: str = object + ctx: Load + keywords: list + body: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = val + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _val + ctx: Store + value: Name + id: str = val + ctx: Load + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __repr__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Call + func: Attribute + value: Constant + value: str = [Test4 {}] + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _val + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: Assign + targets: list + element: Name + id: str = t1 + ctx: Store + value: Call + func: Name + id: str = Test1 + ctx: Load + args: list + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Name + id: str = t1 + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = t1 + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = t1 + ctx: Store + value: Call + func: Name + id: str = Test1 + ctx: Load + args: list + element: Constant + value: float = 4.5 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Name + id: str = t1 + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = t1 + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = t1 + ctx: Store + value: Call + func: Name + id: str = Test1 + ctx: Load + args: list + element: Constant + value: str = blarg + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Name + id: str = t1 + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = t1 + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = t1 + ctx: Store + value: Call + func: Name + id: str = Test1 + ctx: Load + args: list + element: List + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Name + id: str = t1 + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = t1 + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = t2 + ctx: Store + value: Call + func: Name + id: str = Test2 + ctx: Load + args: list + element: Constant + value: int = 3 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Name + id: str = t2 + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = t2 + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = t2 + ctx: Store + value: Call + func: Name + id: str = Test2 + ctx: Load + args: list + element: Constant + value: float = 7.6 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Name + id: str = t2 + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = t2 + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = t2 + ctx: Store + value: Call + func: Name + id: str = Test2 + ctx: Load + args: list + element: UnaryOp + op: USub + operand: Constant + value: float = 8.9 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Name + id: str = t2 + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = t2 + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = t3 + ctx: Store + value: Call + func: Name + id: str = Test3 + ctx: Load + args: list + element: Constant + value: int = 8 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Name + id: str = t3 + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = t3 + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = t3 + ctx: Store + value: Call + func: Name + id: str = Test3 + ctx: Load + args: list + element: Constant + value: float = 3.4 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Name + id: str = t3 + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = t3 + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = repr + ctx: Load + args: list + element: List + elts: list + element: Name + id: str = t1 + ctx: Load + element: Name + id: str = t2 + ctx: Load + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = d + ctx: Store + value: Dict + keys: list + element: Constant + value: str = irew + kind: NoneType = None + values: list + element: Name + id: str = t1 + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Name + id: str = d + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = d + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = d + ctx: Store + value: Dict + keys: list + element: Constant + value: str = irew + kind: NoneType = None + values: list + element: List + elts: list + element: Name + id: str = t1 + ctx: Load + element: Name + id: str = t2 + ctx: Load + element: Name + id: str = t3 + ctx: Load + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Name + id: str = d + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = d + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = t4 + ctx: Store + value: Call + func: Name + id: str = Test4 + ctx: Load + args: list + element: Constant + value: str = qwer + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Name + id: str = t4 + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = t4 + ctx: Load + keywords: list + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/set_comprehensions.js b/transcrypt/development/automated_tests/transcrypt/__target__38/set_comprehensions.js new file mode 100644 index 000000000..4e3e0f437 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/set_comprehensions.js @@ -0,0 +1,51 @@ +// Transcrypt'ed from Python, 2021-05-14 15:00:23 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get run () {return run;}, set run (value) {run = value;}}); +var __name__ = 'set_comprehensions'; +export var run = function (autoTester) { + var even = (function () { + var __accu0__ = []; + for (var i of [0, 9, 1, 7, 2, 8, 3, 6, 4, 5]) { + __accu0__.append (2 * i); + } + return set (__accu0__); + }) (); + autoTester.check (even); + var odd = (function () { + var __accu0__ = []; + for (var i of [5, 6, 7, 8, 9, 4, 3, 1, 2, 0]) { + __accu0__.append (2 * i + 1); + } + return set (__accu0__); + }) (); + autoTester.check (odd); + even.add (12); + even.add (12); + autoTester.check (even); + even.discard (12); + even.discard (12); + autoTester.check (even); + var uni = even.union (odd); + autoTester.check (uni); + autoTester.check (odd.isdisjoint (even)); + autoTester.check (uni.isdisjoint (even)); + autoTester.check (even.issuperset (uni)); + autoTester.check (uni.issuperset (even)); + autoTester.check (even.issubset (uni)); + autoTester.check (uni.issubset (even)); + var first = new set ([4, 1, 0, 5, 3, 2, 6]); + autoTester.check (first); + var second = new set ([3, 5, 6, 9, 4, 7, 8]); + autoTester.check (second); + var inter = first.intersection (second); + autoTester.check (inter); + var diff = first.difference (second); + autoTester.check (diff); + var symDiff = first.symmetric_difference (second); + autoTester.check (symDiff); + var aSet = new set ([200, 4, 5, 100]); + aSet.py_update (first, symDiff, second); + autoTester.check (aSet); +}; + +//# sourceMappingURL=set_comprehensions.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/set_comprehensions.tree b/transcrypt/development/automated_tests/transcrypt/__target__38/set_comprehensions.tree new file mode 100644 index 000000000..601b104fb --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/set_comprehensions.tree @@ -0,0 +1,632 @@ +file: Module + body: list + element: FunctionDef + name: str = run + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = autoTester + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Name + id: str = even + ctx: Store + value: SetComp + elt: BinOp + left: Constant + value: int = 2 + kind: NoneType = None + op: Mult + right: Name + id: str = i + ctx: Load + generators: list + element: comprehension + target: Name + id: str = i + ctx: Store + iter: List + elts: list + element: Constant + value: int = 0 + kind: NoneType = None + element: Constant + value: int = 9 + kind: NoneType = None + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 7 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 8 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + element: Constant + value: int = 6 + kind: NoneType = None + element: Constant + value: int = 4 + kind: NoneType = None + element: Constant + value: int = 5 + kind: NoneType = None + ctx: Load + ifs: list + is_async: int = 0 + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = even + ctx: Load + keywords: list + element: Assign + targets: list + element: Name + id: str = odd + ctx: Store + value: SetComp + elt: BinOp + left: BinOp + left: Constant + value: int = 2 + kind: NoneType = None + op: Mult + right: Name + id: str = i + ctx: Load + op: Add + right: Constant + value: int = 1 + kind: NoneType = None + generators: list + element: comprehension + target: Name + id: str = i + ctx: Store + iter: List + elts: list + element: Constant + value: int = 5 + kind: NoneType = None + element: Constant + value: int = 6 + kind: NoneType = None + element: Constant + value: int = 7 + kind: NoneType = None + element: Constant + value: int = 8 + kind: NoneType = None + element: Constant + value: int = 9 + kind: NoneType = None + element: Constant + value: int = 4 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 0 + kind: NoneType = None + ctx: Load + ifs: list + is_async: int = 0 + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = odd + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = even + ctx: Load + attr: str = add + ctx: Load + args: list + element: Constant + value: int = 12 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = even + ctx: Load + attr: str = add + ctx: Load + args: list + element: Constant + value: int = 12 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = even + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = even + ctx: Load + attr: str = discard + ctx: Load + args: list + element: Constant + value: int = 12 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = even + ctx: Load + attr: str = discard + ctx: Load + args: list + element: Constant + value: int = 12 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = even + ctx: Load + keywords: list + element: Assign + targets: list + element: Name + id: str = uni + ctx: Store + value: Call + func: Attribute + value: Name + id: str = even + ctx: Load + attr: str = union + ctx: Load + args: list + element: Name + id: str = odd + ctx: Load + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = uni + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = odd + ctx: Load + attr: str = isdisjoint + ctx: Load + args: list + element: Name + id: str = even + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = uni + ctx: Load + attr: str = isdisjoint + ctx: Load + args: list + element: Name + id: str = even + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = even + ctx: Load + attr: str = issuperset + ctx: Load + args: list + element: Name + id: str = uni + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = uni + ctx: Load + attr: str = issuperset + ctx: Load + args: list + element: Name + id: str = even + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = even + ctx: Load + attr: str = issubset + ctx: Load + args: list + element: Name + id: str = uni + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = uni + ctx: Load + attr: str = issubset + ctx: Load + args: list + element: Name + id: str = even + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = first + ctx: Store + value: Set + elts: list + element: Constant + value: int = 4 + kind: NoneType = None + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 0 + kind: NoneType = None + element: Constant + value: int = 5 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 6 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = first + ctx: Load + keywords: list + element: Assign + targets: list + element: Name + id: str = second + ctx: Store + value: Set + elts: list + element: Constant + value: int = 3 + kind: NoneType = None + element: Constant + value: int = 5 + kind: NoneType = None + element: Constant + value: int = 6 + kind: NoneType = None + element: Constant + value: int = 9 + kind: NoneType = None + element: Constant + value: int = 4 + kind: NoneType = None + element: Constant + value: int = 7 + kind: NoneType = None + element: Constant + value: int = 8 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = second + ctx: Load + keywords: list + element: Assign + targets: list + element: Name + id: str = inter + ctx: Store + value: Call + func: Attribute + value: Name + id: str = first + ctx: Load + attr: str = intersection + ctx: Load + args: list + element: Name + id: str = second + ctx: Load + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = inter + ctx: Load + keywords: list + element: Assign + targets: list + element: Name + id: str = diff + ctx: Store + value: Call + func: Attribute + value: Name + id: str = first + ctx: Load + attr: str = difference + ctx: Load + args: list + element: Name + id: str = second + ctx: Load + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = diff + ctx: Load + keywords: list + element: Assign + targets: list + element: Name + id: str = symDiff + ctx: Store + value: Call + func: Attribute + value: Name + id: str = first + ctx: Load + attr: str = symmetric_difference + ctx: Load + args: list + element: Name + id: str = second + ctx: Load + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = symDiff + ctx: Load + keywords: list + element: Assign + targets: list + element: Name + id: str = aSet + ctx: Store + value: Set + elts: list + element: Constant + value: int = 200 + kind: NoneType = None + element: Constant + value: int = 4 + kind: NoneType = None + element: Constant + value: int = 5 + kind: NoneType = None + element: Constant + value: int = 100 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = aSet + ctx: Load + attr: str = update + ctx: Load + args: list + element: Name + id: str = first + ctx: Load + element: Name + id: str = symDiff + ctx: Load + element: Name + id: str = second + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = aSet + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/simple_and_augmented_assignment.js b/transcrypt/development/automated_tests/transcrypt/__target__38/simple_and_augmented_assignment.js new file mode 100644 index 000000000..8957b759b --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/simple_and_augmented_assignment.js @@ -0,0 +1,55 @@ +// Transcrypt'ed from Python, 2021-05-14 15:00:23 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +var __all__ = dict ({get A () {return A;}, set A (value) {A = value;}, get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get a () {return a;}, set a (value) {a = value;}, get run () {return run;}, set run (value) {run = value;}}); +var __name__ = 'simple_and_augmented_assignment'; +export var A = __class__ ('A', [object], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self) { + self.i = 0; + });}, + get f () {return __get__ (this, function (self) { + return self.i; + });} +}); +export var a = A (); +export var run = function (autoTester) { + var x = 3; + var y = 5; + var z = x + y; + autoTester.check (z); + var l = [1, 2, 3]; + l [1] = l [2]; + autoTester.check (l); + x++; + autoTester.check (x); + x++; + autoTester.check (x); + x++; + autoTester.check (x); + y--; + autoTester.check (y); + y--; + autoTester.check (y); + y--; + autoTester.check (y); + x += -(3); + autoTester.check (x); + x += 6; + autoTester.check (x); + y -= 3; + autoTester.check (y); + l [1] += l [1]; + autoTester.check (l); + x += y; + y += x; + autoTester.check (x, y); + var f = a.f; + a.i++; + autoTester.check (f ()); + a.i += 10; + autoTester.check (f ()); + a.i += a.i; + autoTester.check (f ()); +}; + +//# sourceMappingURL=simple_and_augmented_assignment.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/simple_and_augmented_assignment.tree b/transcrypt/development/automated_tests/transcrypt/__target__38/simple_and_augmented_assignment.tree new file mode 100644 index 000000000..f5ed5c3e3 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/simple_and_augmented_assignment.tree @@ -0,0 +1,551 @@ +file: Module + body: list + element: ClassDef + name: str = A + bases: list + keywords: list + body: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = i + ctx: Store + value: Constant + value: int = 0 + kind: NoneType = None + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = f + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = i + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: Assign + targets: list + element: Name + id: str = a + ctx: Store + value: Call + func: Name + id: str = A + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: FunctionDef + name: str = run + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = autoTester + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Name + id: str = x + ctx: Store + value: Constant + value: int = 3 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = y + ctx: Store + value: Constant + value: int = 5 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = z + ctx: Store + value: BinOp + left: Name + id: str = x + ctx: Load + op: Add + right: Name + id: str = y + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = z + ctx: Load + keywords: list + element: Assign + targets: list + element: Name + id: str = l + ctx: Store + value: List + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Subscript + value: Name + id: str = l + ctx: Load + slice: Index + value: Constant + value: int = 1 + kind: NoneType = None + ctx: Store + value: Subscript + value: Name + id: str = l + ctx: Load + slice: Index + value: Constant + value: int = 2 + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = l + ctx: Load + keywords: list + element: AugAssign + target: Name + id: str = x + ctx: Store + op: Add + value: Constant + value: int = 1 + kind: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = x + ctx: Load + keywords: list + element: AugAssign + target: Name + id: str = x + ctx: Store + op: Add + value: UnaryOp + op: UAdd + operand: Constant + value: int = 1 + kind: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = x + ctx: Load + keywords: list + element: AugAssign + target: Name + id: str = x + ctx: Store + op: Sub + value: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = x + ctx: Load + keywords: list + element: AugAssign + target: Name + id: str = y + ctx: Store + op: Sub + value: Constant + value: int = 1 + kind: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = y + ctx: Load + keywords: list + element: AugAssign + target: Name + id: str = y + ctx: Store + op: Sub + value: UnaryOp + op: UAdd + operand: Constant + value: int = 1 + kind: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = y + ctx: Load + keywords: list + element: AugAssign + target: Name + id: str = y + ctx: Store + op: Add + value: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = y + ctx: Load + keywords: list + element: AugAssign + target: Name + id: str = x + ctx: Store + op: Add + value: UnaryOp + op: USub + operand: Constant + value: int = 3 + kind: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = x + ctx: Load + keywords: list + element: AugAssign + target: Name + id: str = x + ctx: Store + op: Add + value: Constant + value: int = 6 + kind: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = x + ctx: Load + keywords: list + element: AugAssign + target: Name + id: str = y + ctx: Store + op: Sub + value: Constant + value: int = 3 + kind: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = y + ctx: Load + keywords: list + element: AugAssign + target: Subscript + value: Name + id: str = l + ctx: Load + slice: Index + value: Constant + value: int = 1 + kind: NoneType = None + ctx: Store + op: Add + value: Subscript + value: Name + id: str = l + ctx: Load + slice: Index + value: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = l + ctx: Load + keywords: list + element: AugAssign + target: Name + id: str = x + ctx: Store + op: Add + value: Name + id: str = y + ctx: Load + element: AugAssign + target: Name + id: str = y + ctx: Store + op: Add + value: Name + id: str = x + ctx: Load + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = x + ctx: Load + element: Name + id: str = y + ctx: Load + keywords: list + element: Assign + targets: list + element: Name + id: str = f + ctx: Store + value: Attribute + value: Name + id: str = a + ctx: Load + attr: str = f + ctx: Load + type_comment: NoneType = None + element: AugAssign + target: Attribute + value: Name + id: str = a + ctx: Load + attr: str = i + ctx: Store + op: Add + value: Constant + value: int = 1 + kind: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = f + ctx: Load + args: list + keywords: list + keywords: list + element: AugAssign + target: Attribute + value: Name + id: str = a + ctx: Load + attr: str = i + ctx: Store + op: Add + value: Constant + value: int = 10 + kind: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = f + ctx: Load + args: list + keywords: list + keywords: list + element: AugAssign + target: Attribute + value: Name + id: str = a + ctx: Load + attr: str = i + ctx: Store + op: Add + value: Attribute + value: Name + id: str = a + ctx: Load + attr: str = i + ctx: Load + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = f + ctx: Load + args: list + keywords: list + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/string_format.js b/transcrypt/development/automated_tests/transcrypt/__target__38/string_format.js new file mode 100644 index 000000000..4b04c90b7 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/string_format.js @@ -0,0 +1,74 @@ +// Transcrypt'ed from Python, 2021-05-14 15:00:23 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get run () {return run;}, set run (value) {run = value;}}); +var __name__ = 'string_format'; +export var run = function (autoTester) { + autoTester.check ('Numbers:'); + autoTester.check ('int: {:06d}'.format (18)); + autoTester.check ('int: {:05}'.format (123)); + autoTester.check ('int: {:2d}'.format (180)); + autoTester.check ('int: {: 4d} {: 4d}'.format (75, -(8))); + autoTester.check ('int: {:<8d}'.format (55)); + autoTester.check ('int: {:*>8d}'.format (55)); + autoTester.check ('int: {:8,d}'.format (5555555)); + autoTester.check ('bin: {:b}'.format (325)); + autoTester.check ('bin: {:b}'.format (-(15))); + autoTester.check ('bin: {:010b}'.format (-(15))); + autoTester.check ('bin: {:#010b}'.format (-(15))); + autoTester.check ('oct: {:+010o}'.format (234)); + autoTester.check ('oct: {:#o}'.format (234)); + autoTester.check ('hex: {:+010x}'.format (234)); + autoTester.check ('hex: {:X}'.format (-(234))); + autoTester.check ('hex: {:#10X}'.format (-(234))); + autoTester.check ('chr: {:010c}'.format (64)); + autoTester.check ('float: {:f}'.format (-(1554.1556565))); + autoTester.check ('float: {:#f}'.format (-(1553))); + autoTester.check ('float: {:#.0f}'.format (-(1552))); + autoTester.check ('float: {:.2f}'.format (105.1528)); + autoTester.check ('float: {:.8f}'.format (0.1528)); + autoTester.check ('float: {:.2f}'.format (float ('-inf'))); + autoTester.check ('float: {:f}'.format (float ('nan'))); + autoTester.check ('pct: {:.4%}'.format (1 / 3)); + autoTester.check ('exp: {:e}'.format (-(17.845265568))); + autoTester.check ('exp: {:#e}'.format (-(17.0))); + autoTester.check ('exp: {:015.4e}'.format (17.845265568)); + autoTester.check ('exp: {:E}'.format (165665564654686.12)); + autoTester.check ('gen: {:g}'.format (165665564654686.12)); + autoTester.check ('gen: {:g}'.format (1656)); + autoTester.check ('gen: {:g}'.format (1.123485574)); + autoTester.check ('gen: {:.8g}'.format (148560.123485574)); + autoTester.check ('gen: {:.4}'.format (1485.1)); + autoTester.check ('gen: {}'.format (1485.1)); + autoTester.check ('gen: {:.8}'.format (1485.1)); + autoTester.check ('gen: {:.8g}'.format (1485.1)); + autoTester.check ('Strings:'); + autoTester.check ('str: {:20s}'.format ('abc')); + autoTester.check ('str: {:*>10}'.format ('abc')); + autoTester.check ('{1}{0}{1}'.format ('kad', 'abra')); + autoTester.check ('{1}{0!r}{1}'.format ('kad', 'abra')); + autoTester.check ('{} and {}'.format ('dog', 'cat')); + autoTester.check ('{:*^13}'.format ('centered')); + var a = [15.846, 16.7856, 18.8563]; + var B = __class__ ('B', [object], { + __module__: __name__, + get __repr__ () {return __get__ (this, function (self) { + return self.prop; + });}, + get __format__ () {return __get__ (this, function (self, fmt_spec) { + return (fmt_spec + ' ') + self.prop; + });} + }); + var b = B (); + b.prop = 'object attribute'; + var c = dict ({'somekey': 'key value'}); + autoTester.check ('{a[1]:.2f} {d} {b.prop} {c[somekey]}'.format (__kwargtrans__ ({a: a, b: b, c: c, d: 'test'}))); + autoTester.check ('Other:'); + autoTester.check ('{}'.format (true)); + autoTester.check ('{:*>10}'.format (true)); + autoTester.check ('{!r:*^20}'.format (b)); + autoTester.check ('{:custom_format}'.format (b)); + autoTester.check ('{}'.format (a)); + autoTester.check ('{}'.format (c)); +}; + +//# sourceMappingURL=string_format.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/string_format.tree b/transcrypt/development/automated_tests/transcrypt/__target__38/string_format.tree new file mode 100644 index 000000000..fdc43342a --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/string_format.tree @@ -0,0 +1,1355 @@ +file: Module + body: list + element: FunctionDef + name: str = run + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = autoTester + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Numbers: + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = int: {:06d} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Constant + value: int = 18 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = int: {:05} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Constant + value: int = 123 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = int: {:2d} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Constant + value: int = 180 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = int: {: 4d} {: 4d} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Constant + value: int = 75 + kind: NoneType = None + element: UnaryOp + op: USub + operand: Constant + value: int = 8 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = int: {:<8d} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Constant + value: int = 55 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = int: {:*>8d} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Constant + value: int = 55 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = int: {:8,d} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Constant + value: int = 5555555 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = bin: {:b} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Constant + value: int = 325 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = bin: {:b} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: UnaryOp + op: USub + operand: Constant + value: int = 15 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = bin: {:010b} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: UnaryOp + op: USub + operand: Constant + value: int = 15 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = bin: {:#010b} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: UnaryOp + op: USub + operand: Constant + value: int = 15 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = oct: {:+010o} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Constant + value: int = 234 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = oct: {:#o} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Constant + value: int = 234 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = hex: {:+010x} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Constant + value: int = 234 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = hex: {:X} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: UnaryOp + op: USub + operand: Constant + value: int = 234 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = hex: {:#10X} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: UnaryOp + op: USub + operand: Constant + value: int = 234 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = chr: {:010c} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Constant + value: int = 64 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = float: {:f} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: UnaryOp + op: USub + operand: Constant + value: float = 1554.1556565 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = float: {:#f} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: UnaryOp + op: USub + operand: Constant + value: int = 1553 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = float: {:#.0f} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: UnaryOp + op: USub + operand: Constant + value: int = 1552 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = float: {:.2f} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Constant + value: float = 105.1528 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = float: {:.8f} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Constant + value: float = 0.1528 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = float: {:.2f} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Call + func: Name + id: str = float + ctx: Load + args: list + element: Constant + value: str = -inf + kind: NoneType = None + keywords: list + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = float: {:f} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Call + func: Name + id: str = float + ctx: Load + args: list + element: Constant + value: str = nan + kind: NoneType = None + keywords: list + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = pct: {:.4%} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: BinOp + left: Constant + value: int = 1 + kind: NoneType = None + op: Div + right: Constant + value: int = 3 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = exp: {:e} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: UnaryOp + op: USub + operand: Constant + value: float = 17.845265568 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = exp: {:#e} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: UnaryOp + op: USub + operand: Constant + value: float = 17.0 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = exp: {:015.4e} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Constant + value: float = 17.845265568 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = exp: {:E} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Constant + value: float = 165665564654686.12 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = gen: {:g} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Constant + value: float = 165665564654686.12 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = gen: {:g} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Constant + value: int = 1656 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = gen: {:g} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Constant + value: float = 1.123485574 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = gen: {:.8g} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Constant + value: float = 148560.123485574 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = gen: {:.4} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Constant + value: float = 1485.1 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = gen: {} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Constant + value: float = 1485.1 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = gen: {:.8} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Constant + value: float = 1485.1 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = gen: {:.8g} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Constant + value: float = 1485.1 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Strings: + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = str: {:20s} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Constant + value: str = abc + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = str: {:*>10} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Constant + value: str = abc + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = {1}{0}{1} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Constant + value: str = kad + kind: NoneType = None + element: Constant + value: str = abra + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = {1}{0!r}{1} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Constant + value: str = kad + kind: NoneType = None + element: Constant + value: str = abra + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = {} and {} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Constant + value: str = dog + kind: NoneType = None + element: Constant + value: str = cat + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = {:*^13} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Constant + value: str = centered + kind: NoneType = None + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = a + ctx: Store + value: List + elts: list + element: Constant + value: float = 15.846 + kind: NoneType = None + element: Constant + value: float = 16.7856 + kind: NoneType = None + element: Constant + value: float = 18.8563 + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: ClassDef + name: str = B + bases: list + keywords: list + body: list + element: FunctionDef + name: str = __repr__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = prop + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __format__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = fmt_spec + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: BinOp + left: BinOp + left: Name + id: str = fmt_spec + ctx: Load + op: Add + right: Constant + value: str = + kind: NoneType = None + op: Add + right: Attribute + value: Name + id: str = self + ctx: Load + attr: str = prop + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: Assign + targets: list + element: Name + id: str = b + ctx: Store + value: Call + func: Name + id: str = B + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = b + ctx: Load + attr: str = prop + ctx: Store + value: Constant + value: str = object attribute + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = c + ctx: Store + value: Dict + keys: list + element: Constant + value: str = somekey + kind: NoneType = None + values: list + element: Constant + value: str = key value + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = {a[1]:.2f} {d} {b.prop} {c[somekey]} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + keywords: list + element: keyword + arg: str = a + value: Name + id: str = a + ctx: Load + element: keyword + arg: str = b + value: Name + id: str = b + ctx: Load + element: keyword + arg: str = c + value: Name + id: str = c + ctx: Load + element: keyword + arg: str = d + value: Constant + value: str = test + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Other: + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = {} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Constant + value: bool = True + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = {:*>10} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Constant + value: bool = True + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = {!r:*^20} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Name + id: str = b + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = {:custom_format} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Name + id: str = b + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = {} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Name + id: str = a + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = {} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Name + id: str = c + ctx: Load + keywords: list + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/time.js b/transcrypt/development/automated_tests/transcrypt/__target__38/time.js new file mode 100644 index 000000000..e91c218b4 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/time.js @@ -0,0 +1,425 @@ +// Transcrypt'ed from Python, 2021-05-14 15:00:24 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +var __all__ = dict ({get __adapt__ () {return __adapt__;}, set __adapt__ (value) {__adapt__ = value;}, get __d () {return __d;}, set __d (value) {__d = value;}, get __date () {return __date;}, set __date (value) {__date = value;}, get __debugGetLanguage () {return __debugGetLanguage;}, set __debugGetLanguage (value) {__debugGetLanguage = value;}, get __jan_jun_tz () {return __jan_jun_tz;}, set __jan_jun_tz (value) {__jan_jun_tz = value;}, get __language () {return __language;}, set __language (value) {__language = value;}, get __lu () {return __lu;}, set __lu (value) {__lu = value;}, get __months () {return __months;}, set __months (value) {__months = value;}, get __months_long () {return __months_long;}, set __months_long (value) {__months_long = value;}, get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get __now () {return __now;}, set __now (value) {__now = value;}, get __tzn () {return __tzn;}, set __tzn (value) {__tzn = value;}, get __weekdays () {return __weekdays;}, set __weekdays (value) {__weekdays = value;}, get __weekdays_long () {return __weekdays_long;}, set __weekdays_long (value) {__weekdays_long = value;}, get _day_of_year () {return _day_of_year;}, set _day_of_year (value) {_day_of_year = value;}, get _daylight () {return _daylight;}, set _daylight (value) {_daylight = value;}, get _daylight_in_effect () {return _daylight_in_effect;}, set _daylight_in_effect (value) {_daylight_in_effect = value;}, get _is_leap () {return _is_leap;}, set _is_leap (value) {_is_leap = value;}, get _jj () {return _jj;}, set _jj (value) {_jj = value;}, get _local_time_tuple () {return _local_time_tuple;}, set _local_time_tuple (value) {_local_time_tuple = value;}, get _lsplit () {return _lsplit;}, set _lsplit (value) {_lsplit = value;}, get _timezone () {return _timezone;}, set _timezone (value) {_timezone = value;}, get _tzname () {return _tzname;}, set _tzname (value) {_tzname = value;}, get _utc_time_tuple () {return _utc_time_tuple;}, set _utc_time_tuple (value) {_utc_time_tuple = value;}, get altzone () {return altzone;}, set altzone (value) {altzone = value;}, get asctime () {return asctime;}, set asctime (value) {asctime = value;}, get ctime () {return ctime;}, set ctime (value) {ctime = value;}, get daylight () {return daylight;}, set daylight (value) {daylight = value;}, get gmtime () {return gmtime;}, set gmtime (value) {gmtime = value;}, get i () {return i;}, set i (value) {i = value;}, get l () {return l;}, set l (value) {l = value;}, get localtime () {return localtime;}, set localtime (value) {localtime = value;}, get mktime () {return mktime;}, set mktime (value) {mktime = value;}, get s () {return s;}, set s (value) {s = value;}, get strftime () {return strftime;}, set strftime (value) {strftime = value;}, get strptime () {return strptime;}, set strptime (value) {strptime = value;}, get time () {return time;}, set time (value) {time = value;}, get timezone () {return timezone;}, set timezone (value) {timezone = value;}, get tzname () {return tzname;}, set tzname (value) {tzname = value;}}); +var __name__ = 'time'; +try { + var __language = window.navigator.language; +} +catch (__except0__) { + var __language = 'en-US'; +} +export var __debugGetLanguage = function () { + return __language; +}; +export var __adapt__ = function (request) { + __language = request.headers ['accept-language'].py_split (',') [0]; +}; +export var __date = new Date (0); +export var __now = new Date (); +export var __weekdays = []; +export var __weekdays_long = []; +export var __d = new Date (1467662339080); +for (var i = 0; i < 7; i++) { + for (var [l, s] of tuple ([tuple ([__weekdays, 'short']), tuple ([__weekdays_long, 'long'])])) { + l.append (__d.toLocaleString (__language, dict ({'weekday': s})).lower ()); + } + __d.setDate (__d.getDate () + 1); +} +export var __months = []; +export var __months_long = []; +var __d = new Date (946681200000.0); +for (var i = 0; i < 12; i++) { + for (var [l, s] of tuple ([tuple ([__months, 'short']), tuple ([__months_long, 'long'])])) { + l.append (__d.toLocaleString (__language, dict ({'month': s})).lower ()); + } + __d.setMonth (__d.getMonth () + 1); +} +export var __lu = dict ({'Y': 0, 'm': 1, 'd': 2, 'H': 3, 'M': 4, 'S': 5}); +export var _lsplit = function (s, sep, maxsplit) { + if (maxsplit == 0) { + return [s]; + } + var py_split = s.py_split (sep); + if (!(maxsplit)) { + return py_split; + } + var ret = py_split.slice (0, maxsplit, 1); + if (len (ret) == len (py_split)) { + return ret; + } + ret.append (sep.join (py_split.__getslice__ (maxsplit, null, 1))); + return ret; +}; +export var _local_time_tuple = function (jd) { + var res = tuple ([jd.getFullYear (), jd.getMonth () + 1, jd.getDate (), jd.getHours (), jd.getMinutes (), jd.getSeconds (), (jd.getDay () > 0 ? jd.getDay () - 1 : 6), _day_of_year (jd, true), _daylight_in_effect (jd), jd.getMilliseconds ()]); + return res; +}; +export var _utc_time_tuple = function (jd) { + var res = tuple ([jd.getUTCFullYear (), jd.getUTCMonth () + 1, jd.getUTCDate (), jd.getUTCHours (), jd.getUTCMinutes (), jd.getUTCSeconds (), jd.getUTCDay () - 1, _day_of_year (jd, false), 0, jd.getUTCMilliseconds ()]); + return res; +}; +export var _day_of_year = function (jd, local) { + var day_offs = 0; + if (jd.getHours () + (jd.getTimezoneOffset () * 60) / 3600 < 0) { + var day_offs = -(1); + } + var was = jd.getTime (); + var cur = jd.setHours (23); + jd.setUTCDate (1); + jd.setUTCMonth (0); + jd.setUTCHours (0); + jd.setUTCMinutes (0); + jd.setUTCSeconds (0); + var res = round ((cur - jd) / 86400000); + if (!(local)) { + res += day_offs; + } + if (res == 0) { + var res = 365; + jd.setTime (jd.getTime () - 86400); + var last_year = jd.getUTCFullYear (); + if (_is_leap (last_year)) { + var res = 366; + } + } + jd.setTime (was); + return res; +}; +export var _is_leap = function (year) { + return __mod__ (year, 4) == 0 && (__mod__ (year, 100) != 0 || __mod__ (year, 400) == 0); +}; +export var __jan_jun_tz = function (t, func) { + var was = t.getTime (); + t.setDate (1); + var res = []; + for (var m of tuple ([0, 6])) { + t.setMonth (m); + if (!(func)) { + res.append (t.getTimezoneOffset ()); + } + else { + res.append (func (t)); + } + } + t.setTime (was); + return res; +}; +export var _daylight = function (t) { + var jj = __jan_jun_tz (t); + if (jj [0] != jj [1]) { + return 1; + } + return 0; +}; +export var _daylight_in_effect = function (t) { + var jj = __jan_jun_tz (t); + if (min (jj [0], jj [1]) == t.getTimezoneOffset ()) { + return 1; + } + return 0; +}; +export var _timezone = function (t) { + var jj = __jan_jun_tz (t); + return max (jj [0], jj [1]); +}; +export var __tzn = function (t) { + try { + return str (t).py_split ('(') [1].py_split (')') [0]; + } + catch (__except0__) { + return 'n.a.'; + } +}; +export var _tzname = function (t) { + var cn = __tzn (t); + var ret = [cn, cn]; + var jj = __jan_jun_tz (t, __tzn); + var ind = 0; + if (!(_daylight_in_effect (t))) { + var ind = 1; + } + for (var i of jj) { + if (i != cn) { + ret [ind] = i; + } + } + return tuple (ret); +}; +export var altzone = __now.getTimezoneOffset (); +if (!(_daylight_in_effect (__now))) { + var _jj = __jan_jun_tz (__now); + var altzone = (altzone == _jj [1] ? _jj [0] : _jj [1]); +} +var altzone = altzone * 60; +export var timezone = _timezone (__now) * 60; +export var daylight = _daylight (__now); +export var tzname = _tzname (__now); +export var time = function () { + return Date.now () / 1000; +}; +export var asctime = function (t) { + return strftime ('%a %b %d %H:%M:%S %Y', t); +}; +export var mktime = function (t) { + var d = new Date (t [0], t [1] - 1, t [2], t [3], t [4], t [5], 0); + return (d - 0) / 1000; +}; +export var ctime = function (seconds) { + if (!(seconds)) { + var seconds = time (); + } + return asctime (localtime (seconds)); +}; +export var localtime = function (seconds) { + if (!(seconds)) { + var seconds = time (); + } + return gmtime (seconds, true); +}; +export var gmtime = function (seconds, localtime) { + if (!(seconds)) { + var seconds = time (); + } + var millis = seconds * 1000; + __date.setTime (millis); + if (localtime) { + var t = _local_time_tuple (__date); + } + else { + var t = _utc_time_tuple (__date); + } + return t.__getslice__ (0, 9, 1); +}; +export var strptime = function (string, format) { + if (!(format)) { + var format = '%a %b %d %H:%M:%S %Y'; + } + var __left0__ = tuple ([string, format]); + var ts = __left0__ [0]; + var fmt = __left0__ [1]; + var get_next = function (fmt) { + var get_sep = function (fmt) { + var res = []; + if (!(fmt)) { + return tuple (['', '']); + } + for (var i = 0; i < len (fmt) - 1; i++) { + var c = fmt [i]; + if (c == '%') { + break; + } + res.append (c); + } + return tuple ([''.join (res), fmt.__getslice__ (i, null, 1)]); + }; + var __left0__ = tuple ([null, null, null]); + var d = __left0__ [0]; + var sep = __left0__ [1]; + var f = __left0__ [2]; + if (fmt) { + if (fmt [0] == '%') { + var d = fmt [1]; + var __left0__ = get_sep (fmt.__getslice__ (2, null, 1)); + var sep = __left0__ [0]; + var f = __left0__ [1]; + } + else { + var __left0__ = get_sep (fmt); + var sep = __left0__ [0]; + var f = __left0__ [1]; + } + } + return tuple ([d, sep, f]); + }; + var dir_val = dict ({}); + while (ts) { + var __left0__ = get_next (fmt); + var d = __left0__ [0]; + var sep = __left0__ [1]; + var fmt = __left0__ [2]; + if (sep == '') { + var lv = null; + if (d) { + var l = -(1); + if (d == 'Y') { + var l = 4; + } + else if (d == 'a') { + var l = len (__weekdays [0]); + } + else if (d == 'A') { + var l = len (__weekdays_long [0]); + } + else if (d == 'b') { + var l = len (__months [0]); + } + else if (__in__ (d, tuple (['d', 'm', 'H', 'M', 'S']))) { + var l = 2; + } + if (l > -(1)) { + var lv = [ts.__getslice__ (0, l, 1), ts.__getslice__ (l, null, 1)]; + } + } + if (!(lv)) { + var lv = [ts, '']; + } + } + else { + var lv = _lsplit (ts, sep, 1); + } + if (d == null) { + var ts = lv [1]; + continue; + } + var __left0__ = tuple ([lv [1], lv [0]]); + var ts = __left0__ [0]; + dir_val [d] = __left0__ [1]; + if (fmt == '') { + break; + } + } + var t = [1900, 1, 1, 0, 0, 0, 0, 1, -(1)]; + var ignore_keys = []; + var have_weekday = false; + for (var [d, v] of dir_val.py_items ()) { + if (__in__ (d, ignore_keys)) { + continue; + } + if (d == 'p') { + continue; + } + if (__in__ (d, __lu.py_keys ())) { + t [__lu [d]] = int (v); + continue; + } + if (__in__ (d, tuple (['a', 'A', 'b', 'B']))) { + var v = v.lower (); + } + if (d == 'm') { + ignore_keys.append ('b'); + ignore_keys.append ('B'); + } + if (d == 'a') { + if (!(__in__ (v, __weekdays))) { + var __except0__ = ValueError ('Weekday unknown in your locale'); + __except0__.__cause__ = null; + throw __except0__; + } + var have_weekday = true; + t [6] = __weekdays.index (v); + } + else if (d == 'A') { + if (!(__in__ (v, __weekdays_long))) { + var __except0__ = ValueError ('Weekday unknown in your locale'); + __except0__.__cause__ = null; + throw __except0__; + } + var have_weekday = true; + t [6] = __weekdays_long.index (v); + } + else if (d == 'b') { + if (!(__in__ (v, __months))) { + var __except0__ = ValueError ('Month unknown in your locale'); + __except0__.__cause__ = null; + throw __except0__; + } + t [1] = __months.index (v) + 1; + } + else if (d == 'B') { + if (!(__in__ (v, __months_long))) { + var __except0__ = ValueError ('Month unknown in your locale'); + __except0__.__cause__ = null; + throw __except0__; + } + t [1] = __months_long.index (v) + 1; + } + else if (d == 'I') { + var ampm = dir_val ['p'] || 'am'; + var ampm = ampm.lower (); + var v = int (v); + if (v == 12) { + var v = 0; + } + else if (v > 12) { + var __except0__ = ValueError (((("time data '" + string) + "' does not match format '") + format) + "'"); + __except0__.__cause__ = null; + throw __except0__; + } + if (ampm == 'pm') { + v += 12; + } + t [__lu ['H']] = v; + } + else if (d == 'y') { + t [0] = 2000 + int (v); + } + else if (d == 'Z') { + if (__in__ (v.lower (), ['gmt', 'utc'])) { + t [-(1)] = 0; + } + } + } + var __date = new Date (0); + __date.setUTCFullYear (t [0]); + __date.setUTCMonth (t [1] - 1); + __date.setUTCDate (t [2]); + __date.setUTCHours (t [3]); + t [7] = _day_of_year (__date, true); + if (!(have_weekday)) { + t [6] = __date.getUTCDay () - 1; + } + return t; +}; +export var strftime = function (format, t) { + var zf2 = function (v) { + if (v < 10) { + return '0' + str (v); + } + return v; + }; + if (!(t)) { + var t = localtime (); + } + var f = format; + for (var d of __lu.py_keys ()) { + var k = '%' + d; + if (!(__in__ (k, f))) { + continue; + } + var v = zf2 (t [__lu [d]]); + var f = f.py_replace (k, v); + } + for (var [d, l, pos] of tuple ([tuple (['b', __months, 1]), tuple (['B', __months_long, 1]), tuple (['a', __weekdays, 6]), tuple (['A', __weekdays_long, 6])])) { + var p = t [pos]; + if (pos == 1) { + var p = p - 1; + } + var v = l [p].capitalize (); + var f = f.py_replace ('%' + d, v); + } + if (__in__ ('%p', f)) { + if (t [3] > 11) { + var ap = 'PM'; + } + else { + var ap = 'AM'; + } + var f = f.py_replace ('%p', ap); + } + if (__in__ ('%y', f)) { + var f = f.py_replace ('%y', str (t [0]).__getslice__ (-(2), null, 1)); + } + if (__in__ ('%I', f)) { + var v = t [3]; + if (v == 0) { + var v = 12; + } + else if (v > 12) { + var v = v - 12; + } + var f = f.py_replace ('%I', zf2 (v)); + } + return f; +}; + +//# sourceMappingURL=time.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/time.tree b/transcrypt/development/automated_tests/transcrypt/__target__38/time.tree new file mode 100644 index 000000000..ad4253fb5 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/time.tree @@ -0,0 +1,4891 @@ +file: Module + body: list + element: Expr + value: Constant + value: str = +time module + +No: + +- Platform specific functions +- sleep. In js currently not possible in browsers + except via busy loops, we don't do that. +- struct_time CLASS. we work only via the tuple interface of it. +- handling of weird stuff. + e.g.: In Europe/Simferopool (Ukraine) the UTC offset before 1924 was +2.67 + +Spec for all below (must have open to read this module): + +> https://docs.python.org/3.5/library/time.html + + +Jul 2016, Gunther Klessinger, Axiros GmbH + + kind: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = nokwargs + kind: NoneType = None + keywords: list + element: Try + body: list + element: Assign + targets: list + element: Name + id: str = __language + ctx: Store + value: Attribute + value: Attribute + value: Name + id: str = window + ctx: Load + attr: str = navigator + ctx: Load + attr: str = language + ctx: Load + type_comment: NoneType = None + handlers: list + element: ExceptHandler + type: NoneType = None + name: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = __language + ctx: Store + value: Constant + value: str = en-US + kind: NoneType = None + type_comment: NoneType = None + orelse: list + finalbody: list + element: FunctionDef + name: str = __debugGetLanguage + args: arguments + posonlyargs: list + args: list + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Name + id: str = __language + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __adapt__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = request + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Global + names: list + element: str = __language + element: Assign + targets: list + element: Name + id: str = __language + ctx: Store + value: Subscript + value: Call + func: Attribute + value: Subscript + value: Attribute + value: Name + id: str = request + ctx: Load + attr: str = headers + ctx: Load + slice: Index + value: Constant + value: str = accept-language + kind: NoneType = None + ctx: Load + attr: str = split + ctx: Load + args: list + element: Constant + value: str = , + kind: NoneType = None + keywords: list + slice: Index + value: Constant + value: int = 0 + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: ImportFrom + module: str = org.transcrypt.stubs.browser + names: list + element: alias + name: str = __new__ + asname: NoneType = None + level: int = 0 + element: Assign + targets: list + element: Name + id: str = __date + ctx: Store + value: Call + func: Name + id: str = __new__ + ctx: Load + args: list + element: Call + func: Name + id: str = Date + ctx: Load + args: list + element: Constant + value: int = 0 + kind: NoneType = None + keywords: list + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = __now + ctx: Store + value: Call + func: Name + id: str = __new__ + ctx: Load + args: list + element: Call + func: Name + id: str = Date + ctx: Load + args: list + keywords: list + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = __weekdays + ctx: Store + value: List + elts: list + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = __weekdays_long + ctx: Store + value: List + elts: list + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = __d + ctx: Store + value: Call + func: Name + id: str = __new__ + ctx: Load + args: list + element: Call + func: Name + id: str = Date + ctx: Load + args: list + element: Constant + value: int = 1467662339080 + kind: NoneType = None + keywords: list + keywords: list + type_comment: NoneType = None + element: For + target: Name + id: str = i + ctx: Store + iter: Call + func: Name + id: str = range + ctx: Load + args: list + element: Constant + value: int = 7 + kind: NoneType = None + keywords: list + body: list + element: For + target: Tuple + elts: list + element: Name + id: str = l + ctx: Store + element: Name + id: str = s + ctx: Store + ctx: Store + iter: Tuple + elts: list + element: Tuple + elts: list + element: Name + id: str = __weekdays + ctx: Load + element: Constant + value: str = short + kind: NoneType = None + ctx: Load + element: Tuple + elts: list + element: Name + id: str = __weekdays_long + ctx: Load + element: Constant + value: str = long + kind: NoneType = None + ctx: Load + ctx: Load + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = l + ctx: Load + attr: str = append + ctx: Load + args: list + element: Call + func: Attribute + value: Call + func: Attribute + value: Name + id: str = __d + ctx: Load + attr: str = toLocaleString + ctx: Load + args: list + element: Name + id: str = __language + ctx: Load + element: Dict + keys: list + element: Constant + value: str = weekday + kind: NoneType = None + values: list + element: Name + id: str = s + ctx: Load + keywords: list + attr: str = lower + ctx: Load + args: list + keywords: list + keywords: list + orelse: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = __d + ctx: Load + attr: str = setDate + ctx: Load + args: list + element: BinOp + left: Call + func: Attribute + value: Name + id: str = __d + ctx: Load + attr: str = getDate + ctx: Load + args: list + keywords: list + op: Add + right: Constant + value: int = 1 + kind: NoneType = None + keywords: list + orelse: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = __months + ctx: Store + value: List + elts: list + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = __months_long + ctx: Store + value: List + elts: list + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = __d + ctx: Store + value: Call + func: Name + id: str = __new__ + ctx: Load + args: list + element: Call + func: Name + id: str = Date + ctx: Load + args: list + element: Constant + value: float = 946681200000.0 + kind: NoneType = None + keywords: list + keywords: list + type_comment: NoneType = None + element: For + target: Name + id: str = i + ctx: Store + iter: Call + func: Name + id: str = range + ctx: Load + args: list + element: Constant + value: int = 12 + kind: NoneType = None + keywords: list + body: list + element: For + target: Tuple + elts: list + element: Name + id: str = l + ctx: Store + element: Name + id: str = s + ctx: Store + ctx: Store + iter: Tuple + elts: list + element: Tuple + elts: list + element: Name + id: str = __months + ctx: Load + element: Constant + value: str = short + kind: NoneType = None + ctx: Load + element: Tuple + elts: list + element: Name + id: str = __months_long + ctx: Load + element: Constant + value: str = long + kind: NoneType = None + ctx: Load + ctx: Load + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = l + ctx: Load + attr: str = append + ctx: Load + args: list + element: Call + func: Attribute + value: Call + func: Attribute + value: Name + id: str = __d + ctx: Load + attr: str = toLocaleString + ctx: Load + args: list + element: Name + id: str = __language + ctx: Load + element: Dict + keys: list + element: Constant + value: str = month + kind: NoneType = None + values: list + element: Name + id: str = s + ctx: Load + keywords: list + attr: str = lower + ctx: Load + args: list + keywords: list + keywords: list + orelse: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = __d + ctx: Load + attr: str = setMonth + ctx: Load + args: list + element: BinOp + left: Call + func: Attribute + value: Name + id: str = __d + ctx: Load + attr: str = getMonth + ctx: Load + args: list + keywords: list + op: Add + right: Constant + value: int = 1 + kind: NoneType = None + keywords: list + orelse: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = __lu + ctx: Store + value: Dict + keys: list + element: Constant + value: str = Y + kind: NoneType = None + element: Constant + value: str = m + kind: NoneType = None + element: Constant + value: str = d + kind: NoneType = None + element: Constant + value: str = H + kind: NoneType = None + element: Constant + value: str = M + kind: NoneType = None + element: Constant + value: str = S + kind: NoneType = None + values: list + element: Constant + value: int = 0 + kind: NoneType = None + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + element: Constant + value: int = 4 + kind: NoneType = None + element: Constant + value: int = 5 + kind: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = _lsplit + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = s + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = sep + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = maxsplit + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = not yet in TS + kind: NoneType = None + element: If + test: Compare + left: Name + id: str = maxsplit + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + body: list + element: Return + value: List + elts: list + element: Name + id: str = s + ctx: Load + ctx: Load + orelse: list + element: Assign + targets: list + element: Name + id: str = split + ctx: Store + value: Call + func: Attribute + value: Name + id: str = s + ctx: Load + attr: str = split + ctx: Load + args: list + element: Name + id: str = sep + ctx: Load + keywords: list + type_comment: NoneType = None + element: If + test: UnaryOp + op: Not + operand: Name + id: str = maxsplit + ctx: Load + body: list + element: Return + value: Name + id: str = split + ctx: Load + orelse: list + element: Assign + targets: list + element: Name + id: str = ret + ctx: Store + value: Call + func: Attribute + value: Name + id: str = split + ctx: Load + attr: str = slice + ctx: Load + args: list + element: Constant + value: int = 0 + kind: NoneType = None + element: Name + id: str = maxsplit + ctx: Load + element: Constant + value: int = 1 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: If + test: Compare + left: Call + func: Name + id: str = len + ctx: Load + args: list + element: Name + id: str = ret + ctx: Load + keywords: list + ops: list + element: Eq + comparators: list + element: Call + func: Name + id: str = len + ctx: Load + args: list + element: Name + id: str = split + ctx: Load + keywords: list + body: list + element: Return + value: Name + id: str = ret + ctx: Load + orelse: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = ret + ctx: Load + attr: str = append + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = sep + ctx: Load + attr: str = join + ctx: Load + args: list + element: Subscript + value: Name + id: str = split + ctx: Load + slice: Slice + lower: Name + id: str = maxsplit + ctx: Load + upper: NoneType = None + step: NoneType = None + ctx: Load + keywords: list + keywords: list + element: Return + value: Name + id: str = ret + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = _local_time_tuple + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = jd + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = jd: javascript Date object, from unixtimestamp + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = res + ctx: Store + value: Tuple + elts: list + element: Call + func: Attribute + value: Name + id: str = jd + ctx: Load + attr: str = getFullYear + ctx: Load + args: list + keywords: list + element: BinOp + left: Call + func: Attribute + value: Name + id: str = jd + ctx: Load + attr: str = getMonth + ctx: Load + args: list + keywords: list + op: Add + right: Constant + value: int = 1 + kind: NoneType = None + element: Call + func: Attribute + value: Name + id: str = jd + ctx: Load + attr: str = getDate + ctx: Load + args: list + keywords: list + element: Call + func: Attribute + value: Name + id: str = jd + ctx: Load + attr: str = getHours + ctx: Load + args: list + keywords: list + element: Call + func: Attribute + value: Name + id: str = jd + ctx: Load + attr: str = getMinutes + ctx: Load + args: list + keywords: list + element: Call + func: Attribute + value: Name + id: str = jd + ctx: Load + attr: str = getSeconds + ctx: Load + args: list + keywords: list + element: IfExp + test: Compare + left: Call + func: Attribute + value: Name + id: str = jd + ctx: Load + attr: str = getDay + ctx: Load + args: list + keywords: list + ops: list + element: Gt + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + body: BinOp + left: Call + func: Attribute + value: Name + id: str = jd + ctx: Load + attr: str = getDay + ctx: Load + args: list + keywords: list + op: Sub + right: Constant + value: int = 1 + kind: NoneType = None + orelse: Constant + value: int = 6 + kind: NoneType = None + element: Call + func: Name + id: str = _day_of_year + ctx: Load + args: list + element: Name + id: str = jd + ctx: Load + element: Constant + value: bool = True + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = _daylight_in_effect + ctx: Load + args: list + element: Name + id: str = jd + ctx: Load + keywords: list + element: Call + func: Attribute + value: Name + id: str = jd + ctx: Load + attr: str = getMilliseconds + ctx: Load + args: list + keywords: list + ctx: Load + type_comment: NoneType = None + element: Return + value: Name + id: str = res + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = _utc_time_tuple + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = jd + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = jd: javascript Date object, from unixtimestamp + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = res + ctx: Store + value: Tuple + elts: list + element: Call + func: Attribute + value: Name + id: str = jd + ctx: Load + attr: str = getUTCFullYear + ctx: Load + args: list + keywords: list + element: BinOp + left: Call + func: Attribute + value: Name + id: str = jd + ctx: Load + attr: str = getUTCMonth + ctx: Load + args: list + keywords: list + op: Add + right: Constant + value: int = 1 + kind: NoneType = None + element: Call + func: Attribute + value: Name + id: str = jd + ctx: Load + attr: str = getUTCDate + ctx: Load + args: list + keywords: list + element: Call + func: Attribute + value: Name + id: str = jd + ctx: Load + attr: str = getUTCHours + ctx: Load + args: list + keywords: list + element: Call + func: Attribute + value: Name + id: str = jd + ctx: Load + attr: str = getUTCMinutes + ctx: Load + args: list + keywords: list + element: Call + func: Attribute + value: Name + id: str = jd + ctx: Load + attr: str = getUTCSeconds + ctx: Load + args: list + keywords: list + element: BinOp + left: Call + func: Attribute + value: Name + id: str = jd + ctx: Load + attr: str = getUTCDay + ctx: Load + args: list + keywords: list + op: Sub + right: Constant + value: int = 1 + kind: NoneType = None + element: Call + func: Name + id: str = _day_of_year + ctx: Load + args: list + element: Name + id: str = jd + ctx: Load + element: Constant + value: bool = False + kind: NoneType = None + keywords: list + element: Constant + value: int = 0 + kind: NoneType = None + element: Call + func: Attribute + value: Name + id: str = jd + ctx: Load + attr: str = getUTCMilliseconds + ctx: Load + args: list + keywords: list + ctx: Load + type_comment: NoneType = None + element: Return + value: Name + id: str = res + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = _day_of_year + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = jd + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = local + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Name + id: str = day_offs + ctx: Store + value: Constant + value: int = 0 + kind: NoneType = None + type_comment: NoneType = None + element: If + test: Compare + left: BinOp + left: Call + func: Attribute + value: Name + id: str = jd + ctx: Load + attr: str = getHours + ctx: Load + args: list + keywords: list + op: Add + right: BinOp + left: BinOp + left: Call + func: Attribute + value: Name + id: str = jd + ctx: Load + attr: str = getTimezoneOffset + ctx: Load + args: list + keywords: list + op: Mult + right: Constant + value: int = 60 + kind: NoneType = None + op: Div + right: Constant + value: int = 3600 + kind: NoneType = None + ops: list + element: Lt + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = day_offs + ctx: Store + value: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + type_comment: NoneType = None + orelse: list + element: Assign + targets: list + element: Name + id: str = was + ctx: Store + value: Call + func: Attribute + value: Name + id: str = jd + ctx: Load + attr: str = getTime + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = cur + ctx: Store + value: Call + func: Attribute + value: Name + id: str = jd + ctx: Load + attr: str = setHours + ctx: Load + args: list + element: Constant + value: int = 23 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = jd + ctx: Load + attr: str = setUTCDate + ctx: Load + args: list + element: Constant + value: int = 1 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = jd + ctx: Load + attr: str = setUTCMonth + ctx: Load + args: list + element: Constant + value: int = 0 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = jd + ctx: Load + attr: str = setUTCHours + ctx: Load + args: list + element: Constant + value: int = 0 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = jd + ctx: Load + attr: str = setUTCMinutes + ctx: Load + args: list + element: Constant + value: int = 0 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = jd + ctx: Load + attr: str = setUTCSeconds + ctx: Load + args: list + element: Constant + value: int = 0 + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = res + ctx: Store + value: Call + func: Name + id: str = round + ctx: Load + args: list + element: BinOp + left: BinOp + left: Name + id: str = cur + ctx: Load + op: Sub + right: Name + id: str = jd + ctx: Load + op: Div + right: Constant + value: int = 86400000 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: If + test: UnaryOp + op: Not + operand: Name + id: str = local + ctx: Load + body: list + element: AugAssign + target: Name + id: str = res + ctx: Store + op: Add + value: Name + id: str = day_offs + ctx: Load + orelse: list + element: If + test: Compare + left: Name + id: str = res + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = res + ctx: Store + value: Constant + value: int = 365 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = jd + ctx: Load + attr: str = setTime + ctx: Load + args: list + element: BinOp + left: Call + func: Attribute + value: Name + id: str = jd + ctx: Load + attr: str = getTime + ctx: Load + args: list + keywords: list + op: Sub + right: Constant + value: int = 86400 + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = last_year + ctx: Store + value: Call + func: Attribute + value: Name + id: str = jd + ctx: Load + attr: str = getUTCFullYear + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: If + test: Call + func: Name + id: str = _is_leap + ctx: Load + args: list + element: Name + id: str = last_year + ctx: Load + keywords: list + body: list + element: Assign + targets: list + element: Name + id: str = res + ctx: Store + value: Constant + value: int = 366 + kind: NoneType = None + type_comment: NoneType = None + orelse: list + orelse: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = jd + ctx: Load + attr: str = setTime + ctx: Load + args: list + element: Name + id: str = was + ctx: Load + keywords: list + element: Return + value: Name + id: str = res + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = _is_leap + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = year + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: BoolOp + op: And + values: list + element: Compare + left: BinOp + left: Name + id: str = year + ctx: Load + op: Mod + right: Constant + value: int = 4 + kind: NoneType = None + ops: list + element: Eq + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + element: BoolOp + op: Or + values: list + element: Compare + left: BinOp + left: Name + id: str = year + ctx: Load + op: Mod + right: Constant + value: int = 100 + kind: NoneType = None + ops: list + element: NotEq + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + element: Compare + left: BinOp + left: Name + id: str = year + ctx: Load + op: Mod + right: Constant + value: int = 400 + kind: NoneType = None + ops: list + element: Eq + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __jan_jun_tz + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = t + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = func + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = information about local jan and jun month of a t's year + default is to deliver timezone offset, but a function can be handed to us, + which we'll run on those two months + + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = was + ctx: Store + value: Call + func: Attribute + value: Name + id: str = t + ctx: Load + attr: str = getTime + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = t + ctx: Load + attr: str = setDate + ctx: Load + args: list + element: Constant + value: int = 1 + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = res + ctx: Store + value: List + elts: list + ctx: Load + type_comment: NoneType = None + element: For + target: Name + id: str = m + ctx: Store + iter: Tuple + elts: list + element: Constant + value: int = 0 + kind: NoneType = None + element: Constant + value: int = 6 + kind: NoneType = None + ctx: Load + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = t + ctx: Load + attr: str = setMonth + ctx: Load + args: list + element: Name + id: str = m + ctx: Load + keywords: list + element: If + test: UnaryOp + op: Not + operand: Name + id: str = func + ctx: Load + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = res + ctx: Load + attr: str = append + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = t + ctx: Load + attr: str = getTimezoneOffset + ctx: Load + args: list + keywords: list + keywords: list + orelse: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = res + ctx: Load + attr: str = append + ctx: Load + args: list + element: Call + func: Name + id: str = func + ctx: Load + args: list + element: Name + id: str = t + ctx: Load + keywords: list + keywords: list + orelse: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = t + ctx: Load + attr: str = setTime + ctx: Load + args: list + element: Name + id: str = was + ctx: Load + keywords: list + element: Return + value: Name + id: str = res + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = _daylight + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = t + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = + http://stackoverflow.com/questions/11887934/ + check-if-daylight-saving-time-is-in-effect-and-if-it-is-for-how-many-hours + + return 0 or 1 like python + CAUTION: https://docs.python.org/2/library/time.html#time.daylight: + "Nonzero if a DST timezone is DEFINED." (but not necessarily in effect!!) + -> we just check if there is a delta of tz offsets in june an jan of the + year of t: + + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = jj + ctx: Store + value: Call + func: Name + id: str = __jan_jun_tz + ctx: Load + args: list + element: Name + id: str = t + ctx: Load + keywords: list + type_comment: NoneType = None + element: If + test: Compare + left: Subscript + value: Name + id: str = jj + ctx: Load + slice: Index + value: Constant + value: int = 0 + kind: NoneType = None + ctx: Load + ops: list + element: NotEq + comparators: list + element: Subscript + value: Name + id: str = jj + ctx: Load + slice: Index + value: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + body: list + element: Return + value: Constant + value: int = 1 + kind: NoneType = None + orelse: list + element: Return + value: Constant + value: int = 0 + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = _daylight_in_effect + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = t + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Name + id: str = jj + ctx: Store + value: Call + func: Name + id: str = __jan_jun_tz + ctx: Load + args: list + element: Name + id: str = t + ctx: Load + keywords: list + type_comment: NoneType = None + element: If + test: Compare + left: Call + func: Name + id: str = min + ctx: Load + args: list + element: Subscript + value: Name + id: str = jj + ctx: Load + slice: Index + value: Constant + value: int = 0 + kind: NoneType = None + ctx: Load + element: Subscript + value: Name + id: str = jj + ctx: Load + slice: Index + value: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + keywords: list + ops: list + element: Eq + comparators: list + element: Call + func: Attribute + value: Name + id: str = t + ctx: Load + attr: str = getTimezoneOffset + ctx: Load + args: list + keywords: list + body: list + element: Return + value: Constant + value: int = 1 + kind: NoneType = None + orelse: list + element: Return + value: Constant + value: int = 0 + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = _timezone + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = t + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Name + id: str = jj + ctx: Store + value: Call + func: Name + id: str = __jan_jun_tz + ctx: Load + args: list + element: Name + id: str = t + ctx: Load + keywords: list + type_comment: NoneType = None + element: Return + value: Call + func: Name + id: str = max + ctx: Load + args: list + element: Subscript + value: Name + id: str = jj + ctx: Load + slice: Index + value: Constant + value: int = 0 + kind: NoneType = None + ctx: Load + element: Subscript + value: Name + id: str = jj + ctx: Load + slice: Index + value: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __tzn + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = t + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Try + body: list + element: Return + value: Subscript + value: Call + func: Attribute + value: Subscript + value: Call + func: Attribute + value: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = t + ctx: Load + keywords: list + attr: str = split + ctx: Load + args: list + element: Constant + value: str = ( + kind: NoneType = None + keywords: list + slice: Index + value: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + attr: str = split + ctx: Load + args: list + element: Constant + value: str = ) + kind: NoneType = None + keywords: list + slice: Index + value: Constant + value: int = 0 + kind: NoneType = None + ctx: Load + handlers: list + element: ExceptHandler + type: NoneType = None + name: NoneType = None + body: list + element: Return + value: Constant + value: str = n.a. + kind: NoneType = None + orelse: list + finalbody: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = _tzname + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = t + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = the first is the name of the local non-DST timezone, + the second is the name of the local DST timezone. + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = cn + ctx: Store + value: Call + func: Name + id: str = __tzn + ctx: Load + args: list + element: Name + id: str = t + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = ret + ctx: Store + value: List + elts: list + element: Name + id: str = cn + ctx: Load + element: Name + id: str = cn + ctx: Load + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = jj + ctx: Store + value: Call + func: Name + id: str = __jan_jun_tz + ctx: Load + args: list + element: Name + id: str = t + ctx: Load + element: Name + id: str = __tzn + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = ind + ctx: Store + value: Constant + value: int = 0 + kind: NoneType = None + type_comment: NoneType = None + element: If + test: UnaryOp + op: Not + operand: Call + func: Name + id: str = _daylight_in_effect + ctx: Load + args: list + element: Name + id: str = t + ctx: Load + keywords: list + body: list + element: Assign + targets: list + element: Name + id: str = ind + ctx: Store + value: Constant + value: int = 1 + kind: NoneType = None + type_comment: NoneType = None + orelse: list + element: For + target: Name + id: str = i + ctx: Store + iter: Name + id: str = jj + ctx: Load + body: list + element: If + test: Compare + left: Name + id: str = i + ctx: Load + ops: list + element: NotEq + comparators: list + element: Name + id: str = cn + ctx: Load + body: list + element: Assign + targets: list + element: Subscript + value: Name + id: str = ret + ctx: Load + slice: Index + value: Name + id: str = ind + ctx: Load + ctx: Store + value: Name + id: str = i + ctx: Load + type_comment: NoneType = None + orelse: list + orelse: list + type_comment: NoneType = None + element: Return + value: Call + func: Name + id: str = tuple + ctx: Load + args: list + element: Name + id: str = ret + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = altzone + ctx: Store + value: Call + func: Attribute + value: Name + id: str = __now + ctx: Load + attr: str = getTimezoneOffset + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: If + test: UnaryOp + op: Not + operand: Call + func: Name + id: str = _daylight_in_effect + ctx: Load + args: list + element: Name + id: str = __now + ctx: Load + keywords: list + body: list + element: Assign + targets: list + element: Name + id: str = _jj + ctx: Store + value: Call + func: Name + id: str = __jan_jun_tz + ctx: Load + args: list + element: Name + id: str = __now + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = altzone + ctx: Store + value: IfExp + test: Compare + left: Name + id: str = altzone + ctx: Load + ops: list + element: Eq + comparators: list + element: Subscript + value: Name + id: str = _jj + ctx: Load + slice: Index + value: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + body: Subscript + value: Name + id: str = _jj + ctx: Load + slice: Index + value: Constant + value: int = 0 + kind: NoneType = None + ctx: Load + orelse: Subscript + value: Name + id: str = _jj + ctx: Load + slice: Index + value: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + orelse: list + element: Assign + targets: list + element: Name + id: str = altzone + ctx: Store + value: BinOp + left: Name + id: str = altzone + ctx: Load + op: Mult + right: Constant + value: int = 60 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = timezone + ctx: Store + value: BinOp + left: Call + func: Name + id: str = _timezone + ctx: Load + args: list + element: Name + id: str = __now + ctx: Load + keywords: list + op: Mult + right: Constant + value: int = 60 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = daylight + ctx: Store + value: Call + func: Name + id: str = _daylight + ctx: Load + args: list + element: Name + id: str = __now + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = tzname + ctx: Store + value: Call + func: Name + id: str = _tzname + ctx: Load + args: list + element: Name + id: str = __now + ctx: Load + keywords: list + type_comment: NoneType = None + element: FunctionDef + name: str = time + args: arguments + posonlyargs: list + args: list + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = + time() -> floating point number + +Return the current time in seconds + since the Epoch. + Fractions of a second may be present if the system clock provides them. + + kind: NoneType = None + element: Return + value: BinOp + left: Call + func: Attribute + value: Name + id: str = Date + ctx: Load + attr: str = now + ctx: Load + args: list + keywords: list + op: Div + right: Constant + value: int = 1000 + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = asctime + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = t + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Call + func: Name + id: str = strftime + ctx: Load + args: list + element: Constant + value: str = %a %b %d %H:%M:%S %Y + kind: NoneType = None + element: Name + id: str = t + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = mktime + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = t + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = inverse of localtime + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = d + ctx: Store + value: Call + func: Name + id: str = __new__ + ctx: Load + args: list + element: Call + func: Name + id: str = Date + ctx: Load + args: list + element: Subscript + value: Name + id: str = t + ctx: Load + slice: Index + value: Constant + value: int = 0 + kind: NoneType = None + ctx: Load + element: BinOp + left: Subscript + value: Name + id: str = t + ctx: Load + slice: Index + value: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + op: Sub + right: Constant + value: int = 1 + kind: NoneType = None + element: Subscript + value: Name + id: str = t + ctx: Load + slice: Index + value: Constant + value: int = 2 + kind: NoneType = None + ctx: Load + element: Subscript + value: Name + id: str = t + ctx: Load + slice: Index + value: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + element: Subscript + value: Name + id: str = t + ctx: Load + slice: Index + value: Constant + value: int = 4 + kind: NoneType = None + ctx: Load + element: Subscript + value: Name + id: str = t + ctx: Load + slice: Index + value: Constant + value: int = 5 + kind: NoneType = None + ctx: Load + element: Constant + value: int = 0 + kind: NoneType = None + keywords: list + keywords: list + type_comment: NoneType = None + element: Return + value: BinOp + left: BinOp + left: Name + id: str = d + ctx: Load + op: Sub + right: Constant + value: int = 0 + kind: NoneType = None + op: Div + right: Constant + value: int = 1000 + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = ctime + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = seconds + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = + ctime(seconds) -> string + + Convert a time in seconds since the Epoch to a string in local time. + This is equivalent to asctime(localtime(seconds)). When the time tuple is + not present, current time as returned by localtime() is used.' + + kind: NoneType = None + element: If + test: UnaryOp + op: Not + operand: Name + id: str = seconds + ctx: Load + body: list + element: Assign + targets: list + element: Name + id: str = seconds + ctx: Store + value: Call + func: Name + id: str = time + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + orelse: list + element: Return + value: Call + func: Name + id: str = asctime + ctx: Load + args: list + element: Call + func: Name + id: str = localtime + ctx: Load + args: list + element: Name + id: str = seconds + ctx: Load + keywords: list + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = localtime + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = seconds + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = + localtime([seconds]) -> (tm_year,tm_mon,tm_mday,tm_hour,tm_min, + tm_sec,tm_wday,tm_yday,tm_isdst) + + Convert seconds since the Epoch to a time tuple expressing local time. + When 'seconds' is not passed in, convert the current time instead. + + kind: NoneType = None + element: If + test: UnaryOp + op: Not + operand: Name + id: str = seconds + ctx: Load + body: list + element: Assign + targets: list + element: Name + id: str = seconds + ctx: Store + value: Call + func: Name + id: str = time + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + orelse: list + element: Return + value: Call + func: Name + id: str = gmtime + ctx: Load + args: list + element: Name + id: str = seconds + ctx: Load + element: Constant + value: bool = True + kind: NoneType = None + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = gmtime + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = seconds + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = localtime + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = + localtime([seconds]) -> (tm_year,tm_mon,tm_mday,tm_hour,tm_min, + tm_sec,tm_wday,tm_yday,tm_isdst) + + Convert seconds since the Epoch to a time tuple expressing local time. + When 'seconds' is not passed in, convert the current time instead. + + kind: NoneType = None + element: If + test: UnaryOp + op: Not + operand: Name + id: str = seconds + ctx: Load + body: list + element: Assign + targets: list + element: Name + id: str = seconds + ctx: Store + value: Call + func: Name + id: str = time + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + orelse: list + element: Assign + targets: list + element: Name + id: str = millis + ctx: Store + value: BinOp + left: Name + id: str = seconds + ctx: Load + op: Mult + right: Constant + value: int = 1000 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = __date + ctx: Load + attr: str = setTime + ctx: Load + args: list + element: Name + id: str = millis + ctx: Load + keywords: list + element: If + test: Name + id: str = localtime + ctx: Load + body: list + element: Assign + targets: list + element: Name + id: str = t + ctx: Store + value: Call + func: Name + id: str = _local_time_tuple + ctx: Load + args: list + element: Name + id: str = __date + ctx: Load + keywords: list + type_comment: NoneType = None + orelse: list + element: Assign + targets: list + element: Name + id: str = t + ctx: Store + value: Call + func: Name + id: str = _utc_time_tuple + ctx: Load + args: list + element: Name + id: str = __date + ctx: Load + keywords: list + type_comment: NoneType = None + element: Return + value: Subscript + value: Name + id: str = t + ctx: Load + slice: Slice + lower: NoneType = None + upper: Constant + value: int = 9 + kind: NoneType = None + step: NoneType = None + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = strptime + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = string + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = format + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = + strptime(string, format) -> struct_time + + Parse a string to a time tuple according to a format specification. + See the library reference manual for formatting codes (same as + strftime()). + + Commonly used format codes: + + %Y Year with century as a decimal number. + %m Month as a decimal number [01,12]. + %d Day of the month as a decimal number [01,31]. + %H Hour (24-hour clock) as a decimal number [00,23]. + %M Minute as a decimal number [00,59]. + %S Second as a decimal number [00,61]. + %z Time zone offset from UTC. + %a Locale's abbreviated weekday name. + %A Locale's full weekday name. + %b Locale's abbreviated month name. + %B Locale's full month name. + %c Locale's appropriate date and time representation. + %I Hour (12-hour clock) as a decimal number [01,12]. + %p Locale's equivalent of either AM or PM. + + Tradoffs of this Transcrypt implementation: + + 1. platform specific codes not supported + 2. %% and %c not supported + + kind: NoneType = None + element: If + test: UnaryOp + op: Not + operand: Name + id: str = format + ctx: Load + body: list + element: Assign + targets: list + element: Name + id: str = format + ctx: Store + value: Constant + value: str = %a %b %d %H:%M:%S %Y + kind: NoneType = None + type_comment: NoneType = None + orelse: list + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = ts + ctx: Store + element: Name + id: str = fmt + ctx: Store + ctx: Store + value: Tuple + elts: list + element: Name + id: str = string + ctx: Load + element: Name + id: str = format + ctx: Load + ctx: Load + type_comment: NoneType = None + element: FunctionDef + name: str = get_next + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = fmt + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = returns next directive, next seperator, rest of format str + kind: NoneType = None + element: FunctionDef + name: str = get_sep + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = fmt + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Name + id: str = res + ctx: Store + value: List + elts: list + ctx: Load + type_comment: NoneType = None + element: If + test: UnaryOp + op: Not + operand: Name + id: str = fmt + ctx: Load + body: list + element: Return + value: Tuple + elts: list + element: Constant + value: str = + kind: NoneType = None + element: Constant + value: str = + kind: NoneType = None + ctx: Load + orelse: list + element: For + target: Name + id: str = i + ctx: Store + iter: Call + func: Name + id: str = range + ctx: Load + args: list + element: BinOp + left: Call + func: Name + id: str = len + ctx: Load + args: list + element: Name + id: str = fmt + ctx: Load + keywords: list + op: Sub + right: Constant + value: int = 1 + kind: NoneType = None + keywords: list + body: list + element: Assign + targets: list + element: Name + id: str = c + ctx: Store + value: Subscript + value: Name + id: str = fmt + ctx: Load + slice: Index + value: Name + id: str = i + ctx: Load + ctx: Load + type_comment: NoneType = None + element: If + test: Compare + left: Name + id: str = c + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = % + kind: NoneType = None + body: list + element: Break + orelse: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = res + ctx: Load + attr: str = append + ctx: Load + args: list + element: Name + id: str = c + ctx: Load + keywords: list + orelse: list + type_comment: NoneType = None + element: Return + value: Tuple + elts: list + element: Call + func: Attribute + value: Constant + value: str = + kind: NoneType = None + attr: str = join + ctx: Load + args: list + element: Name + id: str = res + ctx: Load + keywords: list + element: Subscript + value: Name + id: str = fmt + ctx: Load + slice: Slice + lower: Name + id: str = i + ctx: Load + upper: NoneType = None + step: NoneType = None + ctx: Load + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = d + ctx: Store + element: Name + id: str = sep + ctx: Store + element: Name + id: str = f + ctx: Store + ctx: Store + value: Tuple + elts: list + element: Constant + value: NoneType = None + kind: NoneType = None + element: Constant + value: NoneType = None + kind: NoneType = None + element: Constant + value: NoneType = None + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: If + test: Name + id: str = fmt + ctx: Load + body: list + element: If + test: Compare + left: Subscript + value: Name + id: str = fmt + ctx: Load + slice: Index + value: Constant + value: int = 0 + kind: NoneType = None + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = % + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = d + ctx: Store + value: Subscript + value: Name + id: str = fmt + ctx: Load + slice: Index + value: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = sep + ctx: Store + element: Name + id: str = f + ctx: Store + ctx: Store + value: Call + func: Name + id: str = get_sep + ctx: Load + args: list + element: Subscript + value: Name + id: str = fmt + ctx: Load + slice: Slice + lower: Constant + value: int = 2 + kind: NoneType = None + upper: NoneType = None + step: NoneType = None + ctx: Load + keywords: list + type_comment: NoneType = None + orelse: list + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = sep + ctx: Store + element: Name + id: str = f + ctx: Store + ctx: Store + value: Call + func: Name + id: str = get_sep + ctx: Load + args: list + element: Name + id: str = fmt + ctx: Load + keywords: list + type_comment: NoneType = None + orelse: list + element: Return + value: Tuple + elts: list + element: Name + id: str = d + ctx: Load + element: Name + id: str = sep + ctx: Load + element: Name + id: str = f + ctx: Load + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = dir_val + ctx: Store + value: Dict + keys: list + values: list + type_comment: NoneType = None + element: While + test: Name + id: str = ts + ctx: Load + body: list + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = d + ctx: Store + element: Name + id: str = sep + ctx: Store + element: Name + id: str = fmt + ctx: Store + ctx: Store + value: Call + func: Name + id: str = get_next + ctx: Load + args: list + element: Name + id: str = fmt + ctx: Load + keywords: list + type_comment: NoneType = None + element: If + test: Compare + left: Name + id: str = sep + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = lv + ctx: Store + value: Constant + value: NoneType = None + kind: NoneType = None + type_comment: NoneType = None + element: If + test: Name + id: str = d + ctx: Load + body: list + element: Assign + targets: list + element: Name + id: str = l + ctx: Store + value: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + type_comment: NoneType = None + element: If + test: Compare + left: Name + id: str = d + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = Y + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = l + ctx: Store + value: Constant + value: int = 4 + kind: NoneType = None + type_comment: NoneType = None + orelse: list + element: If + test: Compare + left: Name + id: str = d + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = a + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = l + ctx: Store + value: Call + func: Name + id: str = len + ctx: Load + args: list + element: Subscript + value: Name + id: str = __weekdays + ctx: Load + slice: Index + value: Constant + value: int = 0 + kind: NoneType = None + ctx: Load + keywords: list + type_comment: NoneType = None + orelse: list + element: If + test: Compare + left: Name + id: str = d + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = A + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = l + ctx: Store + value: Call + func: Name + id: str = len + ctx: Load + args: list + element: Subscript + value: Name + id: str = __weekdays_long + ctx: Load + slice: Index + value: Constant + value: int = 0 + kind: NoneType = None + ctx: Load + keywords: list + type_comment: NoneType = None + orelse: list + element: If + test: Compare + left: Name + id: str = d + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = b + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = l + ctx: Store + value: Call + func: Name + id: str = len + ctx: Load + args: list + element: Subscript + value: Name + id: str = __months + ctx: Load + slice: Index + value: Constant + value: int = 0 + kind: NoneType = None + ctx: Load + keywords: list + type_comment: NoneType = None + orelse: list + element: If + test: Compare + left: Name + id: str = d + ctx: Load + ops: list + element: In + comparators: list + element: Tuple + elts: list + element: Constant + value: str = d + kind: NoneType = None + element: Constant + value: str = m + kind: NoneType = None + element: Constant + value: str = H + kind: NoneType = None + element: Constant + value: str = M + kind: NoneType = None + element: Constant + value: str = S + kind: NoneType = None + ctx: Load + body: list + element: Assign + targets: list + element: Name + id: str = l + ctx: Store + value: Constant + value: int = 2 + kind: NoneType = None + type_comment: NoneType = None + orelse: list + element: If + test: Compare + left: Name + id: str = l + ctx: Load + ops: list + element: Gt + comparators: list + element: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = lv + ctx: Store + value: List + elts: list + element: Subscript + value: Name + id: str = ts + ctx: Load + slice: Slice + lower: NoneType = None + upper: Name + id: str = l + ctx: Load + step: NoneType = None + ctx: Load + element: Subscript + value: Name + id: str = ts + ctx: Load + slice: Slice + lower: Name + id: str = l + ctx: Load + upper: NoneType = None + step: NoneType = None + ctx: Load + ctx: Load + type_comment: NoneType = None + orelse: list + orelse: list + element: If + test: UnaryOp + op: Not + operand: Name + id: str = lv + ctx: Load + body: list + element: Assign + targets: list + element: Name + id: str = lv + ctx: Store + value: List + elts: list + element: Name + id: str = ts + ctx: Load + element: Constant + value: str = + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + orelse: list + orelse: list + element: Assign + targets: list + element: Name + id: str = lv + ctx: Store + value: Call + func: Name + id: str = _lsplit + ctx: Load + args: list + element: Name + id: str = ts + ctx: Load + element: Name + id: str = sep + ctx: Load + element: Constant + value: int = 1 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: If + test: Compare + left: Name + id: str = d + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = ts + ctx: Store + value: Subscript + value: Name + id: str = lv + ctx: Load + slice: Index + value: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Continue + orelse: list + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = ts + ctx: Store + element: Subscript + value: Name + id: str = dir_val + ctx: Load + slice: Index + value: Name + id: str = d + ctx: Load + ctx: Store + ctx: Store + value: Tuple + elts: list + element: Subscript + value: Name + id: str = lv + ctx: Load + slice: Index + value: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + element: Subscript + value: Name + id: str = lv + ctx: Load + slice: Index + value: Constant + value: int = 0 + kind: NoneType = None + ctx: Load + ctx: Load + type_comment: NoneType = None + element: If + test: Compare + left: Name + id: str = fmt + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = + kind: NoneType = None + body: list + element: Break + orelse: list + orelse: list + element: Assign + targets: list + element: Name + id: str = t + ctx: Store + value: List + elts: list + element: Constant + value: int = 1900 + kind: NoneType = None + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 0 + kind: NoneType = None + element: Constant + value: int = 0 + kind: NoneType = None + element: Constant + value: int = 0 + kind: NoneType = None + element: Constant + value: int = 0 + kind: NoneType = None + element: Constant + value: int = 1 + kind: NoneType = None + element: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = ignore_keys + ctx: Store + value: List + elts: list + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = have_weekday + ctx: Store + value: Constant + value: bool = False + kind: NoneType = None + type_comment: NoneType = None + element: For + target: Tuple + elts: list + element: Name + id: str = d + ctx: Store + element: Name + id: str = v + ctx: Store + ctx: Store + iter: Call + func: Attribute + value: Name + id: str = dir_val + ctx: Load + attr: str = items + ctx: Load + args: list + keywords: list + body: list + element: If + test: Compare + left: Name + id: str = d + ctx: Load + ops: list + element: In + comparators: list + element: Name + id: str = ignore_keys + ctx: Load + body: list + element: Continue + orelse: list + element: If + test: Compare + left: Name + id: str = d + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = p + kind: NoneType = None + body: list + element: Continue + orelse: list + element: If + test: Compare + left: Name + id: str = d + ctx: Load + ops: list + element: In + comparators: list + element: Call + func: Attribute + value: Name + id: str = __lu + ctx: Load + attr: str = keys + ctx: Load + args: list + keywords: list + body: list + element: Assign + targets: list + element: Subscript + value: Name + id: str = t + ctx: Load + slice: Index + value: Subscript + value: Name + id: str = __lu + ctx: Load + slice: Index + value: Name + id: str = d + ctx: Load + ctx: Load + ctx: Store + value: Call + func: Name + id: str = int + ctx: Load + args: list + element: Name + id: str = v + ctx: Load + keywords: list + type_comment: NoneType = None + element: Continue + orelse: list + element: If + test: Compare + left: Name + id: str = d + ctx: Load + ops: list + element: In + comparators: list + element: Tuple + elts: list + element: Constant + value: str = a + kind: NoneType = None + element: Constant + value: str = A + kind: NoneType = None + element: Constant + value: str = b + kind: NoneType = None + element: Constant + value: str = B + kind: NoneType = None + ctx: Load + body: list + element: Assign + targets: list + element: Name + id: str = v + ctx: Store + value: Call + func: Attribute + value: Name + id: str = v + ctx: Load + attr: str = lower + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + orelse: list + element: If + test: Compare + left: Name + id: str = d + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = m + kind: NoneType = None + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = ignore_keys + ctx: Load + attr: str = append + ctx: Load + args: list + element: Constant + value: str = b + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = ignore_keys + ctx: Load + attr: str = append + ctx: Load + args: list + element: Constant + value: str = B + kind: NoneType = None + keywords: list + orelse: list + element: If + test: Compare + left: Name + id: str = d + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = a + kind: NoneType = None + body: list + element: If + test: UnaryOp + op: Not + operand: Compare + left: Name + id: str = v + ctx: Load + ops: list + element: In + comparators: list + element: Name + id: str = __weekdays + ctx: Load + body: list + element: Raise + exc: Call + func: Name + id: str = ValueError + ctx: Load + args: list + element: Constant + value: str = Weekday unknown in your locale + kind: NoneType = None + keywords: list + cause: NoneType = None + orelse: list + element: Assign + targets: list + element: Name + id: str = have_weekday + ctx: Store + value: Constant + value: bool = True + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Subscript + value: Name + id: str = t + ctx: Load + slice: Index + value: Constant + value: int = 6 + kind: NoneType = None + ctx: Store + value: Call + func: Attribute + value: Name + id: str = __weekdays + ctx: Load + attr: str = index + ctx: Load + args: list + element: Name + id: str = v + ctx: Load + keywords: list + type_comment: NoneType = None + orelse: list + element: If + test: Compare + left: Name + id: str = d + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = A + kind: NoneType = None + body: list + element: If + test: UnaryOp + op: Not + operand: Compare + left: Name + id: str = v + ctx: Load + ops: list + element: In + comparators: list + element: Name + id: str = __weekdays_long + ctx: Load + body: list + element: Raise + exc: Call + func: Name + id: str = ValueError + ctx: Load + args: list + element: Constant + value: str = Weekday unknown in your locale + kind: NoneType = None + keywords: list + cause: NoneType = None + orelse: list + element: Assign + targets: list + element: Name + id: str = have_weekday + ctx: Store + value: Constant + value: bool = True + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Subscript + value: Name + id: str = t + ctx: Load + slice: Index + value: Constant + value: int = 6 + kind: NoneType = None + ctx: Store + value: Call + func: Attribute + value: Name + id: str = __weekdays_long + ctx: Load + attr: str = index + ctx: Load + args: list + element: Name + id: str = v + ctx: Load + keywords: list + type_comment: NoneType = None + orelse: list + element: If + test: Compare + left: Name + id: str = d + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = b + kind: NoneType = None + body: list + element: If + test: UnaryOp + op: Not + operand: Compare + left: Name + id: str = v + ctx: Load + ops: list + element: In + comparators: list + element: Name + id: str = __months + ctx: Load + body: list + element: Raise + exc: Call + func: Name + id: str = ValueError + ctx: Load + args: list + element: Constant + value: str = Month unknown in your locale + kind: NoneType = None + keywords: list + cause: NoneType = None + orelse: list + element: Assign + targets: list + element: Subscript + value: Name + id: str = t + ctx: Load + slice: Index + value: Constant + value: int = 1 + kind: NoneType = None + ctx: Store + value: BinOp + left: Call + func: Attribute + value: Name + id: str = __months + ctx: Load + attr: str = index + ctx: Load + args: list + element: Name + id: str = v + ctx: Load + keywords: list + op: Add + right: Constant + value: int = 1 + kind: NoneType = None + type_comment: NoneType = None + orelse: list + element: If + test: Compare + left: Name + id: str = d + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = B + kind: NoneType = None + body: list + element: If + test: UnaryOp + op: Not + operand: Compare + left: Name + id: str = v + ctx: Load + ops: list + element: In + comparators: list + element: Name + id: str = __months_long + ctx: Load + body: list + element: Raise + exc: Call + func: Name + id: str = ValueError + ctx: Load + args: list + element: Constant + value: str = Month unknown in your locale + kind: NoneType = None + keywords: list + cause: NoneType = None + orelse: list + element: Assign + targets: list + element: Subscript + value: Name + id: str = t + ctx: Load + slice: Index + value: Constant + value: int = 1 + kind: NoneType = None + ctx: Store + value: BinOp + left: Call + func: Attribute + value: Name + id: str = __months_long + ctx: Load + attr: str = index + ctx: Load + args: list + element: Name + id: str = v + ctx: Load + keywords: list + op: Add + right: Constant + value: int = 1 + kind: NoneType = None + type_comment: NoneType = None + orelse: list + element: If + test: Compare + left: Name + id: str = d + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = I + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = ampm + ctx: Store + value: BoolOp + op: Or + values: list + element: Subscript + value: Name + id: str = dir_val + ctx: Load + slice: Index + value: Constant + value: str = p + kind: NoneType = None + ctx: Load + element: Constant + value: str = am + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = ampm + ctx: Store + value: Call + func: Attribute + value: Name + id: str = ampm + ctx: Load + attr: str = lower + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = v + ctx: Store + value: Call + func: Name + id: str = int + ctx: Load + args: list + element: Name + id: str = v + ctx: Load + keywords: list + type_comment: NoneType = None + element: If + test: Compare + left: Name + id: str = v + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: int = 12 + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = v + ctx: Store + value: Constant + value: int = 0 + kind: NoneType = None + type_comment: NoneType = None + orelse: list + element: If + test: Compare + left: Name + id: str = v + ctx: Load + ops: list + element: Gt + comparators: list + element: Constant + value: int = 12 + kind: NoneType = None + body: list + element: Raise + exc: Call + func: Name + id: str = ValueError + ctx: Load + args: list + element: BinOp + left: BinOp + left: BinOp + left: BinOp + left: Constant + value: str = time data ' + kind: NoneType = None + op: Add + right: Name + id: str = string + ctx: Load + op: Add + right: Constant + value: str = ' does not match format ' + kind: NoneType = None + op: Add + right: Name + id: str = format + ctx: Load + op: Add + right: Constant + value: str = ' + kind: NoneType = None + keywords: list + cause: NoneType = None + orelse: list + element: If + test: Compare + left: Name + id: str = ampm + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = pm + kind: NoneType = None + body: list + element: AugAssign + target: Name + id: str = v + ctx: Store + op: Add + value: Constant + value: int = 12 + kind: NoneType = None + orelse: list + element: Assign + targets: list + element: Subscript + value: Name + id: str = t + ctx: Load + slice: Index + value: Subscript + value: Name + id: str = __lu + ctx: Load + slice: Index + value: Constant + value: str = H + kind: NoneType = None + ctx: Load + ctx: Store + value: Name + id: str = v + ctx: Load + type_comment: NoneType = None + orelse: list + element: If + test: Compare + left: Name + id: str = d + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = y + kind: NoneType = None + body: list + element: Assign + targets: list + element: Subscript + value: Name + id: str = t + ctx: Load + slice: Index + value: Constant + value: int = 0 + kind: NoneType = None + ctx: Store + value: BinOp + left: Constant + value: int = 2000 + kind: NoneType = None + op: Add + right: Call + func: Name + id: str = int + ctx: Load + args: list + element: Name + id: str = v + ctx: Load + keywords: list + type_comment: NoneType = None + orelse: list + element: If + test: Compare + left: Name + id: str = d + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = Z + kind: NoneType = None + body: list + element: If + test: Compare + left: Call + func: Attribute + value: Name + id: str = v + ctx: Load + attr: str = lower + ctx: Load + args: list + keywords: list + ops: list + element: In + comparators: list + element: List + elts: list + element: Constant + value: str = gmt + kind: NoneType = None + element: Constant + value: str = utc + kind: NoneType = None + ctx: Load + body: list + element: Assign + targets: list + element: Subscript + value: Name + id: str = t + ctx: Load + slice: Index + value: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + ctx: Store + value: Constant + value: int = 0 + kind: NoneType = None + type_comment: NoneType = None + orelse: list + orelse: list + orelse: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = __date + ctx: Store + value: Call + func: Name + id: str = __new__ + ctx: Load + args: list + element: Call + func: Name + id: str = Date + ctx: Load + args: list + element: Constant + value: int = 0 + kind: NoneType = None + keywords: list + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = __date + ctx: Load + attr: str = setUTCFullYear + ctx: Load + args: list + element: Subscript + value: Name + id: str = t + ctx: Load + slice: Index + value: Constant + value: int = 0 + kind: NoneType = None + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = __date + ctx: Load + attr: str = setUTCMonth + ctx: Load + args: list + element: BinOp + left: Subscript + value: Name + id: str = t + ctx: Load + slice: Index + value: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + op: Sub + right: Constant + value: int = 1 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = __date + ctx: Load + attr: str = setUTCDate + ctx: Load + args: list + element: Subscript + value: Name + id: str = t + ctx: Load + slice: Index + value: Constant + value: int = 2 + kind: NoneType = None + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = __date + ctx: Load + attr: str = setUTCHours + ctx: Load + args: list + element: Subscript + value: Name + id: str = t + ctx: Load + slice: Index + value: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + keywords: list + element: Assign + targets: list + element: Subscript + value: Name + id: str = t + ctx: Load + slice: Index + value: Constant + value: int = 7 + kind: NoneType = None + ctx: Store + value: Call + func: Name + id: str = _day_of_year + ctx: Load + args: list + element: Name + id: str = __date + ctx: Load + element: Constant + value: bool = True + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: If + test: UnaryOp + op: Not + operand: Name + id: str = have_weekday + ctx: Load + body: list + element: Assign + targets: list + element: Subscript + value: Name + id: str = t + ctx: Load + slice: Index + value: Constant + value: int = 6 + kind: NoneType = None + ctx: Store + value: BinOp + left: Call + func: Attribute + value: Name + id: str = __date + ctx: Load + attr: str = getUTCDay + ctx: Load + args: list + keywords: list + op: Sub + right: Constant + value: int = 1 + kind: NoneType = None + type_comment: NoneType = None + orelse: list + element: Return + value: Name + id: str = t + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = strftime + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = format + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = t + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: FunctionDef + name: str = zf2 + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = v + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = zfill missing + kind: NoneType = None + element: If + test: Compare + left: Name + id: str = v + ctx: Load + ops: list + element: Lt + comparators: list + element: Constant + value: int = 10 + kind: NoneType = None + body: list + element: Return + value: BinOp + left: Constant + value: str = 0 + kind: NoneType = None + op: Add + right: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = v + ctx: Load + keywords: list + orelse: list + element: Return + value: Name + id: str = v + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: If + test: UnaryOp + op: Not + operand: Name + id: str = t + ctx: Load + body: list + element: Assign + targets: list + element: Name + id: str = t + ctx: Store + value: Call + func: Name + id: str = localtime + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + orelse: list + element: Assign + targets: list + element: Name + id: str = f + ctx: Store + value: Name + id: str = format + ctx: Load + type_comment: NoneType = None + element: For + target: Name + id: str = d + ctx: Store + iter: Call + func: Attribute + value: Name + id: str = __lu + ctx: Load + attr: str = keys + ctx: Load + args: list + keywords: list + body: list + element: Assign + targets: list + element: Name + id: str = k + ctx: Store + value: BinOp + left: Constant + value: str = % + kind: NoneType = None + op: Add + right: Name + id: str = d + ctx: Load + type_comment: NoneType = None + element: If + test: UnaryOp + op: Not + operand: Compare + left: Name + id: str = k + ctx: Load + ops: list + element: In + comparators: list + element: Name + id: str = f + ctx: Load + body: list + element: Continue + orelse: list + element: Assign + targets: list + element: Name + id: str = v + ctx: Store + value: Call + func: Name + id: str = zf2 + ctx: Load + args: list + element: Subscript + value: Name + id: str = t + ctx: Load + slice: Index + value: Subscript + value: Name + id: str = __lu + ctx: Load + slice: Index + value: Name + id: str = d + ctx: Load + ctx: Load + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = f + ctx: Store + value: Call + func: Attribute + value: Name + id: str = f + ctx: Load + attr: str = replace + ctx: Load + args: list + element: Name + id: str = k + ctx: Load + element: Name + id: str = v + ctx: Load + keywords: list + type_comment: NoneType = None + orelse: list + type_comment: NoneType = None + element: For + target: Tuple + elts: list + element: Name + id: str = d + ctx: Store + element: Name + id: str = l + ctx: Store + element: Name + id: str = pos + ctx: Store + ctx: Store + iter: Tuple + elts: list + element: Tuple + elts: list + element: Constant + value: str = b + kind: NoneType = None + element: Name + id: str = __months + ctx: Load + element: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + element: Tuple + elts: list + element: Constant + value: str = B + kind: NoneType = None + element: Name + id: str = __months_long + ctx: Load + element: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + element: Tuple + elts: list + element: Constant + value: str = a + kind: NoneType = None + element: Name + id: str = __weekdays + ctx: Load + element: Constant + value: int = 6 + kind: NoneType = None + ctx: Load + element: Tuple + elts: list + element: Constant + value: str = A + kind: NoneType = None + element: Name + id: str = __weekdays_long + ctx: Load + element: Constant + value: int = 6 + kind: NoneType = None + ctx: Load + ctx: Load + body: list + element: Assign + targets: list + element: Name + id: str = p + ctx: Store + value: Subscript + value: Name + id: str = t + ctx: Load + slice: Index + value: Name + id: str = pos + ctx: Load + ctx: Load + type_comment: NoneType = None + element: If + test: Compare + left: Name + id: str = pos + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: int = 1 + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = p + ctx: Store + value: BinOp + left: Name + id: str = p + ctx: Load + op: Sub + right: Constant + value: int = 1 + kind: NoneType = None + type_comment: NoneType = None + orelse: list + element: Assign + targets: list + element: Name + id: str = v + ctx: Store + value: Call + func: Attribute + value: Subscript + value: Name + id: str = l + ctx: Load + slice: Index + value: Name + id: str = p + ctx: Load + ctx: Load + attr: str = capitalize + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = f + ctx: Store + value: Call + func: Attribute + value: Name + id: str = f + ctx: Load + attr: str = replace + ctx: Load + args: list + element: BinOp + left: Constant + value: str = % + kind: NoneType = None + op: Add + right: Name + id: str = d + ctx: Load + element: Name + id: str = v + ctx: Load + keywords: list + type_comment: NoneType = None + orelse: list + type_comment: NoneType = None + element: If + test: Compare + left: Constant + value: str = %p + kind: NoneType = None + ops: list + element: In + comparators: list + element: Name + id: str = f + ctx: Load + body: list + element: If + test: Compare + left: Subscript + value: Name + id: str = t + ctx: Load + slice: Index + value: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + ops: list + element: Gt + comparators: list + element: Constant + value: int = 11 + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = ap + ctx: Store + value: Constant + value: str = PM + kind: NoneType = None + type_comment: NoneType = None + orelse: list + element: Assign + targets: list + element: Name + id: str = ap + ctx: Store + value: Constant + value: str = AM + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = f + ctx: Store + value: Call + func: Attribute + value: Name + id: str = f + ctx: Load + attr: str = replace + ctx: Load + args: list + element: Constant + value: str = %p + kind: NoneType = None + element: Name + id: str = ap + ctx: Load + keywords: list + type_comment: NoneType = None + orelse: list + element: If + test: Compare + left: Constant + value: str = %y + kind: NoneType = None + ops: list + element: In + comparators: list + element: Name + id: str = f + ctx: Load + body: list + element: Assign + targets: list + element: Name + id: str = f + ctx: Store + value: Call + func: Attribute + value: Name + id: str = f + ctx: Load + attr: str = replace + ctx: Load + args: list + element: Constant + value: str = %y + kind: NoneType = None + element: Subscript + value: Call + func: Name + id: str = str + ctx: Load + args: list + element: Subscript + value: Name + id: str = t + ctx: Load + slice: Index + value: Constant + value: int = 0 + kind: NoneType = None + ctx: Load + keywords: list + slice: Slice + lower: UnaryOp + op: USub + operand: Constant + value: int = 2 + kind: NoneType = None + upper: NoneType = None + step: NoneType = None + ctx: Load + keywords: list + type_comment: NoneType = None + orelse: list + element: If + test: Compare + left: Constant + value: str = %I + kind: NoneType = None + ops: list + element: In + comparators: list + element: Name + id: str = f + ctx: Load + body: list + element: Assign + targets: list + element: Name + id: str = v + ctx: Store + value: Subscript + value: Name + id: str = t + ctx: Load + slice: Index + value: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: If + test: Compare + left: Name + id: str = v + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = v + ctx: Store + value: Constant + value: int = 12 + kind: NoneType = None + type_comment: NoneType = None + orelse: list + element: If + test: Compare + left: Name + id: str = v + ctx: Load + ops: list + element: Gt + comparators: list + element: Constant + value: int = 12 + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = v + ctx: Store + value: BinOp + left: Name + id: str = v + ctx: Load + op: Sub + right: Constant + value: int = 12 + kind: NoneType = None + type_comment: NoneType = None + orelse: list + element: Assign + targets: list + element: Name + id: str = f + ctx: Store + value: Call + func: Attribute + value: Name + id: str = f + ctx: Load + attr: str = replace + ctx: Load + args: list + element: Constant + value: str = %I + kind: NoneType = None + element: Call + func: Name + id: str = zf2 + ctx: Load + args: list + element: Name + id: str = v + ctx: Load + keywords: list + keywords: list + type_comment: NoneType = None + orelse: list + element: Return + value: Name + id: str = f + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/truthyness.js b/transcrypt/development/automated_tests/transcrypt/__target__38/truthyness.js new file mode 100644 index 000000000..4ea765a97 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/truthyness.js @@ -0,0 +1,128 @@ +// Transcrypt'ed from Python, 2021-05-14 15:00:23 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get run () {return run;}, set run (value) {run = value;}}); +var __name__ = 'truthyness'; +export var run = function (autoTester) { + autoTester.check (len (dict ({1: 2}))); + autoTester.check ('Select nonemtpy container, if any
'); + autoTester.check (__t__ (0) || tuple ([1, 2, 3])); + autoTester.check (__t__ (tuple ([])) || tuple ([1, 2, 3])); + autoTester.check (__t__ (tuple ([])) || tuple ([])); + autoTester.check (__t__ (-__t__ ((1))) || __t__ (0) || tuple ([1, 2, 3])); + autoTester.check (__t__ (tuple ([])) || __t__ (0) || tuple ([1, 2, 3])); + autoTester.check (__t__ (tuple ([])) || __t__ (tuple ([])) || tuple ([1, 2, 3])); + autoTester.check (__t__ (tuple ([])) || __t__ (tuple ([])) || tuple ([])); + autoTester.check (__t__ ([0]) || [1, 2, 3]); + autoTester.check (__t__ ([]) || [1, 2, 3]); + autoTester.check (__t__ ([]) || []); + autoTester.check (__t__ ([-__t__ ((1))]) || __t__ ([0]) || [1, 2, 3]); + autoTester.check (__t__ ([]) || __t__ ([0]) || [1, 2, 3]); + autoTester.check (__t__ ([]) || __t__ ([]) || [1, 2, 3]); + autoTester.check (__t__ ([]) || __t__ ([]) || []); + autoTester.check (__t__ (new set ([0])) || new set ([1, 2, 3, 4])); + autoTester.check (__t__ (set ()) || new set ([1, 2, 3, 4])); + autoTester.check (__t__ (set ()) || set ()); + autoTester.check (__t__ (new set ([-__t__ ((1))])) || __t__ (new set ([0])) || new set ([1, 2, 3, 5])); + autoTester.check (__t__ (set ()) || __t__ (new set ([0])) || new set ([1, 2, 3, 6])); + autoTester.check (__t__ (set ()) || __t__ (set ()) || new set ([1, 2, 3, 7])); + autoTester.check (__t__ (set ()) || __t__ (set ()) || set ()); + autoTester.check (__t__ (dict ({0: 10})) || dict ({1: 11, 2: 12, 3: 13})); + autoTester.check (__t__ (dict ({})) || new set ([1, 2, 3, 8])); + autoTester.check (__t__ (dict ({})) || dict ({})); + autoTester.check (__t__ (dict ([[-__t__ ((1)), -__t__ ((11))]])) || __t__ (dict ({0: 10})) || dict ({1: 11, 2: 12, 3: 13})); + autoTester.check (__t__ (dict ({})) || __t__ (dict ({0: 10})) || dict ({1: 11, 2: 12, 3: 13})); + autoTester.check (__t__ (dict ({})) || __t__ (dict ({})) || dict ({1: 11, 2: 12, 3: 13})); + autoTester.check (__t__ (dict ({})) || __t__ (dict ({})) || dict ({})); + autoTester.check ('

'); + autoTester.check ('Boolean evaluations'); + for (var expression of tuple (['
-- falsy --
', tuple ([]), [], set (), dict ({}), 0, '', 3 > 5, false, '
-- truthy --
', tuple ([1, 2, 3]), [1, 2, 3], new set ([1, 2, 3]), dict ({'a': 1, 'b': 2, 'c': 3}), 3, 'hello', 5 > 3, true])) { + if (__t__ (__in__ (expression, tuple (['
-- falsy --
', '
-- truthy --
'])))) { + autoTester.check (expression); + } + else { + autoTester.check (expression, ' . . . '); + autoTester.check ('operators'); + autoTester.check (!__t__ ((!__t__ ((expression))))); + autoTester.check (!__t__ ((!__t__ ((__t__ (true) && expression))))); + autoTester.check (!__t__ ((!__t__ ((__t__ (false) || expression))))); + autoTester.check (!__t__ ((!__t__ ((__t__ (expression) && true))))); + autoTester.check (!__t__ ((!__t__ ((__t__ (expression) && false))))); + autoTester.check ('if'); + if (__t__ (expression)) { + autoTester.check (true); + } + else { + autoTester.check (false); + } + if (__t__ (__t__ (expression) || expression)) { + autoTester.check (true); + } + else { + autoTester.check (false); + } + if (__t__ (false)) { + autoTester.check ('if'); + } + else if (__t__ (expression)) { + autoTester.check ('elif'); + } + else { + autoTester.check ('else'); + } + autoTester.check ('while'); + while (__t__ (expression)) { + autoTester.check (true); + break; + } + autoTester.check ('condex'); + autoTester.check ((__t__ (expression) ? true : false)); + } + } + if (__t__ (0.0)) { + autoTester.check ('0.0'); + } + else if (__t__ (0.1)) { + autoTester.check ('0.1'); + } + else { + autoTester.check ("Shouldn't be here..."); + } + var A = __class__ ('A', [object], { + __module__: __name__, + }); + var B = __class__ ('B', [object], { + __module__: __name__, + get __bool__ () {return __get__ (this, function (self) { + return false; + });} + }); + var C = __class__ ('C', [object], { + __module__: __name__, + get __bool__ () {return __get__ (this, function (self) { + return true; + });}, + get __len__ () {return __get__ (this, function (self) { + return 0; + });} + }); + var D = __class__ ('D', [object], { + __module__: __name__, + get __len__ () {return __get__ (this, function (self) { + return 0; + });} + }); + var E = __class__ ('E', [object], { + __module__: __name__, + get __len__ () {return __get__ (this, function (self) { + return 1; + });} + }); + autoTester.check ('instances of custom classes'); + autoTester.check (!__t__ ((!__t__ ((A ()))))); + autoTester.check (!__t__ ((!__t__ ((B ()))))); + autoTester.check (!__t__ ((!__t__ ((C ()))))); + autoTester.check (!__t__ ((!__t__ ((D ()))))); + autoTester.check (!__t__ ((!__t__ ((E ()))))); +}; + +//# sourceMappingURL=truthyness.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/truthyness.tree b/transcrypt/development/automated_tests/transcrypt/__target__38/truthyness.tree new file mode 100644 index 000000000..f6acf51d1 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/truthyness.tree @@ -0,0 +1,1791 @@ +file: Module + body: list + element: ImportFrom + module: str = org.transcrypt.stubs.browser + names: list + element: alias + name: str = __pragma__ + asname: NoneType = None + level: int = 0 + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = tconv + kind: NoneType = None + keywords: list + element: FunctionDef + name: str = run + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = autoTester + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = len + ctx: Load + args: list + element: Dict + keys: list + element: Constant + value: int = 1 + kind: NoneType = None + values: list + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Select nonemtpy container, if any
+ kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BoolOp + op: Or + values: list + element: Constant + value: int = 0 + kind: NoneType = None + element: Tuple + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BoolOp + op: Or + values: list + element: Tuple + elts: list + ctx: Load + element: Tuple + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BoolOp + op: Or + values: list + element: Tuple + elts: list + ctx: Load + element: Tuple + elts: list + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BoolOp + op: Or + values: list + element: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 0 + kind: NoneType = None + element: Tuple + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BoolOp + op: Or + values: list + element: Tuple + elts: list + ctx: Load + element: Constant + value: int = 0 + kind: NoneType = None + element: Tuple + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BoolOp + op: Or + values: list + element: Tuple + elts: list + ctx: Load + element: Tuple + elts: list + ctx: Load + element: Tuple + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BoolOp + op: Or + values: list + element: Tuple + elts: list + ctx: Load + element: Tuple + elts: list + ctx: Load + element: Tuple + elts: list + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BoolOp + op: Or + values: list + element: List + elts: list + element: Constant + value: int = 0 + kind: NoneType = None + ctx: Load + element: List + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BoolOp + op: Or + values: list + element: List + elts: list + ctx: Load + element: List + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BoolOp + op: Or + values: list + element: List + elts: list + ctx: Load + element: List + elts: list + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BoolOp + op: Or + values: list + element: List + elts: list + element: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + element: List + elts: list + element: Constant + value: int = 0 + kind: NoneType = None + ctx: Load + element: List + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BoolOp + op: Or + values: list + element: List + elts: list + ctx: Load + element: List + elts: list + element: Constant + value: int = 0 + kind: NoneType = None + ctx: Load + element: List + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BoolOp + op: Or + values: list + element: List + elts: list + ctx: Load + element: List + elts: list + ctx: Load + element: List + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BoolOp + op: Or + values: list + element: List + elts: list + ctx: Load + element: List + elts: list + ctx: Load + element: List + elts: list + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BoolOp + op: Or + values: list + element: Set + elts: list + element: Constant + value: int = 0 + kind: NoneType = None + element: Set + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + element: Constant + value: int = 4 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BoolOp + op: Or + values: list + element: Call + func: Name + id: str = set + ctx: Load + args: list + keywords: list + element: Set + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + element: Constant + value: int = 4 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BoolOp + op: Or + values: list + element: Call + func: Name + id: str = set + ctx: Load + args: list + keywords: list + element: Call + func: Name + id: str = set + ctx: Load + args: list + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BoolOp + op: Or + values: list + element: Set + elts: list + element: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + element: Set + elts: list + element: Constant + value: int = 0 + kind: NoneType = None + element: Set + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + element: Constant + value: int = 5 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BoolOp + op: Or + values: list + element: Call + func: Name + id: str = set + ctx: Load + args: list + keywords: list + element: Set + elts: list + element: Constant + value: int = 0 + kind: NoneType = None + element: Set + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + element: Constant + value: int = 6 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BoolOp + op: Or + values: list + element: Call + func: Name + id: str = set + ctx: Load + args: list + keywords: list + element: Call + func: Name + id: str = set + ctx: Load + args: list + keywords: list + element: Set + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + element: Constant + value: int = 7 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BoolOp + op: Or + values: list + element: Call + func: Name + id: str = set + ctx: Load + args: list + keywords: list + element: Call + func: Name + id: str = set + ctx: Load + args: list + keywords: list + element: Call + func: Name + id: str = set + ctx: Load + args: list + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BoolOp + op: Or + values: list + element: Dict + keys: list + element: Constant + value: int = 0 + kind: NoneType = None + values: list + element: Constant + value: int = 10 + kind: NoneType = None + element: Dict + keys: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + values: list + element: Constant + value: int = 11 + kind: NoneType = None + element: Constant + value: int = 12 + kind: NoneType = None + element: Constant + value: int = 13 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BoolOp + op: Or + values: list + element: Dict + keys: list + values: list + element: Set + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + element: Constant + value: int = 8 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BoolOp + op: Or + values: list + element: Dict + keys: list + values: list + element: Dict + keys: list + values: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BoolOp + op: Or + values: list + element: Dict + keys: list + element: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + values: list + element: UnaryOp + op: USub + operand: Constant + value: int = 11 + kind: NoneType = None + element: Dict + keys: list + element: Constant + value: int = 0 + kind: NoneType = None + values: list + element: Constant + value: int = 10 + kind: NoneType = None + element: Dict + keys: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + values: list + element: Constant + value: int = 11 + kind: NoneType = None + element: Constant + value: int = 12 + kind: NoneType = None + element: Constant + value: int = 13 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BoolOp + op: Or + values: list + element: Dict + keys: list + values: list + element: Dict + keys: list + element: Constant + value: int = 0 + kind: NoneType = None + values: list + element: Constant + value: int = 10 + kind: NoneType = None + element: Dict + keys: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + values: list + element: Constant + value: int = 11 + kind: NoneType = None + element: Constant + value: int = 12 + kind: NoneType = None + element: Constant + value: int = 13 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BoolOp + op: Or + values: list + element: Dict + keys: list + values: list + element: Dict + keys: list + values: list + element: Dict + keys: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + values: list + element: Constant + value: int = 11 + kind: NoneType = None + element: Constant + value: int = 12 + kind: NoneType = None + element: Constant + value: int = 13 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BoolOp + op: Or + values: list + element: Dict + keys: list + values: list + element: Dict + keys: list + values: list + element: Dict + keys: list + values: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str =

+ kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Boolean evaluations + kind: NoneType = None + keywords: list + element: For + target: Name + id: str = expression + ctx: Store + iter: Tuple + elts: list + element: Constant + value: str =
-- falsy --
+ kind: NoneType = None + element: Tuple + elts: list + ctx: Load + element: List + elts: list + ctx: Load + element: Call + func: Name + id: str = set + ctx: Load + args: list + keywords: list + element: Dict + keys: list + values: list + element: Constant + value: int = 0 + kind: NoneType = None + element: Constant + value: str = + kind: NoneType = None + element: Compare + left: Constant + value: int = 3 + kind: NoneType = None + ops: list + element: Gt + comparators: list + element: Constant + value: int = 5 + kind: NoneType = None + element: Constant + value: bool = False + kind: NoneType = None + element: Constant + value: str =
-- truthy --
+ kind: NoneType = None + element: Tuple + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + element: List + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + element: Set + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + element: Dict + keys: list + element: Constant + value: str = a + kind: NoneType = None + element: Constant + value: str = b + kind: NoneType = None + element: Constant + value: str = c + kind: NoneType = None + values: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + element: Constant + value: str = hello + kind: NoneType = None + element: Compare + left: Constant + value: int = 5 + kind: NoneType = None + ops: list + element: Gt + comparators: list + element: Constant + value: int = 3 + kind: NoneType = None + element: Constant + value: bool = True + kind: NoneType = None + ctx: Load + body: list + element: If + test: Compare + left: Name + id: str = expression + ctx: Load + ops: list + element: In + comparators: list + element: Tuple + elts: list + element: Constant + value: str =
-- falsy --
+ kind: NoneType = None + element: Constant + value: str =
-- truthy --
+ kind: NoneType = None + ctx: Load + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = expression + ctx: Load + keywords: list + orelse: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = expression + ctx: Load + element: Constant + value: str = . . . + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = operators + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: UnaryOp + op: Not + operand: UnaryOp + op: Not + operand: Name + id: str = expression + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: UnaryOp + op: Not + operand: UnaryOp + op: Not + operand: BoolOp + op: And + values: list + element: Constant + value: bool = True + kind: NoneType = None + element: Name + id: str = expression + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: UnaryOp + op: Not + operand: UnaryOp + op: Not + operand: BoolOp + op: Or + values: list + element: Constant + value: bool = False + kind: NoneType = None + element: Name + id: str = expression + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: UnaryOp + op: Not + operand: UnaryOp + op: Not + operand: BoolOp + op: And + values: list + element: Name + id: str = expression + ctx: Load + element: Constant + value: bool = True + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: UnaryOp + op: Not + operand: UnaryOp + op: Not + operand: BoolOp + op: And + values: list + element: Name + id: str = expression + ctx: Load + element: Constant + value: bool = False + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = if + kind: NoneType = None + keywords: list + element: If + test: Name + id: str = expression + ctx: Load + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: bool = True + kind: NoneType = None + keywords: list + orelse: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: bool = False + kind: NoneType = None + keywords: list + element: If + test: BoolOp + op: Or + values: list + element: Name + id: str = expression + ctx: Load + element: Name + id: str = expression + ctx: Load + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: bool = True + kind: NoneType = None + keywords: list + orelse: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: bool = False + kind: NoneType = None + keywords: list + element: If + test: Constant + value: bool = False + kind: NoneType = None + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = if + kind: NoneType = None + keywords: list + orelse: list + element: If + test: Name + id: str = expression + ctx: Load + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = elif + kind: NoneType = None + keywords: list + orelse: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = else + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = while + kind: NoneType = None + keywords: list + element: While + test: Name + id: str = expression + ctx: Load + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: bool = True + kind: NoneType = None + keywords: list + element: Break + orelse: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = condex + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: IfExp + test: Name + id: str = expression + ctx: Load + body: Constant + value: bool = True + kind: NoneType = None + orelse: Constant + value: bool = False + kind: NoneType = None + keywords: list + orelse: list + type_comment: NoneType = None + element: If + test: Constant + value: float = 0.0 + kind: NoneType = None + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = 0.0 + kind: NoneType = None + keywords: list + orelse: list + element: If + test: Constant + value: float = 0.1 + kind: NoneType = None + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = 0.1 + kind: NoneType = None + keywords: list + orelse: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Shouldn't be here... + kind: NoneType = None + keywords: list + element: ClassDef + name: str = A + bases: list + keywords: list + body: list + element: Pass + decorator_list: list + element: ClassDef + name: str = B + bases: list + keywords: list + body: list + element: FunctionDef + name: str = __bool__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Constant + value: bool = False + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: ClassDef + name: str = C + bases: list + keywords: list + body: list + element: FunctionDef + name: str = __bool__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Constant + value: bool = True + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __len__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Constant + value: int = 0 + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: ClassDef + name: str = D + bases: list + keywords: list + body: list + element: FunctionDef + name: str = __len__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Constant + value: int = 0 + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: ClassDef + name: str = E + bases: list + keywords: list + body: list + element: FunctionDef + name: str = __len__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Constant + value: int = 1 + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = instances of custom classes + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: UnaryOp + op: Not + operand: UnaryOp + op: Not + operand: Call + func: Name + id: str = A + ctx: Load + args: list + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: UnaryOp + op: Not + operand: UnaryOp + op: Not + operand: Call + func: Name + id: str = B + ctx: Load + args: list + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: UnaryOp + op: Not + operand: UnaryOp + op: Not + operand: Call + func: Name + id: str = C + ctx: Load + args: list + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: UnaryOp + op: Not + operand: UnaryOp + op: Not + operand: Call + func: Name + id: str = D + ctx: Load + args: list + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: UnaryOp + op: Not + operand: UnaryOp + op: Not + operand: Call + func: Name + id: str = E + ctx: Load + args: list + keywords: list + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/tuple_assignment.js b/transcrypt/development/automated_tests/transcrypt/__target__38/tuple_assignment.js new file mode 100644 index 000000000..ffdfc3a93 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/tuple_assignment.js @@ -0,0 +1,46 @@ +// Transcrypt'ed from Python, 2021-05-14 15:00:23 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get run () {return run;}, set run (value) {run = value;}}); +var __name__ = 'tuple_assignment'; +export var run = function (autoTester) { + var __left0__ = tuple ([tuple ([1, 2]), 'santa-claus', new set ([3, 4]), 5]); + var a = __left0__ [0][0]; + var b = __left0__ [0][1]; + var santa = __left0__ [1]; + var c = __left0__ [2][0]; + var d = __left0__ [2][1]; + var e = __left0__ [3]; + autoTester.check (a, b, c, d, e, santa); + for (var [i, x] of enumerate (tuple ([0.5, 1.5, 2.5, 3.5]))) { + autoTester.check (i, x); + } + var __left0__ = tuple ([3.14, 2.74]); + var e = __left0__ [0]; + var pi = __left0__ [1]; + var __left0__ = tuple ([pi, e]); + var e = __left0__ [0]; + var pi = __left0__ [1]; + autoTester.check (e, pi); + var f = function () { + return (function () { + var __accu0__ = []; + for (var i = 7000; i < 10000; i += 1000) { + __accu0__.append (tuple ([i, 2 * i])); + } + return __accu0__; + }) (); + }; + var g = function () { + return f; + }; + var __left0__ = g () (); + var k = __left0__ [0][0]; + var l = __left0__ [0][1]; + var m = __left0__ [1][0]; + var n = __left0__ [1][1]; + var o = __left0__ [2][0]; + var p = __left0__ [2][1]; + autoTester.check (k, l, m, n, o, p); +}; + +//# sourceMappingURL=tuple_assignment.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/tuple_assignment.tree b/transcrypt/development/automated_tests/transcrypt/__target__38/tuple_assignment.tree new file mode 100644 index 000000000..b032d62ed --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/tuple_assignment.tree @@ -0,0 +1,353 @@ +file: Module + body: list + element: FunctionDef + name: str = run + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = autoTester + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Tuple + elts: list + element: Tuple + elts: list + element: Name + id: str = a + ctx: Store + element: Name + id: str = b + ctx: Store + ctx: Store + element: Name + id: str = santa + ctx: Store + element: List + elts: list + element: Name + id: str = c + ctx: Store + element: Name + id: str = d + ctx: Store + ctx: Store + element: Name + id: str = e + ctx: Store + ctx: Store + value: Tuple + elts: list + element: Tuple + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + ctx: Load + element: Constant + value: str = santa-claus + kind: NoneType = None + element: Set + elts: list + element: Constant + value: int = 3 + kind: NoneType = None + element: Constant + value: int = 4 + kind: NoneType = None + element: Constant + value: int = 5 + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = a + ctx: Load + element: Name + id: str = b + ctx: Load + element: Name + id: str = c + ctx: Load + element: Name + id: str = d + ctx: Load + element: Name + id: str = e + ctx: Load + element: Name + id: str = santa + ctx: Load + keywords: list + element: For + target: Tuple + elts: list + element: Name + id: str = i + ctx: Store + element: Name + id: str = x + ctx: Store + ctx: Store + iter: Call + func: Name + id: str = enumerate + ctx: Load + args: list + element: Tuple + elts: list + element: Constant + value: float = 0.5 + kind: NoneType = None + element: Constant + value: float = 1.5 + kind: NoneType = None + element: Constant + value: float = 2.5 + kind: NoneType = None + element: Constant + value: float = 3.5 + kind: NoneType = None + ctx: Load + keywords: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = i + ctx: Load + element: Name + id: str = x + ctx: Load + keywords: list + orelse: list + type_comment: NoneType = None + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = e + ctx: Store + element: Name + id: str = pi + ctx: Store + ctx: Store + value: Tuple + elts: list + element: Constant + value: float = 3.14 + kind: NoneType = None + element: Constant + value: float = 2.74 + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = e + ctx: Store + element: Name + id: str = pi + ctx: Store + ctx: Store + value: Tuple + elts: list + element: Name + id: str = pi + ctx: Load + element: Name + id: str = e + ctx: Load + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = e + ctx: Load + element: Name + id: str = pi + ctx: Load + keywords: list + element: FunctionDef + name: str = f + args: arguments + posonlyargs: list + args: list + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: ListComp + elt: Tuple + elts: list + element: Name + id: str = i + ctx: Load + element: BinOp + left: Constant + value: int = 2 + kind: NoneType = None + op: Mult + right: Name + id: str = i + ctx: Load + ctx: Load + generators: list + element: comprehension + target: Name + id: str = i + ctx: Store + iter: Call + func: Name + id: str = range + ctx: Load + args: list + element: Constant + value: int = 7000 + kind: NoneType = None + element: Constant + value: int = 10000 + kind: NoneType = None + element: Constant + value: int = 1000 + kind: NoneType = None + keywords: list + ifs: list + is_async: int = 0 + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = g + args: arguments + posonlyargs: list + args: list + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Name + id: str = f + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Tuple + elts: list + element: List + elts: list + element: Name + id: str = k + ctx: Store + element: Name + id: str = l + ctx: Store + ctx: Store + element: List + elts: list + element: Name + id: str = m + ctx: Store + element: Name + id: str = n + ctx: Store + ctx: Store + element: Tuple + elts: list + element: Name + id: str = o + ctx: Store + element: Name + id: str = p + ctx: Store + ctx: Store + ctx: Store + value: Call + func: Call + func: Name + id: str = g + ctx: Load + args: list + keywords: list + args: list + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = k + ctx: Load + element: Name + id: str = l + ctx: Load + element: Name + id: str = m + ctx: Load + element: Name + id: str = n + ctx: Load + element: Name + id: str = o + ctx: Load + element: Name + id: str = p + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/typing.js b/transcrypt/development/automated_tests/transcrypt/__target__38/typing.js new file mode 100644 index 000000000..dbe9469bf --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/typing.js @@ -0,0 +1,7 @@ +// Transcrypt'ed from Python, 2021-05-14 15:00:25 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +var __all__ = dict ({get ClassVar () {return ClassVar;}, set ClassVar (value) {ClassVar = value;}, get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}}); +var __name__ = 'typing'; +export var ClassVar = 'ClassVar'; + +//# sourceMappingURL=typing.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/typing.tree b/transcrypt/development/automated_tests/transcrypt/__target__38/typing.tree new file mode 100644 index 000000000..a176b968f --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/typing.tree @@ -0,0 +1,12 @@ +file: Module + body: list + element: Assign + targets: list + element: Name + id: str = ClassVar + ctx: Store + value: Constant + value: str = ClassVar + kind: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/unicodedata.js b/transcrypt/development/automated_tests/transcrypt/__target__38/unicodedata.js new file mode 100644 index 000000000..b24b110d8 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/unicodedata.js @@ -0,0 +1,9 @@ +// Transcrypt'ed from Python, 2021-05-14 15:00:24 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get normalize () {return normalize;}, set normalize (value) {normalize = value;}}); +var __name__ = 'unicodedata'; +export var normalize = function (form, unistr) { + return String.prototype.normalize.call (unistr, form); +}; + +//# sourceMappingURL=unicodedata.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__38/unicodedata.tree b/transcrypt/development/automated_tests/transcrypt/__target__38/unicodedata.tree new file mode 100644 index 000000000..ca034c41f --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__38/unicodedata.tree @@ -0,0 +1,47 @@ +file: Module + body: list + element: FunctionDef + name: str = normalize + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = form + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = unistr + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Call + func: Attribute + value: Attribute + value: Attribute + value: Name + id: str = String + ctx: Load + attr: str = prototype + ctx: Load + attr: str = normalize + ctx: Load + attr: str = call + ctx: Load + args: list + element: Name + id: str = unistr + ctx: Load + element: Name + id: str = form + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/arguments.js b/transcrypt/development/automated_tests/transcrypt/__target__39/arguments.js new file mode 100644 index 000000000..d6e7d1957 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/arguments.js @@ -0,0 +1,232 @@ +// Transcrypt'ed from Python, 2021-05-14 15:01:26 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +var __all__ = dict ({get A () {return A;}, set A (value) {A = value;}, get B () {return B;}, set B (value) {B = value;}, get C () {return C;}, set C (value) {C = value;}, get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get run () {return run;}, set run (value) {run = value;}}); +var __name__ = 'arguments'; +export var A = __class__ ('A', [object], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self, x, y) { + if (typeof x == 'undefined' || (x != null && x.hasOwnProperty ("__kwargtrans__"))) {; + var x = 123; + }; + if (typeof y == 'undefined' || (y != null && y.hasOwnProperty ("__kwargtrans__"))) {; + var y = 456; + }; + var n = 456; + var kwargs = dict (); + if (arguments.length) { + var __ilastarg0__ = arguments.length - 1; + if (arguments [__ilastarg0__] && arguments [__ilastarg0__].hasOwnProperty ("__kwargtrans__")) { + var __allkwargs0__ = arguments [__ilastarg0__--]; + for (var __attrib0__ in __allkwargs0__) { + switch (__attrib0__) { + case 'self': var self = __allkwargs0__ [__attrib0__]; break; + case 'x': var x = __allkwargs0__ [__attrib0__]; break; + case 'y': var y = __allkwargs0__ [__attrib0__]; break; + case 'm': var m = __allkwargs0__ [__attrib0__]; break; + case 'n': var n = __allkwargs0__ [__attrib0__]; break; + default: kwargs [__attrib0__] = __allkwargs0__ [__attrib0__]; + } + } + delete kwargs.__kwargtrans__; + } + var args = tuple ([].slice.apply (arguments).slice (3, __ilastarg0__ + 1)); + } + else { + var args = tuple (); + } + self.x = x; + self.y = y; + self.args = args; + self.m = m; + self.n = n; + self.kwargs = kwargs; + self.extra = 'hello'; + });}, + get f () {return __get__ (this, function (self, autoTester) { + if (arguments.length) { + var __ilastarg0__ = arguments.length - 1; + if (arguments [__ilastarg0__] && arguments [__ilastarg0__].hasOwnProperty ("__kwargtrans__")) { + var __allkwargs0__ = arguments [__ilastarg0__--]; + for (var __attrib0__ in __allkwargs0__) { + switch (__attrib0__) { + case 'self': var self = __allkwargs0__ [__attrib0__]; break; + case 'autoTester': var autoTester = __allkwargs0__ [__attrib0__]; break; + } + } + } + } + else { + } + autoTester.check (self.x, self.y, self.args, self.m, self.n, self.kwargs, self.extra); + });} +}); +export var B = __class__ ('B', [A], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self, x, y) { + if (typeof y == 'undefined' || (y != null && y.hasOwnProperty ("__kwargtrans__"))) {; + var y = -(1); + }; + var m = -(2); + var kwargs = dict (); + if (arguments.length) { + var __ilastarg0__ = arguments.length - 1; + if (arguments [__ilastarg0__] && arguments [__ilastarg0__].hasOwnProperty ("__kwargtrans__")) { + var __allkwargs0__ = arguments [__ilastarg0__--]; + for (var __attrib0__ in __allkwargs0__) { + switch (__attrib0__) { + case 'self': var self = __allkwargs0__ [__attrib0__]; break; + case 'x': var x = __allkwargs0__ [__attrib0__]; break; + case 'y': var y = __allkwargs0__ [__attrib0__]; break; + case 'm': var m = __allkwargs0__ [__attrib0__]; break; + case 'n': var n = __allkwargs0__ [__attrib0__]; break; + default: kwargs [__attrib0__] = __allkwargs0__ [__attrib0__]; + } + } + delete kwargs.__kwargtrans__; + } + var args = tuple ([].slice.apply (arguments).slice (3, __ilastarg0__ + 1)); + } + else { + var args = tuple (); + } + A.__init__ (self, y, x, ...args, __kwargtrans__ (__mergekwargtrans__ ({m: n, n: m}, kwargs))); + });} +}); +export var C = __class__ ('C', [object], { + __module__: __name__, + get tricky () {return __get__ (this, function (self) { + var args = tuple ([].slice.apply (arguments).slice (1)); + return args; + });} +}); +export var run = function (autoTester) { + if (arguments.length) { + var __ilastarg0__ = arguments.length - 1; + if (arguments [__ilastarg0__] && arguments [__ilastarg0__].hasOwnProperty ("__kwargtrans__")) { + var __allkwargs0__ = arguments [__ilastarg0__--]; + for (var __attrib0__ in __allkwargs0__) { + switch (__attrib0__) { + case 'autoTester': var autoTester = __allkwargs0__ [__attrib0__]; break; + } + } + } + } + else { + } + var f = function (x, y) { + if (typeof y == 'undefined' || (y != null && y.hasOwnProperty ("__kwargtrans__"))) {; + var y = -(1); + }; + var m = -(2); + var kwargs = dict (); + if (arguments.length) { + var __ilastarg0__ = arguments.length - 1; + if (arguments [__ilastarg0__] && arguments [__ilastarg0__].hasOwnProperty ("__kwargtrans__")) { + var __allkwargs0__ = arguments [__ilastarg0__--]; + for (var __attrib0__ in __allkwargs0__) { + switch (__attrib0__) { + case 'x': var x = __allkwargs0__ [__attrib0__]; break; + case 'y': var y = __allkwargs0__ [__attrib0__]; break; + case 'm': var m = __allkwargs0__ [__attrib0__]; break; + case 'n': var n = __allkwargs0__ [__attrib0__]; break; + default: kwargs [__attrib0__] = __allkwargs0__ [__attrib0__]; + } + } + delete kwargs.__kwargtrans__; + } + var args = tuple ([].slice.apply (arguments).slice (2, __ilastarg0__ + 1)); + } + else { + var args = tuple (); + } + autoTester.check ('#203', kwargs.__class__.__name__); + autoTester.check ('#203', sorted (kwargs.py_keys ())); + var f2 = function (x, y) { + if (typeof y == 'undefined' || (y != null && y.hasOwnProperty ("__kwargtrans__"))) {; + var y = -(3); + }; + var m = -(4); + var kwargs = dict (); + if (arguments.length) { + var __ilastarg0__ = arguments.length - 1; + if (arguments [__ilastarg0__] && arguments [__ilastarg0__].hasOwnProperty ("__kwargtrans__")) { + var __allkwargs0__ = arguments [__ilastarg0__--]; + for (var __attrib0__ in __allkwargs0__) { + switch (__attrib0__) { + case 'x': var x = __allkwargs0__ [__attrib0__]; break; + case 'y': var y = __allkwargs0__ [__attrib0__]; break; + case 'm': var m = __allkwargs0__ [__attrib0__]; break; + case 'n': var n = __allkwargs0__ [__attrib0__]; break; + default: kwargs [__attrib0__] = __allkwargs0__ [__attrib0__]; + } + } + delete kwargs.__kwargtrans__; + } + var args = tuple ([].slice.apply (arguments).slice (2, __ilastarg0__ + 1)); + } + else { + var args = tuple (); + } + autoTester.check (x, y, args, m, n, kwargs); + }; + f2 (11, 22, 1010, 2020, __kwargtrans__ ({m: 100100, n: 200200, p: 10001000, q: 20002000})); + autoTester.check (x, y, args, m, n, kwargs); + }; + f (1, 2, 10, 20, __kwargtrans__ ({m: 100, n: 200, p: 1000, q: 2000})); + var b = B (3, 4, 30, 40, __kwargtrans__ ({m: 300, n: 400, p: 3000, q: 4000})); + b.f (autoTester); + var g = function () { + var kwargs = dict (); + if (arguments.length) { + var __ilastarg0__ = arguments.length - 1; + if (arguments [__ilastarg0__] && arguments [__ilastarg0__].hasOwnProperty ("__kwargtrans__")) { + var __allkwargs0__ = arguments [__ilastarg0__--]; + for (var __attrib0__ in __allkwargs0__) { + switch (__attrib0__) { + default: kwargs [__attrib0__] = __allkwargs0__ [__attrib0__]; + } + } + delete kwargs.__kwargtrans__; + } + var args = tuple ([].slice.apply (arguments).slice (0, __ilastarg0__ + 1)); + } + else { + var args = tuple (); + } + autoTester.check (args, kwargs); + }; + g (...tuple ([1, 2, 3]), __kwargtrans__ (dict ({'p': 'aP', 'q': 'aQ', 'r': 'anR'}))); + (function __lambda__ (x, y) { + if (typeof y == 'undefined' || (y != null && y.hasOwnProperty ("__kwargtrans__"))) {; + var y = -(1); + }; + var m = -(2); + var kwargs = dict (); + if (arguments.length) { + var __ilastarg0__ = arguments.length - 1; + if (arguments [__ilastarg0__] && arguments [__ilastarg0__].hasOwnProperty ("__kwargtrans__")) { + var __allkwargs0__ = arguments [__ilastarg0__--]; + for (var __attrib0__ in __allkwargs0__) { + switch (__attrib0__) { + case 'x': var x = __allkwargs0__ [__attrib0__]; break; + case 'y': var y = __allkwargs0__ [__attrib0__]; break; + case 'm': var m = __allkwargs0__ [__attrib0__]; break; + case 'n': var n = __allkwargs0__ [__attrib0__]; break; + default: kwargs [__attrib0__] = __allkwargs0__ [__attrib0__]; + } + } + delete kwargs.__kwargtrans__; + } + var args = tuple ([].slice.apply (arguments).slice (2, __ilastarg0__ + 1)); + } + else { + var args = tuple (); + } + return autoTester.check (x, y, args, m, n, kwargs); + }) (1, 2, 8, 16, __kwargtrans__ ({m: 128, n: 256.3, p: 1024.3, q: 2048.3})); + autoTester.check (C ().tricky (...range (4))); + autoTester.check ('{}-{}'.format (1, 3, 5, 7, 9)); + autoTester.check ('{}-{}'.format (...range (4))); +}; + +//# sourceMappingURL=arguments.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/arguments.tree b/transcrypt/development/automated_tests/transcrypt/__target__39/arguments.tree new file mode 100644 index 000000000..6f5ecbcef --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/arguments.tree @@ -0,0 +1,1019 @@ +file: Module + body: list + element: ImportFrom + module: str = org.transcrypt.stubs.browser + names: list + element: alias + name: str = __pragma__ + asname: NoneType = None + level: int = 0 + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = kwargs + kind: NoneType = None + keywords: list + element: ClassDef + name: str = A + bases: list + keywords: list + body: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = y + annotation: NoneType = None + type_comment: NoneType = None + vararg: arg + arg: str = args + annotation: NoneType = None + type_comment: NoneType = None + kwonlyargs: list + element: arg + arg: str = m + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = n + annotation: NoneType = None + type_comment: NoneType = None + kw_defaults: list + element: NoneType = None + element: Constant + value: int = 456 + kind: NoneType = None + kwarg: arg + arg: str = kwargs + annotation: NoneType = None + type_comment: NoneType = None + defaults: list + element: Constant + value: int = 123 + kind: NoneType = None + element: Constant + value: int = 456 + kind: NoneType = None + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = x + ctx: Store + value: Name + id: str = x + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = y + ctx: Store + value: Name + id: str = y + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = args + ctx: Store + value: Name + id: str = args + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = m + ctx: Store + value: Name + id: str = m + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = n + ctx: Store + value: Name + id: str = n + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = kwargs + ctx: Store + value: Name + id: str = kwargs + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = extra + ctx: Store + value: Constant + value: str = hello + kind: NoneType = None + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = f + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = autoTester + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = x + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = y + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = args + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = m + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = n + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = kwargs + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = extra + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: ClassDef + name: str = B + bases: list + element: Name + id: str = A + ctx: Load + keywords: list + body: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = y + annotation: NoneType = None + type_comment: NoneType = None + vararg: arg + arg: str = args + annotation: NoneType = None + type_comment: NoneType = None + kwonlyargs: list + element: arg + arg: str = m + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = n + annotation: NoneType = None + type_comment: NoneType = None + kw_defaults: list + element: UnaryOp + op: USub + operand: Constant + value: int = 2 + kind: NoneType = None + element: NoneType = None + kwarg: arg + arg: str = kwargs + annotation: NoneType = None + type_comment: NoneType = None + defaults: list + element: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = A + ctx: Load + attr: str = __init__ + ctx: Load + args: list + element: Name + id: str = self + ctx: Load + element: Name + id: str = y + ctx: Load + element: Name + id: str = x + ctx: Load + element: Starred + value: Name + id: str = args + ctx: Load + ctx: Load + keywords: list + element: keyword + arg: str = m + value: Name + id: str = n + ctx: Load + element: keyword + arg: str = n + value: Name + id: str = m + ctx: Load + element: keyword + arg: NoneType = None + value: Name + id: str = kwargs + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: ClassDef + name: str = C + bases: list + keywords: list + body: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = nokwargs + kind: NoneType = None + keywords: list + element: FunctionDef + name: str = tricky + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: arg + arg: str = args + annotation: NoneType = None + type_comment: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Name + id: str = args + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = kwargs + kind: NoneType = None + keywords: list + decorator_list: list + element: FunctionDef + name: str = run + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = autoTester + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: FunctionDef + name: str = f + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = y + annotation: NoneType = None + type_comment: NoneType = None + vararg: arg + arg: str = args + annotation: NoneType = None + type_comment: NoneType = None + kwonlyargs: list + element: arg + arg: str = m + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = n + annotation: NoneType = None + type_comment: NoneType = None + kw_defaults: list + element: UnaryOp + op: USub + operand: Constant + value: int = 2 + kind: NoneType = None + element: NoneType = None + kwarg: arg + arg: str = kwargs + annotation: NoneType = None + type_comment: NoneType = None + defaults: list + element: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = #203 + kind: NoneType = None + element: Attribute + value: Attribute + value: Name + id: str = kwargs + ctx: Load + attr: str = __class__ + ctx: Load + attr: str = __name__ + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = #203 + kind: NoneType = None + element: Call + func: Name + id: str = sorted + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = kwargs + ctx: Load + attr: str = keys + ctx: Load + args: list + keywords: list + keywords: list + keywords: list + element: FunctionDef + name: str = f2 + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = y + annotation: NoneType = None + type_comment: NoneType = None + vararg: arg + arg: str = args + annotation: NoneType = None + type_comment: NoneType = None + kwonlyargs: list + element: arg + arg: str = m + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = n + annotation: NoneType = None + type_comment: NoneType = None + kw_defaults: list + element: UnaryOp + op: USub + operand: Constant + value: int = 4 + kind: NoneType = None + element: NoneType = None + kwarg: arg + arg: str = kwargs + annotation: NoneType = None + type_comment: NoneType = None + defaults: list + element: UnaryOp + op: USub + operand: Constant + value: int = 3 + kind: NoneType = None + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = x + ctx: Load + element: Name + id: str = y + ctx: Load + element: Name + id: str = args + ctx: Load + element: Name + id: str = m + ctx: Load + element: Name + id: str = n + ctx: Load + element: Name + id: str = kwargs + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = f2 + ctx: Load + args: list + element: Constant + value: int = 11 + kind: NoneType = None + element: Constant + value: int = 22 + kind: NoneType = None + element: Constant + value: int = 1010 + kind: NoneType = None + element: Constant + value: int = 2020 + kind: NoneType = None + keywords: list + element: keyword + arg: str = m + value: Constant + value: int = 100100 + kind: NoneType = None + element: keyword + arg: str = n + value: Constant + value: int = 200200 + kind: NoneType = None + element: keyword + arg: str = p + value: Constant + value: int = 10001000 + kind: NoneType = None + element: keyword + arg: str = q + value: Constant + value: int = 20002000 + kind: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = x + ctx: Load + element: Name + id: str = y + ctx: Load + element: Name + id: str = args + ctx: Load + element: Name + id: str = m + ctx: Load + element: Name + id: str = n + ctx: Load + element: Name + id: str = kwargs + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = f + ctx: Load + args: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 10 + kind: NoneType = None + element: Constant + value: int = 20 + kind: NoneType = None + keywords: list + element: keyword + arg: str = m + value: Constant + value: int = 100 + kind: NoneType = None + element: keyword + arg: str = n + value: Constant + value: int = 200 + kind: NoneType = None + element: keyword + arg: str = p + value: Constant + value: int = 1000 + kind: NoneType = None + element: keyword + arg: str = q + value: Constant + value: int = 2000 + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = b + ctx: Store + value: Call + func: Name + id: str = B + ctx: Load + args: list + element: Constant + value: int = 3 + kind: NoneType = None + element: Constant + value: int = 4 + kind: NoneType = None + element: Constant + value: int = 30 + kind: NoneType = None + element: Constant + value: int = 40 + kind: NoneType = None + keywords: list + element: keyword + arg: str = m + value: Constant + value: int = 300 + kind: NoneType = None + element: keyword + arg: str = n + value: Constant + value: int = 400 + kind: NoneType = None + element: keyword + arg: str = p + value: Constant + value: int = 3000 + kind: NoneType = None + element: keyword + arg: str = q + value: Constant + value: int = 4000 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = b + ctx: Load + attr: str = f + ctx: Load + args: list + element: Name + id: str = autoTester + ctx: Load + keywords: list + element: FunctionDef + name: str = g + args: arguments + posonlyargs: list + args: list + vararg: arg + arg: str = args + annotation: NoneType = None + type_comment: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: arg + arg: str = kwargs + annotation: NoneType = None + type_comment: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = args + ctx: Load + element: Name + id: str = kwargs + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = g + ctx: Load + args: list + element: Starred + value: Tuple + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + ctx: Load + keywords: list + element: keyword + arg: NoneType = None + value: Dict + keys: list + element: Constant + value: str = p + kind: NoneType = None + element: Constant + value: str = q + kind: NoneType = None + element: Constant + value: str = r + kind: NoneType = None + values: list + element: Constant + value: str = aP + kind: NoneType = None + element: Constant + value: str = aQ + kind: NoneType = None + element: Constant + value: str = anR + kind: NoneType = None + element: Expr + value: Call + func: Lambda + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = y + annotation: NoneType = None + type_comment: NoneType = None + vararg: arg + arg: str = args + annotation: NoneType = None + type_comment: NoneType = None + kwonlyargs: list + element: arg + arg: str = m + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = n + annotation: NoneType = None + type_comment: NoneType = None + kw_defaults: list + element: UnaryOp + op: USub + operand: Constant + value: int = 2 + kind: NoneType = None + element: NoneType = None + kwarg: arg + arg: str = kwargs + annotation: NoneType = None + type_comment: NoneType = None + defaults: list + element: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + body: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = x + ctx: Load + element: Name + id: str = y + ctx: Load + element: Name + id: str = args + ctx: Load + element: Name + id: str = m + ctx: Load + element: Name + id: str = n + ctx: Load + element: Name + id: str = kwargs + ctx: Load + keywords: list + args: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 8 + kind: NoneType = None + element: Constant + value: int = 16 + kind: NoneType = None + keywords: list + element: keyword + arg: str = m + value: Constant + value: int = 128 + kind: NoneType = None + element: keyword + arg: str = n + value: Constant + value: float = 256.3 + kind: NoneType = None + element: keyword + arg: str = p + value: Constant + value: float = 1024.3 + kind: NoneType = None + element: keyword + arg: str = q + value: Constant + value: float = 2048.3 + kind: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Call + func: Name + id: str = C + ctx: Load + args: list + keywords: list + attr: str = tricky + ctx: Load + args: list + element: Starred + value: Call + func: Name + id: str = range + ctx: Load + args: list + element: Constant + value: int = 4 + kind: NoneType = None + keywords: list + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = {}-{} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + element: Constant + value: int = 5 + kind: NoneType = None + element: Constant + value: int = 7 + kind: NoneType = None + element: Constant + value: int = 9 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = {}-{} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Starred + value: Call + func: Name + id: str = range + ctx: Load + args: list + element: Constant + value: int = 4 + kind: NoneType = None + keywords: list + ctx: Load + keywords: list + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/attribs_by_name.js b/transcrypt/development/automated_tests/transcrypt/__target__39/attribs_by_name.js new file mode 100644 index 000000000..8c813bcfb --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/attribs_by_name.js @@ -0,0 +1,22 @@ +// Transcrypt'ed from Python, 2021-05-14 15:01:26 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +var __all__ = dict ({get A () {return A;}, set A (value) {A = value;}, get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get a () {return a;}, set a (value) {a = value;}, get run () {return run;}, set run (value) {run = value;}}); +var __name__ = 'attribs_by_name'; +export var A = __class__ ('A', [object], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self) { + self.s = 'hello'; + });} +}); +export var a = A (); +export var run = function (autoTester) { + autoTester.check (a.s, getattr (a, 's')); + setattr (a, 's', 'goodbye'); + autoTester.check (a.s, getattr (a, 's')); + setattr (a, 't', 'exists'); + autoTester.check (hasattr (a, 't'), a.t, getattr (a, 't')); + delattr (a, 't'); + autoTester.check (hasattr (a, 't')); +}; + +//# sourceMappingURL=attribs_by_name.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/attribs_by_name.tree b/transcrypt/development/automated_tests/transcrypt/__target__39/attribs_by_name.tree new file mode 100644 index 000000000..fb46df84c --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/attribs_by_name.tree @@ -0,0 +1,232 @@ +file: Module + body: list + element: ClassDef + name: str = A + bases: list + keywords: list + body: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = s + ctx: Store + value: Constant + value: str = hello + kind: NoneType = None + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: Assign + targets: list + element: Name + id: str = a + ctx: Store + value: Call + func: Name + id: str = A + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: FunctionDef + name: str = run + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = autoTester + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = a + ctx: Load + attr: str = s + ctx: Load + element: Call + func: Name + id: str = getattr + ctx: Load + args: list + element: Name + id: str = a + ctx: Load + element: Constant + value: str = s + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Name + id: str = setattr + ctx: Load + args: list + element: Name + id: str = a + ctx: Load + element: Constant + value: str = s + kind: NoneType = None + element: Constant + value: str = goodbye + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = a + ctx: Load + attr: str = s + ctx: Load + element: Call + func: Name + id: str = getattr + ctx: Load + args: list + element: Name + id: str = a + ctx: Load + element: Constant + value: str = s + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Name + id: str = setattr + ctx: Load + args: list + element: Name + id: str = a + ctx: Load + element: Constant + value: str = t + kind: NoneType = None + element: Constant + value: str = exists + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = hasattr + ctx: Load + args: list + element: Name + id: str = a + ctx: Load + element: Constant + value: str = t + kind: NoneType = None + keywords: list + element: Attribute + value: Name + id: str = a + ctx: Load + attr: str = t + ctx: Load + element: Call + func: Name + id: str = getattr + ctx: Load + args: list + element: Name + id: str = a + ctx: Load + element: Constant + value: str = t + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Name + id: str = delattr + ctx: Load + args: list + element: Name + id: str = a + ctx: Load + element: Constant + value: str = t + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = hasattr + ctx: Load + args: list + element: Name + id: str = a + ctx: Load + element: Constant + value: str = t + kind: NoneType = None + keywords: list + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/autotest.js b/transcrypt/development/automated_tests/transcrypt/__target__39/autotest.js new file mode 100644 index 000000000..d4b8bfb0b --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/autotest.js @@ -0,0 +1,203 @@ +// Transcrypt'ed from Python, 2021-05-14 15:01:24 +var py_arguments = {}; +var attribs_by_name = {}; +var builtin_super = {}; +var byte_arrays = {}; +var callable_test = {}; +var classes = {}; +var complex_numbers = {}; +var conditional_expressions = {}; +var control_structures = {}; +var dashed_numbers = {}; +var data_classes = {}; +var data_structures = {}; +var decorators = {}; +var dict_comprehensions = {}; +var dictionaries = {}; +var div_issues = {}; +var div_pulls = {}; +var docstrings = {}; +var exceptions = {}; +var executable_comments = {}; +var extended_slices = {}; +var fstrings = {}; +var general_functions = {}; +var globals_function = {}; +var indices_and_slices = {}; +var iterators_and_generators = {}; +var lambda_functions = {}; +var list_comprehensions = {}; +var local_classes = {}; +var metaclasses = {}; +var method_and_class_decorators = {}; +var module_builtin = {}; +var module_cmath = {}; +var module_datetime = {}; +var module_itertools = {}; +var module_math = {}; +var module_unicodedata = {}; +var modules = {}; +var nonlocals = {}; +var operator_overloading = {}; +var org = {}; +var properties = {}; +var proxies = {}; +var reprtest = {}; +var set_comprehensions = {}; +var simple_and_augmented_assignment = {}; +var string_format = {}; +var truthyness = {}; +var tuple_assignment = {}; +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +import * as __module_tuple_assignment__ from './tuple_assignment.js'; +__nest__ (tuple_assignment, '', __module_tuple_assignment__); +import * as __module_truthyness__ from './truthyness.js'; +__nest__ (truthyness, '', __module_truthyness__); +import * as __module_string_format__ from './string_format.js'; +__nest__ (string_format, '', __module_string_format__); +import * as __module_simple_and_augmented_assignment__ from './simple_and_augmented_assignment.js'; +__nest__ (simple_and_augmented_assignment, '', __module_simple_and_augmented_assignment__); +import * as __module_set_comprehensions__ from './set_comprehensions.js'; +__nest__ (set_comprehensions, '', __module_set_comprehensions__); +import * as __module_reprtest__ from './reprtest.js'; +__nest__ (reprtest, '', __module_reprtest__); +import * as __module_proxies__ from './proxies.js'; +__nest__ (proxies, '', __module_proxies__); +import * as __module_properties__ from './properties.js'; +__nest__ (properties, '', __module_properties__); +import * as __module_operator_overloading__ from './operator_overloading.js'; +__nest__ (operator_overloading, '', __module_operator_overloading__); +import * as __module_nonlocals__ from './nonlocals.js'; +__nest__ (nonlocals, '', __module_nonlocals__); +import * as __module_modules__ from './modules.js'; +__nest__ (modules, '', __module_modules__); +import * as __module_module_unicodedata__ from './module_unicodedata.js'; +__nest__ (module_unicodedata, '', __module_module_unicodedata__); +import * as __module_module_math__ from './module_math.js'; +__nest__ (module_math, '', __module_module_math__); +import * as __module_module_itertools__ from './module_itertools.js'; +__nest__ (module_itertools, '', __module_module_itertools__); +import * as __module_module_datetime__ from './module_datetime.js'; +__nest__ (module_datetime, '', __module_module_datetime__); +import * as __module_module_cmath__ from './module_cmath.js'; +__nest__ (module_cmath, '', __module_module_cmath__); +import * as __module_module_builtin__ from './module_builtin.js'; +__nest__ (module_builtin, '', __module_module_builtin__); +import * as __module_method_and_class_decorators__ from './method_and_class_decorators.js'; +__nest__ (method_and_class_decorators, '', __module_method_and_class_decorators__); +import * as __module_metaclasses__ from './metaclasses.js'; +__nest__ (metaclasses, '', __module_metaclasses__); +import * as __module_local_classes__ from './local_classes.js'; +__nest__ (local_classes, '', __module_local_classes__); +import * as __module_list_comprehensions__ from './list_comprehensions.js'; +__nest__ (list_comprehensions, '', __module_list_comprehensions__); +import * as __module_lambda_functions__ from './lambda_functions.js'; +__nest__ (lambda_functions, '', __module_lambda_functions__); +import * as __module_iterators_and_generators__ from './iterators_and_generators.js'; +__nest__ (iterators_and_generators, '', __module_iterators_and_generators__); +import * as __module_indices_and_slices__ from './indices_and_slices.js'; +__nest__ (indices_and_slices, '', __module_indices_and_slices__); +import * as __module_globals_function__ from './globals_function.js'; +__nest__ (globals_function, '', __module_globals_function__); +import * as __module_general_functions__ from './general_functions.js'; +__nest__ (general_functions, '', __module_general_functions__); +import * as __module_fstrings__ from './fstrings.js'; +__nest__ (fstrings, '', __module_fstrings__); +import * as __module_extended_slices__ from './extended_slices.js'; +__nest__ (extended_slices, '', __module_extended_slices__); +import * as __module_executable_comments__ from './executable_comments.js'; +__nest__ (executable_comments, '', __module_executable_comments__); +import * as __module_exceptions__ from './exceptions.js'; +__nest__ (exceptions, '', __module_exceptions__); +import * as __module_docstrings__ from './docstrings.js'; +__nest__ (docstrings, '', __module_docstrings__); +import * as __module_div_pulls__ from './div_pulls.js'; +__nest__ (div_pulls, '', __module_div_pulls__); +import * as __module_div_issues__ from './div_issues.js'; +__nest__ (div_issues, '', __module_div_issues__); +import * as __module_dictionaries__ from './dictionaries.js'; +__nest__ (dictionaries, '', __module_dictionaries__); +import * as __module_dict_comprehensions__ from './dict_comprehensions.js'; +__nest__ (dict_comprehensions, '', __module_dict_comprehensions__); +import * as __module_decorators__ from './decorators.js'; +__nest__ (decorators, '', __module_decorators__); +import * as __module_data_structures__ from './data_structures.js'; +__nest__ (data_structures, '', __module_data_structures__); +import * as __module_data_classes__ from './data_classes.js'; +__nest__ (data_classes, '', __module_data_classes__); +import * as __module_dashed_numbers__ from './dashed_numbers.js'; +__nest__ (dashed_numbers, '', __module_dashed_numbers__); +import * as __module_control_structures__ from './control_structures.js'; +__nest__ (control_structures, '', __module_control_structures__); +import * as __module_conditional_expressions__ from './conditional_expressions.js'; +__nest__ (conditional_expressions, '', __module_conditional_expressions__); +import * as __module_complex_numbers__ from './complex_numbers.js'; +__nest__ (complex_numbers, '', __module_complex_numbers__); +import * as __module_classes__ from './classes.js'; +__nest__ (classes, '', __module_classes__); +import * as __module_callable_test__ from './callable_test.js'; +__nest__ (callable_test, '', __module_callable_test__); +import * as __module_byte_arrays__ from './byte_arrays.js'; +__nest__ (byte_arrays, '', __module_byte_arrays__); +import * as __module_builtin_super__ from './builtin_super.js'; +__nest__ (builtin_super, '', __module_builtin_super__); +import * as __module_attribs_by_name__ from './attribs_by_name.js'; +__nest__ (attribs_by_name, '', __module_attribs_by_name__); +import * as __module_py_arguments__ from './arguments.js'; +__nest__ (py_arguments, '', __module_py_arguments__); +import * as __module_org_transcrypt_autotester__ from './org.transcrypt.autotester.js'; +__nest__ (org, 'transcrypt.autotester', __module_org_transcrypt_autotester__); +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get autoTester () {return autoTester;}, set autoTester (value) {autoTester = value;}}); +var __name__ = '__main__'; +export var autoTester = org.transcrypt.autotester.AutoTester (); +autoTester.run (py_arguments, 'arguments'); +autoTester.run (attribs_by_name, 'attribs_by_name'); +autoTester.run (builtin_super, 'builtin_super'); +autoTester.run (byte_arrays, 'byte_arrays'); +autoTester.run (callable_test, 'callable'); +autoTester.run (classes, 'classes'); +autoTester.run (complex_numbers, 'complex_numbers'); +autoTester.run (conditional_expressions, 'conditional_expressions'); +autoTester.run (control_structures, 'control_structures'); +autoTester.run (dashed_numbers, 'dashed_numbers'); +autoTester.run (data_classes, 'data_classes'); +autoTester.run (data_structures, 'data_structures'); +autoTester.run (decorators, 'decorators'); +autoTester.run (dict_comprehensions, 'dict_comprehensions'); +autoTester.run (dictionaries, 'dictionaries'); +autoTester.run (div_issues, 'div_issues'); +autoTester.run (div_pulls, 'div_pulls'); +autoTester.run (docstrings, 'docstrings'); +autoTester.run (exceptions, 'exceptions'); +autoTester.run (executable_comments, 'executable_comments'); +autoTester.run (extended_slices, 'extended_slices'); +autoTester.run (fstrings, 'fstrings'); +autoTester.run (general_functions, 'general_functions'); +autoTester.run (globals_function, 'globals_function'); +autoTester.run (indices_and_slices, 'indices_and_slices'); +autoTester.run (iterators_and_generators, 'iterators_and_generators'); +autoTester.run (lambda_functions, 'lambda_functions'); +autoTester.run (list_comprehensions, 'list_comprehensions'); +autoTester.run (local_classes, 'local_classes'); +autoTester.run (metaclasses, 'metaclasses'); +autoTester.run (method_and_class_decorators, 'method_and_class_decorators'); +autoTester.run (module_builtin, 'module_builtin'); +autoTester.run (module_cmath, 'module_cmath'); +autoTester.run (module_datetime, 'module_datetime'); +autoTester.run (module_itertools, 'module_itertools'); +autoTester.run (module_math, 'module_math'); +autoTester.run (module_unicodedata, 'module_unicodedata'); +autoTester.run (modules, 'modules'); +autoTester.run (nonlocals, 'nonlocals'); +autoTester.run (operator_overloading, 'operator_overloading'); +autoTester.run (properties, 'properties'); +autoTester.run (reprtest, 'repr_str'); +autoTester.run (proxies, 'proxies'); +autoTester.run (set_comprehensions, 'set_comprehensions'); +autoTester.run (simple_and_augmented_assignment, 'simple_and_augmented_assignment'); +autoTester.run (string_format, 'string_format'); +autoTester.run (truthyness, 'truthyness'); +autoTester.run (tuple_assignment, 'tuple_assignment'); +autoTester.done (); + +//# sourceMappingURL=autotest.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/autotest.project b/transcrypt/development/automated_tests/transcrypt/__target__39/autotest.project new file mode 100644 index 000000000..3b801fe26 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/autotest.project @@ -0,0 +1 @@ +{"options": {"source": "autotest", "anno": false, "alimod": false, "build": true, "complex": true, "docat": false, "dassert": true, "dcheck": false, "dextex": false, "dlog": false, "dmap": false, "dnostrip": false, "dstat": false, "dtree": true, "esv": null, "ecom": false, "fcall": false, "gen": false, "iconv": false, "jscall": false, "jskeys": false, "jsmod": false, "kwargs": false, "keycheck": false, "license": false, "map": false, "nomin": true, "opov": false, "outdir": null, "parent": null, "run": false, "symbols": null, "sform": true, "tconv": false, "unit": null, "verbose": false, "x": null, "xreex": true, "xglobs": true, "xpath": null, "xtiny": false, "star": false}, "modules": [{"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/modules/org/transcrypt/__runtime__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/org.transcrypt.__runtime__.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/autotest.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/autotest.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/tuple_assignment/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/tuple_assignment.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/truthyness/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/truthyness.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/string_format/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/string_format.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/simple_and_augmented_assignment/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/simple_and_augmented_assignment.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/set_comprehensions/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/set_comprehensions.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/reprtest/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/reprtest.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/proxies/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/proxies.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/properties/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/properties.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/operator_overloading/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/operator_overloading.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/nonlocals/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/nonlocals.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/modules/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/modules.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/modules/mod4.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/modules.mod4.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/modules/mod5.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/modules.mod5.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/modules/mod1/mod11/mod111.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/modules.mod1.mod11.mod111.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/modules/mod3.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/modules.mod3.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/modules/mod2/mod21.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/modules.mod2.mod21.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/modules/mod2/mod22.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/modules.mod2.mod22.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/modules/mod1/mod11/mod112.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/modules.mod1.mod11.mod112.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/modules/mod1/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/modules.mod1.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/modules/mod2/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/modules.mod2.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/modules/mod1/mod11/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/modules.mod1.mod11.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/module_unicodedata/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/module_unicodedata.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/modules/unicodedata/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/unicodedata.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/module_math/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/module_math.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/modules/math/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/math.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/module_itertools/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/module_itertools.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/modules/itertools/__init__.js", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/itertools.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/module_datetime/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/module_datetime.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/modules/datetime/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/datetime.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/modules/time/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/time.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/module_cmath/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/module_cmath.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/modules/cmath/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/cmath.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/module_builtin/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/module_builtin.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/method_and_class_decorators/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/method_and_class_decorators.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/metaclasses/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/metaclasses.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/local_classes/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/local_classes.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/list_comprehensions/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/list_comprehensions.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/lambda_functions/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/lambda_functions.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/iterators_and_generators/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/iterators_and_generators.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/indices_and_slices/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/indices_and_slices.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/globals_function/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/globals_function.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/globals_function/sub.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/globals_function.sub.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/general_functions/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/general_functions.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/fstrings/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/fstrings.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/extended_slices/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/extended_slices.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/executable_comments/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/executable_comments.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/exceptions/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/exceptions.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/docstrings/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/docstrings.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/div_pulls/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/div_pulls.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/div_pulls/pull575_reexport_modules/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/div_pulls.pull575_reexport_modules.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/div_pulls/pull575_reexport_modules/reexporter/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/div_pulls.pull575_reexport_modules.reexporter.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/div_pulls/pull575_reexport_modules/reexporter/html5/ext.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/div_pulls.pull575_reexport_modules.reexporter.html5.ext.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/div_pulls/pull575_reexport_modules/reexporter/html5/html5.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/div_pulls.pull575_reexport_modules.reexporter.html5.html5.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/div_issues/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/div_issues.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/modules/re/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/re.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/modules/re/translate.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/re.translate.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/div_issues/issue559/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/div_issues.issue559.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/div_issues/issue559/mylib/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/div_issues.issue559.mylib.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/div_issues/issue559/mylib/mylib.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/div_issues.issue559.mylib.mylib.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/div_issues/issue387/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/div_issues.issue387.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/div_issues/issue387/test1/test2.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/div_issues.issue387.test1.test2.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/div_issues/issue387/test1/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/div_issues.issue387.test1.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/div_issues/issue55/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/div_issues.issue55.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/div_issues/issue55/sub3.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/div_issues.issue55.sub3.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/div_issues/issue55/sub2/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/div_issues.issue55.sub2.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/div_issues/issue55/sub1.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/div_issues.issue55.sub1.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/div_issues/issue55/a.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/div_issues.issue55.a.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/dictionaries/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/dictionaries.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/dict_comprehensions/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/dict_comprehensions.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/decorators/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/decorators.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/data_structures/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/data_structures.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/data_classes/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/data_classes.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/modules/typing/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/typing.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/modules/dataclasses/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/dataclasses.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/dashed_numbers/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/dashed_numbers.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/control_structures/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/control_structures.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/conditional_expressions/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/conditional_expressions.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/complex_numbers/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/complex_numbers.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/classes/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/classes.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/callable_test/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/callable_test.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/byte_arrays/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/byte_arrays.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/builtin_super/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/builtin_super.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/attribs_by_name/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/attribs_by_name.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/arguments/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/arguments.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/modules/org/transcrypt/autotester/__init__.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/org.transcrypt.autotester.js"}, {"source": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/modules/org/transcrypt/autotester/html.py", "target": "/home/jac/active/geatec/transcrypt/qquick/Transcrypt/transcrypt/development/automated_tests/transcrypt/__target__/org.transcrypt.autotester.html.js"}]} \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/autotest.tree b/transcrypt/development/automated_tests/transcrypt/__target__39/autotest.tree new file mode 100644 index 000000000..2692b5f82 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/autotest.tree @@ -0,0 +1,1135 @@ +file: Module + body: list + element: ImportFrom + module: str = org.transcrypt.stubs.browser + names: list + element: alias + name: str = __pragma__ + asname: NoneType = None + level: int = 0 + element: Import + names: list + element: alias + name: str = org.transcrypt.autotester + asname: NoneType = None + element: Import + names: list + element: alias + name: str = arguments + asname: NoneType = None + element: Import + names: list + element: alias + name: str = attribs_by_name + asname: NoneType = None + element: Import + names: list + element: alias + name: str = builtin_super + asname: NoneType = None + element: Import + names: list + element: alias + name: str = byte_arrays + asname: NoneType = None + element: Import + names: list + element: alias + name: str = callable_test + asname: NoneType = None + element: Import + names: list + element: alias + name: str = classes + asname: NoneType = None + element: Import + names: list + element: alias + name: str = complex_numbers + asname: NoneType = None + element: Import + names: list + element: alias + name: str = conditional_expressions + asname: NoneType = None + element: Import + names: list + element: alias + name: str = control_structures + asname: NoneType = None + element: Import + names: list + element: alias + name: str = dashed_numbers + asname: NoneType = None + element: Import + names: list + element: alias + name: str = data_classes + asname: NoneType = None + element: Import + names: list + element: alias + name: str = data_structures + asname: NoneType = None + element: Import + names: list + element: alias + name: str = decorators + asname: NoneType = None + element: Import + names: list + element: alias + name: str = dict_comprehensions + asname: NoneType = None + element: Import + names: list + element: alias + name: str = dictionaries + asname: NoneType = None + element: Import + names: list + element: alias + name: str = div_issues + asname: NoneType = None + element: Import + names: list + element: alias + name: str = div_pulls + asname: NoneType = None + element: Import + names: list + element: alias + name: str = docstrings + asname: NoneType = None + element: Import + names: list + element: alias + name: str = exceptions + asname: NoneType = None + element: Import + names: list + element: alias + name: str = executable_comments + asname: NoneType = None + element: Import + names: list + element: alias + name: str = extended_slices + asname: NoneType = None + element: Import + names: list + element: alias + name: str = fstrings + asname: NoneType = None + element: Import + names: list + element: alias + name: str = general_functions + asname: NoneType = None + element: Import + names: list + element: alias + name: str = globals_function + asname: NoneType = None + element: Import + names: list + element: alias + name: str = indices_and_slices + asname: NoneType = None + element: Import + names: list + element: alias + name: str = iterators_and_generators + asname: NoneType = None + element: Import + names: list + element: alias + name: str = lambda_functions + asname: NoneType = None + element: Import + names: list + element: alias + name: str = list_comprehensions + asname: NoneType = None + element: Import + names: list + element: alias + name: str = local_classes + asname: NoneType = None + element: Import + names: list + element: alias + name: str = metaclasses + asname: NoneType = None + element: Import + names: list + element: alias + name: str = method_and_class_decorators + asname: NoneType = None + element: Import + names: list + element: alias + name: str = module_builtin + asname: NoneType = None + element: Import + names: list + element: alias + name: str = module_cmath + asname: NoneType = None + element: If + test: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = defined + kind: NoneType = None + element: Constant + value: str = undefined + kind: NoneType = None + keywords: list + body: list + element: Import + names: list + element: alias + name: str = module_collections + asname: NoneType = None + orelse: list + element: Import + names: list + element: alias + name: str = module_datetime + asname: NoneType = None + element: Import + names: list + element: alias + name: str = module_itertools + asname: NoneType = None + element: Import + names: list + element: alias + name: str = module_math + asname: NoneType = None + element: Import + names: list + element: alias + name: str = module_unicodedata + asname: NoneType = None + element: Import + names: list + element: alias + name: str = modules + asname: NoneType = None + element: Import + names: list + element: alias + name: str = nonlocals + asname: NoneType = None + element: Import + names: list + element: alias + name: str = operator_overloading + asname: NoneType = None + element: Import + names: list + element: alias + name: str = properties + asname: NoneType = None + element: Import + names: list + element: alias + name: str = proxies + asname: NoneType = None + element: Import + names: list + element: alias + name: str = reprtest + asname: NoneType = None + element: Import + names: list + element: alias + name: str = set_comprehensions + asname: NoneType = None + element: Import + names: list + element: alias + name: str = simple_and_augmented_assignment + asname: NoneType = None + element: If + test: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = defined + kind: NoneType = None + element: Constant + value: str = __sform__ + kind: NoneType = None + keywords: list + body: list + element: Import + names: list + element: alias + name: str = string_format + asname: NoneType = None + orelse: list + element: Import + names: list + element: alias + name: str = truthyness + asname: NoneType = None + element: Import + names: list + element: alias + name: str = tuple_assignment + asname: NoneType = None + element: Assign + targets: list + element: Name + id: str = autoTester + ctx: Store + value: Call + func: Attribute + value: Attribute + value: Attribute + value: Name + id: str = org + ctx: Load + attr: str = transcrypt + ctx: Load + attr: str = autotester + ctx: Load + attr: str = AutoTester + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = run + ctx: Load + args: list + element: Name + id: str = arguments + ctx: Load + element: Constant + value: str = arguments + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = run + ctx: Load + args: list + element: Name + id: str = attribs_by_name + ctx: Load + element: Constant + value: str = attribs_by_name + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = run + ctx: Load + args: list + element: Name + id: str = builtin_super + ctx: Load + element: Constant + value: str = builtin_super + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = run + ctx: Load + args: list + element: Name + id: str = byte_arrays + ctx: Load + element: Constant + value: str = byte_arrays + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = run + ctx: Load + args: list + element: Name + id: str = callable_test + ctx: Load + element: Constant + value: str = callable + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = run + ctx: Load + args: list + element: Name + id: str = classes + ctx: Load + element: Constant + value: str = classes + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = run + ctx: Load + args: list + element: Name + id: str = complex_numbers + ctx: Load + element: Constant + value: str = complex_numbers + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = run + ctx: Load + args: list + element: Name + id: str = conditional_expressions + ctx: Load + element: Constant + value: str = conditional_expressions + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = run + ctx: Load + args: list + element: Name + id: str = control_structures + ctx: Load + element: Constant + value: str = control_structures + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = run + ctx: Load + args: list + element: Name + id: str = dashed_numbers + ctx: Load + element: Constant + value: str = dashed_numbers + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = run + ctx: Load + args: list + element: Name + id: str = data_classes + ctx: Load + element: Constant + value: str = data_classes + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = run + ctx: Load + args: list + element: Name + id: str = data_structures + ctx: Load + element: Constant + value: str = data_structures + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = run + ctx: Load + args: list + element: Name + id: str = decorators + ctx: Load + element: Constant + value: str = decorators + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = run + ctx: Load + args: list + element: Name + id: str = dict_comprehensions + ctx: Load + element: Constant + value: str = dict_comprehensions + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = run + ctx: Load + args: list + element: Name + id: str = dictionaries + ctx: Load + element: Constant + value: str = dictionaries + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = run + ctx: Load + args: list + element: Name + id: str = div_issues + ctx: Load + element: Constant + value: str = div_issues + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = run + ctx: Load + args: list + element: Name + id: str = div_pulls + ctx: Load + element: Constant + value: str = div_pulls + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = run + ctx: Load + args: list + element: Name + id: str = docstrings + ctx: Load + element: Constant + value: str = docstrings + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = run + ctx: Load + args: list + element: Name + id: str = exceptions + ctx: Load + element: Constant + value: str = exceptions + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = run + ctx: Load + args: list + element: Name + id: str = executable_comments + ctx: Load + element: Constant + value: str = executable_comments + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = run + ctx: Load + args: list + element: Name + id: str = extended_slices + ctx: Load + element: Constant + value: str = extended_slices + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = run + ctx: Load + args: list + element: Name + id: str = fstrings + ctx: Load + element: Constant + value: str = fstrings + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = run + ctx: Load + args: list + element: Name + id: str = general_functions + ctx: Load + element: Constant + value: str = general_functions + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = run + ctx: Load + args: list + element: Name + id: str = globals_function + ctx: Load + element: Constant + value: str = globals_function + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = run + ctx: Load + args: list + element: Name + id: str = indices_and_slices + ctx: Load + element: Constant + value: str = indices_and_slices + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = run + ctx: Load + args: list + element: Name + id: str = iterators_and_generators + ctx: Load + element: Constant + value: str = iterators_and_generators + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = run + ctx: Load + args: list + element: Name + id: str = lambda_functions + ctx: Load + element: Constant + value: str = lambda_functions + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = run + ctx: Load + args: list + element: Name + id: str = list_comprehensions + ctx: Load + element: Constant + value: str = list_comprehensions + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = run + ctx: Load + args: list + element: Name + id: str = local_classes + ctx: Load + element: Constant + value: str = local_classes + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = run + ctx: Load + args: list + element: Name + id: str = metaclasses + ctx: Load + element: Constant + value: str = metaclasses + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = run + ctx: Load + args: list + element: Name + id: str = method_and_class_decorators + ctx: Load + element: Constant + value: str = method_and_class_decorators + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = run + ctx: Load + args: list + element: Name + id: str = module_builtin + ctx: Load + element: Constant + value: str = module_builtin + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = run + ctx: Load + args: list + element: Name + id: str = module_cmath + ctx: Load + element: Constant + value: str = module_cmath + kind: NoneType = None + keywords: list + element: If + test: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = defined + kind: NoneType = None + element: Constant + value: str = undefined + kind: NoneType = None + keywords: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = run + ctx: Load + args: list + element: Name + id: str = module_collections + ctx: Load + element: Constant + value: str = module_collections + kind: NoneType = None + keywords: list + orelse: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = run + ctx: Load + args: list + element: Name + id: str = module_datetime + ctx: Load + element: Constant + value: str = module_datetime + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = run + ctx: Load + args: list + element: Name + id: str = module_itertools + ctx: Load + element: Constant + value: str = module_itertools + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = run + ctx: Load + args: list + element: Name + id: str = module_math + ctx: Load + element: Constant + value: str = module_math + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = run + ctx: Load + args: list + element: Name + id: str = module_unicodedata + ctx: Load + element: Constant + value: str = module_unicodedata + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = run + ctx: Load + args: list + element: Name + id: str = modules + ctx: Load + element: Constant + value: str = modules + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = run + ctx: Load + args: list + element: Name + id: str = nonlocals + ctx: Load + element: Constant + value: str = nonlocals + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = run + ctx: Load + args: list + element: Name + id: str = operator_overloading + ctx: Load + element: Constant + value: str = operator_overloading + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = run + ctx: Load + args: list + element: Name + id: str = properties + ctx: Load + element: Constant + value: str = properties + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = run + ctx: Load + args: list + element: Name + id: str = reprtest + ctx: Load + element: Constant + value: str = repr_str + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = run + ctx: Load + args: list + element: Name + id: str = proxies + ctx: Load + element: Constant + value: str = proxies + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = run + ctx: Load + args: list + element: Name + id: str = set_comprehensions + ctx: Load + element: Constant + value: str = set_comprehensions + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = run + ctx: Load + args: list + element: Name + id: str = simple_and_augmented_assignment + ctx: Load + element: Constant + value: str = simple_and_augmented_assignment + kind: NoneType = None + keywords: list + element: If + test: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = defined + kind: NoneType = None + element: Constant + value: str = __sform__ + kind: NoneType = None + keywords: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = run + ctx: Load + args: list + element: Name + id: str = string_format + ctx: Load + element: Constant + value: str = string_format + kind: NoneType = None + keywords: list + orelse: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = run + ctx: Load + args: list + element: Name + id: str = truthyness + ctx: Load + element: Constant + value: str = truthyness + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = run + ctx: Load + args: list + element: Name + id: str = tuple_assignment + ctx: Load + element: Constant + value: str = tuple_assignment + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = done + ctx: Load + args: list + keywords: list + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/builtin_super.js b/transcrypt/development/automated_tests/transcrypt/__target__39/builtin_super.js new file mode 100644 index 000000000..b340f4672 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/builtin_super.js @@ -0,0 +1,108 @@ +// Transcrypt'ed from Python, 2021-05-14 15:01:26 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get run () {return run;}, set run (value) {run = value;}}); +var __name__ = 'builtin_super'; +export var run = function (autoTester) { + var show = function () { + var args = tuple ([].slice.apply (arguments).slice (0)); + autoTester.check (...args); + }; + var R = __class__ ('R', [object], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self, a, b) { + self.a = a; + self.b = b; + });} + }); + var A = __class__ ('A', [R], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self, a, b, c) { + __super__ (A, '__init__') (self, a, b); + self.c = c; + });}, + get f () {return __get__ (this, function (self, x, y) { + show ('A.f:', x, y, self.a, self.b, self.c); + });}, + get g () {return __get__ (this, function (self, x, y) { + show ('A.g:', x, y); + });} + }); + var B = __class__ ('B', [R], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self, a, b, d) { + __super__ (B, '__init__') (self, a, b); + self.d = d; + });}, + get f () {return __get__ (this, function (self, x, y) { + show ('B.f:', x, y, self.a, self.b, self.d); + });}, + get h () {return __get__ (this, function (self, x, y) { + show ('A.h:', x, y, self.a, self.b, self.d); + });} + }); + var C = __class__ ('C', [A], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self, a, b, c) { + __super__ (C, '__init__') (self, a, b, c); + });}, + get f () {return __get__ (this, function (self, x, y) { + __super__ (C, 'f') (self, x, y); + show ('C.f:', x, y, self.a, self.b, self.c); + });} + }); + var D = __class__ ('D', [B], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self, a, b, d) { + __super__ (D, '__init__') (self, a, b, d); + });}, + get f () {return __get__ (this, function (self, x, y) { + __super__ (D, 'f') (self, x, y); + show ('D.f:', x, y, self.a, self.b, self.d); + });} + }); + var E = __class__ ('E', [C, D], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self, a, b, c, d) { + R.__init__ (self, a, b); + self.c = c; + self.d = d; + });}, + get f () {return __get__ (this, function (self, x, y) { + C.f (self, x, y); + D.f (self, x, y); + show ('E.f:', x, y, self.a, self.b, self.c, self.d); + });}, + get g () {return __get__ (this, function (self, x, y) { + __super__ (E, 'g') (self, x, y); + show ('E.g:', x, y, self.a, self.b, self.c, self.d); + });}, + get h () {return __get__ (this, function (self, x, y) { + __super__ (E, 'h') (self, x, y); + show ('E.h:', x, y, self.a, self.b, self.c, self.d); + });} + }); + var rr = R (100, 200); + show ('--1--'); + var a = A (101, 201, 301); + a.f (711, 811); + a.g (721, 821); + show ('--2--'); + var b = B (102, 202, 302); + b.f (712, 812); + b.h (732, 832); + show ('--3--'); + var c = C (103, 203, 303); + c.f (713, 813); + c.g (723, 823); + show ('--4--'); + var d = D (104, 204, 304); + d.f (714, 814); + d.h (734, 834); + show ('--5--'); + var e = E (105, 205, 305, 405); + e.f (715, 815); + e.g (725, 825); + e.h (735, 835); +}; + +//# sourceMappingURL=builtin_super.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/builtin_super.tree b/transcrypt/development/automated_tests/transcrypt/__target__39/builtin_super.tree new file mode 100644 index 000000000..a00d9dfdb --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/builtin_super.tree @@ -0,0 +1,1466 @@ +file: Module + body: list + element: FunctionDef + name: str = run + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = autoTester + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: FunctionDef + name: str = show + args: arguments + posonlyargs: list + args: list + vararg: arg + arg: str = args + annotation: NoneType = None + type_comment: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Starred + value: Name + id: str = args + ctx: Load + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: ClassDef + name: str = R + bases: list + keywords: list + body: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = a + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = b + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = a + ctx: Store + value: Name + id: str = a + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = b + ctx: Store + value: Name + id: str = b + ctx: Load + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: ClassDef + name: str = A + bases: list + element: Name + id: str = R + ctx: Load + keywords: list + body: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = a + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = b + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = c + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Call + func: Name + id: str = super + ctx: Load + args: list + keywords: list + attr: str = __init__ + ctx: Load + args: list + element: Name + id: str = a + ctx: Load + element: Name + id: str = b + ctx: Load + keywords: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = c + ctx: Store + value: Name + id: str = c + ctx: Load + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = f + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = y + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Name + id: str = show + ctx: Load + args: list + element: Constant + value: str = A.f: + kind: NoneType = None + element: Name + id: str = x + ctx: Load + element: Name + id: str = y + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = a + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = b + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = c + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = g + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = y + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Name + id: str = show + ctx: Load + args: list + element: Constant + value: str = A.g: + kind: NoneType = None + element: Name + id: str = x + ctx: Load + element: Name + id: str = y + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: ClassDef + name: str = B + bases: list + element: Name + id: str = R + ctx: Load + keywords: list + body: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = a + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = b + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = d + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Call + func: Name + id: str = super + ctx: Load + args: list + keywords: list + attr: str = __init__ + ctx: Load + args: list + element: Name + id: str = a + ctx: Load + element: Name + id: str = b + ctx: Load + keywords: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = d + ctx: Store + value: Name + id: str = d + ctx: Load + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = f + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = y + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Name + id: str = show + ctx: Load + args: list + element: Constant + value: str = B.f: + kind: NoneType = None + element: Name + id: str = x + ctx: Load + element: Name + id: str = y + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = a + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = b + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = d + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = h + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = y + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Name + id: str = show + ctx: Load + args: list + element: Constant + value: str = A.h: + kind: NoneType = None + element: Name + id: str = x + ctx: Load + element: Name + id: str = y + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = a + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = b + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = d + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: ClassDef + name: str = C + bases: list + element: Name + id: str = A + ctx: Load + keywords: list + body: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = a + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = b + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = c + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Call + func: Name + id: str = super + ctx: Load + args: list + keywords: list + attr: str = __init__ + ctx: Load + args: list + element: Name + id: str = a + ctx: Load + element: Name + id: str = b + ctx: Load + element: Name + id: str = c + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = f + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = y + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Call + func: Name + id: str = super + ctx: Load + args: list + keywords: list + attr: str = f + ctx: Load + args: list + element: Name + id: str = x + ctx: Load + element: Name + id: str = y + ctx: Load + keywords: list + element: Expr + value: Call + func: Name + id: str = show + ctx: Load + args: list + element: Constant + value: str = C.f: + kind: NoneType = None + element: Name + id: str = x + ctx: Load + element: Name + id: str = y + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = a + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = b + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = c + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: ClassDef + name: str = D + bases: list + element: Name + id: str = B + ctx: Load + keywords: list + body: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = a + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = b + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = d + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Call + func: Name + id: str = super + ctx: Load + args: list + keywords: list + attr: str = __init__ + ctx: Load + args: list + element: Name + id: str = a + ctx: Load + element: Name + id: str = b + ctx: Load + element: Name + id: str = d + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = f + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = y + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Call + func: Name + id: str = super + ctx: Load + args: list + keywords: list + attr: str = f + ctx: Load + args: list + element: Name + id: str = x + ctx: Load + element: Name + id: str = y + ctx: Load + keywords: list + element: Expr + value: Call + func: Name + id: str = show + ctx: Load + args: list + element: Constant + value: str = D.f: + kind: NoneType = None + element: Name + id: str = x + ctx: Load + element: Name + id: str = y + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = a + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = b + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = d + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: ClassDef + name: str = E + bases: list + element: Name + id: str = C + ctx: Load + element: Name + id: str = D + ctx: Load + keywords: list + body: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = a + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = b + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = c + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = d + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = R + ctx: Load + attr: str = __init__ + ctx: Load + args: list + element: Name + id: str = self + ctx: Load + element: Name + id: str = a + ctx: Load + element: Name + id: str = b + ctx: Load + keywords: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = c + ctx: Store + value: Name + id: str = c + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = d + ctx: Store + value: Name + id: str = d + ctx: Load + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = f + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = y + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = C + ctx: Load + attr: str = f + ctx: Load + args: list + element: Name + id: str = self + ctx: Load + element: Name + id: str = x + ctx: Load + element: Name + id: str = y + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = D + ctx: Load + attr: str = f + ctx: Load + args: list + element: Name + id: str = self + ctx: Load + element: Name + id: str = x + ctx: Load + element: Name + id: str = y + ctx: Load + keywords: list + element: Expr + value: Call + func: Name + id: str = show + ctx: Load + args: list + element: Constant + value: str = E.f: + kind: NoneType = None + element: Name + id: str = x + ctx: Load + element: Name + id: str = y + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = a + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = b + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = c + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = d + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = g + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = y + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Call + func: Name + id: str = super + ctx: Load + args: list + keywords: list + attr: str = g + ctx: Load + args: list + element: Name + id: str = x + ctx: Load + element: Name + id: str = y + ctx: Load + keywords: list + element: Expr + value: Call + func: Name + id: str = show + ctx: Load + args: list + element: Constant + value: str = E.g: + kind: NoneType = None + element: Name + id: str = x + ctx: Load + element: Name + id: str = y + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = a + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = b + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = c + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = d + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = h + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = y + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Call + func: Name + id: str = super + ctx: Load + args: list + keywords: list + attr: str = h + ctx: Load + args: list + element: Name + id: str = x + ctx: Load + element: Name + id: str = y + ctx: Load + keywords: list + element: Expr + value: Call + func: Name + id: str = show + ctx: Load + args: list + element: Constant + value: str = E.h: + kind: NoneType = None + element: Name + id: str = x + ctx: Load + element: Name + id: str = y + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = a + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = b + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = c + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = d + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: Assign + targets: list + element: Name + id: str = rr + ctx: Store + value: Call + func: Name + id: str = R + ctx: Load + args: list + element: Constant + value: int = 100 + kind: NoneType = None + element: Constant + value: int = 200 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = show + ctx: Load + args: list + element: Constant + value: str = --1-- + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = a + ctx: Store + value: Call + func: Name + id: str = A + ctx: Load + args: list + element: Constant + value: int = 101 + kind: NoneType = None + element: Constant + value: int = 201 + kind: NoneType = None + element: Constant + value: int = 301 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = a + ctx: Load + attr: str = f + ctx: Load + args: list + element: Constant + value: int = 711 + kind: NoneType = None + element: Constant + value: int = 811 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = a + ctx: Load + attr: str = g + ctx: Load + args: list + element: Constant + value: int = 721 + kind: NoneType = None + element: Constant + value: int = 821 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Name + id: str = show + ctx: Load + args: list + element: Constant + value: str = --2-- + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = b + ctx: Store + value: Call + func: Name + id: str = B + ctx: Load + args: list + element: Constant + value: int = 102 + kind: NoneType = None + element: Constant + value: int = 202 + kind: NoneType = None + element: Constant + value: int = 302 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = b + ctx: Load + attr: str = f + ctx: Load + args: list + element: Constant + value: int = 712 + kind: NoneType = None + element: Constant + value: int = 812 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = b + ctx: Load + attr: str = h + ctx: Load + args: list + element: Constant + value: int = 732 + kind: NoneType = None + element: Constant + value: int = 832 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Name + id: str = show + ctx: Load + args: list + element: Constant + value: str = --3-- + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = c + ctx: Store + value: Call + func: Name + id: str = C + ctx: Load + args: list + element: Constant + value: int = 103 + kind: NoneType = None + element: Constant + value: int = 203 + kind: NoneType = None + element: Constant + value: int = 303 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = c + ctx: Load + attr: str = f + ctx: Load + args: list + element: Constant + value: int = 713 + kind: NoneType = None + element: Constant + value: int = 813 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = c + ctx: Load + attr: str = g + ctx: Load + args: list + element: Constant + value: int = 723 + kind: NoneType = None + element: Constant + value: int = 823 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Name + id: str = show + ctx: Load + args: list + element: Constant + value: str = --4-- + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = d + ctx: Store + value: Call + func: Name + id: str = D + ctx: Load + args: list + element: Constant + value: int = 104 + kind: NoneType = None + element: Constant + value: int = 204 + kind: NoneType = None + element: Constant + value: int = 304 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = d + ctx: Load + attr: str = f + ctx: Load + args: list + element: Constant + value: int = 714 + kind: NoneType = None + element: Constant + value: int = 814 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = d + ctx: Load + attr: str = h + ctx: Load + args: list + element: Constant + value: int = 734 + kind: NoneType = None + element: Constant + value: int = 834 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Name + id: str = show + ctx: Load + args: list + element: Constant + value: str = --5-- + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = e + ctx: Store + value: Call + func: Name + id: str = E + ctx: Load + args: list + element: Constant + value: int = 105 + kind: NoneType = None + element: Constant + value: int = 205 + kind: NoneType = None + element: Constant + value: int = 305 + kind: NoneType = None + element: Constant + value: int = 405 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = e + ctx: Load + attr: str = f + ctx: Load + args: list + element: Constant + value: int = 715 + kind: NoneType = None + element: Constant + value: int = 815 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = e + ctx: Load + attr: str = g + ctx: Load + args: list + element: Constant + value: int = 725 + kind: NoneType = None + element: Constant + value: int = 825 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = e + ctx: Load + attr: str = h + ctx: Load + args: list + element: Constant + value: int = 735 + kind: NoneType = None + element: Constant + value: int = 835 + kind: NoneType = None + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/byte_arrays.js b/transcrypt/development/automated_tests/transcrypt/__target__39/byte_arrays.js new file mode 100644 index 000000000..f93b96f86 Binary files /dev/null and b/transcrypt/development/automated_tests/transcrypt/__target__39/byte_arrays.js differ diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/byte_arrays.tree b/transcrypt/development/automated_tests/transcrypt/__target__39/byte_arrays.tree new file mode 100644 index 000000000..64ae36f9d --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/byte_arrays.tree @@ -0,0 +1,437 @@ +file: Module + body: list + element: FunctionDef + name: str = run + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = autoTester + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Name + id: str = b + ctx: Store + value: Constant + value: bytes = b'bike' + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = s + ctx: Store + value: Call + func: Name + id: str = bytes + ctx: Load + args: list + element: Constant + value: str = shop + kind: NoneType = None + element: Constant + value: str = utf8 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = e + ctx: Store + value: Constant + value: bytes = b'' + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = bb + ctx: Store + value: Call + func: Name + id: str = bytearray + ctx: Load + args: list + element: List + elts: list + element: Constant + value: int = 0 + kind: NoneType = None + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + element: Constant + value: int = 4 + kind: NoneType = None + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = bc + ctx: Store + value: Call + func: Name + id: str = bytes + ctx: Load + args: list + element: Tuple + elts: list + element: Constant + value: int = 5 + kind: NoneType = None + element: Constant + value: int = 6 + kind: NoneType = None + element: Constant + value: int = 7 + kind: NoneType = None + element: Constant + value: int = 8 + kind: NoneType = None + element: Constant + value: int = 9 + kind: NoneType = None + ctx: Load + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = opov + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = bps + ctx: Store + value: BinOp + left: BinOp + left: Name + id: str = b + ctx: Load + op: Add + right: Constant + value: bytes = b'pump' + kind: NoneType = None + op: Add + right: Name + id: str = s + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = bps3 + ctx: Store + value: BinOp + left: BinOp + left: Constant + value: int = 3 + kind: NoneType = None + op: Mult + right: Name + id: str = bps + ctx: Load + op: Add + right: Constant + value: bytes = b'\x00' + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = aBps3 + ctx: Store + value: BinOp + left: BinOp + left: Name + id: str = bps + ctx: Load + op: Mult + right: Constant + value: int = 3 + kind: NoneType = None + op: Add + right: Constant + value: bytes = b'\x00' + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = l + ctx: Store + value: BinOp + left: List + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + op: Add + right: List + elts: list + element: Constant + value: int = 4 + kind: NoneType = None + element: Constant + value: int = 5 + kind: NoneType = None + element: Constant + value: int = 6 + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = noopov + kind: NoneType = None + keywords: list + element: FunctionDef + name: str = formatCheck + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = aBytes + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: ListComp + elt: Call + func: Name + id: str = int + ctx: Load + args: list + element: Name + id: str = aByte + ctx: Load + keywords: list + generators: list + element: comprehension + target: Name + id: str = aByte + ctx: Store + iter: Name + id: str = aBytes + ctx: Load + ifs: list + is_async: int = 0 + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = formatCheck + ctx: Load + args: list + element: Name + id: str = b + ctx: Load + keywords: list + element: Expr + value: Call + func: Name + id: str = formatCheck + ctx: Load + args: list + element: Name + id: str = s + ctx: Load + keywords: list + element: Expr + value: Call + func: Name + id: str = formatCheck + ctx: Load + args: list + element: Name + id: str = e + ctx: Load + keywords: list + element: Expr + value: Call + func: Name + id: str = formatCheck + ctx: Load + args: list + element: Name + id: str = bb + ctx: Load + keywords: list + element: Expr + value: Call + func: Name + id: str = formatCheck + ctx: Load + args: list + element: Name + id: str = bc + ctx: Load + keywords: list + element: Expr + value: Call + func: Name + id: str = formatCheck + ctx: Load + args: list + element: Name + id: str = bps + ctx: Load + keywords: list + element: Expr + value: Call + func: Name + id: str = formatCheck + ctx: Load + args: list + element: Name + id: str = bps3 + ctx: Load + keywords: list + element: Expr + value: Call + func: Name + id: str = formatCheck + ctx: Load + args: list + element: Name + id: str = aBps3 + ctx: Load + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = opov + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Name + id: str = formatCheck + ctx: Load + args: list + element: BinOp + left: Name + id: str = bb + ctx: Load + op: Add + right: Name + id: str = bc + ctx: Load + keywords: list + element: Expr + value: Call + func: Name + id: str = formatCheck + ctx: Load + args: list + element: BinOp + left: BinOp + left: Call + func: Name + id: str = bytearray + ctx: Load + args: list + element: Constant + value: str = ding + kind: NoneType = None + element: Constant + value: str = utf8 + kind: NoneType = None + keywords: list + op: Add + right: Constant + value: bytes = b'dang' + kind: NoneType = None + op: Add + right: Call + func: Name + id: str = bytes + ctx: Load + args: list + element: Constant + value: str = dong + kind: NoneType = None + element: Constant + value: str = utf8 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = noopov + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Name + id: str = formatCheck + ctx: Load + args: list + element: Name + id: str = l + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/callable_test.js b/transcrypt/development/automated_tests/transcrypt/__target__39/callable_test.js new file mode 100644 index 000000000..8925a56de --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/callable_test.js @@ -0,0 +1,107 @@ +// Transcrypt'ed from Python, 2021-05-14 15:01:26 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get run () {return run;}, set run (value) {run = value;}}); +var __name__ = 'callable_test'; +export var run = function (test) { + var func = function (a, b) { + return a * b; + }; + test.check (func (3, 4)); + test.check (callable (func)); + for (var a of tuple ([true, false])) { + test.check (callable (a)); + } + var a = 1; + test.check (callable (a)); + var a = 2.3; + test.check (callable (a)); + var a = 'asdf'; + test.check (callable (a)); + var a = []; + test.check (callable (a)); + var a = [1, 2, 3, 3]; + test.check (callable (a)); + var a = ['asdf', 'qwer', 'zxcv']; + test.check (callable (a)); + var a = dict ({'asdf': 1, 'qwer': 2}); + test.check (callable (a)); + var a = set ([1, 2]); + test.check (callable (a)); + var CallObj = __class__ ('CallObj', [object], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self, r) { + self._r = r; + });}, + get __call__ () {return __get__ (this, function (self) { + return self._r; + });} + }); + (function () { + var __accu0__ = test; + return __call__ (__accu0__.check, __accu0__, __call__ (callable, null, CallObj)); + }) (); + var obj = __call__ (CallObj, null, 2); + (function () { + var __accu0__ = test; + return __call__ (__accu0__.check, __accu0__, __call__ (obj, null)); + }) (); + (function () { + var __accu0__ = test; + return __call__ (__accu0__.check, __accu0__, __call__ (callable, null, obj)); + }) (); + (function () { + var __accu0__ = test; + return __call__ (__accu0__.check, __accu0__, __call__ (callable, null, obj._r)); + }) (); + var NonCallObj = __class__ ('NonCallObj', [object], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self, b) { + self._b = b; + });}, + get func () {return __get__ (this, function (self) { + return self._b; + });} + }); + (function () { + var __accu0__ = test; + return __call__ (__accu0__.check, __accu0__, __call__ (callable, null, NonCallObj)); + }) (); + var obj2 = __call__ (NonCallObj, null, 2); + (function () { + var __accu0__ = test; + return __call__ (__accu0__.check, __accu0__, __call__ (callable, null, obj2)); + }) (); + (function () { + var __accu0__ = test; + return __call__ (__accu0__.check, __accu0__, __call__ (callable, null, obj2._b)); + }) (); + (function () { + var __accu0__ = test; + return __call__ (__accu0__.check, __accu0__, __call__ (callable, null, obj2.func)); + }) (); + var NonOpovNonCallObj = __class__ ('NonOpovNonCallObj', [object], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self, c) { + self._c = c; + });}, + get other () {return __get__ (this, function (self, b) { + return self._c * b; + });}, + get _getC () {return __get__ (this, function (self) { + return self._c; + });}, + get _setC () {return __get__ (this, function (self, val) { + self._c = val; + });} + }); + Object.defineProperty (NonOpovNonCallObj, 'C', property.call (NonOpovNonCallObj, NonOpovNonCallObj._getC, NonOpovNonCallObj._setC)); + var obj = NonOpovNonCallObj (4); + test.check (callable (obj)); + test.check (callable (obj.other)); + test.check (callable (obj._c)); + test.check (callable (obj.C)); + var exc = Exception ('asdf'); + test.check (callable (exc)); +}; + +//# sourceMappingURL=callable_test.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/callable_test.tree b/transcrypt/development/automated_tests/transcrypt/__target__39/callable_test.tree new file mode 100644 index 000000000..49a367121 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/callable_test.tree @@ -0,0 +1,1046 @@ +file: Module + body: list + element: ImportFrom + module: str = org.transcrypt.stubs.browser + names: list + element: alias + name: str = __pragma__ + asname: NoneType = None + level: int = 0 + element: FunctionDef + name: str = run + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = test + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = + + kind: NoneType = None + element: FunctionDef + name: str = func + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = a + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = b + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: BinOp + left: Name + id: str = a + ctx: Load + op: Mult + right: Name + id: str = b + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = func + ctx: Load + args: list + element: Constant + value: int = 3 + kind: NoneType = None + element: Constant + value: int = 4 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = callable + ctx: Load + args: list + element: Name + id: str = func + ctx: Load + keywords: list + keywords: list + element: For + target: Name + id: str = a + ctx: Store + iter: Tuple + elts: list + element: Constant + value: bool = True + kind: NoneType = None + element: Constant + value: bool = False + kind: NoneType = None + ctx: Load + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = callable + ctx: Load + args: list + element: Name + id: str = a + ctx: Load + keywords: list + keywords: list + orelse: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = a + ctx: Store + value: Constant + value: int = 1 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = callable + ctx: Load + args: list + element: Name + id: str = a + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = a + ctx: Store + value: Constant + value: float = 2.3 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = callable + ctx: Load + args: list + element: Name + id: str = a + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = a + ctx: Store + value: Constant + value: str = asdf + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = callable + ctx: Load + args: list + element: Name + id: str = a + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = a + ctx: Store + value: List + elts: list + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = callable + ctx: Load + args: list + element: Name + id: str = a + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = a + ctx: Store + value: List + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = callable + ctx: Load + args: list + element: Name + id: str = a + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = a + ctx: Store + value: List + elts: list + element: Constant + value: str = asdf + kind: NoneType = None + element: Constant + value: str = qwer + kind: NoneType = None + element: Constant + value: str = zxcv + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = callable + ctx: Load + args: list + element: Name + id: str = a + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = a + ctx: Store + value: Dict + keys: list + element: Constant + value: str = asdf + kind: NoneType = None + element: Constant + value: str = qwer + kind: NoneType = None + values: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = callable + ctx: Load + args: list + element: Name + id: str = a + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = a + ctx: Store + value: Call + func: Name + id: str = set + ctx: Load + args: list + element: List + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + ctx: Load + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = callable + ctx: Load + args: list + element: Name + id: str = a + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = opov + kind: NoneType = None + keywords: list + element: ClassDef + name: str = CallObj + bases: list + element: Name + id: str = object + ctx: Load + keywords: list + body: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = r + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _r + ctx: Store + value: Name + id: str = r + ctx: Load + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __call__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _r + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = callable + ctx: Load + args: list + element: Name + id: str = CallObj + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = obj + ctx: Store + value: Call + func: Name + id: str = CallObj + ctx: Load + args: list + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = obj + ctx: Load + args: list + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = callable + ctx: Load + args: list + element: Name + id: str = obj + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = callable + ctx: Load + args: list + element: Attribute + value: Name + id: str = obj + ctx: Load + attr: str = _r + ctx: Load + keywords: list + keywords: list + element: ClassDef + name: str = NonCallObj + bases: list + element: Name + id: str = object + ctx: Load + keywords: list + body: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = b + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _b + ctx: Store + value: Name + id: str = b + ctx: Load + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = func + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _b + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = callable + ctx: Load + args: list + element: Name + id: str = NonCallObj + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = obj2 + ctx: Store + value: Call + func: Name + id: str = NonCallObj + ctx: Load + args: list + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = callable + ctx: Load + args: list + element: Name + id: str = obj2 + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = callable + ctx: Load + args: list + element: Attribute + value: Name + id: str = obj2 + ctx: Load + attr: str = _b + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = callable + ctx: Load + args: list + element: Attribute + value: Name + id: str = obj2 + ctx: Load + attr: str = func + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = noopov + kind: NoneType = None + keywords: list + element: ClassDef + name: str = NonOpovNonCallObj + bases: list + element: Name + id: str = object + ctx: Load + keywords: list + body: list + element: Expr + value: Constant + value: str = + + kind: NoneType = None + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = c + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _c + ctx: Store + value: Name + id: str = c + ctx: Load + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = other + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = b + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: BinOp + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _c + ctx: Load + op: Mult + right: Name + id: str = b + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = _getC + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _c + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = _setC + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = val + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _c + ctx: Store + value: Name + id: str = val + ctx: Load + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = C + ctx: Store + value: Call + func: Name + id: str = property + ctx: Load + args: list + element: Name + id: str = _getC + ctx: Load + element: Name + id: str = _setC + ctx: Load + keywords: list + type_comment: NoneType = None + decorator_list: list + element: Assign + targets: list + element: Name + id: str = obj + ctx: Store + value: Call + func: Name + id: str = NonOpovNonCallObj + ctx: Load + args: list + element: Constant + value: int = 4 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = callable + ctx: Load + args: list + element: Name + id: str = obj + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = callable + ctx: Load + args: list + element: Attribute + value: Name + id: str = obj + ctx: Load + attr: str = other + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = callable + ctx: Load + args: list + element: Attribute + value: Name + id: str = obj + ctx: Load + attr: str = _c + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = callable + ctx: Load + args: list + element: Attribute + value: Name + id: str = obj + ctx: Load + attr: str = C + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = exc + ctx: Store + value: Call + func: Name + id: str = Exception + ctx: Load + args: list + element: Constant + value: str = asdf + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = callable + ctx: Load + args: list + element: Name + id: str = exc + ctx: Load + keywords: list + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/classes.js b/transcrypt/development/automated_tests/transcrypt/__target__39/classes.js new file mode 100644 index 000000000..7dd242f12 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/classes.js @@ -0,0 +1,125 @@ +// Transcrypt'ed from Python, 2021-05-14 15:01:26 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get run () {return run;}, set run (value) {run = value;}}); +var __name__ = 'classes'; +export var run = function (autoTester) { + autoTester.check ('
General
'); + var A = __class__ ('A', [object], { + __module__: __name__, + p: 123, + get __init__ () {return __get__ (this, function (self, x) { + self.x = x; + autoTester.check (self.p); + });}, + get show () {return __get__ (this, function (self, label) { + autoTester.check ('A.show', label, self.x); + });}, + get show2 () {return __get__ (this, function (self, label) { + autoTester.check ('A.show2', label, self.x); + });} + }); + var B = __class__ ('B', [object], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self, y) { + autoTester.check ('In B constructor'); + self.y = y; + autoTester.check (self.p); + });}, + get show () {return __get__ (this, function (self, label) { + autoTester.check ('B.show', label, self.y); + });} + }); + var __left0__ = tuple ([456, 789]); + B.p = __left0__ [0]; + B.q = __left0__ [1]; + var C = __class__ ('C', [A, B], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self, x, y) { + autoTester.check ('In C constructor'); + A.__init__ (self, x); + B.__init__ (self, y); + });}, + get show () {return __get__ (this, function (self, label) { + A.show (self, label); + B.show (self, label); + autoTester.check ('C.show', label, self.x, self.y); + });} + }); + var a = A (1001); + a.show ('america'); + autoTester.check (A.p); + autoTester.check (a.p); + var b = B (2002); + b.show ('russia'); + autoTester.check (B.p); + autoTester.check (b.p); + autoTester.check (b.q); + autoTester.check (A.p); + autoTester.check (a.p); + var c = C (3003, 4004); + c.show ('netherlands'); + autoTester.check (C.p); + autoTester.check (c.p); + autoTester.check (c.q); + c.show2 ('amsterdam'); + A.show2 (c, 'rotterdam'); + var show3 = c.show; + show3 ('copy'); + autoTester.check (hasattr (a, 'x')); + autoTester.check (hasattr (a, 'y')); + autoTester.check (hasattr (a, 'p')); + autoTester.check (hasattr (a, 'q')); + autoTester.check ('

Augmented isinstance and issubclass
'); + var simpleTypes = tuple ([dict, list, A, B, C, bool, str, float, int, object]); + var tupleTypes = tuple ([tuple ([dict, list]), tuple ([bool, int]), tuple ([bool, A]), tuple ([C, B]), tuple ([B, object])]); + for (var [i, types] of enumerate (tuple ([simpleTypes, tupleTypes]))) { + for (var [j, aType] of enumerate (types)) { + for (var [k, anObject] of enumerate (tuple ([dict ({'a': 1}), [], a, C, c, C, b, true, 'a', 1, 1.2]))) { + autoTester.check (i, j, k, isinstance (anObject, aType)); + if (types == simpleTypes) { + autoTester.check (i, j, k, isinstance (anObject, simpleTypes)); + } + } + } + } + for (var [i, types] of enumerate (tuple ([simpleTypes, tupleTypes]))) { + for (var [j, aType] of enumerate (types)) { + for (var [k, aClass] of enumerate (tuple ([dict, list, A, C, B, bool, str, int, float]))) { + autoTester.check (i + 2, j, k, issubclass (aClass, aType)); + if (types == simpleTypes) { + autoTester.check (i + 2, j, k, issubclass (aClass, simpleTypes)); + } + } + } + } + autoTester.check ('

Method resolution order
'); + var mro = function (aClass, result) { + if (typeof result == 'undefined' || (result != null && result.hasOwnProperty ("__kwargtrans__"))) {; + var result = null; + }; + var last = 0; + if (result === null) { + var result = [aClass]; + var last = 1; + } + for (var aBase of aClass.__bases__) { + if (!(__in__ (aBase, result)) && aBase != object) { + result.append (aBase); + mro (aBase, result); + } + } + if (last && __in__ (object, aClass.__bases__)) { + aRoot.append (object); + } + return result; + }; + autoTester.check ((function () { + var __accu0__ = []; + for (var aClass of mro (C)) { + __accu0__.append (aClass.__name__); + } + return __accu0__; + }) ()); +}; + +//# sourceMappingURL=classes.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/classes.tree b/transcrypt/development/automated_tests/transcrypt/__target__39/classes.tree new file mode 100644 index 000000000..87d04ecf5 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/classes.tree @@ -0,0 +1,1572 @@ +file: Module + body: list + element: FunctionDef + name: str = run + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = autoTester + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str =
General
+ kind: NoneType = None + keywords: list + element: ClassDef + name: str = A + bases: list + keywords: list + body: list + element: Assign + targets: list + element: Name + id: str = p + ctx: Store + value: Constant + value: int = 123 + kind: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = x + ctx: Store + value: Name + id: str = x + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = p + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = show + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = label + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = A.show + kind: NoneType = None + element: Name + id: str = label + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = x + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = show2 + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = label + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = A.show2 + kind: NoneType = None + element: Name + id: str = label + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = x + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: ClassDef + name: str = B + bases: list + keywords: list + body: list + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = p + ctx: Store + element: Name + id: str = q + ctx: Store + ctx: Store + value: Tuple + elts: list + element: Constant + value: int = 456 + kind: NoneType = None + element: Constant + value: int = 789 + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = y + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = In B constructor + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = y + ctx: Store + value: Name + id: str = y + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = p + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = show + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = label + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = B.show + kind: NoneType = None + element: Name + id: str = label + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = y + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: ClassDef + name: str = C + bases: list + element: Name + id: str = A + ctx: Load + element: Name + id: str = B + ctx: Load + keywords: list + body: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = y + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = In C constructor + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = A + ctx: Load + attr: str = __init__ + ctx: Load + args: list + element: Name + id: str = self + ctx: Load + element: Name + id: str = x + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = B + ctx: Load + attr: str = __init__ + ctx: Load + args: list + element: Name + id: str = self + ctx: Load + element: Name + id: str = y + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = show + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = label + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = A + ctx: Load + attr: str = show + ctx: Load + args: list + element: Name + id: str = self + ctx: Load + element: Name + id: str = label + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = B + ctx: Load + attr: str = show + ctx: Load + args: list + element: Name + id: str = self + ctx: Load + element: Name + id: str = label + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = C.show + kind: NoneType = None + element: Name + id: str = label + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = x + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = y + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: Assign + targets: list + element: Name + id: str = a + ctx: Store + value: Call + func: Name + id: str = A + ctx: Load + args: list + element: Constant + value: int = 1001 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = a + ctx: Load + attr: str = show + ctx: Load + args: list + element: Constant + value: str = america + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = A + ctx: Load + attr: str = p + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = a + ctx: Load + attr: str = p + ctx: Load + keywords: list + element: Assign + targets: list + element: Name + id: str = b + ctx: Store + value: Call + func: Name + id: str = B + ctx: Load + args: list + element: Constant + value: int = 2002 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = b + ctx: Load + attr: str = show + ctx: Load + args: list + element: Constant + value: str = russia + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = B + ctx: Load + attr: str = p + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = b + ctx: Load + attr: str = p + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = b + ctx: Load + attr: str = q + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = A + ctx: Load + attr: str = p + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = a + ctx: Load + attr: str = p + ctx: Load + keywords: list + element: Assign + targets: list + element: Name + id: str = c + ctx: Store + value: Call + func: Name + id: str = C + ctx: Load + args: list + element: Constant + value: int = 3003 + kind: NoneType = None + element: Constant + value: int = 4004 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = c + ctx: Load + attr: str = show + ctx: Load + args: list + element: Constant + value: str = netherlands + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = C + ctx: Load + attr: str = p + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = c + ctx: Load + attr: str = p + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = c + ctx: Load + attr: str = q + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = c + ctx: Load + attr: str = show2 + ctx: Load + args: list + element: Constant + value: str = amsterdam + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = A + ctx: Load + attr: str = show2 + ctx: Load + args: list + element: Name + id: str = c + ctx: Load + element: Constant + value: str = rotterdam + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = show3 + ctx: Store + value: Attribute + value: Name + id: str = c + ctx: Load + attr: str = show + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = show3 + ctx: Load + args: list + element: Constant + value: str = copy + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = hasattr + ctx: Load + args: list + element: Name + id: str = a + ctx: Load + element: Constant + value: str = x + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = hasattr + ctx: Load + args: list + element: Name + id: str = a + ctx: Load + element: Constant + value: str = y + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = hasattr + ctx: Load + args: list + element: Name + id: str = a + ctx: Load + element: Constant + value: str = p + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = hasattr + ctx: Load + args: list + element: Name + id: str = a + ctx: Load + element: Constant + value: str = q + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str =

Augmented isinstance and issubclass
+ kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = simpleTypes + ctx: Store + value: Tuple + elts: list + element: Name + id: str = dict + ctx: Load + element: Name + id: str = list + ctx: Load + element: Name + id: str = A + ctx: Load + element: Name + id: str = B + ctx: Load + element: Name + id: str = C + ctx: Load + element: Name + id: str = bool + ctx: Load + element: Name + id: str = str + ctx: Load + element: Name + id: str = float + ctx: Load + element: Name + id: str = int + ctx: Load + element: Name + id: str = object + ctx: Load + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = tupleTypes + ctx: Store + value: Tuple + elts: list + element: Tuple + elts: list + element: Name + id: str = dict + ctx: Load + element: Name + id: str = list + ctx: Load + ctx: Load + element: Tuple + elts: list + element: Name + id: str = bool + ctx: Load + element: Name + id: str = int + ctx: Load + ctx: Load + element: Tuple + elts: list + element: Name + id: str = bool + ctx: Load + element: Name + id: str = A + ctx: Load + ctx: Load + element: Tuple + elts: list + element: Name + id: str = C + ctx: Load + element: Name + id: str = B + ctx: Load + ctx: Load + element: Tuple + elts: list + element: Name + id: str = B + ctx: Load + element: Name + id: str = object + ctx: Load + ctx: Load + ctx: Load + type_comment: NoneType = None + element: For + target: Tuple + elts: list + element: Name + id: str = i + ctx: Store + element: Name + id: str = types + ctx: Store + ctx: Store + iter: Call + func: Name + id: str = enumerate + ctx: Load + args: list + element: Tuple + elts: list + element: Name + id: str = simpleTypes + ctx: Load + element: Name + id: str = tupleTypes + ctx: Load + ctx: Load + keywords: list + body: list + element: For + target: Tuple + elts: list + element: Name + id: str = j + ctx: Store + element: Name + id: str = aType + ctx: Store + ctx: Store + iter: Call + func: Name + id: str = enumerate + ctx: Load + args: list + element: Name + id: str = types + ctx: Load + keywords: list + body: list + element: For + target: Tuple + elts: list + element: Name + id: str = k + ctx: Store + element: Name + id: str = anObject + ctx: Store + ctx: Store + iter: Call + func: Name + id: str = enumerate + ctx: Load + args: list + element: Tuple + elts: list + element: Dict + keys: list + element: Constant + value: str = a + kind: NoneType = None + values: list + element: Constant + value: int = 1 + kind: NoneType = None + element: List + elts: list + ctx: Load + element: Name + id: str = a + ctx: Load + element: Name + id: str = C + ctx: Load + element: Name + id: str = c + ctx: Load + element: Name + id: str = C + ctx: Load + element: Name + id: str = b + ctx: Load + element: Constant + value: bool = True + kind: NoneType = None + element: Constant + value: str = a + kind: NoneType = None + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: float = 1.2 + kind: NoneType = None + ctx: Load + keywords: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = i + ctx: Load + element: Name + id: str = j + ctx: Load + element: Name + id: str = k + ctx: Load + element: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = anObject + ctx: Load + element: Name + id: str = aType + ctx: Load + keywords: list + keywords: list + element: If + test: Compare + left: Name + id: str = types + ctx: Load + ops: list + element: Eq + comparators: list + element: Name + id: str = simpleTypes + ctx: Load + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = i + ctx: Load + element: Name + id: str = j + ctx: Load + element: Name + id: str = k + ctx: Load + element: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = anObject + ctx: Load + element: Name + id: str = simpleTypes + ctx: Load + keywords: list + keywords: list + orelse: list + orelse: list + type_comment: NoneType = None + orelse: list + type_comment: NoneType = None + orelse: list + type_comment: NoneType = None + element: For + target: Tuple + elts: list + element: Name + id: str = i + ctx: Store + element: Name + id: str = types + ctx: Store + ctx: Store + iter: Call + func: Name + id: str = enumerate + ctx: Load + args: list + element: Tuple + elts: list + element: Name + id: str = simpleTypes + ctx: Load + element: Name + id: str = tupleTypes + ctx: Load + ctx: Load + keywords: list + body: list + element: For + target: Tuple + elts: list + element: Name + id: str = j + ctx: Store + element: Name + id: str = aType + ctx: Store + ctx: Store + iter: Call + func: Name + id: str = enumerate + ctx: Load + args: list + element: Name + id: str = types + ctx: Load + keywords: list + body: list + element: For + target: Tuple + elts: list + element: Name + id: str = k + ctx: Store + element: Name + id: str = aClass + ctx: Store + ctx: Store + iter: Call + func: Name + id: str = enumerate + ctx: Load + args: list + element: Tuple + elts: list + element: Name + id: str = dict + ctx: Load + element: Name + id: str = list + ctx: Load + element: Name + id: str = A + ctx: Load + element: Name + id: str = C + ctx: Load + element: Name + id: str = B + ctx: Load + element: Name + id: str = bool + ctx: Load + element: Name + id: str = str + ctx: Load + element: Name + id: str = int + ctx: Load + element: Name + id: str = float + ctx: Load + ctx: Load + keywords: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BinOp + left: Name + id: str = i + ctx: Load + op: Add + right: Constant + value: int = 2 + kind: NoneType = None + element: Name + id: str = j + ctx: Load + element: Name + id: str = k + ctx: Load + element: Call + func: Name + id: str = issubclass + ctx: Load + args: list + element: Name + id: str = aClass + ctx: Load + element: Name + id: str = aType + ctx: Load + keywords: list + keywords: list + element: If + test: Compare + left: Name + id: str = types + ctx: Load + ops: list + element: Eq + comparators: list + element: Name + id: str = simpleTypes + ctx: Load + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BinOp + left: Name + id: str = i + ctx: Load + op: Add + right: Constant + value: int = 2 + kind: NoneType = None + element: Name + id: str = j + ctx: Load + element: Name + id: str = k + ctx: Load + element: Call + func: Name + id: str = issubclass + ctx: Load + args: list + element: Name + id: str = aClass + ctx: Load + element: Name + id: str = simpleTypes + ctx: Load + keywords: list + keywords: list + orelse: list + orelse: list + type_comment: NoneType = None + orelse: list + type_comment: NoneType = None + orelse: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str =

Method resolution order
+ kind: NoneType = None + keywords: list + element: FunctionDef + name: str = mro + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = aClass + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = result + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Expr + value: Constant + value: str = Recursively assemble method resolution order from all base classes + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = last + ctx: Store + value: Constant + value: int = 0 + kind: NoneType = None + type_comment: NoneType = None + element: If + test: Compare + left: Name + id: str = result + ctx: Load + ops: list + element: Is + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = result + ctx: Store + value: List + elts: list + element: Name + id: str = aClass + ctx: Load + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = last + ctx: Store + value: Constant + value: int = 1 + kind: NoneType = None + type_comment: NoneType = None + orelse: list + element: For + target: Name + id: str = aBase + ctx: Store + iter: Attribute + value: Name + id: str = aClass + ctx: Load + attr: str = __bases__ + ctx: Load + body: list + element: If + test: BoolOp + op: And + values: list + element: UnaryOp + op: Not + operand: Compare + left: Name + id: str = aBase + ctx: Load + ops: list + element: In + comparators: list + element: Name + id: str = result + ctx: Load + element: Compare + left: Name + id: str = aBase + ctx: Load + ops: list + element: NotEq + comparators: list + element: Name + id: str = object + ctx: Load + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = result + ctx: Load + attr: str = append + ctx: Load + args: list + element: Name + id: str = aBase + ctx: Load + keywords: list + element: Expr + value: Call + func: Name + id: str = mro + ctx: Load + args: list + element: Name + id: str = aBase + ctx: Load + element: Name + id: str = result + ctx: Load + keywords: list + orelse: list + orelse: list + type_comment: NoneType = None + element: If + test: BoolOp + op: And + values: list + element: Name + id: str = last + ctx: Load + element: Compare + left: Name + id: str = object + ctx: Load + ops: list + element: In + comparators: list + element: Attribute + value: Name + id: str = aClass + ctx: Load + attr: str = __bases__ + ctx: Load + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = aRoot + ctx: Load + attr: str = append + ctx: Load + args: list + element: Name + id: str = object + ctx: Load + keywords: list + orelse: list + element: Return + value: Name + id: str = result + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: ListComp + elt: Attribute + value: Name + id: str = aClass + ctx: Load + attr: str = __name__ + ctx: Load + generators: list + element: comprehension + target: Name + id: str = aClass + ctx: Store + iter: Call + func: Name + id: str = mro + ctx: Load + args: list + element: Name + id: str = C + ctx: Load + keywords: list + ifs: list + is_async: int = 0 + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/cmath.js b/transcrypt/development/automated_tests/transcrypt/__target__39/cmath.js new file mode 100644 index 000000000..201937fc7 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/cmath.js @@ -0,0 +1,80 @@ +// Transcrypt'ed from Python, 2021-05-14 15:01:25 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get acos () {return acos;}, set acos (value) {acos = value;}, get acosh () {return acosh;}, set acosh (value) {acosh = value;}, get asin () {return asin;}, set asin (value) {asin = value;}, get asinh () {return asinh;}, set asinh (value) {asinh = value;}, get atan () {return atan;}, set atan (value) {atan = value;}, get atanh () {return atanh;}, set atanh (value) {atanh = value;}, get cos () {return cos;}, set cos (value) {cos = value;}, get cosh () {return cosh;}, set cosh (value) {cosh = value;}, get e () {return e;}, set e (value) {e = value;}, get exp () {return exp;}, set exp (value) {exp = value;}, get isfinite () {return isfinite;}, set isfinite (value) {isfinite = value;}, get isinf () {return isinf;}, set isinf (value) {isinf = value;}, get isnan () {return isnan;}, set isnan (value) {isnan = value;}, get log () {return log;}, set log (value) {log = value;}, get log10 () {return log10;}, set log10 (value) {log10 = value;}, get phase () {return phase;}, set phase (value) {phase = value;}, get pi () {return pi;}, set pi (value) {pi = value;}, get polar () {return polar;}, set polar (value) {polar = value;}, get rect () {return rect;}, set rect (value) {rect = value;}, get sin () {return sin;}, set sin (value) {sin = value;}, get sinh () {return sinh;}, set sinh (value) {sinh = value;}, get sqrt () {return sqrt;}, set sqrt (value) {sqrt = value;}, get tan () {return tan;}, set tan (value) {tan = value;}, get tanh () {return tanh;}, set tanh (value) {tanh = value;}}); +var __name__ = 'cmath'; +export var pi = Math.PI; +export var e = Math.E; +export var phase = function (x) { + return (typeof x === 'number' ? 0 : Math.atan2 (x.imag, x.real)); +}; +export var polar = function (x) { + return (typeof x === 'number' ? tuple ([Math.abs (x), 0]) : tuple ([abs (x), phase (x)])); +}; +export var rect = function (r, phi) { + return __mul__ (r, __add__ ((function () { + var __accu0__ = Math; + return __call__ (__accu0__.cos, __accu0__, phi); + }) (), __mul__ (complex (0, 1.0), (function () { + var __accu0__ = Math; + return __call__ (__accu0__.sin, __accu0__, phi); + }) ()))); +}; +export var exp = function (x) { + return (typeof x === 'number' ? complex (x, 0).__exp__ () : x.__exp__ ()); +}; +export var log = function (x, base) { + return (base === undefined ? (typeof x === 'number' ? complex (x, 0).__log__ () : x.__log__ ()) : __truediv__ (log (x), log (base))); +}; +export var log10 = function (x) { + return log (x, 10); +}; +export var sqrt = function (x) { + return exp (__mul__ (log (x), 0.5)); +}; +export var sin = function (x) { + return __mul__ (__neg__ (complex (0, 0.5)), __sub__ (__call__ (exp, null, __mul__ (complex (0, 1.0), x)), __call__ (exp, null, __mul__ (__neg__ (complex (0, 1.0)), x)))); +}; +export var cos = function (x) { + return __mul__ (0.5, __add__ (__call__ (exp, null, __mul__ (complex (0, 1.0), x)), __call__ (exp, null, __mul__ (__neg__ (complex (0, 1.0)), x)))); +}; +export var tan = function (x) { + return __truediv__ (__mul__ (__neg__ (complex (0, 1.0)), __sub__ (__call__ (exp, null, __mul__ (complex (0, 1.0), x)), __call__ (exp, null, __mul__ (__neg__ (complex (0, 1.0)), x)))), __add__ (__call__ (exp, null, __mul__ (complex (0, 1.0), x)), __call__ (exp, null, __mul__ (__neg__ (complex (0, 1.0)), x)))); +}; +export var asin = function (x) { + return __mul__ (__neg__ (complex (0, 1.0)), __call__ (log, null, __add__ (__mul__ (complex (0, 1.0), x), __call__ (sqrt, null, __sub__ (1, __mul__ (x, x)))))); +}; +export var acos = function (x) { + return __mul__ (__neg__ (complex (0, 1.0)), __call__ (log, null, __add__ (x, __mul__ (complex (0, 1.0), __call__ (sqrt, null, __sub__ (1, __mul__ (x, x))))))); +}; +export var atan = function (x) { + return __mul__ (complex (0, 0.5), __call__ (log, null, __truediv__ (__add__ (complex (0, 1.0), x), __sub__ (complex (0, 1.0), x)))); +}; +export var sinh = function (x) { + return __mul__ (0.5, __sub__ (__call__ (exp, null, x), __call__ (exp, null, __neg__ (x)))); +}; +export var cosh = function (x) { + return __mul__ (0.5, __add__ (__call__ (exp, null, x), __call__ (exp, null, __neg__ (x)))); +}; +export var tanh = function (x) { + return __truediv__ (__sub__ (__call__ (exp, null, x), __call__ (exp, null, __neg__ (x))), __add__ (__call__ (exp, null, x), __call__ (exp, null, __neg__ (x)))); +}; +export var asinh = function (x) { + return __call__ (log, null, __add__ (x, __call__ (sqrt, null, __add__ (1, __mul__ (x, x))))); +}; +export var acosh = function (x) { + return __call__ (log, null, __add__ (x, __call__ (sqrt, null, __add__ (__neg__ (1), __mul__ (x, x))))); +}; +export var atanh = function (x) { + return __mul__ (0.5, __call__ (log, null, __truediv__ (__add__ (1, x), __sub__ (1, x)))); +}; +export var isinf = function (x) { + return x.real == js_Infinite || x.imag == js.Infinite; +}; +export var isfinite = function (x) { + return !(isinf (x)); +}; +export var isnan = function (x) { + return isNaN (x.real) || isNaN (x.imag); +}; + +//# sourceMappingURL=cmath.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/cmath.tree b/transcrypt/development/automated_tests/transcrypt/__target__39/cmath.tree new file mode 100644 index 000000000..c0d538c58 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/cmath.tree @@ -0,0 +1,1308 @@ +file: Module + body: list + element: Assign + targets: list + element: Name + id: str = pi + ctx: Store + value: Attribute + value: Name + id: str = Math + ctx: Load + attr: str = PI + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = e + ctx: Store + value: Attribute + value: Name + id: str = Math + ctx: Load + attr: str = E + ctx: Load + type_comment: NoneType = None + element: FunctionDef + name: str = phase + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: IfExp + test: Compare + left: Call + func: Name + id: str = __typeof__ + ctx: Load + args: list + element: Name + id: str = x + ctx: Load + keywords: list + ops: list + element: Is + comparators: list + element: Constant + value: str = number + kind: NoneType = None + body: Constant + value: int = 0 + kind: NoneType = None + orelse: Call + func: Attribute + value: Name + id: str = Math + ctx: Load + attr: str = atan2 + ctx: Load + args: list + element: Attribute + value: Name + id: str = x + ctx: Load + attr: str = imag + ctx: Load + element: Attribute + value: Name + id: str = x + ctx: Load + attr: str = real + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = polar + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: IfExp + test: Compare + left: Call + func: Name + id: str = __typeof__ + ctx: Load + args: list + element: Name + id: str = x + ctx: Load + keywords: list + ops: list + element: Is + comparators: list + element: Constant + value: str = number + kind: NoneType = None + body: Tuple + elts: list + element: Call + func: Attribute + value: Name + id: str = Math + ctx: Load + attr: str = abs + ctx: Load + args: list + element: Name + id: str = x + ctx: Load + keywords: list + element: Constant + value: int = 0 + kind: NoneType = None + ctx: Load + orelse: Tuple + elts: list + element: Call + func: Name + id: str = abs + ctx: Load + args: list + element: Name + id: str = x + ctx: Load + keywords: list + element: Call + func: Name + id: str = phase + ctx: Load + args: list + element: Name + id: str = x + ctx: Load + keywords: list + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = rect + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = r + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = phi + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = opov + kind: NoneType = None + keywords: list + element: Return + value: BinOp + left: Name + id: str = r + ctx: Load + op: Mult + right: BinOp + left: Call + func: Attribute + value: Name + id: str = Math + ctx: Load + attr: str = cos + ctx: Load + args: list + element: Name + id: str = phi + ctx: Load + keywords: list + op: Add + right: BinOp + left: Constant + value: complex = 1j + kind: NoneType = None + op: Mult + right: Call + func: Attribute + value: Name + id: str = Math + ctx: Load + attr: str = sin + ctx: Load + args: list + element: Name + id: str = phi + ctx: Load + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = noopov + kind: NoneType = None + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = exp + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: IfExp + test: Compare + left: Call + func: Name + id: str = __typeof__ + ctx: Load + args: list + element: Name + id: str = x + ctx: Load + keywords: list + ops: list + element: Is + comparators: list + element: Constant + value: str = number + kind: NoneType = None + body: Call + func: Attribute + value: Call + func: Name + id: str = complex + ctx: Load + args: list + element: Name + id: str = x + ctx: Load + element: Constant + value: int = 0 + kind: NoneType = None + keywords: list + attr: str = __exp__ + ctx: Load + args: list + keywords: list + orelse: Call + func: Attribute + value: Name + id: str = x + ctx: Load + attr: str = __exp__ + ctx: Load + args: list + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = log + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = base + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: IfExp + test: Compare + left: Name + id: str = base + ctx: Load + ops: list + element: Is + comparators: list + element: Name + id: str = js_undefined + ctx: Load + body: IfExp + test: Compare + left: Call + func: Name + id: str = __typeof__ + ctx: Load + args: list + element: Name + id: str = x + ctx: Load + keywords: list + ops: list + element: Is + comparators: list + element: Constant + value: str = number + kind: NoneType = None + body: Call + func: Attribute + value: Call + func: Name + id: str = complex + ctx: Load + args: list + element: Name + id: str = x + ctx: Load + element: Constant + value: int = 0 + kind: NoneType = None + keywords: list + attr: str = __log__ + ctx: Load + args: list + keywords: list + orelse: Call + func: Attribute + value: Name + id: str = x + ctx: Load + attr: str = __log__ + ctx: Load + args: list + keywords: list + orelse: Call + func: Name + id: str = __truediv__ + ctx: Load + args: list + element: Call + func: Name + id: str = log + ctx: Load + args: list + element: Name + id: str = x + ctx: Load + keywords: list + element: Call + func: Name + id: str = log + ctx: Load + args: list + element: Name + id: str = base + ctx: Load + keywords: list + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = log10 + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Call + func: Name + id: str = log + ctx: Load + args: list + element: Name + id: str = x + ctx: Load + element: Constant + value: int = 10 + kind: NoneType = None + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = sqrt + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Call + func: Name + id: str = exp + ctx: Load + args: list + element: Call + func: Name + id: str = __mul__ + ctx: Load + args: list + element: Call + func: Name + id: str = log + ctx: Load + args: list + element: Name + id: str = x + ctx: Load + keywords: list + element: Constant + value: float = 0.5 + kind: NoneType = None + keywords: list + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = opov + kind: NoneType = None + keywords: list + element: FunctionDef + name: str = sin + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: BinOp + left: UnaryOp + op: USub + operand: Constant + value: complex = 0.5j + kind: NoneType = None + op: Mult + right: BinOp + left: Call + func: Name + id: str = exp + ctx: Load + args: list + element: BinOp + left: Constant + value: complex = 1j + kind: NoneType = None + op: Mult + right: Name + id: str = x + ctx: Load + keywords: list + op: Sub + right: Call + func: Name + id: str = exp + ctx: Load + args: list + element: BinOp + left: UnaryOp + op: USub + operand: Constant + value: complex = 1j + kind: NoneType = None + op: Mult + right: Name + id: str = x + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = cos + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: BinOp + left: Constant + value: float = 0.5 + kind: NoneType = None + op: Mult + right: BinOp + left: Call + func: Name + id: str = exp + ctx: Load + args: list + element: BinOp + left: Constant + value: complex = 1j + kind: NoneType = None + op: Mult + right: Name + id: str = x + ctx: Load + keywords: list + op: Add + right: Call + func: Name + id: str = exp + ctx: Load + args: list + element: BinOp + left: UnaryOp + op: USub + operand: Constant + value: complex = 1j + kind: NoneType = None + op: Mult + right: Name + id: str = x + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = tan + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: BinOp + left: BinOp + left: UnaryOp + op: USub + operand: Constant + value: complex = 1j + kind: NoneType = None + op: Mult + right: BinOp + left: Call + func: Name + id: str = exp + ctx: Load + args: list + element: BinOp + left: Constant + value: complex = 1j + kind: NoneType = None + op: Mult + right: Name + id: str = x + ctx: Load + keywords: list + op: Sub + right: Call + func: Name + id: str = exp + ctx: Load + args: list + element: BinOp + left: UnaryOp + op: USub + operand: Constant + value: complex = 1j + kind: NoneType = None + op: Mult + right: Name + id: str = x + ctx: Load + keywords: list + op: Div + right: BinOp + left: Call + func: Name + id: str = exp + ctx: Load + args: list + element: BinOp + left: Constant + value: complex = 1j + kind: NoneType = None + op: Mult + right: Name + id: str = x + ctx: Load + keywords: list + op: Add + right: Call + func: Name + id: str = exp + ctx: Load + args: list + element: BinOp + left: UnaryOp + op: USub + operand: Constant + value: complex = 1j + kind: NoneType = None + op: Mult + right: Name + id: str = x + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = asin + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: BinOp + left: UnaryOp + op: USub + operand: Constant + value: complex = 1j + kind: NoneType = None + op: Mult + right: Call + func: Name + id: str = log + ctx: Load + args: list + element: BinOp + left: BinOp + left: Constant + value: complex = 1j + kind: NoneType = None + op: Mult + right: Name + id: str = x + ctx: Load + op: Add + right: Call + func: Name + id: str = sqrt + ctx: Load + args: list + element: BinOp + left: Constant + value: int = 1 + kind: NoneType = None + op: Sub + right: BinOp + left: Name + id: str = x + ctx: Load + op: Mult + right: Name + id: str = x + ctx: Load + keywords: list + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = acos + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: BinOp + left: UnaryOp + op: USub + operand: Constant + value: complex = 1j + kind: NoneType = None + op: Mult + right: Call + func: Name + id: str = log + ctx: Load + args: list + element: BinOp + left: Name + id: str = x + ctx: Load + op: Add + right: BinOp + left: Constant + value: complex = 1j + kind: NoneType = None + op: Mult + right: Call + func: Name + id: str = sqrt + ctx: Load + args: list + element: BinOp + left: Constant + value: int = 1 + kind: NoneType = None + op: Sub + right: BinOp + left: Name + id: str = x + ctx: Load + op: Mult + right: Name + id: str = x + ctx: Load + keywords: list + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = atan + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: BinOp + left: Constant + value: complex = 0.5j + kind: NoneType = None + op: Mult + right: Call + func: Name + id: str = log + ctx: Load + args: list + element: BinOp + left: BinOp + left: Constant + value: complex = 1j + kind: NoneType = None + op: Add + right: Name + id: str = x + ctx: Load + op: Div + right: BinOp + left: Constant + value: complex = 1j + kind: NoneType = None + op: Sub + right: Name + id: str = x + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = sinh + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: BinOp + left: Constant + value: float = 0.5 + kind: NoneType = None + op: Mult + right: BinOp + left: Call + func: Name + id: str = exp + ctx: Load + args: list + element: Name + id: str = x + ctx: Load + keywords: list + op: Sub + right: Call + func: Name + id: str = exp + ctx: Load + args: list + element: UnaryOp + op: USub + operand: Name + id: str = x + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = cosh + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: BinOp + left: Constant + value: float = 0.5 + kind: NoneType = None + op: Mult + right: BinOp + left: Call + func: Name + id: str = exp + ctx: Load + args: list + element: Name + id: str = x + ctx: Load + keywords: list + op: Add + right: Call + func: Name + id: str = exp + ctx: Load + args: list + element: UnaryOp + op: USub + operand: Name + id: str = x + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = tanh + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: BinOp + left: BinOp + left: Call + func: Name + id: str = exp + ctx: Load + args: list + element: Name + id: str = x + ctx: Load + keywords: list + op: Sub + right: Call + func: Name + id: str = exp + ctx: Load + args: list + element: UnaryOp + op: USub + operand: Name + id: str = x + ctx: Load + keywords: list + op: Div + right: BinOp + left: Call + func: Name + id: str = exp + ctx: Load + args: list + element: Name + id: str = x + ctx: Load + keywords: list + op: Add + right: Call + func: Name + id: str = exp + ctx: Load + args: list + element: UnaryOp + op: USub + operand: Name + id: str = x + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = asinh + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Call + func: Name + id: str = log + ctx: Load + args: list + element: BinOp + left: Name + id: str = x + ctx: Load + op: Add + right: Call + func: Name + id: str = sqrt + ctx: Load + args: list + element: BinOp + left: Constant + value: int = 1 + kind: NoneType = None + op: Add + right: BinOp + left: Name + id: str = x + ctx: Load + op: Mult + right: Name + id: str = x + ctx: Load + keywords: list + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = acosh + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Call + func: Name + id: str = log + ctx: Load + args: list + element: BinOp + left: Name + id: str = x + ctx: Load + op: Add + right: Call + func: Name + id: str = sqrt + ctx: Load + args: list + element: BinOp + left: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + op: Add + right: BinOp + left: Name + id: str = x + ctx: Load + op: Mult + right: Name + id: str = x + ctx: Load + keywords: list + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = atanh + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: BinOp + left: Constant + value: float = 0.5 + kind: NoneType = None + op: Mult + right: Call + func: Name + id: str = log + ctx: Load + args: list + element: BinOp + left: BinOp + left: Constant + value: int = 1 + kind: NoneType = None + op: Add + right: Name + id: str = x + ctx: Load + op: Div + right: BinOp + left: Constant + value: int = 1 + kind: NoneType = None + op: Sub + right: Name + id: str = x + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = noopov + kind: NoneType = None + keywords: list + element: FunctionDef + name: str = isinf + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: BoolOp + op: Or + values: list + element: Compare + left: Attribute + value: Name + id: str = x + ctx: Load + attr: str = real + ctx: Load + ops: list + element: Eq + comparators: list + element: Name + id: str = js_Infinite + ctx: Load + element: Compare + left: Attribute + value: Name + id: str = x + ctx: Load + attr: str = imag + ctx: Load + ops: list + element: Eq + comparators: list + element: Attribute + value: Name + id: str = js + ctx: Load + attr: str = Infinite + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = isfinite + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: UnaryOp + op: Not + operand: Call + func: Name + id: str = isinf + ctx: Load + args: list + element: Name + id: str = x + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = isnan + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: BoolOp + op: Or + values: list + element: Call + func: Name + id: str = js_isNaN + ctx: Load + args: list + element: Attribute + value: Name + id: str = x + ctx: Load + attr: str = real + ctx: Load + keywords: list + element: Call + func: Name + id: str = js_isNaN + ctx: Load + args: list + element: Attribute + value: Name + id: str = x + ctx: Load + attr: str = imag + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/complex_numbers.js b/transcrypt/development/automated_tests/transcrypt/__target__39/complex_numbers.js new file mode 100644 index 000000000..beae284ab --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/complex_numbers.js @@ -0,0 +1,42 @@ +// Transcrypt'ed from Python, 2021-05-14 15:01:26 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get run () {return run;}, set run (value) {run = value;}}); +var __name__ = 'complex_numbers'; +export var run = function (autoTester) { + var x = 567; + var y = -(3); + var z = 5 * x + 2 * y; + autoTester.check (__conj__ (x).real, __conj__ (x).imag); + autoTester.check (x, y, z); + var a = __add__ (234, complex (0, 3.0)); + var b = __sub__ (4, complex (0, 5.0)); + var c = __call__ (complex, null, __neg__ (6), 7); + var d = 1; + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, a, b, c); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __call__ (__conj__, null, d).real, __call__ (__conj__, null, d).imag); + }) (); + var t = __add__ (__sub__ (__mul__ (6, x), __mul__ (3, y)), 7); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, t); + }) (); + var d = __mul__ (2, a); + var e = __mul__ (x, b); + var f = __add__ (__add__ (z, d), e); + var g = __truediv__ (a, b); + var h = __sub__ (a, b); + var i = __sub__ (x, c); + var j = __sub__ (a, x); + var k = __add__ (b, y); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, d, e, f, __call__ (round, null, g.real, 2), __call__ (round, null, g.imag, 2), h, i, j, k); + }) (); +}; + +//# sourceMappingURL=complex_numbers.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/complex_numbers.tree b/transcrypt/development/automated_tests/transcrypt/__target__39/complex_numbers.tree new file mode 100644 index 000000000..c7ba94afa --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/complex_numbers.tree @@ -0,0 +1,475 @@ +file: Module + body: list + element: ImportFrom + module: str = org.transcrypt.stubs.browser + names: list + element: alias + name: str = __pragma__ + asname: NoneType = None + level: int = 0 + element: FunctionDef + name: str = run + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = autoTester + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Name + id: str = x + ctx: Store + value: Constant + value: int = 567 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = y + ctx: Store + value: UnaryOp + op: USub + operand: Constant + value: int = 3 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = z + ctx: Store + value: BinOp + left: BinOp + left: Constant + value: int = 5 + kind: NoneType = None + op: Mult + right: Name + id: str = x + ctx: Load + op: Add + right: BinOp + left: Constant + value: int = 2 + kind: NoneType = None + op: Mult + right: Name + id: str = y + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Call + func: Attribute + value: Name + id: str = x + ctx: Load + attr: str = conjugate + ctx: Load + args: list + keywords: list + attr: str = real + ctx: Load + element: Attribute + value: Call + func: Attribute + value: Name + id: str = x + ctx: Load + attr: str = conjugate + ctx: Load + args: list + keywords: list + attr: str = imag + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = x + ctx: Load + element: Name + id: str = y + ctx: Load + element: Name + id: str = z + ctx: Load + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = opov + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = a + ctx: Store + value: BinOp + left: Constant + value: int = 234 + kind: NoneType = None + op: Add + right: Constant + value: complex = 3j + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = b + ctx: Store + value: BinOp + left: Constant + value: int = 4 + kind: NoneType = None + op: Sub + right: Constant + value: complex = 5j + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = c + ctx: Store + value: Call + func: Name + id: str = complex + ctx: Load + args: list + element: UnaryOp + op: USub + operand: Constant + value: int = 6 + kind: NoneType = None + element: Constant + value: int = 7 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = d + ctx: Store + value: Constant + value: int = 1 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = a + ctx: Load + element: Name + id: str = b + ctx: Load + element: Name + id: str = c + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Call + func: Attribute + value: Name + id: str = d + ctx: Load + attr: str = conjugate + ctx: Load + args: list + keywords: list + attr: str = real + ctx: Load + element: Attribute + value: Call + func: Attribute + value: Name + id: str = d + ctx: Load + attr: str = conjugate + ctx: Load + args: list + keywords: list + attr: str = imag + ctx: Load + keywords: list + element: Assign + targets: list + element: Name + id: str = t + ctx: Store + value: BinOp + left: BinOp + left: BinOp + left: Constant + value: int = 6 + kind: NoneType = None + op: Mult + right: Name + id: str = x + ctx: Load + op: Sub + right: BinOp + left: Constant + value: int = 3 + kind: NoneType = None + op: Mult + right: Name + id: str = y + ctx: Load + op: Add + right: Constant + value: int = 7 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = t + ctx: Load + keywords: list + element: Assign + targets: list + element: Name + id: str = d + ctx: Store + value: BinOp + left: Constant + value: int = 2 + kind: NoneType = None + op: Mult + right: Name + id: str = a + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = e + ctx: Store + value: BinOp + left: Name + id: str = x + ctx: Load + op: Mult + right: Name + id: str = b + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = f + ctx: Store + value: BinOp + left: BinOp + left: Name + id: str = z + ctx: Load + op: Add + right: Name + id: str = d + ctx: Load + op: Add + right: Name + id: str = e + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = g + ctx: Store + value: BinOp + left: Name + id: str = a + ctx: Load + op: Div + right: Name + id: str = b + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = h + ctx: Store + value: BinOp + left: Name + id: str = a + ctx: Load + op: Sub + right: Name + id: str = b + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = i + ctx: Store + value: BinOp + left: Name + id: str = x + ctx: Load + op: Sub + right: Name + id: str = c + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = j + ctx: Store + value: BinOp + left: Name + id: str = a + ctx: Load + op: Sub + right: Name + id: str = x + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = k + ctx: Store + value: BinOp + left: Name + id: str = b + ctx: Load + op: Add + right: Name + id: str = y + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = d + ctx: Load + element: Name + id: str = e + ctx: Load + element: Name + id: str = f + ctx: Load + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: Attribute + value: Name + id: str = g + ctx: Load + attr: str = real + ctx: Load + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: Attribute + value: Name + id: str = g + ctx: Load + attr: str = imag + ctx: Load + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + element: Name + id: str = h + ctx: Load + element: Name + id: str = i + ctx: Load + element: Name + id: str = j + ctx: Load + element: Name + id: str = k + ctx: Load + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = noopov + kind: NoneType = None + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/conditional_expressions.js b/transcrypt/development/automated_tests/transcrypt/__target__39/conditional_expressions.js new file mode 100644 index 000000000..4ac2bec41 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/conditional_expressions.js @@ -0,0 +1,38 @@ +// Transcrypt'ed from Python, 2021-05-14 15:01:26 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get f () {return f;}, set f (value) {f = value;}, get run () {return run;}, set run (value) {run = value;}}); +var __name__ = 'conditional_expressions'; +export var f = function (x, b) { + return (b ? x * x : x + x); +}; +export var run = function (autoTester) { + var bools = tuple ([false, true]); + for (var a of bools) { + for (var b of bools) { + autoTester.check (f ((a ? 10 : 100), b)); + } + } + for (var p of bools) { + for (var q of bools) { + for (var r of bools) { + autoTester.check ((p ? 'a' : (q ? 'b' : (r ? 'c' : 'd')))); + var a = (r ? (q ? (p ? 'e' : 'f') : 'g') : 'h'); + var b = (p ? 'i' : (q ? 'j' : (r ? 'k' : 'l'))); + var c = ((q ? p : r) ? 'm' : 'n'); + var d = ((p < q && q <= r) ? 'o' : 'p'); + autoTester.check (a, b, c, d); + } + } + } + var odd = (function () { + var __accu0__ = []; + for (var x = 0; x < 10; x++) { + __accu0__.append ((__mod__ (x, 2) ? x : x + 1)); + } + return __accu0__; + }) (); + var noDuplicates = set (odd); + autoTester.check (odd, noDuplicates); +}; + +//# sourceMappingURL=conditional_expressions.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/conditional_expressions.tree b/transcrypt/development/automated_tests/transcrypt/__target__39/conditional_expressions.tree new file mode 100644 index 000000000..2f7854358 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/conditional_expressions.tree @@ -0,0 +1,398 @@ +file: Module + body: list + element: FunctionDef + name: str = f + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = b + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: IfExp + test: Name + id: str = b + ctx: Load + body: BinOp + left: Name + id: str = x + ctx: Load + op: Mult + right: Name + id: str = x + ctx: Load + orelse: BinOp + left: Name + id: str = x + ctx: Load + op: Add + right: Name + id: str = x + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = run + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = autoTester + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Name + id: str = bools + ctx: Store + value: Tuple + elts: list + element: Constant + value: bool = False + kind: NoneType = None + element: Constant + value: bool = True + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: For + target: Name + id: str = a + ctx: Store + iter: Name + id: str = bools + ctx: Load + body: list + element: For + target: Name + id: str = b + ctx: Store + iter: Name + id: str = bools + ctx: Load + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = f + ctx: Load + args: list + element: IfExp + test: Name + id: str = a + ctx: Load + body: Constant + value: int = 10 + kind: NoneType = None + orelse: Constant + value: int = 100 + kind: NoneType = None + element: Name + id: str = b + ctx: Load + keywords: list + keywords: list + orelse: list + type_comment: NoneType = None + orelse: list + type_comment: NoneType = None + element: For + target: Name + id: str = p + ctx: Store + iter: Name + id: str = bools + ctx: Load + body: list + element: For + target: Name + id: str = q + ctx: Store + iter: Name + id: str = bools + ctx: Load + body: list + element: For + target: Name + id: str = r + ctx: Store + iter: Name + id: str = bools + ctx: Load + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: IfExp + test: Name + id: str = p + ctx: Load + body: Constant + value: str = a + kind: NoneType = None + orelse: IfExp + test: Name + id: str = q + ctx: Load + body: Constant + value: str = b + kind: NoneType = None + orelse: IfExp + test: Name + id: str = r + ctx: Load + body: Constant + value: str = c + kind: NoneType = None + orelse: Constant + value: str = d + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = a + ctx: Store + value: IfExp + test: Name + id: str = r + ctx: Load + body: IfExp + test: Name + id: str = q + ctx: Load + body: IfExp + test: Name + id: str = p + ctx: Load + body: Constant + value: str = e + kind: NoneType = None + orelse: Constant + value: str = f + kind: NoneType = None + orelse: Constant + value: str = g + kind: NoneType = None + orelse: Constant + value: str = h + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = b + ctx: Store + value: IfExp + test: Name + id: str = p + ctx: Load + body: Constant + value: str = i + kind: NoneType = None + orelse: IfExp + test: Name + id: str = q + ctx: Load + body: Constant + value: str = j + kind: NoneType = None + orelse: IfExp + test: Name + id: str = r + ctx: Load + body: Constant + value: str = k + kind: NoneType = None + orelse: Constant + value: str = l + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = c + ctx: Store + value: IfExp + test: IfExp + test: Name + id: str = q + ctx: Load + body: Name + id: str = p + ctx: Load + orelse: Name + id: str = r + ctx: Load + body: Constant + value: str = m + kind: NoneType = None + orelse: Constant + value: str = n + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = d + ctx: Store + value: IfExp + test: Compare + left: Name + id: str = p + ctx: Load + ops: list + element: Lt + element: LtE + comparators: list + element: Name + id: str = q + ctx: Load + element: Name + id: str = r + ctx: Load + body: Constant + value: str = o + kind: NoneType = None + orelse: Constant + value: str = p + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = a + ctx: Load + element: Name + id: str = b + ctx: Load + element: Name + id: str = c + ctx: Load + element: Name + id: str = d + ctx: Load + keywords: list + orelse: list + type_comment: NoneType = None + orelse: list + type_comment: NoneType = None + orelse: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = odd + ctx: Store + value: ListComp + elt: IfExp + test: BinOp + left: Name + id: str = x + ctx: Load + op: Mod + right: Constant + value: int = 2 + kind: NoneType = None + body: Name + id: str = x + ctx: Load + orelse: BinOp + left: Name + id: str = x + ctx: Load + op: Add + right: Constant + value: int = 1 + kind: NoneType = None + generators: list + element: comprehension + target: Name + id: str = x + ctx: Store + iter: Call + func: Name + id: str = range + ctx: Load + args: list + element: Constant + value: int = 10 + kind: NoneType = None + keywords: list + ifs: list + is_async: int = 0 + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = noDuplicates + ctx: Store + value: Call + func: Name + id: str = set + ctx: Load + args: list + element: Name + id: str = odd + ctx: Load + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = odd + ctx: Load + element: Name + id: str = noDuplicates + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/control_structures.js b/transcrypt/development/automated_tests/transcrypt/__target__39/control_structures.js new file mode 100644 index 000000000..e63a57ddb --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/control_structures.js @@ -0,0 +1,292 @@ +// Transcrypt'ed from Python, 2021-05-14 15:01:26 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +var __all__ = dict ({get ContextManagerExample () {return ContextManagerExample;}, set ContextManagerExample (value) {ContextManagerExample = value;}, get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get run () {return run;}, set run (value) {run = value;}}); +var __name__ = 'control_structures'; +export var ContextManagerExample = __class__ ('ContextManagerExample', [object], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self) { + self.counter = 0; + });}, + get __enter__ () {return __get__ (this, function (self) { + self.counter++; + return self; + });}, + get __exit__ () {return __get__ (this, function (self) { + var args = tuple ([].slice.apply (arguments).slice (1)); + self.counter += 99; + });} +}); +export var run = function (autoTester) { + for (var index = 0; index < 10; index++) { + autoTester.check (index); + } + for (var index = 8; index < 16; index++) { + autoTester.check (index); + } + for (var index = 8; index < 16; index += 2) { + autoTester.check (index); + } + for (var index = 10; index > 0; index--) { + autoTester.check (index); + } + for (var index = 16; index > 8; index -= 2) { + autoTester.check (index); + } + for (var animal of tuple (['cat', 'dog', 'turtle', 'goldfish'])) { + autoTester.check (animal); + } + for (var [index, square] of enumerate ((function () { + var __accu0__ = []; + for (var x = 0; x < 10; x++) { + if (__mod__ (x, 2)) { + __accu0__.append (x * x); + } + } + return __accu0__; + }) ())) { + for (var y of tuple ([1, 2, 3])) { + for (var z of tuple ([10, 20, 30])) { + autoTester.check (square + y, z); + } + } + } + var vehicles = ['bike', 'train', 'boat', 'car', 'plane', 'bus']; + for (var doBreak of tuple ([false, true])) { + for (var doContinue of tuple ([false, true])) { + var __break2__ = false; + for (var index = 0; index < 10; index++) { + var __break3__ = false; + for (var index2 = 0; index2 < 100; index2 += 10) { + if (doBreak && index2 == 50) { + autoTester.check ('break2'); + __break3__ = true; + break; + } + if (doContinue && index2 == 50) { + autoTester.check ('continue2'); + continue; + } + } + if (!__break3__) { + autoTester.check ('noBreak2'); + } + if (doBreak && index == 5) { + autoTester.check ('break'); + __break2__ = true; + break; + } + if (doContinue && index == 5) { + autoTester.check ('continue'); + continue; + } + } + if (!__break2__) { + autoTester.check ('noBreak'); + } + var index = 0; + var __break2__ = false; + while (index < len (vehicles) && != 'bus') { + autoTester.check (index, ); + if (doBreak && == 'car') { + autoTester.check ('breakWhile'); + __break2__ = true; + break; + } + if (doContinue && == 'car') { + autoTester.check ('continueWhile'); + index++; + continue; + } + index++; + } + if (!__break2__) { + autoTester.check ('noBreakWhile'); + } + } + for (var vehicle of vehicles) { + if (vehicle == 'bike') { + autoTester.check ('netherlands'); + } + else if (vehicle == 'car') { + autoTester.check ('america'); + } + else if (vehicle == 'boat') { + autoTester.check ('oceania'); + } + else { + autoTester.check ('anywhere'); + } + } + } + var externalCounter1 = 0; + var contextManagerExample1 = ContextManagerExample (); + try { + contextManagerExample1.__enter__ (); + externalCounter1++; + contextManagerExample1.__exit__ (); + } + catch (__except0__) { + if (! (contextManagerExample1.__exit__ (__except0__.name, __except0__, __except0__.stack))) { + throw __except0__; + } + } + autoTester.check ('ctx1', contextManagerExample1.counter, externalCounter1); + var externalCounter2 = 0; + var contextManagerExample2 = ContextManagerExample (); + try { + contextManagerExample2.__enter__ (); + externalCounter2++; + contextManagerExample2.counter += 100; + var externalCounter3 = 0; + var contextManagerExample3 = ContextManagerExample (); + try { + contextManagerExample3.__enter__ (); + externalCounter3++; + contextManagerExample2.counter += 100; + externalCounter3 += 2; + contextManagerExample3.counter += 200; + contextManagerExample3.__exit__ (); + } + catch (__except0__) { + if (! (contextManagerExample3.__exit__ (__except0__.name, __except0__, __except0__.stack))) { + throw __except0__; + } + } + autoTester.check ('ctx3', contextManagerExample3.counter, externalCounter3); + externalCounter2 += 2; + contextManagerExample2.counter += 200; + contextManagerExample2.__exit__ (); + } + catch (__except0__) { + if (! (contextManagerExample2.__exit__ (__except0__.name, __except0__, __except0__.stack))) { + throw __except0__; + } + } + autoTester.check ('ctx2', contextManagerExample2.counter, externalCounter2); + try { + var externalCounter4 = 0; + var contextManagerExample4 = ContextManagerExample (); + try { + contextManagerExample4.__enter__ (); + externalCounter4++; + contextManagerExample4.counter += 100; + var externalCounter5 = 0; + var contextManagerExample5 = ContextManagerExample (); + try { + contextManagerExample5.__enter__ (); + externalCounter5++; + contextManagerExample5.counter += 100; + var __except0__ = Exception (); + __except0__.__cause__ = null; + throw __except0__; + externalCounter5 += 2; + contextManagerExample5.counter += 200; + contextManagerExample5.__exit__ (); + } + catch (__except0__) { + if (! (contextManagerExample5.__exit__ (__except0__.name, __except0__, __except0__.stack))) { + throw __except0__; + } + } + externalCounter4 += 2; + contextManagerExample4.counter += 200; + contextManagerExample4.__exit__ (); + } + catch (__except0__) { + if (! (contextManagerExample4.__exit__ (__except0__.name, __except0__, __except0__.stack))) { + throw __except0__; + } + } + } + catch (__except0__) { + if (isinstance (__except0__, Exception)) { + var exception = __except0__; + autoTester.check ('ctx6', exception); + } + else { + throw __except0__; + } + } + finally { + autoTester.check ('ctx5', contextManagerExample5.counter, externalCounter5); + autoTester.check ('ctx4', contextManagerExample4.counter, externalCounter4); + } + var iterationCount = 0; + var contextManagerExample5 = ContextManagerExample (); + try { + contextManagerExample5.__enter__ (); + var contextManagerExample6 = ContextManagerExample (); + try { + contextManagerExample6.__enter__ (); + iterationCount++; + contextManagerExample6.__exit__ (); + } + catch (__except0__) { + if (! (contextManagerExample6.__exit__ (__except0__.name, __except0__, __except0__.stack))) { + throw __except0__; + } + } + contextManagerExample5.__exit__ (); + } + catch (__except0__) { + if (! (contextManagerExample5.__exit__ (__except0__.name, __except0__, __except0__.stack))) { + throw __except0__; + } + } + autoTester.check ('ctx7', iterationCount, contextManagerExample5.counter, contextManagerExample6.counter); + var iterationCount = 0; + var __withid0__ = ContextManagerExample (); + try { + __withid0__.__enter__ (); + var __withid1__ = ContextManagerExample (); + try { + __withid1__.__enter__ (); + var __withid2__ = ContextManagerExample (); + try { + __withid2__.__enter__ (); + var __withid3__ = ContextManagerExample (); + try { + __withid3__.__enter__ (); + var __withid4__ = ContextManagerExample (); + try { + __withid4__.__enter__ (); + iterationCount++; + __withid4__.__exit__ (); + } + catch (__except0__) { + if (! (__withid4__.__exit__ (__except0__.name, __except0__, __except0__.stack))) { + throw __except0__; + } + } + __withid3__.__exit__ (); + } + catch (__except0__) { + if (! (__withid3__.__exit__ (__except0__.name, __except0__, __except0__.stack))) { + throw __except0__; + } + } + __withid2__.__exit__ (); + } + catch (__except0__) { + if (! (__withid2__.__exit__ (__except0__.name, __except0__, __except0__.stack))) { + throw __except0__; + } + } + __withid1__.__exit__ (); + } + catch (__except0__) { + if (! (__withid1__.__exit__ (__except0__.name, __except0__, __except0__.stack))) { + throw __except0__; + } + } + __withid0__.__exit__ (); + } + catch (__except0__) { + if (! (__withid0__.__exit__ (__except0__.name, __except0__, __except0__.stack))) { + throw __except0__; + } + } + autoTester.check ('ctx8', iterationCount); +}; + +//# sourceMappingURL=control_structures.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/control_structures.tree b/transcrypt/development/automated_tests/transcrypt/__target__39/control_structures.tree new file mode 100644 index 000000000..d233a5946 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/control_structures.tree @@ -0,0 +1,1532 @@ +file: Module + body: list + element: ClassDef + name: str = ContextManagerExample + bases: list + keywords: list + body: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = counter + ctx: Store + value: Constant + value: int = 0 + kind: NoneType = None + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __enter__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: AugAssign + target: Attribute + value: Name + id: str = self + ctx: Load + attr: str = counter + ctx: Store + op: Add + value: Constant + value: int = 1 + kind: NoneType = None + element: Return + value: Name + id: str = self + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __exit__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: arg + arg: str = args + annotation: NoneType = None + type_comment: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: AugAssign + target: Attribute + value: Name + id: str = self + ctx: Load + attr: str = counter + ctx: Store + op: Add + value: Constant + value: int = 99 + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: FunctionDef + name: str = run + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = autoTester + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: For + target: Name + id: str = index + ctx: Store + iter: Call + func: Name + id: str = range + ctx: Load + args: list + element: Constant + value: int = 10 + kind: NoneType = None + keywords: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = index + ctx: Load + keywords: list + orelse: list + type_comment: NoneType = None + element: For + target: Name + id: str = index + ctx: Store + iter: Call + func: Name + id: str = range + ctx: Load + args: list + element: Constant + value: int = 8 + kind: NoneType = None + element: Constant + value: int = 16 + kind: NoneType = None + keywords: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = index + ctx: Load + keywords: list + orelse: list + type_comment: NoneType = None + element: For + target: Name + id: str = index + ctx: Store + iter: Call + func: Name + id: str = range + ctx: Load + args: list + element: Constant + value: int = 8 + kind: NoneType = None + element: Constant + value: int = 16 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = index + ctx: Load + keywords: list + orelse: list + type_comment: NoneType = None + element: For + target: Name + id: str = index + ctx: Store + iter: Call + func: Name + id: str = range + ctx: Load + args: list + element: Constant + value: int = 10 + kind: NoneType = None + element: Constant + value: int = 0 + kind: NoneType = None + element: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + keywords: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = index + ctx: Load + keywords: list + orelse: list + type_comment: NoneType = None + element: For + target: Name + id: str = index + ctx: Store + iter: Call + func: Name + id: str = range + ctx: Load + args: list + element: Constant + value: int = 16 + kind: NoneType = None + element: Constant + value: int = 8 + kind: NoneType = None + element: UnaryOp + op: USub + operand: Constant + value: int = 2 + kind: NoneType = None + keywords: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = index + ctx: Load + keywords: list + orelse: list + type_comment: NoneType = None + element: For + target: Name + id: str = animal + ctx: Store + iter: Tuple + elts: list + element: Constant + value: str = cat + kind: NoneType = None + element: Constant + value: str = dog + kind: NoneType = None + element: Constant + value: str = turtle + kind: NoneType = None + element: Constant + value: str = goldfish + kind: NoneType = None + ctx: Load + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = animal + ctx: Load + keywords: list + orelse: list + type_comment: NoneType = None + element: For + target: Tuple + elts: list + element: Name + id: str = index + ctx: Store + element: Name + id: str = square + ctx: Store + ctx: Store + iter: Call + func: Name + id: str = enumerate + ctx: Load + args: list + element: ListComp + elt: BinOp + left: Name + id: str = x + ctx: Load + op: Mult + right: Name + id: str = x + ctx: Load + generators: list + element: comprehension + target: Name + id: str = x + ctx: Store + iter: Call + func: Name + id: str = range + ctx: Load + args: list + element: Constant + value: int = 10 + kind: NoneType = None + keywords: list + ifs: list + element: BinOp + left: Name + id: str = x + ctx: Load + op: Mod + right: Constant + value: int = 2 + kind: NoneType = None + is_async: int = 0 + keywords: list + body: list + element: For + target: Name + id: str = y + ctx: Store + iter: Tuple + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + body: list + element: For + target: Name + id: str = z + ctx: Store + iter: Tuple + elts: list + element: Constant + value: int = 10 + kind: NoneType = None + element: Constant + value: int = 20 + kind: NoneType = None + element: Constant + value: int = 30 + kind: NoneType = None + ctx: Load + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BinOp + left: Name + id: str = square + ctx: Load + op: Add + right: Name + id: str = y + ctx: Load + element: Name + id: str = z + ctx: Load + keywords: list + orelse: list + type_comment: NoneType = None + orelse: list + type_comment: NoneType = None + orelse: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = vehicles + ctx: Store + value: List + elts: list + element: Constant + value: str = bike + kind: NoneType = None + element: Constant + value: str = train + kind: NoneType = None + element: Constant + value: str = boat + kind: NoneType = None + element: Constant + value: str = car + kind: NoneType = None + element: Constant + value: str = plane + kind: NoneType = None + element: Constant + value: str = bus + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: For + target: Name + id: str = doBreak + ctx: Store + iter: Tuple + elts: list + element: Constant + value: bool = False + kind: NoneType = None + element: Constant + value: bool = True + kind: NoneType = None + ctx: Load + body: list + element: For + target: Name + id: str = doContinue + ctx: Store + iter: Tuple + elts: list + element: Constant + value: bool = False + kind: NoneType = None + element: Constant + value: bool = True + kind: NoneType = None + ctx: Load + body: list + element: For + target: Name + id: str = index + ctx: Store + iter: Call + func: Name + id: str = range + ctx: Load + args: list + element: Constant + value: int = 10 + kind: NoneType = None + keywords: list + body: list + element: For + target: Name + id: str = index2 + ctx: Store + iter: Call + func: Name + id: str = range + ctx: Load + args: list + element: Constant + value: int = 0 + kind: NoneType = None + element: Constant + value: int = 100 + kind: NoneType = None + element: Constant + value: int = 10 + kind: NoneType = None + keywords: list + body: list + element: If + test: BoolOp + op: And + values: list + element: Name + id: str = doBreak + ctx: Load + element: Compare + left: Name + id: str = index2 + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: int = 50 + kind: NoneType = None + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = break2 + kind: NoneType = None + keywords: list + element: Break + orelse: list + element: If + test: BoolOp + op: And + values: list + element: Name + id: str = doContinue + ctx: Load + element: Compare + left: Name + id: str = index2 + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: int = 50 + kind: NoneType = None + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = continue2 + kind: NoneType = None + keywords: list + element: Continue + orelse: list + orelse: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = noBreak2 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: If + test: BoolOp + op: And + values: list + element: Name + id: str = doBreak + ctx: Load + element: Compare + left: Name + id: str = index + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: int = 5 + kind: NoneType = None + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = break + kind: NoneType = None + keywords: list + element: Break + orelse: list + element: If + test: BoolOp + op: And + values: list + element: Name + id: str = doContinue + ctx: Load + element: Compare + left: Name + id: str = index + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: int = 5 + kind: NoneType = None + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = continue + kind: NoneType = None + keywords: list + element: Continue + orelse: list + orelse: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = noBreak + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = index + ctx: Store + value: Constant + value: int = 0 + kind: NoneType = None + type_comment: NoneType = None + element: While + test: BoolOp + op: And + values: list + element: Compare + left: Name + id: str = index + ctx: Load + ops: list + element: Lt + comparators: list + element: Call + func: Name + id: str = len + ctx: Load + args: list + element: Name + id: str = vehicles + ctx: Load + keywords: list + element: Compare + left: Subscript + value: Name + id: str = vehicles + ctx: Load + slice: Name + id: str = index + ctx: Load + ctx: Load + ops: list + element: NotEq + comparators: list + element: Constant + value: str = bus + kind: NoneType = None + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = index + ctx: Load + element: Subscript + value: Name + id: str = vehicles + ctx: Load + slice: Name + id: str = index + ctx: Load + ctx: Load + keywords: list + element: If + test: BoolOp + op: And + values: list + element: Name + id: str = doBreak + ctx: Load + element: Compare + left: Subscript + value: Name + id: str = vehicles + ctx: Load + slice: Name + id: str = index + ctx: Load + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = car + kind: NoneType = None + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = breakWhile + kind: NoneType = None + keywords: list + element: Break + orelse: list + element: If + test: BoolOp + op: And + values: list + element: Name + id: str = doContinue + ctx: Load + element: Compare + left: Subscript + value: Name + id: str = vehicles + ctx: Load + slice: Name + id: str = index + ctx: Load + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = car + kind: NoneType = None + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = continueWhile + kind: NoneType = None + keywords: list + element: AugAssign + target: Name + id: str = index + ctx: Store + op: Add + value: Constant + value: int = 1 + kind: NoneType = None + element: Continue + orelse: list + element: AugAssign + target: Name + id: str = index + ctx: Store + op: Add + value: Constant + value: int = 1 + kind: NoneType = None + orelse: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = noBreakWhile + kind: NoneType = None + keywords: list + orelse: list + type_comment: NoneType = None + element: For + target: Name + id: str = vehicle + ctx: Store + iter: Name + id: str = vehicles + ctx: Load + body: list + element: If + test: Compare + left: Name + id: str = vehicle + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = bike + kind: NoneType = None + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = netherlands + kind: NoneType = None + keywords: list + orelse: list + element: If + test: Compare + left: Name + id: str = vehicle + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = car + kind: NoneType = None + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = america + kind: NoneType = None + keywords: list + orelse: list + element: If + test: Compare + left: Name + id: str = vehicle + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = boat + kind: NoneType = None + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = oceania + kind: NoneType = None + keywords: list + orelse: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = anywhere + kind: NoneType = None + keywords: list + orelse: list + type_comment: NoneType = None + orelse: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = externalCounter1 + ctx: Store + value: Constant + value: int = 0 + kind: NoneType = None + type_comment: NoneType = None + element: With + items: list + element: withitem + context_expr: Call + func: Name + id: str = ContextManagerExample + ctx: Load + args: list + keywords: list + optional_vars: Name + id: str = contextManagerExample1 + ctx: Store + body: list + element: AugAssign + target: Name + id: str = externalCounter1 + ctx: Store + op: Add + value: Constant + value: int = 1 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = ctx1 + kind: NoneType = None + element: Attribute + value: Name + id: str = contextManagerExample1 + ctx: Load + attr: str = counter + ctx: Load + element: Name + id: str = externalCounter1 + ctx: Load + keywords: list + element: Assign + targets: list + element: Name + id: str = externalCounter2 + ctx: Store + value: Constant + value: int = 0 + kind: NoneType = None + type_comment: NoneType = None + element: With + items: list + element: withitem + context_expr: Call + func: Name + id: str = ContextManagerExample + ctx: Load + args: list + keywords: list + optional_vars: Name + id: str = contextManagerExample2 + ctx: Store + body: list + element: AugAssign + target: Name + id: str = externalCounter2 + ctx: Store + op: Add + value: Constant + value: int = 1 + kind: NoneType = None + element: AugAssign + target: Attribute + value: Name + id: str = contextManagerExample2 + ctx: Load + attr: str = counter + ctx: Store + op: Add + value: Constant + value: int = 100 + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = externalCounter3 + ctx: Store + value: Constant + value: int = 0 + kind: NoneType = None + type_comment: NoneType = None + element: With + items: list + element: withitem + context_expr: Call + func: Name + id: str = ContextManagerExample + ctx: Load + args: list + keywords: list + optional_vars: Name + id: str = contextManagerExample3 + ctx: Store + body: list + element: AugAssign + target: Name + id: str = externalCounter3 + ctx: Store + op: Add + value: Constant + value: int = 1 + kind: NoneType = None + element: AugAssign + target: Attribute + value: Name + id: str = contextManagerExample2 + ctx: Load + attr: str = counter + ctx: Store + op: Add + value: Constant + value: int = 100 + kind: NoneType = None + element: AugAssign + target: Name + id: str = externalCounter3 + ctx: Store + op: Add + value: Constant + value: int = 2 + kind: NoneType = None + element: AugAssign + target: Attribute + value: Name + id: str = contextManagerExample3 + ctx: Load + attr: str = counter + ctx: Store + op: Add + value: Constant + value: int = 200 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = ctx3 + kind: NoneType = None + element: Attribute + value: Name + id: str = contextManagerExample3 + ctx: Load + attr: str = counter + ctx: Load + element: Name + id: str = externalCounter3 + ctx: Load + keywords: list + element: AugAssign + target: Name + id: str = externalCounter2 + ctx: Store + op: Add + value: Constant + value: int = 2 + kind: NoneType = None + element: AugAssign + target: Attribute + value: Name + id: str = contextManagerExample2 + ctx: Load + attr: str = counter + ctx: Store + op: Add + value: Constant + value: int = 200 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = ctx2 + kind: NoneType = None + element: Attribute + value: Name + id: str = contextManagerExample2 + ctx: Load + attr: str = counter + ctx: Load + element: Name + id: str = externalCounter2 + ctx: Load + keywords: list + element: Try + body: list + element: Assign + targets: list + element: Name + id: str = externalCounter4 + ctx: Store + value: Constant + value: int = 0 + kind: NoneType = None + type_comment: NoneType = None + element: With + items: list + element: withitem + context_expr: Call + func: Name + id: str = ContextManagerExample + ctx: Load + args: list + keywords: list + optional_vars: Name + id: str = contextManagerExample4 + ctx: Store + body: list + element: AugAssign + target: Name + id: str = externalCounter4 + ctx: Store + op: Add + value: Constant + value: int = 1 + kind: NoneType = None + element: AugAssign + target: Attribute + value: Name + id: str = contextManagerExample4 + ctx: Load + attr: str = counter + ctx: Store + op: Add + value: Constant + value: int = 100 + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = externalCounter5 + ctx: Store + value: Constant + value: int = 0 + kind: NoneType = None + type_comment: NoneType = None + element: With + items: list + element: withitem + context_expr: Call + func: Name + id: str = ContextManagerExample + ctx: Load + args: list + keywords: list + optional_vars: Name + id: str = contextManagerExample5 + ctx: Store + body: list + element: AugAssign + target: Name + id: str = externalCounter5 + ctx: Store + op: Add + value: Constant + value: int = 1 + kind: NoneType = None + element: AugAssign + target: Attribute + value: Name + id: str = contextManagerExample5 + ctx: Load + attr: str = counter + ctx: Store + op: Add + value: Constant + value: int = 100 + kind: NoneType = None + element: Raise + exc: Call + func: Name + id: str = Exception + ctx: Load + args: list + keywords: list + cause: NoneType = None + element: AugAssign + target: Name + id: str = externalCounter5 + ctx: Store + op: Add + value: Constant + value: int = 2 + kind: NoneType = None + element: AugAssign + target: Attribute + value: Name + id: str = contextManagerExample5 + ctx: Load + attr: str = counter + ctx: Store + op: Add + value: Constant + value: int = 200 + kind: NoneType = None + type_comment: NoneType = None + element: AugAssign + target: Name + id: str = externalCounter4 + ctx: Store + op: Add + value: Constant + value: int = 2 + kind: NoneType = None + element: AugAssign + target: Attribute + value: Name + id: str = contextManagerExample4 + ctx: Load + attr: str = counter + ctx: Store + op: Add + value: Constant + value: int = 200 + kind: NoneType = None + type_comment: NoneType = None + handlers: list + element: ExceptHandler + type: Name + id: str = Exception + ctx: Load + name: str = exception + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = ctx6 + kind: NoneType = None + element: Name + id: str = exception + ctx: Load + keywords: list + orelse: list + finalbody: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = ctx5 + kind: NoneType = None + element: Attribute + value: Name + id: str = contextManagerExample5 + ctx: Load + attr: str = counter + ctx: Load + element: Name + id: str = externalCounter5 + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = ctx4 + kind: NoneType = None + element: Attribute + value: Name + id: str = contextManagerExample4 + ctx: Load + attr: str = counter + ctx: Load + element: Name + id: str = externalCounter4 + ctx: Load + keywords: list + element: Assign + targets: list + element: Name + id: str = iterationCount + ctx: Store + value: Constant + value: int = 0 + kind: NoneType = None + type_comment: NoneType = None + element: With + items: list + element: withitem + context_expr: Call + func: Name + id: str = ContextManagerExample + ctx: Load + args: list + keywords: list + optional_vars: Name + id: str = contextManagerExample5 + ctx: Store + element: withitem + context_expr: Call + func: Name + id: str = ContextManagerExample + ctx: Load + args: list + keywords: list + optional_vars: Name + id: str = contextManagerExample6 + ctx: Store + body: list + element: AugAssign + target: Name + id: str = iterationCount + ctx: Store + op: Add + value: Constant + value: int = 1 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = ctx7 + kind: NoneType = None + element: Name + id: str = iterationCount + ctx: Load + element: Attribute + value: Name + id: str = contextManagerExample5 + ctx: Load + attr: str = counter + ctx: Load + element: Attribute + value: Name + id: str = contextManagerExample6 + ctx: Load + attr: str = counter + ctx: Load + keywords: list + element: Assign + targets: list + element: Name + id: str = iterationCount + ctx: Store + value: Constant + value: int = 0 + kind: NoneType = None + type_comment: NoneType = None + element: With + items: list + element: withitem + context_expr: Call + func: Name + id: str = ContextManagerExample + ctx: Load + args: list + keywords: list + optional_vars: NoneType = None + element: withitem + context_expr: Call + func: Name + id: str = ContextManagerExample + ctx: Load + args: list + keywords: list + optional_vars: NoneType = None + element: withitem + context_expr: Call + func: Name + id: str = ContextManagerExample + ctx: Load + args: list + keywords: list + optional_vars: NoneType = None + element: withitem + context_expr: Call + func: Name + id: str = ContextManagerExample + ctx: Load + args: list + keywords: list + optional_vars: NoneType = None + element: withitem + context_expr: Call + func: Name + id: str = ContextManagerExample + ctx: Load + args: list + keywords: list + optional_vars: NoneType = None + body: list + element: AugAssign + target: Name + id: str = iterationCount + ctx: Store + op: Add + value: Constant + value: int = 1 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = ctx8 + kind: NoneType = None + element: Name + id: str = iterationCount + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/dashed_numbers.js b/transcrypt/development/automated_tests/transcrypt/__target__39/dashed_numbers.js new file mode 100644 index 000000000..c0043e511 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/dashed_numbers.js @@ -0,0 +1,14 @@ +// Transcrypt'ed from Python, 2021-05-14 15:01:26 +var math = {}; +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +import * as __module_math__ from './math.js'; +__nest__ (math, '', __module_math__); +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get run () {return run;}, set run (value) {run = value;}}); +var __name__ = 'dashed_numbers'; +export var run = function (autoTester) { + autoTester.check (1000000000); + autoTester.check (120000.03); + autoTester.check (16777215); +}; + +//# sourceMappingURL=dashed_numbers.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/dashed_numbers.tree b/transcrypt/development/automated_tests/transcrypt/__target__39/dashed_numbers.tree new file mode 100644 index 000000000..d6fd87fcc --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/dashed_numbers.tree @@ -0,0 +1,65 @@ +file: Module + body: list + element: Import + names: list + element: alias + name: str = math + asname: NoneType = None + element: FunctionDef + name: str = run + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = autoTester + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: int = 1000000000 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: float = 120000.03 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: int = 16777215 + kind: NoneType = None + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/data_classes.js b/transcrypt/development/automated_tests/transcrypt/__target__39/data_classes.js new file mode 100644 index 000000000..6b38ec6de --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/data_classes.js @@ -0,0 +1,654 @@ +// Transcrypt'ed from Python, 2021-05-14 15:01:26 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +import {ClassVar} from './typing.js'; +import {dataclass} from './dataclasses.js'; +export {ClassVar, dataclass}; +var __all__ = dict ({get A () {return A;}, set A (value) {A = value;}, get B () {return B;}, set B (value) {B = value;}, get C () {return C;}, set C (value) {C = value;}, get D () {return D;}, set D (value) {D = value;}, get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get getQ () {return getQ;}, set getQ (value) {getQ = value;}, get run () {return run;}, set run (value) {run = value;}}); +var __name__ = 'data_classes'; +export var getQ = function () { + return 1002; +}; +export var A = __class__ ('A', [object], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self) { + var kwargs = dict (); + if (arguments.length) { + var __ilastarg0__ = arguments.length - 1; + if (arguments [__ilastarg0__] && arguments [__ilastarg0__].hasOwnProperty ("__kwargtrans__")) { + var __allkwargs0__ = arguments [__ilastarg0__--]; + for (var __attrib0__ in __allkwargs0__) { + switch (__attrib0__) { + case 'self': var self = __allkwargs0__ [__attrib0__]; break; + default: kwargs [__attrib0__] = __allkwargs0__ [__attrib0__]; + } + } + delete kwargs.__kwargtrans__; + } + var args = tuple ([].slice.apply (arguments).slice (1, __ilastarg0__ + 1)); + } + else { + var args = tuple (); + } + let names = self.__initfields__.values (); + for (let arg of args) { + self [names.next () .value] = arg; + } + for (let name of kwargs.py_keys ()) { + self [name] = kwargs [name]; + } + });}, + get __repr__ () {return __get__ (this, function (self) { + let names = self.__reprfields__.values (); + let fields = []; + for (let name of names) {{ + fields.push (name + '=' + repr (self [name])); + }} + return self.__name__ + '(' + ', '.join (fields) + ')' + });}, + get __eq__ () {return __get__ (this, function (self, other) { + let names = self.__comparefields__.values (); + let selfFields = []; + let otherFields = []; + for (let name of names) { + selfFields.push (self [name]); + otherFields.push (other [name]); + } + return list (selfFields).__eq__(list (otherFields)); + });}, + get __ne__ () {return __get__ (this, function (self, other) { + let names = self.__comparefields__.values (); + let selfFields = []; + let otherFields = []; + for (let name of names) { + selfFields.push (self [name]); + otherFields.push (other [name]); + } + return list (selfFields).__ne__(list (otherFields)); + });}, + get __lt__ () {return __get__ (this, function (self, other) { + let names = self.__comparefields__.values (); + let selfFields = []; + let otherFields = []; + for (let name of names) { + selfFields.push (self [name]); + otherFields.push (other [name]); + } + return list (selfFields).__lt__(list (otherFields)); + });}, + get __le__ () {return __get__ (this, function (self, other) { + let names = self.__comparefields__.values (); + let selfFields = []; + let otherFields = []; + for (let name of names) { + selfFields.push (self [name]); + otherFields.push (other [name]); + } + return list (selfFields).__le__(list (otherFields)); + });}, + get __gt__ () {return __get__ (this, function (self, other) { + let names = self.__comparefields__.values (); + let selfFields = []; + let otherFields = []; + for (let name of names) { + selfFields.push (self [name]); + otherFields.push (other [name]); + } + return list (selfFields).__gt__(list (otherFields)); + });}, + get __ge__ () {return __get__ (this, function (self, other) { + let names = self.__comparefields__.values (); + let selfFields = []; + let otherFields = []; + for (let name of names) { + selfFields.push (self [name]); + otherFields.push (other [name]); + } + return list (selfFields).__ge__(list (otherFields)); + });}, + m: 101010, + n: 202020 +}) +for (let aClass of A.__bases__) { + __mergefields__ (A, aClass); +}; +__mergefields__ (A, {__reprfields__: new Set (['n']), __comparefields__: new Set (['n']), __initfields__: new Set (['n'])}); +export var B = __class__ ('B', [A], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self) { + var kwargs = dict (); + if (arguments.length) { + var __ilastarg0__ = arguments.length - 1; + if (arguments [__ilastarg0__] && arguments [__ilastarg0__].hasOwnProperty ("__kwargtrans__")) { + var __allkwargs0__ = arguments [__ilastarg0__--]; + for (var __attrib0__ in __allkwargs0__) { + switch (__attrib0__) { + case 'self': var self = __allkwargs0__ [__attrib0__]; break; + default: kwargs [__attrib0__] = __allkwargs0__ [__attrib0__]; + } + } + delete kwargs.__kwargtrans__; + } + var args = tuple ([].slice.apply (arguments).slice (1, __ilastarg0__ + 1)); + } + else { + var args = tuple (); + } + let names = self.__initfields__.values (); + for (let arg of args) { + self [names.next () .value] = arg; + } + for (let name of kwargs.py_keys ()) { + self [name] = kwargs [name]; + } + });}, + get __repr__ () {return __get__ (this, function (self) { + let names = self.__reprfields__.values (); + let fields = []; + for (let name of names) {{ + fields.push (name + '=' + repr (self [name])); + }} + return self.__name__ + '(' + ', '.join (fields) + ')' + });}, + get __eq__ () {return __get__ (this, function (self, other) { + let names = self.__comparefields__.values (); + let selfFields = []; + let otherFields = []; + for (let name of names) { + selfFields.push (self [name]); + otherFields.push (other [name]); + } + return list (selfFields).__eq__(list (otherFields)); + });}, + get __ne__ () {return __get__ (this, function (self, other) { + let names = self.__comparefields__.values (); + let selfFields = []; + let otherFields = []; + for (let name of names) { + selfFields.push (self [name]); + otherFields.push (other [name]); + } + return list (selfFields).__ne__(list (otherFields)); + });}, + get __lt__ () {return __get__ (this, function (self, other) { + let names = self.__comparefields__.values (); + let selfFields = []; + let otherFields = []; + for (let name of names) { + selfFields.push (self [name]); + otherFields.push (other [name]); + } + return list (selfFields).__lt__(list (otherFields)); + });}, + get __le__ () {return __get__ (this, function (self, other) { + let names = self.__comparefields__.values (); + let selfFields = []; + let otherFields = []; + for (let name of names) { + selfFields.push (self [name]); + otherFields.push (other [name]); + } + return list (selfFields).__le__(list (otherFields)); + });}, + get __gt__ () {return __get__ (this, function (self, other) { + let names = self.__comparefields__.values (); + let selfFields = []; + let otherFields = []; + for (let name of names) { + selfFields.push (self [name]); + otherFields.push (other [name]); + } + return list (selfFields).__gt__(list (otherFields)); + });}, + get __ge__ () {return __get__ (this, function (self, other) { + let names = self.__comparefields__.values (); + let selfFields = []; + let otherFields = []; + for (let name of names) { + selfFields.push (self [name]); + otherFields.push (other [name]); + } + return list (selfFields).__ge__(list (otherFields)); + });}, + p: 1001, + q: 1002 +}) +for (let aClass of B.__bases__) { + __mergefields__ (B, aClass); +}; +__mergefields__ (B, {__reprfields__: new Set (['p', 'q']), __comparefields__: new Set (['p', 'q']), __initfields__: new Set (['p', 'q'])}); +export var C = __class__ ('C', [B], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self) { + var kwargs = dict (); + if (arguments.length) { + var __ilastarg0__ = arguments.length - 1; + if (arguments [__ilastarg0__] && arguments [__ilastarg0__].hasOwnProperty ("__kwargtrans__")) { + var __allkwargs0__ = arguments [__ilastarg0__--]; + for (var __attrib0__ in __allkwargs0__) { + switch (__attrib0__) { + case 'self': var self = __allkwargs0__ [__attrib0__]; break; + default: kwargs [__attrib0__] = __allkwargs0__ [__attrib0__]; + } + } + delete kwargs.__kwargtrans__; + } + var args = tuple ([].slice.apply (arguments).slice (1, __ilastarg0__ + 1)); + } + else { + var args = tuple (); + } + let names = self.__initfields__.values (); + for (let arg of args) { + self [names.next () .value] = arg; + } + for (let name of kwargs.py_keys ()) { + self [name] = kwargs [name]; + } + });}, + get __repr__ () {return __get__ (this, function (self) { + let names = self.__reprfields__.values (); + let fields = []; + for (let name of names) {{ + fields.push (name + '=' + repr (self [name])); + }} + return self.__name__ + '(' + ', '.join (fields) + ')' + });}, + get __eq__ () {return __get__ (this, function (self, other) { + let names = self.__comparefields__.values (); + let selfFields = []; + let otherFields = []; + for (let name of names) { + selfFields.push (self [name]); + otherFields.push (other [name]); + } + return list (selfFields).__eq__(list (otherFields)); + });}, + get __ne__ () {return __get__ (this, function (self, other) { + let names = self.__comparefields__.values (); + let selfFields = []; + let otherFields = []; + for (let name of names) { + selfFields.push (self [name]); + otherFields.push (other [name]); + } + return list (selfFields).__ne__(list (otherFields)); + });}, + get __lt__ () {return __get__ (this, function (self, other) { + let names = self.__comparefields__.values (); + let selfFields = []; + let otherFields = []; + for (let name of names) { + selfFields.push (self [name]); + otherFields.push (other [name]); + } + return list (selfFields).__lt__(list (otherFields)); + });}, + get __le__ () {return __get__ (this, function (self, other) { + let names = self.__comparefields__.values (); + let selfFields = []; + let otherFields = []; + for (let name of names) { + selfFields.push (self [name]); + otherFields.push (other [name]); + } + return list (selfFields).__le__(list (otherFields)); + });}, + get __gt__ () {return __get__ (this, function (self, other) { + let names = self.__comparefields__.values (); + let selfFields = []; + let otherFields = []; + for (let name of names) { + selfFields.push (self [name]); + otherFields.push (other [name]); + } + return list (selfFields).__gt__(list (otherFields)); + });}, + get __ge__ () {return __get__ (this, function (self, other) { + let names = self.__comparefields__.values (); + let selfFields = []; + let otherFields = []; + for (let name of names) { + selfFields.push (self [name]); + otherFields.push (other [name]); + } + return list (selfFields).__ge__(list (otherFields)); + });}, + CC: __class__ ('CC', [B], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self) { + var kwargs = dict (); + if (arguments.length) { + var __ilastarg0__ = arguments.length - 1; + if (arguments [__ilastarg0__] && arguments [__ilastarg0__].hasOwnProperty ("__kwargtrans__")) { + var __allkwargs0__ = arguments [__ilastarg0__--]; + for (var __attrib0__ in __allkwargs0__) { + switch (__attrib0__) { + case 'self': var self = __allkwargs0__ [__attrib0__]; break; + default: kwargs [__attrib0__] = __allkwargs0__ [__attrib0__]; + } + } + delete kwargs.__kwargtrans__; + } + var args = tuple ([].slice.apply (arguments).slice (1, __ilastarg0__ + 1)); + } + else { + var args = tuple (); + } + let names = self.__initfields__.values (); + for (let arg of args) { + self [names.next () .value] = arg; + } + for (let name of kwargs.py_keys ()) { + self [name] = kwargs [name]; + } + });}, + get __repr__ () {return __get__ (this, function (self) { + let names = self.__reprfields__.values (); + let fields = []; + for (let name of names) {{ + fields.push (name + '=' + repr (self [name])); + }} + return self.__name__ + '(' + ', '.join (fields) + ')' + });}, + get __eq__ () {return __get__ (this, function (self, other) { + let names = self.__comparefields__.values (); + let selfFields = []; + let otherFields = []; + for (let name of names) { + selfFields.push (self [name]); + otherFields.push (other [name]); + } + return list (selfFields).__eq__(list (otherFields)); + });}, + get __ne__ () {return __get__ (this, function (self, other) { + let names = self.__comparefields__.values (); + let selfFields = []; + let otherFields = []; + for (let name of names) { + selfFields.push (self [name]); + otherFields.push (other [name]); + } + return list (selfFields).__ne__(list (otherFields)); + });}, + get __lt__ () {return __get__ (this, function (self, other) { + let names = self.__comparefields__.values (); + let selfFields = []; + let otherFields = []; + for (let name of names) { + selfFields.push (self [name]); + otherFields.push (other [name]); + } + return list (selfFields).__lt__(list (otherFields)); + });}, + get __le__ () {return __get__ (this, function (self, other) { + let names = self.__comparefields__.values (); + let selfFields = []; + let otherFields = []; + for (let name of names) { + selfFields.push (self [name]); + otherFields.push (other [name]); + } + return list (selfFields).__le__(list (otherFields)); + });}, + get __gt__ () {return __get__ (this, function (self, other) { + let names = self.__comparefields__.values (); + let selfFields = []; + let otherFields = []; + for (let name of names) { + selfFields.push (self [name]); + otherFields.push (other [name]); + } + return list (selfFields).__gt__(list (otherFields)); + });}, + get __ge__ () {return __get__ (this, function (self, other) { + let names = self.__comparefields__.values (); + let selfFields = []; + let otherFields = []; + for (let name of names) { + selfFields.push (self [name]); + otherFields.push (other [name]); + } + return list (selfFields).__ge__(list (otherFields)); + });}, + k: 40, + l: 55.5, + j: 60 + }), + x: 10, + y: 20, + yy: 22, + z: 30, + zz: 33, + t: 40, + g: 100000, + h: 100001, + i: 100002, + get getV () {return __get__ (this, function (self) { + return 3; + });}, + get setV () {return __get__ (this, function (self, value) { + // pass; + });}, + get getW () {return __get__ (this, function (self) { + return 4; + });}, + get setW () {return __get__ (this, function (self, value) { + // pass; + });}, + get f () {return __get__ (this, function (self, p, autoTester) { + self.a = p; + self.b = 2000; + autoTester.check (self.x, self.y, self.a); + return 'something(a: {}, b: {})'.format (self.a, self.b); + });} +}); +Object.defineProperty (C, 'v', property.call (C, C.getV, C.setV)); +Object.defineProperty (C, 'w', property.call (C, C.getW, C.setW)) +for (let aClass of C.CC.__bases__) { + __mergefields__ (C.CC, aClass); +}; +__mergefields__ (C.CC, {__reprfields__: new Set (['k', 'l']), __comparefields__: new Set (['k', 'l']), __initfields__: new Set (['k', 'l'])}) +for (let aClass of C.__bases__) { + __mergefields__ (C, aClass); +}; +__mergefields__ (C, {__reprfields__: new Set (['y', 'yy', 'z', 'zz', 'w']), __comparefields__: new Set (['y', 'yy', 'z', 'zz', 'w']), __initfields__: new Set (['y', 'yy', 'z', 'zz'])}); +export var D = __class__ ('D', [object], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self) { + var kwargs = dict (); + if (arguments.length) { + var __ilastarg0__ = arguments.length - 1; + if (arguments [__ilastarg0__] && arguments [__ilastarg0__].hasOwnProperty ("__kwargtrans__")) { + var __allkwargs0__ = arguments [__ilastarg0__--]; + for (var __attrib0__ in __allkwargs0__) { + switch (__attrib0__) { + case 'self': var self = __allkwargs0__ [__attrib0__]; break; + default: kwargs [__attrib0__] = __allkwargs0__ [__attrib0__]; + } + } + delete kwargs.__kwargtrans__; + } + var args = tuple ([].slice.apply (arguments).slice (1, __ilastarg0__ + 1)); + } + else { + var args = tuple (); + } + let names = self.__initfields__.values (); + for (let arg of args) { + self [names.next () .value] = arg; + } + for (let name of kwargs.py_keys ()) { + self [name] = kwargs [name]; + } + });}, + get __repr__ () {return __get__ (this, function (self) { + let names = self.__reprfields__.values (); + let fields = []; + for (let name of names) {{ + fields.push (name + '=' + repr (self [name])); + }} + return self.__name__ + '(' + ', '.join (fields) + ')' + });}, + get __eq__ () {return __get__ (this, function (self, other) { + let names = self.__comparefields__.values (); + let selfFields = []; + let otherFields = []; + for (let name of names) { + selfFields.push (self [name]); + otherFields.push (other [name]); + } + return list (selfFields).__eq__(list (otherFields)); + });}, + get __ne__ () {return __get__ (this, function (self, other) { + let names = self.__comparefields__.values (); + let selfFields = []; + let otherFields = []; + for (let name of names) { + selfFields.push (self [name]); + otherFields.push (other [name]); + } + return list (selfFields).__ne__(list (otherFields)); + });}, + get __lt__ () {return __get__ (this, function (self, other) { + let names = self.__comparefields__.values (); + let selfFields = []; + let otherFields = []; + for (let name of names) { + selfFields.push (self [name]); + otherFields.push (other [name]); + } + return list (selfFields).__lt__(list (otherFields)); + });}, + get __le__ () {return __get__ (this, function (self, other) { + let names = self.__comparefields__.values (); + let selfFields = []; + let otherFields = []; + for (let name of names) { + selfFields.push (self [name]); + otherFields.push (other [name]); + } + return list (selfFields).__le__(list (otherFields)); + });}, + get __gt__ () {return __get__ (this, function (self, other) { + let names = self.__comparefields__.values (); + let selfFields = []; + let otherFields = []; + for (let name of names) { + selfFields.push (self [name]); + otherFields.push (other [name]); + } + return list (selfFields).__gt__(list (otherFields)); + });}, + get __ge__ () {return __get__ (this, function (self, other) { + let names = self.__comparefields__.values (); + let selfFields = []; + let otherFields = []; + for (let name of names) { + selfFields.push (self [name]); + otherFields.push (other [name]); + } + return list (selfFields).__ge__(list (otherFields)); + });}, + _p: 3, + get setP () {return __get__ (this, function (self, value) { + // pass; + });}, + get getP () {return __get__ (this, function (self) { + return 20; + });} +}); +Object.defineProperty (D, 'p', property.call (D, D.getP, D.setP)) +for (let aClass of D.__bases__) { + __mergefields__ (D, aClass); +}; +__mergefields__ (D, {__reprfields__: new Set (['_p', 'p']), __comparefields__: new Set (['_p', 'p']), __initfields__: new Set (['_p'])}); +export var run = function (autoTester) { + var c = C (__kwargtrans__ ({y: 200, zz: 330})); + var cc = C (__kwargtrans__ ({y: 10200})); + c.f (123, autoTester); + c.t = 400; + cc.f (456, autoTester); + cc.t = 4000; + for (var obj of tuple ([c, cc])) { + autoTester.check (obj.x, obj.y, obj.yy, obj.z, obj.zz, obj.t, obj.a, obj.b); + } + autoTester.check (repr (c)); + autoTester.check (repr (cc)); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __eq__ (c, cc)); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __ne__ (c, cc)); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __lt__ (c, cc)); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __gt__ (c, cc)); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __le__ (c, cc)); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __ge__ (c, cc)); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __eq__ (c, c)); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __ne__ (c, c)); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __lt__ (c, c)); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __gt__ (c, c)); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __le__ (c, c)); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __ge__ (c, c)); + }) (); + var d3 = __call__ (D, null); + var d1 = __call__ (D, null); + var d2 = __call__ (D, null); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __call__ (repr, null, d1)); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, d3, d1, __gt__ (d3, d1)); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, d2, d1, __gt__ (d2, d1)); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, d3, d2, __gt__ (d3, d2)); + }) (); + var ccc = (function () { + var __accu0__ = C; + return __call__ (__accu0__.CC, __accu0__); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, ccc.n, ccc.p, ccc.q, ccc.k, ccc.l); + }) (); +}; + +//# sourceMappingURL=data_classes.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/data_classes.tree b/transcrypt/development/automated_tests/transcrypt/__target__39/data_classes.tree new file mode 100644 index 000000000..4763dcffa --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/data_classes.tree @@ -0,0 +1,1246 @@ +file: Module + body: list + element: ImportFrom + module: str = dataclasses + names: list + element: alias + name: str = dataclass + asname: NoneType = None + level: int = 0 + element: ImportFrom + module: str = typing + names: list + element: alias + name: str = ClassVar + asname: NoneType = None + level: int = 0 + element: FunctionDef + name: str = getQ + args: arguments + posonlyargs: list + args: list + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Constant + value: int = 1002 + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: ClassDef + name: str = A + bases: list + keywords: list + body: list + element: Assign + targets: list + element: Name + id: str = m + ctx: Store + value: Constant + value: int = 101010 + kind: NoneType = None + type_comment: NoneType = None + element: AnnAssign + target: Name + id: str = n + ctx: Store + annotation: Name + id: str = int + ctx: Load + value: Constant + value: int = 202020 + kind: NoneType = None + simple: int = 1 + decorator_list: list + element: Name + id: str = dataclass + ctx: Load + element: ClassDef + name: str = B + bases: list + element: Name + id: str = A + ctx: Load + keywords: list + body: list + element: AnnAssign + target: Name + id: str = p + ctx: Store + annotation: Name + id: str = int + ctx: Load + value: Constant + value: int = 1001 + kind: NoneType = None + simple: int = 1 + element: AnnAssign + target: Name + id: str = q + ctx: Store + annotation: Name + id: str = int + ctx: Load + value: Constant + value: int = 1002 + kind: NoneType = None + simple: int = 1 + decorator_list: list + element: Name + id: str = dataclass + ctx: Load + element: ClassDef + name: str = C + bases: list + element: Name + id: str = B + ctx: Load + keywords: list + body: list + element: ClassDef + name: str = CC + bases: list + element: Name + id: str = B + ctx: Load + keywords: list + body: list + element: AnnAssign + target: Name + id: str = k + ctx: Store + annotation: Name + id: str = int + ctx: Load + value: Constant + value: int = 40 + kind: NoneType = None + simple: int = 1 + element: AnnAssign + target: Name + id: str = l + ctx: Store + annotation: Name + id: str = float + ctx: Load + value: Constant + value: float = 55.5 + kind: NoneType = None + simple: int = 1 + element: Assign + targets: list + element: Name + id: str = j + ctx: Store + value: Constant + value: int = 60 + kind: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: Name + id: str = dataclass + ctx: Load + element: AnnAssign + target: Name + id: str = x + ctx: Store + annotation: Name + id: str = ClassVar + ctx: Load + value: Constant + value: int = 10 + kind: NoneType = None + simple: int = 1 + element: AnnAssign + target: Name + id: str = y + ctx: Store + annotation: Name + id: str = int + ctx: Load + value: Constant + value: int = 20 + kind: NoneType = None + simple: int = 1 + element: AnnAssign + target: Name + id: str = yy + ctx: Store + annotation: Name + id: str = int + ctx: Load + value: Constant + value: int = 22 + kind: NoneType = None + simple: int = 1 + element: AnnAssign + target: Name + id: str = z + ctx: Store + annotation: Name + id: str = int + ctx: Load + value: Constant + value: int = 30 + kind: NoneType = None + simple: int = 1 + element: AnnAssign + target: Name + id: str = zz + ctx: Store + annotation: Name + id: str = int + ctx: Load + value: Constant + value: int = 33 + kind: NoneType = None + simple: int = 1 + element: AnnAssign + target: Name + id: str = t + ctx: Store + annotation: Name + id: str = ClassVar + ctx: Load + value: Constant + value: int = 40 + kind: NoneType = None + simple: int = 1 + element: Assign + targets: list + element: Name + id: str = g + ctx: Store + value: Constant + value: int = 100000 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = h + ctx: Store + value: Constant + value: int = 100001 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = i + ctx: Store + value: Constant + value: int = 100002 + kind: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = getV + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Constant + value: int = 3 + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = setV + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = value + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Pass + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = v + ctx: Store + value: Call + func: Name + id: str = property + ctx: Load + args: list + element: Name + id: str = getV + ctx: Load + element: Name + id: str = setV + ctx: Load + keywords: list + type_comment: NoneType = None + element: FunctionDef + name: str = getW + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Constant + value: int = 4 + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = setW + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = value + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Pass + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: AnnAssign + target: Name + id: str = w + ctx: Store + annotation: Name + id: str = int + ctx: Load + value: Call + func: Name + id: str = property + ctx: Load + args: list + element: Name + id: str = getW + ctx: Load + element: Name + id: str = setW + ctx: Load + keywords: list + simple: int = 1 + element: FunctionDef + name: str = f + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = p + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = autoTester + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = a + ctx: Store + value: Name + id: str = p + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = b + ctx: Store + value: Constant + value: int = 2000 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = x + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = y + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = a + ctx: Load + keywords: list + element: Return + value: JoinedStr + values: list + element: Constant + value: str = something(a: + kind: NoneType = None + element: FormattedValue + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = a + ctx: Load + conversion: int = -1 + format_spec: NoneType = None + element: Constant + value: str = , b: + kind: NoneType = None + element: FormattedValue + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = b + ctx: Load + conversion: int = -1 + format_spec: NoneType = None + element: Constant + value: str = ) + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: Call + func: Name + id: str = dataclass + ctx: Load + args: list + keywords: list + element: keyword + arg: str = order + value: Constant + value: bool = True + kind: NoneType = None + element: ClassDef + name: str = D + bases: list + keywords: list + body: list + element: AnnAssign + target: Name + id: str = _p + ctx: Store + annotation: Name + id: str = int + ctx: Load + value: Constant + value: int = 3 + kind: NoneType = None + simple: int = 1 + element: FunctionDef + name: str = setP + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = value + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Pass + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = getP + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Constant + value: int = 20 + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: AnnAssign + target: Name + id: str = p + ctx: Store + annotation: Name + id: str = int + ctx: Load + value: Call + func: Name + id: str = property + ctx: Load + args: list + element: Name + id: str = getP + ctx: Load + element: Name + id: str = setP + ctx: Load + keywords: list + simple: int = 1 + decorator_list: list + element: Call + func: Name + id: str = dataclass + ctx: Load + args: list + keywords: list + element: keyword + arg: str = order + value: Constant + value: bool = True + kind: NoneType = None + element: FunctionDef + name: str = run + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = autoTester + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Name + id: str = c + ctx: Store + value: Call + func: Name + id: str = C + ctx: Load + args: list + keywords: list + element: keyword + arg: str = y + value: Constant + value: int = 200 + kind: NoneType = None + element: keyword + arg: str = zz + value: Constant + value: int = 330 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = cc + ctx: Store + value: Call + func: Name + id: str = C + ctx: Load + args: list + keywords: list + element: keyword + arg: str = y + value: Constant + value: int = 10200 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = c + ctx: Load + attr: str = f + ctx: Load + args: list + element: Constant + value: int = 123 + kind: NoneType = None + element: Name + id: str = autoTester + ctx: Load + keywords: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = c + ctx: Load + attr: str = t + ctx: Store + value: Constant + value: int = 400 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = cc + ctx: Load + attr: str = f + ctx: Load + args: list + element: Constant + value: int = 456 + kind: NoneType = None + element: Name + id: str = autoTester + ctx: Load + keywords: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = cc + ctx: Load + attr: str = t + ctx: Store + value: Constant + value: int = 4000 + kind: NoneType = None + type_comment: NoneType = None + element: For + target: Name + id: str = obj + ctx: Store + iter: Tuple + elts: list + element: Name + id: str = c + ctx: Load + element: Name + id: str = cc + ctx: Load + ctx: Load + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = obj + ctx: Load + attr: str = x + ctx: Load + element: Attribute + value: Name + id: str = obj + ctx: Load + attr: str = y + ctx: Load + element: Attribute + value: Name + id: str = obj + ctx: Load + attr: str = yy + ctx: Load + element: Attribute + value: Name + id: str = obj + ctx: Load + attr: str = z + ctx: Load + element: Attribute + value: Name + id: str = obj + ctx: Load + attr: str = zz + ctx: Load + element: Attribute + value: Name + id: str = obj + ctx: Load + attr: str = t + ctx: Load + element: Attribute + value: Name + id: str = obj + ctx: Load + attr: str = a + ctx: Load + element: Attribute + value: Name + id: str = obj + ctx: Load + attr: str = b + ctx: Load + keywords: list + orelse: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Name + id: str = c + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Name + id: str = cc + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = opov + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Name + id: str = c + ctx: Load + ops: list + element: Eq + comparators: list + element: Name + id: str = cc + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Name + id: str = c + ctx: Load + ops: list + element: NotEq + comparators: list + element: Name + id: str = cc + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Name + id: str = c + ctx: Load + ops: list + element: Lt + comparators: list + element: Name + id: str = cc + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Name + id: str = c + ctx: Load + ops: list + element: Gt + comparators: list + element: Name + id: str = cc + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Name + id: str = c + ctx: Load + ops: list + element: LtE + comparators: list + element: Name + id: str = cc + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Name + id: str = c + ctx: Load + ops: list + element: GtE + comparators: list + element: Name + id: str = cc + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Name + id: str = c + ctx: Load + ops: list + element: Eq + comparators: list + element: Name + id: str = c + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Name + id: str = c + ctx: Load + ops: list + element: NotEq + comparators: list + element: Name + id: str = c + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Name + id: str = c + ctx: Load + ops: list + element: Lt + comparators: list + element: Name + id: str = c + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Name + id: str = c + ctx: Load + ops: list + element: Gt + comparators: list + element: Name + id: str = c + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Name + id: str = c + ctx: Load + ops: list + element: LtE + comparators: list + element: Name + id: str = c + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Name + id: str = c + ctx: Load + ops: list + element: GtE + comparators: list + element: Name + id: str = c + ctx: Load + keywords: list + element: Assign + targets: list + element: Name + id: str = d3 + ctx: Store + value: Call + func: Name + id: str = D + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = d1 + ctx: Store + value: Call + func: Name + id: str = D + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = d2 + ctx: Store + value: Call + func: Name + id: str = D + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Name + id: str = d1 + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = d3 + ctx: Load + element: Name + id: str = d1 + ctx: Load + element: Compare + left: Name + id: str = d3 + ctx: Load + ops: list + element: Gt + comparators: list + element: Name + id: str = d1 + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = d2 + ctx: Load + element: Name + id: str = d1 + ctx: Load + element: Compare + left: Name + id: str = d2 + ctx: Load + ops: list + element: Gt + comparators: list + element: Name + id: str = d1 + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = d3 + ctx: Load + element: Name + id: str = d2 + ctx: Load + element: Compare + left: Name + id: str = d3 + ctx: Load + ops: list + element: Gt + comparators: list + element: Name + id: str = d2 + ctx: Load + keywords: list + element: Assign + targets: list + element: Name + id: str = ccc + ctx: Store + value: Call + func: Attribute + value: Name + id: str = C + ctx: Load + attr: str = CC + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = ccc + ctx: Load + attr: str = n + ctx: Load + element: Attribute + value: Name + id: str = ccc + ctx: Load + attr: str = p + ctx: Load + element: Attribute + value: Name + id: str = ccc + ctx: Load + attr: str = q + ctx: Load + element: Attribute + value: Name + id: str = ccc + ctx: Load + attr: str = k + ctx: Load + element: Attribute + value: Name + id: str = ccc + ctx: Load + attr: str = l + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/data_structures.js b/transcrypt/development/automated_tests/transcrypt/__target__39/data_structures.js new file mode 100644 index 000000000..9e36f0cb4 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/data_structures.js @@ -0,0 +1,54 @@ +// Transcrypt'ed from Python, 2021-05-14 15:01:26 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get run () {return run;}, set run (value) {run = value;}}); +var __name__ = 'data_structures'; +export var run = function (autoTester) { + var aList = [1, 2, 3, 'moon', 'stars']; + autoTester.check (aList); + aList.insert (3, 'sun'); + autoTester.check (aList); + autoTester.check (aList.__getslice__ (2, 4, 1)); + autoTester.check (aList.__getslice__ (0, null, 1)); + autoTester.check (aList.__getslice__ (2, null, 1)); + autoTester.check (len (aList)); + aList.append ('milkyway'); + autoTester.check (aList); + aList.extend (['m1', 'm31']); + autoTester.check (aList); + var anotherList = list (tuple (['a', 'b', 'c'])); + autoTester.check (anotherList); + autoTester.check (__in__ ('b', anotherList)); + autoTester.check (__in__ ('d', anotherList)); + var aDict = dict ({1: 'plant', 'animal': 2}); + autoTester.check (aDict); + autoTester.check (, ); + var p = function () { + return 3; + }; + var q = 4; + autoTester.check (dict ([[p (), 'three'], [q, 'four']])); + var aTuple = tuple ([1, 2, 3, 4, 5]); + autoTester.check (aTuple); + autoTester.check (len (aTuple)); + var anotherTuple = tuple ([1]); + autoTester.check (anotherTuple); + var aSet = new set ([1, 2, 2, 3]); + autoTester.check (aSet); + autoTester.check (len (aSet)); + autoTester.check (__in__ (2, aSet)); + autoTester.check (__in__ (4, aSet)); + aSet.py_clear (); + autoTester.check (aSet); + var anotherSet = set (tuple ([4, 5, 5, 6])); + autoTester.check (anotherSet); + var emptySet = set (); + autoTester.check (emptySet); + autoTester.check (len (emptySet)); + var aString = 'c_cis_d_dis_e_f_fis_g_gis_a_ais_b_c'; + autoTester.check (__in__ ('cis', aString)); + autoTester.check (__in__ ('g', aString)); + autoTester.check (__in__ ('bes', aString)); + autoTester.check (__in__ ('z', aString)); +}; + +//# sourceMappingURL=data_structures.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/data_structures.tree b/transcrypt/development/automated_tests/transcrypt/__target__39/data_structures.tree new file mode 100644 index 000000000..b77dfb88d --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/data_structures.tree @@ -0,0 +1,790 @@ +file: Module + body: list + element: FunctionDef + name: str = run + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = autoTester + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Name + id: str = aList + ctx: Store + value: List + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + element: Constant + value: str = moon + kind: NoneType = None + element: Constant + value: str = stars + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = aList + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = aList + ctx: Load + attr: str = insert + ctx: Load + args: list + element: Constant + value: int = 3 + kind: NoneType = None + element: Constant + value: str = sun + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = aList + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Subscript + value: Name + id: str = aList + ctx: Load + slice: Slice + lower: Constant + value: int = 2 + kind: NoneType = None + upper: Constant + value: int = 4 + kind: NoneType = None + step: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Subscript + value: Name + id: str = aList + ctx: Load + slice: Slice + lower: NoneType = None + upper: NoneType = None + step: NoneType = None + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Subscript + value: Name + id: str = aList + ctx: Load + slice: Slice + lower: Constant + value: int = 2 + kind: NoneType = None + upper: NoneType = None + step: NoneType = None + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = len + ctx: Load + args: list + element: Name + id: str = aList + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = aList + ctx: Load + attr: str = append + ctx: Load + args: list + element: Constant + value: str = milkyway + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = aList + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = aList + ctx: Load + attr: str = extend + ctx: Load + args: list + element: List + elts: list + element: Constant + value: str = m1 + kind: NoneType = None + element: Constant + value: str = m31 + kind: NoneType = None + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = aList + ctx: Load + keywords: list + element: Assign + targets: list + element: Name + id: str = anotherList + ctx: Store + value: Call + func: Name + id: str = list + ctx: Load + args: list + element: Tuple + elts: list + element: Constant + value: str = a + kind: NoneType = None + element: Constant + value: str = b + kind: NoneType = None + element: Constant + value: str = c + kind: NoneType = None + ctx: Load + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = anotherList + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Constant + value: str = b + kind: NoneType = None + ops: list + element: In + comparators: list + element: Name + id: str = anotherList + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Constant + value: str = d + kind: NoneType = None + ops: list + element: In + comparators: list + element: Name + id: str = anotherList + ctx: Load + keywords: list + element: Assign + targets: list + element: Name + id: str = aDict + ctx: Store + value: Dict + keys: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: str = animal + kind: NoneType = None + values: list + element: Constant + value: str = plant + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = aDict + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Subscript + value: Name + id: str = aDict + ctx: Load + slice: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + element: Subscript + value: Name + id: str = aDict + ctx: Load + slice: Constant + value: str = animal + kind: NoneType = None + ctx: Load + keywords: list + element: FunctionDef + name: str = p + args: arguments + posonlyargs: list + args: list + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Constant + value: int = 3 + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = q + ctx: Store + value: Constant + value: int = 4 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Dict + keys: list + element: Call + func: Name + id: str = p + ctx: Load + args: list + keywords: list + element: Name + id: str = q + ctx: Load + values: list + element: Constant + value: str = three + kind: NoneType = None + element: Constant + value: str = four + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = aTuple + ctx: Store + value: Tuple + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + element: Constant + value: int = 4 + kind: NoneType = None + element: Constant + value: int = 5 + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = aTuple + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = len + ctx: Load + args: list + element: Name + id: str = aTuple + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = anotherTuple + ctx: Store + value: Tuple + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = anotherTuple + ctx: Load + keywords: list + element: Assign + targets: list + element: Name + id: str = aSet + ctx: Store + value: Set + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = aSet + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = len + ctx: Load + args: list + element: Name + id: str = aSet + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Constant + value: int = 2 + kind: NoneType = None + ops: list + element: In + comparators: list + element: Name + id: str = aSet + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Constant + value: int = 4 + kind: NoneType = None + ops: list + element: In + comparators: list + element: Name + id: str = aSet + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = aSet + ctx: Load + attr: str = clear + ctx: Load + args: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = aSet + ctx: Load + keywords: list + element: Assign + targets: list + element: Name + id: str = anotherSet + ctx: Store + value: Call + func: Name + id: str = set + ctx: Load + args: list + element: Tuple + elts: list + element: Constant + value: int = 4 + kind: NoneType = None + element: Constant + value: int = 5 + kind: NoneType = None + element: Constant + value: int = 5 + kind: NoneType = None + element: Constant + value: int = 6 + kind: NoneType = None + ctx: Load + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = anotherSet + ctx: Load + keywords: list + element: Assign + targets: list + element: Name + id: str = emptySet + ctx: Store + value: Call + func: Name + id: str = set + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = emptySet + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = len + ctx: Load + args: list + element: Name + id: str = emptySet + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = aString + ctx: Store + value: Constant + value: str = c_cis_d_dis_e_f_fis_g_gis_a_ais_b_c + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Constant + value: str = cis + kind: NoneType = None + ops: list + element: In + comparators: list + element: Name + id: str = aString + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Constant + value: str = g + kind: NoneType = None + ops: list + element: In + comparators: list + element: Name + id: str = aString + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Constant + value: str = bes + kind: NoneType = None + ops: list + element: In + comparators: list + element: Name + id: str = aString + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Constant + value: str = z + kind: NoneType = None + ops: list + element: In + comparators: list + element: Name + id: str = aString + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/dataclasses.js b/transcrypt/development/automated_tests/transcrypt/__target__39/dataclasses.js new file mode 100644 index 000000000..443a908ce --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/dataclasses.js @@ -0,0 +1,7 @@ +// Transcrypt'ed from Python, 2021-05-14 15:01:26 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get dataclass () {return dataclass;}, set dataclass (value) {dataclass = value;}}); +var __name__ = 'dataclasses'; +export var dataclass = null; + +//# sourceMappingURL=dataclasses.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/dataclasses.tree b/transcrypt/development/automated_tests/transcrypt/__target__39/dataclasses.tree new file mode 100644 index 000000000..b8f71fe6c --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/dataclasses.tree @@ -0,0 +1,12 @@ +file: Module + body: list + element: Assign + targets: list + element: Name + id: str = dataclass + ctx: Store + value: Constant + value: NoneType = None + kind: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/datetime.js b/transcrypt/development/automated_tests/transcrypt/__target__39/datetime.js new file mode 100644 index 000000000..bd7fa16ed --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/datetime.js @@ -0,0 +1,1994 @@ +// Transcrypt'ed from Python, 2021-05-14 15:01:24 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +import * as _math from './math.js'; +import * as _time from './time.js'; +export {_time, _math}; +var __all__ = dict ({get MAXYEAR () {return MAXYEAR;}, set MAXYEAR (value) {MAXYEAR = value;}, get MINYEAR () {return MINYEAR;}, set MINYEAR (value) {MINYEAR = value;}, get _DAYNAMES () {return _DAYNAMES;}, set _DAYNAMES (value) {_DAYNAMES = value;}, get _DAYS_BEFORE_MONTH () {return _DAYS_BEFORE_MONTH;}, set _DAYS_BEFORE_MONTH (value) {_DAYS_BEFORE_MONTH = value;}, get _DAYS_IN_MONTH () {return _DAYS_IN_MONTH;}, set _DAYS_IN_MONTH (value) {_DAYS_IN_MONTH = value;}, get _DI100Y () {return _DI100Y;}, set _DI100Y (value) {_DI100Y = value;}, get _DI400Y () {return _DI400Y;}, set _DI400Y (value) {_DI400Y = value;}, get _DI4Y () {return _DI4Y;}, set _DI4Y (value) {_DI4Y = value;}, get _EPOCH () {return _EPOCH;}, set _EPOCH (value) {_EPOCH = value;}, get _MAXORDINAL () {return _MAXORDINAL;}, set _MAXORDINAL (value) {_MAXORDINAL = value;}, get _MONTHNAMES () {return _MONTHNAMES;}, set _MONTHNAMES (value) {_MONTHNAMES = value;}, get _Omitted () {return _Omitted;}, set _Omitted (value) {_Omitted = value;}, get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get _build_struct_time () {return _build_struct_time;}, set _build_struct_time (value) {_build_struct_time = value;}, get _check_date_fields () {return _check_date_fields;}, set _check_date_fields (value) {_check_date_fields = value;}, get _check_int_field () {return _check_int_field;}, set _check_int_field (value) {_check_int_field = value;}, get _check_time_fields () {return _check_time_fields;}, set _check_time_fields (value) {_check_time_fields = value;}, get _check_tzinfo_arg () {return _check_tzinfo_arg;}, set _check_tzinfo_arg (value) {_check_tzinfo_arg = value;}, get _check_tzname () {return _check_tzname;}, set _check_tzname (value) {_check_tzname = value;}, get _check_utc_offset () {return _check_utc_offset;}, set _check_utc_offset (value) {_check_utc_offset = value;}, get _cmp () {return _cmp;}, set _cmp (value) {_cmp = value;}, get _cmperror () {return _cmperror;}, set _cmperror (value) {_cmperror = value;}, get _d_max () {return _d_max;}, set _d_max (value) {_d_max = value;}, get _d_min () {return _d_min;}, set _d_min (value) {_d_min = value;}, get _date_class () {return _date_class;}, set _date_class (value) {_date_class = value;}, get _days_before_month () {return _days_before_month;}, set _days_before_month (value) {_days_before_month = value;}, get _days_before_year () {return _days_before_year;}, set _days_before_year (value) {_days_before_year = value;}, get _days_in_month () {return _days_in_month;}, set _days_in_month (value) {_days_in_month = value;}, get _divide_and_round () {return _divide_and_round;}, set _divide_and_round (value) {_divide_and_round = value;}, get _dt_max () {return _dt_max;}, set _dt_max (value) {_dt_max = value;}, get _dt_min () {return _dt_min;}, set _dt_min (value) {_dt_min = value;}, get _format_time () {return _format_time;}, set _format_time (value) {_format_time = value;}, get _is_leap () {return _is_leap;}, set _is_leap (value) {_is_leap = value;}, get _isoweek1monday () {return _isoweek1monday;}, set _isoweek1monday (value) {_isoweek1monday = value;}, get _ord2ymd () {return _ord2ymd;}, set _ord2ymd (value) {_ord2ymd = value;}, get _td_max () {return _td_max;}, set _td_max (value) {_td_max = value;}, get _td_min () {return _td_min;}, set _td_min (value) {_td_min = value;}, get _td_resolution () {return _td_resolution;}, set _td_resolution (value) {_td_resolution = value;}, get _time_class () {return _time_class;}, set _time_class (value) {_time_class = value;}, get _tm_max () {return _tm_max;}, set _tm_max (value) {_tm_max = value;}, get _tm_min () {return _tm_min;}, set _tm_min (value) {_tm_min = value;}, get _tz_max () {return _tz_max;}, set _tz_max (value) {_tz_max = value;}, get _tz_min () {return _tz_min;}, set _tz_min (value) {_tz_min = value;}, get _tz_utc () {return _tz_utc;}, set _tz_utc (value) {_tz_utc = value;}, get _tzinfo_class () {return _tzinfo_class;}, set _tzinfo_class (value) {_tzinfo_class = value;}, get _wrap_strftime () {return _wrap_strftime;}, set _wrap_strftime (value) {_wrap_strftime = value;}, get _ymd2ord () {return _ymd2ord;}, set _ymd2ord (value) {_ymd2ord = value;}, get date () {return date;}, set date (value) {date = value;}, get datetime () {return datetime;}, set datetime (value) {datetime = value;}, get dbm () {return dbm;}, set dbm (value) {dbm = value;}, get dim () {return dim;}, set dim (value) {dim = value;}, get rjust () {return rjust;}, set rjust (value) {rjust = value;}, get time () {return time;}, set time (value) {time = value;}, get timedelta () {return timedelta;}, set timedelta (value) {timedelta = value;}, get timezone () {return timezone;}, set timezone (value) {timezone = value;}, get tzinfo () {return tzinfo;}, set tzinfo (value) {tzinfo = value;}, get zfill () {return zfill;}, set zfill (value) {zfill = value;}}); +var __name__ = 'datetime'; +export var zfill = function (s, c) { + var s = str (s); + if (len (s) < c) { + return __add__ (__mul__ ('0', __sub__ (c, __call__ (len, null, s))), s); + } + else { + return s; + } +}; +export var rjust = function (s, c) { + var s = str (s); + if (len (s) < c) { + return __add__ (__mul__ (' ', __sub__ (c, __call__ (len, null, s))), s); + } + else { + return s; + } +}; +export var _cmp = function (x, y) { + return (x == y ? 0 : (x > y ? 1 : -(1))); +}; +export var MINYEAR = 1; +export var MAXYEAR = 9999; +export var _MAXORDINAL = 3652059; +export var _DAYS_IN_MONTH = [-(1), 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; +export var _DAYS_BEFORE_MONTH = [-(1)]; +export var dbm = 0; +for (var dim of _DAYS_IN_MONTH.__getslice__ (1, null, 1)) { + _DAYS_BEFORE_MONTH.append (dbm); + dbm += dim; +} +export var _is_leap = function (year) { + return __mod__ (year, 4) == 0 && (__mod__ (year, 100) != 0 || __mod__ (year, 400) == 0); +}; +export var _days_before_year = function (year) { + var y = year - 1; + return ((y * 365 + Math.floor (y / 4)) - Math.floor (y / 100)) + Math.floor (y / 400); +}; +export var _days_in_month = function (year, month) { + assert ((1 <= month && month <= 12), month); + if (month == 2 && _is_leap (year)) { + return 29; + } + return ; +}; +export var _days_before_month = function (year, month) { + assert ((1 <= month && month <= 12), 'month must be in 1..12'); + return + (month > 2 && _is_leap (year)); +}; +export var _ymd2ord = function (year, month, day) { + assert ((1 <= month && month <= 12), 'month must be in 1..12'); + var dim = _days_in_month (year, month); + assert ((1 <= day && day <= dim), __mod__ ('day must be in 1..%d', dim)); + return (_days_before_year (year) + _days_before_month (year, month)) + day; +}; +export var _DI400Y = _days_before_year (401); +export var _DI100Y = _days_before_year (101); +export var _DI4Y = _days_before_year (5); +assert (_DI4Y == 4 * 365 + 1); +assert (_DI400Y == 4 * _DI100Y + 1); +assert (_DI100Y == 25 * _DI4Y - 1); +export var _ord2ymd = function (n) { + n--; + var __left0__ = divmod (n, _DI400Y); + var n400 = __left0__ [0]; + var n = __left0__ [1]; + var year = n400 * 400 + 1; + var __left0__ = divmod (n, _DI100Y); + var n100 = __left0__ [0]; + var n = __left0__ [1]; + var __left0__ = divmod (n, _DI4Y); + var n4 = __left0__ [0]; + var n = __left0__ [1]; + var __left0__ = divmod (n, 365); + var n1 = __left0__ [0]; + var n = __left0__ [1]; + year += (n100 * 100 + n4 * 4) + n1; + if (n1 == 4 || n100 == 4) { + assert (n == 0); + return tuple ([year - 1, 12, 31]); + } + var leapyear = n1 == 3 && (n4 != 24 || n100 == 3); + assert (leapyear == _is_leap (year)); + var month = n + 50 >> 5; + var preceding = + (month > 2 && leapyear); + if (preceding > n) { + month--; + preceding -= + (month == 2 && leapyear); + } + n -= preceding; + assert ((0 <= n && n < _days_in_month (year, month))); + return tuple ([year, month, n + 1]); +}; +export var _MONTHNAMES = [null, 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']; +export var _DAYNAMES = [null, 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']; +export var _build_struct_time = function (y, m, d, hh, mm, ss, dstflag) { + var wday = __mod__ (_ymd2ord (y, m, d) + 6, 7); + var dnum = _days_before_month (y, m) + d; + return tuple ([y, m, d, hh, mm, ss, wday, dnum, dstflag]); +}; +export var _format_time = function (hh, mm, ss, us) { + var result = '{}:{}:{}'.format (zfill (hh, 2), zfill (mm, 2), zfill (ss, 2)); + if (us) { + result += '.{}'.format (zfill (us, 6)); + } + return result; +}; +export var _wrap_strftime = function (object, format, timetuple) { + var freplace = null; + var zreplace = null; + var Zreplace = null; + var newformat = []; + var __left0__ = tuple ([0, len (format)]); + var i = __left0__ [0]; + var n = __left0__ [1]; + while (i < n) { + var ch = ; + i++; + if (ch == '%') { + if (i < n) { + var ch = ; + i++; + if (ch == 'f') { + if (freplace === null) { + var freplace = '{}'.format (zfill (getattr (object, 'microsecond', 0), 6)); + } + newformat.append (freplace); + } + else if (ch == 'z') { + if (zreplace === null) { + var zreplace = ''; + if (hasattr (object, 'utcoffset')) { + var offset = object.utcoffset (); + if (offset !== null) { + var sign = '+'; + if (offset.days < 0) { + var offset = -(offset); + var sign = '-'; + } + var __left0__ = divmod (offset, timedelta (__kwargtrans__ ({hours: 1}))); + var h = __left0__ [0]; + var m = __left0__ [1]; + assert (!(__mod__ (m, timedelta (__kwargtrans__ ({minutes: 1})))), 'whole minute'); + var m = Math.floor (m / timedelta (__kwargtrans__ ({minutes: 1}))); + var zreplace = '{}{}{}'.format (sign, zfill (h, 2), zfill (m, 2)); + } + } + } + assert (!__in__ ('%', zreplace)); + newformat.append (zreplace); + } + else if (ch == 'Z') { + if (Zreplace === null) { + var Zreplace = ''; + if (hasattr (object, 'tzname')) { + var s = object.tzname (); + if (s !== null) { + var Zreplace = s.py_replace ('%', '%%'); + } + } + } + newformat.append (Zreplace); + } + else { + newformat.append ('%'); + newformat.append (ch); + } + } + else { + newformat.append ('%'); + } + } + else { + newformat.append (ch); + } + } + var newformat = ''.join (newformat); + return _time.strftime (newformat, timetuple); +}; +export var _check_tzname = function (py_name) { + if (py_name !== null && !(isinstance (py_name, str))) { + var __except0__ = py_TypeError ("tzinfo.tzname() must return None or string, not '{}'".format (py_typeof (py_name))); + __except0__.__cause__ = null; + throw __except0__; + } +}; +export var _check_utc_offset = function (py_name, offset) { + assert (__in__ (py_name, tuple (['utcoffset', 'dst']))); + if (offset === null) { + return ; + } + if (!(isinstance (offset, timedelta))) { + var __except0__ = py_TypeError ("tzinfo.{}() must return None or timedelta, not '{}'".format (py_name, py_typeof (offset))); + __except0__.__cause__ = null; + throw __except0__; + } + if (offset.__mod__ (timedelta (__kwargtrans__ ({minutes: 1}))).microseconds || offset.microseconds) { + var __except0__ = ValueError ('tzinfo.{}() must return a whole number of minutes, got {}'.format (py_name, offset)); + __except0__.__cause__ = null; + throw __except0__; + } + if (!((__lt__ (__neg__ (__call__ (timedelta, null, 1)), offset) && __lt__ (offset, __call__ (timedelta, null, 1))))) { + var __except0__ = __call__ (ValueError, null, (function () { + var __accu0__ = '{}()={}, must be must be strictly between -timedelta(hours=24) and timedelta(hours=24)'; + return __call__ (__accu0__.format, __accu0__, py_name, offset); + }) ()); + __except0__.__cause__ = null; + throw __except0__; + } +}; +export var _check_int_field = function (value) { + var _type = py_typeof (value); + if (_type == int) { + return value; + } + if (!(_type == float)) { + try { + var value = value.__int__ (); + try { + if (py_typeof (value) == int) { + return value; + } + var __except0__ = py_TypeError ('__int__ returned non-int (type {})'.format (py_typeof (value).__name__)); + __except0__.__cause__ = null; + throw __except0__; + } + catch (__except0__) { + } + } + catch (__except0__) { + if (isinstance (__except0__, AttributeError)) { + // pass; + } + else { + throw __except0__; + } + } + var __except0__ = py_TypeError ('an integer is required (got type {})'.format (py_typeof (value).__name__)); + __except0__.__cause__ = null; + throw __except0__; + } + var __except0__ = py_TypeError ('integer argument expected, got float'); + __except0__.__cause__ = null; + throw __except0__; +}; +export var _check_date_fields = function (year, month, day) { + var year = _check_int_field (year); + var month = _check_int_field (month); + var day = _check_int_field (day); + if (!((MINYEAR <= year && year <= MAXYEAR))) { + var __except0__ = ValueError ('year must be in {}..{}'.format (MINYEAR, MAXYEAR), year); + __except0__.__cause__ = null; + throw __except0__; + } + if (!((1 <= month && month <= 12))) { + var __except0__ = ValueError ('month must be in 1..12', month); + __except0__.__cause__ = null; + throw __except0__; + } + var dim = _days_in_month (year, month); + if (!((1 <= day && day <= dim))) { + var __except0__ = ValueError ('day must be in 1..{}'.format (dim), day); + __except0__.__cause__ = null; + throw __except0__; + } + return tuple ([year, month, day]); +}; +export var _check_time_fields = function (hour, minute, second, microsecond) { + var hour = _check_int_field (hour); + var minute = _check_int_field (minute); + var second = _check_int_field (second); + var microsecond = _check_int_field (microsecond); + if (!((0 <= hour && hour <= 23))) { + var __except0__ = ValueError ('hour must be in 0..23', hour); + __except0__.__cause__ = null; + throw __except0__; + } + if (!((0 <= minute && minute <= 59))) { + var __except0__ = ValueError ('minute must be in 0..59', minute); + __except0__.__cause__ = null; + throw __except0__; + } + if (!((0 <= second && second <= 59))) { + var __except0__ = ValueError ('second must be in 0..59', second); + __except0__.__cause__ = null; + throw __except0__; + } + if (!((0 <= microsecond && microsecond <= 999999))) { + var __except0__ = ValueError ('microsecond must be in 0..999999', microsecond); + __except0__.__cause__ = null; + throw __except0__; + } + return tuple ([hour, minute, second, microsecond]); +}; +export var _check_tzinfo_arg = function (tz) { + if (tz !== null && !(isinstance (tz, tzinfo))) { + var __except0__ = py_TypeError ('tzinfo argument must be None or of a tzinfo subclass'); + __except0__.__cause__ = null; + throw __except0__; + } +}; +export var _cmperror = function (x, y) { + var __except0__ = py_TypeError ("can't compare '{}' to '{}'".format (py_typeof (x).__name__, py_typeof (y).__name__)); + __except0__.__cause__ = null; + throw __except0__; +}; +export var _divide_and_round = function (a, b) { + var __left0__ = divmod (a, b); + var q = __left0__ [0]; + var r = __left0__ [1]; + r *= 2; + var greater_than_half = (b > 0 ? r > b : r < b); + if (greater_than_half || r == b && __mod__ (q, 2) == 1) { + q++; + } + return q; +}; +export var timedelta = __class__ ('timedelta', [object], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self, days, seconds, microseconds, milliseconds, minutes, hours, weeks) { + if (typeof days == 'undefined' || (days != null && days.hasOwnProperty ("__kwargtrans__"))) {; + var days = 0; + }; + if (typeof seconds == 'undefined' || (seconds != null && seconds.hasOwnProperty ("__kwargtrans__"))) {; + var seconds = 0; + }; + if (typeof microseconds == 'undefined' || (microseconds != null && microseconds.hasOwnProperty ("__kwargtrans__"))) {; + var microseconds = 0; + }; + if (typeof milliseconds == 'undefined' || (milliseconds != null && milliseconds.hasOwnProperty ("__kwargtrans__"))) {; + var milliseconds = 0; + }; + if (typeof minutes == 'undefined' || (minutes != null && minutes.hasOwnProperty ("__kwargtrans__"))) {; + var minutes = 0; + }; + if (typeof hours == 'undefined' || (hours != null && hours.hasOwnProperty ("__kwargtrans__"))) {; + var hours = 0; + }; + if (typeof weeks == 'undefined' || (weeks != null && weeks.hasOwnProperty ("__kwargtrans__"))) {; + var weeks = 0; + }; + if (arguments.length) { + var __ilastarg0__ = arguments.length - 1; + if (arguments [__ilastarg0__] && arguments [__ilastarg0__].hasOwnProperty ("__kwargtrans__")) { + var __allkwargs0__ = arguments [__ilastarg0__--]; + for (var __attrib0__ in __allkwargs0__) { + switch (__attrib0__) { + case 'self': var self = __allkwargs0__ [__attrib0__]; break; + case 'days': var days = __allkwargs0__ [__attrib0__]; break; + case 'seconds': var seconds = __allkwargs0__ [__attrib0__]; break; + case 'microseconds': var microseconds = __allkwargs0__ [__attrib0__]; break; + case 'milliseconds': var milliseconds = __allkwargs0__ [__attrib0__]; break; + case 'minutes': var minutes = __allkwargs0__ [__attrib0__]; break; + case 'hours': var hours = __allkwargs0__ [__attrib0__]; break; + case 'weeks': var weeks = __allkwargs0__ [__attrib0__]; break; + } + } + } + } + else { + } + var __left0__ = 0; + var d = __left0__; + var s = __left0__; + var us = __left0__; + days += weeks * 7; + seconds += minutes * 60 + hours * 3600; + microseconds += milliseconds * 1000; + if (isinstance (days, float)) { + var __left0__ = _math.modf (days); + var dayfrac = __left0__ [0]; + var days = __left0__ [1]; + var __left0__ = _math.modf (dayfrac * (24.0 * 3600.0)); + var daysecondsfrac = __left0__ [0]; + var daysecondswhole = __left0__ [1]; + assert (daysecondswhole == int (daysecondswhole)); + var s = int (daysecondswhole); + assert (days == int (days)); + var d = int (days); + } + else { + var daysecondsfrac = 0.0; + var d = days; + } + assert (isinstance (daysecondsfrac, tuple ([float, int]))); + assert (abs (daysecondsfrac) <= 1.0); + assert (isinstance (d, int)); + assert (abs (s) <= 24 * 3600); + if (isinstance (seconds, float)) { + var __left0__ = _math.modf (seconds); + var secondsfrac = __left0__ [0]; + var seconds = __left0__ [1]; + assert (seconds == int (seconds)); + var seconds = int (seconds); + secondsfrac += daysecondsfrac; + assert (abs (secondsfrac) <= 2.0); + } + else { + var secondsfrac = daysecondsfrac; + } + assert (isinstance (secondsfrac, tuple ([float, int]))); + assert (abs (secondsfrac) <= 2.0); + assert (isinstance (seconds, int)); + var __left0__ = divmod (seconds, 24 * 3600); + var days = __left0__ [0]; + var seconds = __left0__ [1]; + d += days; + s += int (seconds); + assert (isinstance (s, int)); + assert (abs (s) <= (2 * 24) * 3600); + var usdouble = secondsfrac * 1000000.0; + assert (abs (usdouble) < 2100000.0); + if (isinstance (microseconds, float)) { + var microseconds = round (microseconds + usdouble); + var __left0__ = divmod (microseconds, 1000000); + var seconds = __left0__ [0]; + var microseconds = __left0__ [1]; + var __left0__ = divmod (seconds, 24 * 3600); + var days = __left0__ [0]; + var seconds = __left0__ [1]; + d += days; + s += seconds; + } + else { + var microseconds = int (microseconds); + var __left0__ = divmod (microseconds, 1000000); + var seconds = __left0__ [0]; + var microseconds = __left0__ [1]; + var __left0__ = divmod (seconds, 24 * 3600); + var days = __left0__ [0]; + var seconds = __left0__ [1]; + d += days; + s += seconds; + var microseconds = round (microseconds + usdouble); + } + assert (isinstance (s, int)); + assert (isinstance (microseconds, int)); + assert (abs (s) <= (3 * 24) * 3600); + assert (abs (microseconds) < 3100000.0); + var __left0__ = divmod (microseconds, 1000000); + var seconds = __left0__ [0]; + var us = __left0__ [1]; + s += seconds; + var __left0__ = divmod (s, 24 * 3600); + var days = __left0__ [0]; + var s = __left0__ [1]; + d += days; + assert (isinstance (d, int)); + assert (isinstance (s, int) && (0 <= s && s < 24 * 3600)); + assert (isinstance (us, int) && (0 <= us && us < 1000000)); + if (abs (d) > 999999999) { + var __except0__ = OverflowError (__mod__ ('timedelta # of days is too large: %d', d)); + __except0__.__cause__ = null; + throw __except0__; + } + self._days = d; + self._seconds = s; + self._microseconds = us; + });}, + get __repr__ () {return __get__ (this, function (self) { + if (self._microseconds) { + return 'datetime.timedelta(days={}, seconds={}, microseconds={})'.format (self._days, self._seconds, self._microseconds); + } + if (self._seconds) { + return 'datetime.timedelta(days={}, seconds={})'.format (self._days, self._seconds); + } + return 'datetime.timedelta(days={})'.format (self._days); + });}, + get __str__ () {return __get__ (this, function (self) { + var __left0__ = divmod (self._seconds, 60); + var mm = __left0__ [0]; + var ss = __left0__ [1]; + var __left0__ = divmod (mm, 60); + var hh = __left0__ [0]; + var mm = __left0__ [1]; + var s = '{}:{}:{}'.format (hh, zfill (mm, 2), zfill (ss, 2)); + if (self._days) { + var plural = function (n) { + return tuple ([n, abs (n) != 1 && 's' || '']); + }; + var s = '{} day{}, '.format (plural (self._days)) + s; + } + if (self._microseconds) { + var s = s + '.{}'.format (zfill (self._microseconds, 6)); + } + return s; + });}, + get total_seconds () {return __get__ (this, function (self) { + return ((self.days * 86400 + self.seconds) * Math.pow (10, 6) + self.microseconds) / Math.pow (10, 6); + });}, + get _get_days () {return __get__ (this, function (self) { + return self._days; + });}, + get _get_seconds () {return __get__ (this, function (self) { + return self._seconds; + });}, + get _get_microseconds () {return __get__ (this, function (self) { + return self._microseconds; + });}, + get __add__ () {return __get__ (this, function (self, other) { + if (isinstance (other, timedelta)) { + return timedelta (self._days + other._days, self._seconds + other._seconds, self._microseconds + other._microseconds); + } + return NotImplemented; + });}, + get __radd__ () {return __get__ (this, function (self, other) { + return self.__add__ (other); + });}, + get __sub__ () {return __get__ (this, function (self, other) { + if (isinstance (other, timedelta)) { + return timedelta (self._days - other._days, self._seconds - other._seconds, self._microseconds - other._microseconds); + } + return NotImplemented; + });}, + get __rsub__ () {return __get__ (this, function (self, other) { + if (isinstance (other, timedelta)) { + return -(self) + other; + } + return NotImplemented; + });}, + get __neg__ () {return __get__ (this, function (self) { + return timedelta (-(self._days), -(self._seconds), -(self._microseconds)); + });}, + get __pos__ () {return __get__ (this, function (self) { + return self; + });}, + get __abs__ () {return __get__ (this, function (self) { + if (self._days < 0) { + return __neg__ (self); + } + else { + return self; + } + });}, + get __mul__ () {return __get__ (this, function (self, other) { + if (isinstance (other, int)) { + return timedelta (self._days * other, self._seconds * other, self._microseconds * other); + } + if (isinstance (other, float)) { + var usec = self._to_microseconds (); + var __left0__ = other.as_integer_ratio (); + var a = __left0__ [0]; + var b = __left0__ [1]; + return timedelta (0, 0, _divide_and_round (usec * a, b)); + } + return NotImplemented; + });}, + get __rmul__ () {return __get__ (this, function (self, other) { + return self.__mul__ (other); + });}, + get _to_microseconds () {return __get__ (this, function (self) { + return (self._days * (24 * 3600) + self._seconds) * 1000000 + self._microseconds; + });}, + get __floordiv__ () {return __get__ (this, function (self, other) { + if (!(isinstance (other, tuple ([int, timedelta])))) { + return NotImplemented; + } + var usec = self._to_microseconds (); + if (isinstance (other, timedelta)) { + return Math.floor (usec / other._to_microseconds ()); + } + if (isinstance (other, int)) { + return timedelta (0, 0, Math.floor (usec / other)); + } + });}, + get __truediv__ () {return __get__ (this, function (self, other) { + if (!(isinstance (other, tuple ([int, float, timedelta])))) { + return NotImplemented; + } + var usec = self._to_microseconds (); + if (isinstance (other, timedelta)) { + return usec / other._to_microseconds (); + } + if (isinstance (other, int)) { + return timedelta (0, 0, _divide_and_round (usec, other)); + } + if (isinstance (other, float)) { + var __left0__ = other.as_integer_ratio (); + var a = __left0__ [0]; + var b = __left0__ [1]; + return timedelta (0, 0, _divide_and_round (b * usec, a)); + } + });}, + get __mod__ () {return __get__ (this, function (self, other) { + if (isinstance (other, timedelta)) { + var r = __mod__ (self._to_microseconds (), other._to_microseconds ()); + return timedelta (0, 0, r); + } + return NotImplemented; + });}, + get __divmod__ () {return __get__ (this, function (self, other) { + if (isinstance (other, timedelta)) { + var __left0__ = divmod (self._to_microseconds (), other._to_microseconds ()); + var q = __left0__ [0]; + var r = __left0__ [1]; + return tuple ([q, timedelta (0, 0, r)]); + } + return NotImplemented; + });}, + get __eq__ () {return __get__ (this, function (self, other) { + if (isinstance (other, timedelta)) { + return self._cmp (other) == 0; + } + else { + return false; + } + });}, + get __le__ () {return __get__ (this, function (self, other) { + if (isinstance (other, timedelta)) { + return self._cmp (other) <= 0; + } + else { + _cmperror (self, other); + } + });}, + get __lt__ () {return __get__ (this, function (self, other) { + if (isinstance (other, timedelta)) { + return self._cmp (other) < 0; + } + else { + _cmperror (self, other); + } + });}, + get __ge__ () {return __get__ (this, function (self, other) { + if (isinstance (other, timedelta)) { + return self._cmp (other) >= 0; + } + else { + _cmperror (self, other); + } + });}, + get __gt__ () {return __get__ (this, function (self, other) { + if (isinstance (other, timedelta)) { + return self._cmp (other) > 0; + } + else { + _cmperror (self, other); + } + });}, + get _cmp () {return __get__ (this, function (self, other) { + assert (isinstance (other, timedelta)); + return _cmp (self._to_microseconds (), other._to_microseconds ()); + });}, + get __bool__ () {return __get__ (this, function (self) { + return self._days != 0 || self._seconds != 0 || self._microseconds != 0; + });} +}); +Object.defineProperty (timedelta, 'microseconds', property.call (timedelta, timedelta._get_microseconds)); +Object.defineProperty (timedelta, 'seconds', property.call (timedelta, timedelta._get_seconds)); +Object.defineProperty (timedelta, 'days', property.call (timedelta, timedelta._get_days));; +export var _td_min = timedelta (-(999999999)); +export var _td_max = timedelta (__kwargtrans__ ({days: 999999999, hours: 23, minutes: 59, seconds: 59, microseconds: 999999})); +export var _td_resolution = timedelta (__kwargtrans__ ({microseconds: 1})); +Object.defineProperty (timedelta, 'min', {get: function () {return _td_min;}}) +Object.defineProperty (timedelta, 'max', {get: function () {return _td_max;}}) +Object.defineProperty (timedelta, 'resolution', {get: function () {return _td_resolution;}}) +export var date = __class__ ('date', [object], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self, year, month, day) { + if (typeof month == 'undefined' || (month != null && month.hasOwnProperty ("__kwargtrans__"))) {; + var month = null; + }; + if (typeof day == 'undefined' || (day != null && day.hasOwnProperty ("__kwargtrans__"))) {; + var day = null; + }; + if (arguments.length) { + var __ilastarg0__ = arguments.length - 1; + if (arguments [__ilastarg0__] && arguments [__ilastarg0__].hasOwnProperty ("__kwargtrans__")) { + var __allkwargs0__ = arguments [__ilastarg0__--]; + for (var __attrib0__ in __allkwargs0__) { + switch (__attrib0__) { + case 'self': var self = __allkwargs0__ [__attrib0__]; break; + case 'year': var year = __allkwargs0__ [__attrib0__]; break; + case 'month': var month = __allkwargs0__ [__attrib0__]; break; + case 'day': var day = __allkwargs0__ [__attrib0__]; break; + } + } + } + } + else { + } + var __left0__ = _check_date_fields (year, month, day); + var year = __left0__ [0]; + var month = __left0__ [1]; + var day = __left0__ [2]; + self._year = year; + self._month = month; + self._day = day; + });}, + get fromtimestamp () {return __getcm__ (this, function (cls, t) { + var __left0__ = _time.localtime (t); + var y = __left0__ [0]; + var m = __left0__ [1]; + var d = __left0__ [2]; + var hh = __left0__ [3]; + var mm = __left0__ [4]; + var ss = __left0__ [5]; + var weekday = __left0__ [6]; + var jday = __left0__ [7]; + var dst = __left0__ [8]; + return cls (y, m, d); + });}, + get today () {return __getcm__ (this, function (cls) { + var t = _time.time (); + return cls.fromtimestamp (t); + });}, + get fromordinal () {return __getcm__ (this, function (cls, n) { + var __left0__ = _ord2ymd (n); + var y = __left0__ [0]; + var m = __left0__ [1]; + var d = __left0__ [2]; + return cls (y, m, d); + });}, + get __repr__ () {return __get__ (this, function (self) { + return 'datetime.date({}, {}, {})'.format (self._year, self._month, self._day); + });}, + get ctime () {return __get__ (this, function (self) { + var weekday = __mod__ (self.toordinal (), 7) || 7; + return '{} {} {} 00:00:00 {}'.format (, , rjust (self._day, 2), zfill (self._year, 4)); + });}, + get strftime () {return __get__ (this, function (self, fmt) { + return _wrap_strftime (self, fmt, self.timetuple ()); + });}, + get __format__ () {return __get__ (this, function (self, fmt) { + if (!(isinstance (fmt, str))) { + var __except0__ = py_TypeError ('must be str, not {}'.format (py_typeof (fmt).__name__)); + __except0__.__cause__ = null; + throw __except0__; + } + if (len (fmt) != 0) { + return self.strftime (fmt); + } + return str (self); + });}, + get isoformat () {return __get__ (this, function (self) { + return '{}-{}-{}'.format (zfill (self._year, 4), zfill (self._month, 2), zfill (self._day, 2)); + });}, + get __str__ () {return __get__ (this, function (self) { + return self.isoformat (); + });}, + get _get_year () {return __get__ (this, function (self) { + return self._year; + });}, + get _get_month () {return __get__ (this, function (self) { + return self._month; + });}, + get _get_day () {return __get__ (this, function (self) { + return self._day; + });}, + get timetuple () {return __get__ (this, function (self) { + return _build_struct_time (self._year, self._month, self._day, 0, 0, 0, -(1)); + });}, + get toordinal () {return __get__ (this, function (self) { + return _ymd2ord (self._year, self._month, self._day); + });}, + get py_replace () {return __get__ (this, function (self, year, month, day) { + if (typeof year == 'undefined' || (year != null && year.hasOwnProperty ("__kwargtrans__"))) {; + var year = null; + }; + if (typeof month == 'undefined' || (month != null && month.hasOwnProperty ("__kwargtrans__"))) {; + var month = null; + }; + if (typeof day == 'undefined' || (day != null && day.hasOwnProperty ("__kwargtrans__"))) {; + var day = null; + }; + if (arguments.length) { + var __ilastarg0__ = arguments.length - 1; + if (arguments [__ilastarg0__] && arguments [__ilastarg0__].hasOwnProperty ("__kwargtrans__")) { + var __allkwargs0__ = arguments [__ilastarg0__--]; + for (var __attrib0__ in __allkwargs0__) { + switch (__attrib0__) { + case 'self': var self = __allkwargs0__ [__attrib0__]; break; + case 'year': var year = __allkwargs0__ [__attrib0__]; break; + case 'month': var month = __allkwargs0__ [__attrib0__]; break; + case 'day': var day = __allkwargs0__ [__attrib0__]; break; + } + } + } + } + else { + } + if (year === null) { + var year = self._year; + } + if (month === null) { + var month = self._month; + } + if (day === null) { + var day = self._day; + } + return date (year, month, day); + });}, + get __eq__ () {return __get__ (this, function (self, other) { + if (isinstance (other, date)) { + return self._cmp (other) == 0; + } + return NotImplemented; + });}, + get __le__ () {return __get__ (this, function (self, other) { + if (isinstance (other, date)) { + return self._cmp (other) <= 0; + } + return NotImplemented; + });}, + get __lt__ () {return __get__ (this, function (self, other) { + if (isinstance (other, date)) { + return self._cmp (other) < 0; + } + return NotImplemented; + });}, + get __ge__ () {return __get__ (this, function (self, other) { + if (isinstance (other, date)) { + return self._cmp (other) >= 0; + } + return NotImplemented; + });}, + get __gt__ () {return __get__ (this, function (self, other) { + if (isinstance (other, date)) { + return self._cmp (other) > 0; + } + return NotImplemented; + });}, + get _cmp () {return __get__ (this, function (self, other) { + assert (isinstance (other, date)); + var __left0__ = tuple ([self._year, self._month, self._day]); + var y = __left0__ [0]; + var m = __left0__ [1]; + var d = __left0__ [2]; + var __left0__ = tuple ([other._year, other._month, other._day]); + var y2 = __left0__ [0]; + var m2 = __left0__ [1]; + var d2 = __left0__ [2]; + return _cmp ('{}{}{}'.format (zfill (y, 4), zfill (m, 2), zfill (d, 2)), '{}{}{}'.format (zfill (y2, 4), zfill (m2, 2), zfill (d2, 2))); + });}, + get __add__ () {return __get__ (this, function (self, other) { + if (isinstance (other, timedelta)) { + var o = self.toordinal () + other.days; + if ((0 < o && o <= _MAXORDINAL)) { + return date.fromordinal (o); + } + var __except0__ = OverflowError ('result out of range'); + __except0__.__cause__ = null; + throw __except0__; + } + return NotImplemented; + });}, + get __radd__ () {return __get__ (this, function (self, other) { + return self.__add__ (other); + });}, + get __sub__ () {return __get__ (this, function (self, other) { + if (isinstance (other, timedelta)) { + return __add__ (self, __call__ (timedelta, null, __neg__ (other.days))); + } + if (isinstance (other, date)) { + var days1 = self.toordinal (); + var days2 = other.toordinal (); + return __call__ (timedelta, null, __sub__ (days1, days2)); + } + return NotImplemented; + });}, + get weekday () {return __get__ (this, function (self) { + return __mod__ (self.toordinal () + 6, 7); + });}, + get isoweekday () {return __get__ (this, function (self) { + return __mod__ (self.toordinal (), 7) || 7; + });}, + get isocalendar () {return __get__ (this, function (self) { + var year = self._year; + var week1monday = _isoweek1monday (year); + var today = _ymd2ord (self._year, self._month, self._day); + var __left0__ = divmod (today - week1monday, 7); + var week = __left0__ [0]; + var day = __left0__ [1]; + if (week < 0) { + year--; + var week1monday = _isoweek1monday (year); + var __left0__ = divmod (today - week1monday, 7); + var week = __left0__ [0]; + var day = __left0__ [1]; + } + else if (week >= 52) { + if (today >= _isoweek1monday (year + 1)) { + year++; + var week = 0; + } + } + return tuple ([year, week + 1, day + 1]); + });}, + resolution: timedelta (__kwargtrans__ ({days: 1})) +}); +Object.defineProperty (date, 'day', property.call (date, date._get_day)); +Object.defineProperty (date, 'month', property.call (date, date._get_month)); +Object.defineProperty (date, 'year', property.call (date, date._get_year));; +export var _date_class = date; +export var _d_min = date (1, 1, 1); +export var _d_max = date (9999, 12, 31); +Object.defineProperty (date, 'min', {get: function () {return _d_min;}}) +Object.defineProperty (date, 'max', {get: function () {return _d_max;}}) +export var tzinfo = __class__ ('tzinfo', [object], { + __module__: __name__, + get tzname () {return __get__ (this, function (self, dt) { + var __except0__ = NotImplementedError ('tzinfo subclass must override tzname()'); + __except0__.__cause__ = null; + throw __except0__; + });}, + get utcoffset () {return __get__ (this, function (self, dt) { + var __except0__ = NotImplementedError ('tzinfo subclass must override utcoffset()'); + __except0__.__cause__ = null; + throw __except0__; + });}, + get dst () {return __get__ (this, function (self, dt) { + var __except0__ = NotImplementedError ('tzinfo subclass must override dst()'); + __except0__.__cause__ = null; + throw __except0__; + });}, + get fromutc () {return __get__ (this, function (self, dt) { + if (!(isinstance (dt, datetime))) { + var __except0__ = py_TypeError ('fromutc() requires a datetime argument'); + __except0__.__cause__ = null; + throw __except0__; + } + if (dt.tzinfo !== self) { + var __except0__ = ValueError ('dt.tzinfo is not self'); + __except0__.__cause__ = null; + throw __except0__; + } + var dtoff = dt.utcoffset (); + if (dtoff === null) { + var __except0__ = ValueError ('fromutc() requires a non-None utcoffset() result'); + __except0__.__cause__ = null; + throw __except0__; + } + var dtdst = dt.dst (); + if (dtdst === null) { + var __except0__ = ValueError ('fromutc() requires a non-None dst() result'); + __except0__.__cause__ = null; + throw __except0__; + } + var delta = dtoff - dtdst; + if (delta) { + dt += delta; + var dtdst = dt.dst (); + if (dtdst === null) { + var __except0__ = ValueError ('fromutc(): dt.dst gave inconsistent results; cannot convert'); + __except0__.__cause__ = null; + throw __except0__; + } + } + return dt + dtdst; + });} +}); +export var _tzinfo_class = tzinfo; +export var time = __class__ ('time', [object], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self, hour, minute, second, microsecond, tzinfo) { + if (typeof hour == 'undefined' || (hour != null && hour.hasOwnProperty ("__kwargtrans__"))) {; + var hour = 0; + }; + if (typeof minute == 'undefined' || (minute != null && minute.hasOwnProperty ("__kwargtrans__"))) {; + var minute = 0; + }; + if (typeof second == 'undefined' || (second != null && second.hasOwnProperty ("__kwargtrans__"))) {; + var second = 0; + }; + if (typeof microsecond == 'undefined' || (microsecond != null && microsecond.hasOwnProperty ("__kwargtrans__"))) {; + var microsecond = 0; + }; + if (typeof tzinfo == 'undefined' || (tzinfo != null && tzinfo.hasOwnProperty ("__kwargtrans__"))) {; + var tzinfo = null; + }; + if (arguments.length) { + var __ilastarg0__ = arguments.length - 1; + if (arguments [__ilastarg0__] && arguments [__ilastarg0__].hasOwnProperty ("__kwargtrans__")) { + var __allkwargs0__ = arguments [__ilastarg0__--]; + for (var __attrib0__ in __allkwargs0__) { + switch (__attrib0__) { + case 'self': var self = __allkwargs0__ [__attrib0__]; break; + case 'hour': var hour = __allkwargs0__ [__attrib0__]; break; + case 'minute': var minute = __allkwargs0__ [__attrib0__]; break; + case 'second': var second = __allkwargs0__ [__attrib0__]; break; + case 'microsecond': var microsecond = __allkwargs0__ [__attrib0__]; break; + case 'tzinfo': var tzinfo = __allkwargs0__ [__attrib0__]; break; + } + } + } + } + else { + } + var __left0__ = _check_time_fields (hour, minute, second, microsecond); + var hour = __left0__ [0]; + var minute = __left0__ [1]; + var second = __left0__ [2]; + var microsecond = __left0__ [3]; + _check_tzinfo_arg (tzinfo); + self._hour = hour; + self._minute = minute; + self._second = second; + self._microsecond = microsecond; + self._tzinfo = tzinfo; + });}, + get _get_hour () {return __get__ (this, function (self) { + return self._hour; + });}, + get _get_minute () {return __get__ (this, function (self) { + return self._minute; + });}, + get _get_second () {return __get__ (this, function (self) { + return self._second; + });}, + get _get_microsecond () {return __get__ (this, function (self) { + return self._microsecond; + });}, + get _get_tzinfo () {return __get__ (this, function (self) { + return self._tzinfo; + });}, + get __eq__ () {return __get__ (this, function (self, other) { + if (isinstance (other, time)) { + return self._cmp (other, __kwargtrans__ ({allow_mixed: true})) == 0; + } + else { + return false; + } + });}, + get __le__ () {return __get__ (this, function (self, other) { + if (isinstance (other, time)) { + return self._cmp (other) <= 0; + } + else { + _cmperror (self, other); + } + });}, + get __lt__ () {return __get__ (this, function (self, other) { + if (isinstance (other, time)) { + return self._cmp (other) < 0; + } + else { + _cmperror (self, other); + } + });}, + get __ge__ () {return __get__ (this, function (self, other) { + if (isinstance (other, time)) { + return self._cmp (other) >= 0; + } + else { + _cmperror (self, other); + } + });}, + get __gt__ () {return __get__ (this, function (self, other) { + if (isinstance (other, time)) { + return self._cmp (other) > 0; + } + else { + _cmperror (self, other); + } + });}, + get _cmp () {return __get__ (this, function (self, other, allow_mixed) { + if (typeof allow_mixed == 'undefined' || (allow_mixed != null && allow_mixed.hasOwnProperty ("__kwargtrans__"))) {; + var allow_mixed = false; + }; + if (arguments.length) { + var __ilastarg0__ = arguments.length - 1; + if (arguments [__ilastarg0__] && arguments [__ilastarg0__].hasOwnProperty ("__kwargtrans__")) { + var __allkwargs0__ = arguments [__ilastarg0__--]; + for (var __attrib0__ in __allkwargs0__) { + switch (__attrib0__) { + case 'self': var self = __allkwargs0__ [__attrib0__]; break; + case 'other': var other = __allkwargs0__ [__attrib0__]; break; + case 'allow_mixed': var allow_mixed = __allkwargs0__ [__attrib0__]; break; + } + } + } + } + else { + } + assert (isinstance (other, time)); + var mytz = self._tzinfo; + var ottz = other._tzinfo; + var __left0__ = null; + var myoff = __left0__; + var otoff = __left0__; + if (mytz === ottz) { + var base_compare = true; + } + else { + var myoff = self.utcoffset (); + var otoff = other.utcoffset (); + var base_compare = myoff == otoff; + } + if (base_compare) { + return _cmp (tuple ([self._hour, self._minute, self._second, self._microsecond]), tuple ([other._hour, other._minute, other._second, other._microsecond])); + } + if (myoff === null || otoff === null) { + if (allow_mixed) { + return 2; + } + else { + var __except0__ = py_TypeError ('cannot compare naive and aware times'); + __except0__.__cause__ = null; + throw __except0__; + } + } + var myhhmm = __sub__ (__add__ (__mul__ (self._hour, 60), self._minute), __floordiv__ (myoff, __call__ (timedelta, null, __kwargtrans__ ({minutes: 1})))); + var othhmm = __sub__ (__add__ (__mul__ (other._hour, 60), other._minute), __floordiv__ (otoff, __call__ (timedelta, null, __kwargtrans__ ({minutes: 1})))); + return _cmp (tuple ([myhhmm, self._second, self._microsecond]), tuple ([othhmm, other._second, other._microsecond])); + });}, + get _tzstr () {return __get__ (this, function (self, sep) { + if (typeof sep == 'undefined' || (sep != null && sep.hasOwnProperty ("__kwargtrans__"))) {; + var sep = ':'; + }; + var off = self.utcoffset (); + if (off !== null) { + if (off.days < 0) { + var sign = '-'; + var off = -(off); + } + else { + var sign = '+'; + } + var __left0__ = divmod (off, timedelta (__kwargtrans__ ({hours: 1}))); + var hh = __left0__ [0]; + var mm = __left0__ [1]; + assert (!(__mod__ (mm, timedelta (__kwargtrans__ ({minutes: 1})))), 'whole minute'); + var mm = Math.floor (mm / timedelta (__kwargtrans__ ({minutes: 1}))); + assert ((0 <= hh && hh < 24)); + var off = '{}{}{}{}'.format (sign, zfill (hh, 2), sep, zfill (mm, 2)); + } + return off; + });}, + get __repr__ () {return __get__ (this, function (self) { + if (self._microsecond != 0) { + var s = ', {}, {}'.format (self._second, self._microsecond); + } + else if (self._second != 0) { + var s = ', {}'.format (self._second); + } + else { + var s = ''; + } + var s = 'datetime.time({}, {}{})'.format (self._hour, self._minute, s); + if (self._tzinfo !== null) { + assert (s.__getslice__ (-(1), null, 1) == ')'); + var s = (s.__getslice__ (0, len (s) - 1, 1) + ', tzinfo={}'.format (self._tzinfo.__repr__ ())) + ')'; + } + return s; + });}, + get isoformat () {return __get__ (this, function (self) { + var s = _format_time (self._hour, self._minute, self._second, self._microsecond); + var tz = self._tzstr (); + if (tz) { + s += tz; + } + return s; + });}, + get __str__ () {return __get__ (this, function (self) { + return self.isoformat (); + });}, + get strftime () {return __get__ (this, function (self, fmt) { + var timetuple = tuple ([1900, 1, 1, self._hour, self._minute, self._second, 0, 1, -(1)]); + return _wrap_strftime (self, fmt, timetuple); + });}, + get __format__ () {return __get__ (this, function (self, fmt) { + if (!(isinstance (fmt, str))) { + var __except0__ = py_TypeError (__mod__ ('must be str, not %s', py_typeof (fmt).__name__)); + __except0__.__cause__ = null; + throw __except0__; + } + if (len (fmt) != 0) { + return self.strftime (fmt); + } + return str (self); + });}, + get utcoffset () {return __get__ (this, function (self) { + if (self._tzinfo === null) { + return null; + } + var offset = self._tzinfo.utcoffset (null); + _check_utc_offset ('utcoffset', offset); + return offset; + });}, + get tzname () {return __get__ (this, function (self) { + if (self._tzinfo === null) { + return null; + } + var py_name = self._tzinfo.tzname (null); + _check_tzname (py_name); + return py_name; + });}, + get dst () {return __get__ (this, function (self) { + if (self._tzinfo === null) { + return null; + } + var offset = self._tzinfo.dst (null); + _check_utc_offset ('dst', offset); + return offset; + });}, + get py_replace () {return __get__ (this, function (self, hour, minute, second, microsecond, tzinfo) { + if (typeof hour == 'undefined' || (hour != null && hour.hasOwnProperty ("__kwargtrans__"))) {; + var hour = null; + }; + if (typeof minute == 'undefined' || (minute != null && minute.hasOwnProperty ("__kwargtrans__"))) {; + var minute = null; + }; + if (typeof second == 'undefined' || (second != null && second.hasOwnProperty ("__kwargtrans__"))) {; + var second = null; + }; + if (typeof microsecond == 'undefined' || (microsecond != null && microsecond.hasOwnProperty ("__kwargtrans__"))) {; + var microsecond = null; + }; + if (typeof tzinfo == 'undefined' || (tzinfo != null && tzinfo.hasOwnProperty ("__kwargtrans__"))) {; + var tzinfo = true; + }; + if (arguments.length) { + var __ilastarg0__ = arguments.length - 1; + if (arguments [__ilastarg0__] && arguments [__ilastarg0__].hasOwnProperty ("__kwargtrans__")) { + var __allkwargs0__ = arguments [__ilastarg0__--]; + for (var __attrib0__ in __allkwargs0__) { + switch (__attrib0__) { + case 'self': var self = __allkwargs0__ [__attrib0__]; break; + case 'hour': var hour = __allkwargs0__ [__attrib0__]; break; + case 'minute': var minute = __allkwargs0__ [__attrib0__]; break; + case 'second': var second = __allkwargs0__ [__attrib0__]; break; + case 'microsecond': var microsecond = __allkwargs0__ [__attrib0__]; break; + case 'tzinfo': var tzinfo = __allkwargs0__ [__attrib0__]; break; + } + } + } + } + else { + } + if (hour === null) { + var hour = self.hour; + } + if (minute === null) { + var minute = self.minute; + } + if (second === null) { + var second = self.second; + } + if (microsecond === null) { + var microsecond = self.microsecond; + } + if (tzinfo === true) { + var tzinfo = self.tzinfo; + } + return time (hour, minute, second, microsecond, tzinfo); + });}, + resolution: timedelta (__kwargtrans__ ({microseconds: 1})) +}); +Object.defineProperty (time, 'tzinfo', property.call (time, time._get_tzinfo)); +Object.defineProperty (time, 'microsecond', property.call (time, time._get_microsecond)); +Object.defineProperty (time, 'second', property.call (time, time._get_second)); +Object.defineProperty (time, 'minute', property.call (time, time._get_minute)); +Object.defineProperty (time, 'hour', property.call (time, time._get_hour));; +export var _time_class = time; +export var _tm_min = time (0, 0, 0); +export var _tm_max = time (23, 59, 59, 999999); +Object.defineProperty (time, 'min', {get: function () {return _tm_min;}}) +Object.defineProperty (time, 'max', {get: function () {return _tm_max;}}) +export var datetime = __class__ ('datetime', [date], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self, year, month, day, hour, minute, second, microsecond, tzinfo) { + if (typeof month == 'undefined' || (month != null && month.hasOwnProperty ("__kwargtrans__"))) {; + var month = null; + }; + if (typeof day == 'undefined' || (day != null && day.hasOwnProperty ("__kwargtrans__"))) {; + var day = null; + }; + if (typeof hour == 'undefined' || (hour != null && hour.hasOwnProperty ("__kwargtrans__"))) {; + var hour = 0; + }; + if (typeof minute == 'undefined' || (minute != null && minute.hasOwnProperty ("__kwargtrans__"))) {; + var minute = 0; + }; + if (typeof second == 'undefined' || (second != null && second.hasOwnProperty ("__kwargtrans__"))) {; + var second = 0; + }; + if (typeof microsecond == 'undefined' || (microsecond != null && microsecond.hasOwnProperty ("__kwargtrans__"))) {; + var microsecond = 0; + }; + if (typeof tzinfo == 'undefined' || (tzinfo != null && tzinfo.hasOwnProperty ("__kwargtrans__"))) {; + var tzinfo = null; + }; + if (arguments.length) { + var __ilastarg0__ = arguments.length - 1; + if (arguments [__ilastarg0__] && arguments [__ilastarg0__].hasOwnProperty ("__kwargtrans__")) { + var __allkwargs0__ = arguments [__ilastarg0__--]; + for (var __attrib0__ in __allkwargs0__) { + switch (__attrib0__) { + case 'self': var self = __allkwargs0__ [__attrib0__]; break; + case 'year': var year = __allkwargs0__ [__attrib0__]; break; + case 'month': var month = __allkwargs0__ [__attrib0__]; break; + case 'day': var day = __allkwargs0__ [__attrib0__]; break; + case 'hour': var hour = __allkwargs0__ [__attrib0__]; break; + case 'minute': var minute = __allkwargs0__ [__attrib0__]; break; + case 'second': var second = __allkwargs0__ [__attrib0__]; break; + case 'microsecond': var microsecond = __allkwargs0__ [__attrib0__]; break; + case 'tzinfo': var tzinfo = __allkwargs0__ [__attrib0__]; break; + } + } + } + } + else { + } + var __left0__ = _check_date_fields (year, month, day); + var year = __left0__ [0]; + var month = __left0__ [1]; + var day = __left0__ [2]; + var __left0__ = _check_time_fields (hour, minute, second, microsecond); + var hour = __left0__ [0]; + var minute = __left0__ [1]; + var second = __left0__ [2]; + var microsecond = __left0__ [3]; + _check_tzinfo_arg (tzinfo); + self._year = year; + self._month = month; + self._day = day; + self._hour = hour; + self._minute = minute; + self._second = second; + self._microsecond = microsecond; + self._tzinfo = tzinfo; + });}, + get _get_hour () {return __get__ (this, function (self) { + return self._hour; + });}, + get _get_minute () {return __get__ (this, function (self) { + return self._minute; + });}, + get _get_second () {return __get__ (this, function (self) { + return self._second; + });}, + get _get_microsecond () {return __get__ (this, function (self) { + return self._microsecond; + });}, + get _get_tzinfo () {return __get__ (this, function (self) { + return self._tzinfo; + });}, + get _fromtimestamp () {return __getcm__ (this, function (cls, t, utc, tz) { + var __left0__ = _math.modf (t); + var frac = __left0__ [0]; + var t = __left0__ [1]; + var us = round (frac * 1000000.0); + if (us >= 1000000) { + t++; + us -= 1000000; + } + else if (us < 0) { + t--; + us += 1000000; + } + var converter = (utc ? _time.gmtime : _time.localtime); + var __left0__ = converter (t); + var y = __left0__ [0]; + var m = __left0__ [1]; + var d = __left0__ [2]; + var hh = __left0__ [3]; + var mm = __left0__ [4]; + var ss = __left0__ [5]; + var weekday = __left0__ [6]; + var jday = __left0__ [7]; + var dst = __left0__ [8]; + var ss = min (ss, 59); + return cls (y, m, d, hh, mm, ss, us, tz); + });}, + get fromtimestamp () {return __getcm__ (this, function (cls, t, tz) { + if (typeof tz == 'undefined' || (tz != null && tz.hasOwnProperty ("__kwargtrans__"))) {; + var tz = null; + }; + _check_tzinfo_arg (tz); + var result = cls._fromtimestamp (t, tz !== null, tz); + if (tz !== null) { + var result = tz.fromutc (result); + } + return result; + });}, + get utcfromtimestamp () {return __getcm__ (this, function (cls, t) { + return cls._fromtimestamp (t, true, null); + });}, + get now () {return __getcm__ (this, function (cls, tz) { + if (typeof tz == 'undefined' || (tz != null && tz.hasOwnProperty ("__kwargtrans__"))) {; + var tz = null; + }; + var t = _time.time (); + return cls.fromtimestamp (t, tz); + });}, + get utcnow () {return __getcm__ (this, function (cls) { + var t = _time.time (); + return cls.utcfromtimestamp (t); + });}, + get combine () {return __getcm__ (this, function (cls, date, time) { + if (!(isinstance (date, _date_class))) { + var __except0__ = py_TypeError ('date argument must be a date instance'); + __except0__.__cause__ = null; + throw __except0__; + } + if (!(isinstance (time, _time_class))) { + var __except0__ = py_TypeError ('time argument must be a time instance'); + __except0__.__cause__ = null; + throw __except0__; + } + return cls (date.year, date.month, date.day, time.hour, time.minute, time.second, time.microsecond, time.tzinfo); + });}, + get timetuple () {return __get__ (this, function (self) { + var dst = self.dst (); + if (dst === null) { + var dst = -(1); + } + else if (dst) { + var dst = 1; + } + else { + var dst = 0; + } + return _build_struct_time (self.year, self.month, self.day, self.hour, self.minute, self.second, dst); + });}, + get timestamp () {return __get__ (this, function (self) { + if (self._tzinfo === null) { + return _time.mktime (tuple ([self.year, self.month, self.day, self.hour, self.minute, self.second, -(1), -(1), -(1)])) + self.microsecond / 1000000.0; + } + else { + return (function () { + var __accu0__ = __sub__ (self, _EPOCH); + return __call__ (__accu0__.total_seconds, __accu0__); + }) (); + } + });}, + get utctimetuple () {return __get__ (this, function (self) { + var offset = self.utcoffset (); + if (offset) { + var self = __call__ (__isub__, null, self, offset); + } + var __left0__ = tuple ([self.year, self.month, self.day]); + var y = __left0__ [0]; + var m = __left0__ [1]; + var d = __left0__ [2]; + var __left0__ = tuple ([self.hour, self.minute, self.second]); + var hh = __left0__ [0]; + var mm = __left0__ [1]; + var ss = __left0__ [2]; + return _build_struct_time (y, m, d, hh, mm, ss, 0); + });}, + get date () {return __get__ (this, function (self) { + return date (self._year, self._month, self._day); + });}, + get time () {return __get__ (this, function (self) { + return time (self.hour, self.minute, self.second, self.microsecond); + });}, + get timetz () {return __get__ (this, function (self) { + return time (self.hour, self.minute, self.second, self.microsecond, self._tzinfo); + });}, + get py_replace () {return __get__ (this, function (self, year, month, day, hour, minute, second, microsecond, tzinfo) { + if (typeof year == 'undefined' || (year != null && year.hasOwnProperty ("__kwargtrans__"))) {; + var year = null; + }; + if (typeof month == 'undefined' || (month != null && month.hasOwnProperty ("__kwargtrans__"))) {; + var month = null; + }; + if (typeof day == 'undefined' || (day != null && day.hasOwnProperty ("__kwargtrans__"))) {; + var day = null; + }; + if (typeof hour == 'undefined' || (hour != null && hour.hasOwnProperty ("__kwargtrans__"))) {; + var hour = null; + }; + if (typeof minute == 'undefined' || (minute != null && minute.hasOwnProperty ("__kwargtrans__"))) {; + var minute = null; + }; + if (typeof second == 'undefined' || (second != null && second.hasOwnProperty ("__kwargtrans__"))) {; + var second = null; + }; + if (typeof microsecond == 'undefined' || (microsecond != null && microsecond.hasOwnProperty ("__kwargtrans__"))) {; + var microsecond = null; + }; + if (typeof tzinfo == 'undefined' || (tzinfo != null && tzinfo.hasOwnProperty ("__kwargtrans__"))) {; + var tzinfo = true; + }; + if (arguments.length) { + var __ilastarg0__ = arguments.length - 1; + if (arguments [__ilastarg0__] && arguments [__ilastarg0__].hasOwnProperty ("__kwargtrans__")) { + var __allkwargs0__ = arguments [__ilastarg0__--]; + for (var __attrib0__ in __allkwargs0__) { + switch (__attrib0__) { + case 'self': var self = __allkwargs0__ [__attrib0__]; break; + case 'year': var year = __allkwargs0__ [__attrib0__]; break; + case 'month': var month = __allkwargs0__ [__attrib0__]; break; + case 'day': var day = __allkwargs0__ [__attrib0__]; break; + case 'hour': var hour = __allkwargs0__ [__attrib0__]; break; + case 'minute': var minute = __allkwargs0__ [__attrib0__]; break; + case 'second': var second = __allkwargs0__ [__attrib0__]; break; + case 'microsecond': var microsecond = __allkwargs0__ [__attrib0__]; break; + case 'tzinfo': var tzinfo = __allkwargs0__ [__attrib0__]; break; + } + } + } + } + else { + } + if (year === null) { + var year = self.year; + } + if (month === null) { + var month = self.month; + } + if (day === null) { + var day = self.day; + } + if (hour === null) { + var hour = self.hour; + } + if (minute === null) { + var minute = self.minute; + } + if (second === null) { + var second = self.second; + } + if (microsecond === null) { + var microsecond = self.microsecond; + } + if (tzinfo === true) { + var tzinfo = self.tzinfo; + } + return datetime (year, month, day, hour, minute, second, microsecond, tzinfo); + });}, + get astimezone () {return __get__ (this, function (self, tz) { + if (typeof tz == 'undefined' || (tz != null && tz.hasOwnProperty ("__kwargtrans__"))) {; + var tz = null; + }; + if (arguments.length) { + var __ilastarg0__ = arguments.length - 1; + if (arguments [__ilastarg0__] && arguments [__ilastarg0__].hasOwnProperty ("__kwargtrans__")) { + var __allkwargs0__ = arguments [__ilastarg0__--]; + for (var __attrib0__ in __allkwargs0__) { + switch (__attrib0__) { + case 'self': var self = __allkwargs0__ [__attrib0__]; break; + case 'tz': var tz = __allkwargs0__ [__attrib0__]; break; + } + } + } + } + else { + } + if (tz === null) { + if (self.tzinfo === null) { + var __except0__ = ValueError ('astimezone() requires an aware datetime'); + __except0__.__cause__ = null; + throw __except0__; + } + var ts = __floordiv__ ((__sub__ (self, _EPOCH)), __call__ (timedelta, null, __kwargtrans__ ({seconds: 1}))); + var localtm = _time.localtime (ts); + var local = datetime (...localtm.__getslice__ (0, 6, 1)); + if (len (localtm) > 9) { + var gmtoff = ; + var zone = ; + var tz = timezone (timedelta (__kwargtrans__ ({seconds: gmtoff})), zone); + } + else { + var delta = __sub__ (local, __call__ (datetime, null, ...__getslice__ ((function () { + var __accu0__ = _time; + return __call__ (__accu0__.gmtime, __accu0__, ts); + }) (), 0, 6, 1))); + var dst = _time.daylight && __gt__ (, 0); + var gmtoff = __neg__ ((dst ? _time.altzone : _time.timezone)); + if (__eq__ (delta, __call__ (timedelta, null, __kwargtrans__ ({seconds: gmtoff})))) { + var tz = __call__ (timezone, null, delta, ); + } + else { + var tz = __call__ (timezone, null, delta); + } + } + } + else if (!(isinstance (tz, tzinfo))) { + var __except0__ = py_TypeError ('tz argument must be an instance of tzinfo'); + __except0__.__cause__ = null; + throw __except0__; + } + var mytz = self.tzinfo; + if (mytz === null) { + var __except0__ = ValueError ('astimezone() requires an aware datetime'); + __except0__.__cause__ = null; + throw __except0__; + } + if (tz === mytz) { + return self; + } + var myoffset = self.utcoffset (); + if (myoffset === null) { + var __except0__ = ValueError ('astimezone() requires an aware datetime'); + __except0__.__cause__ = null; + throw __except0__; + } + var utc = (function () { + var __accu0__ = __sub__ (self, myoffset); + return __call__ (__accu0__.py_replace, __accu0__, __kwargtrans__ ({tzinfo: tz})); + }) (); + return tz.fromutc (utc); + });}, + get ctime () {return __get__ (this, function (self) { + var weekday = __mod__ (self.toordinal (), 7) || 7; + return '{} {} {} {}:{}:{} {}'.format (, , zfill (self._day, 2), zfill (self._hour, 2), zfill (self._minute, 2), zfill (self._second, 2), zfill (self._year, 4)); + });}, + get isoformat () {return __get__ (this, function (self, sep) { + if (typeof sep == 'undefined' || (sep != null && sep.hasOwnProperty ("__kwargtrans__"))) {; + var sep = 'T'; + }; + var s = '{}-{}-{}{}'.format (zfill (self._year, 4), zfill (self._month, 2), zfill (self._day, 2), sep) + _format_time (self._hour, self._minute, self._second, self._microsecond); + var off = self.utcoffset (); + if (off !== null) { + if (off.days < 0) { + var sign = '-'; + var off = -(off); + } + else { + var sign = '+'; + } + var __left0__ = divmod (off, timedelta (__kwargtrans__ ({hours: 1}))); + var hh = __left0__ [0]; + var mm = __left0__ [1]; + assert (!(__mod__ (mm, timedelta (__kwargtrans__ ({minutes: 1})))), 'whole minute'); + var mm = Math.floor (mm / timedelta (__kwargtrans__ ({minutes: 1}))); + s += '{}{}:{}'.format (sign, zfill (hh, 2), zfill (mm, 2)); + } + return s; + });}, + get __repr__ () {return __get__ (this, function (self) { + var L = [self._year, self._month, self._day, self._hour, self._minute, self._second, self._microsecond]; + if ( == 0) { + L.py_pop (); + } + if ( == 0) { + L.py_pop (); + } + var s = 'datetime.datetime({})'.format (', '.join (map (str, L))); + if (self._tzinfo !== null) { + assert (s.__getslice__ (-(1), null, 1) == ')'); + var s = (s.__getslice__ (0, len (s) - 1, 1) + ', tzinfo={}'.format (self._tzinfo.__repr__ ())) + ')'; + } + return s; + });}, + get __str__ () {return __get__ (this, function (self) { + return self.isoformat (__kwargtrans__ ({sep: ' '})); + });}, + get strptime () {return __getcm__ (this, function (cls, date_string, format) { + return cls (..._time.strptime (date_string, format).__getslice__ (0, 6, 1)); + });}, + get utcoffset () {return __get__ (this, function (self) { + if (self._tzinfo === null) { + return null; + } + var offset = self._tzinfo.utcoffset (self); + _check_utc_offset ('utcoffset', offset); + return offset; + });}, + get tzname () {return __get__ (this, function (self) { + if (self._tzinfo === null) { + return null; + } + var py_name = self._tzinfo.tzname (self); + _check_tzname (py_name); + return py_name; + });}, + get dst () {return __get__ (this, function (self) { + if (self._tzinfo === null) { + return null; + } + var offset = self._tzinfo.dst (self); + _check_utc_offset ('dst', offset); + return offset; + });}, + get __eq__ () {return __get__ (this, function (self, other) { + if (isinstance (other, datetime)) { + return self._cmp (other, __kwargtrans__ ({allow_mixed: true})) == 0; + } + else if (!(isinstance (other, date))) { + return NotImplemented; + } + else { + return false; + } + });}, + get __le__ () {return __get__ (this, function (self, other) { + if (isinstance (other, datetime)) { + return self._cmp (other) <= 0; + } + else if (!(isinstance (other, date))) { + return NotImplemented; + } + else { + _cmperror (self, other); + } + });}, + get __lt__ () {return __get__ (this, function (self, other) { + if (isinstance (other, datetime)) { + return self._cmp (other) < 0; + } + else if (!(isinstance (other, date))) { + return NotImplemented; + } + else { + _cmperror (self, other); + } + });}, + get __ge__ () {return __get__ (this, function (self, other) { + if (isinstance (other, datetime)) { + return self._cmp (other) >= 0; + } + else if (!(isinstance (other, date))) { + return NotImplemented; + } + else { + _cmperror (self, other); + } + });}, + get __gt__ () {return __get__ (this, function (self, other) { + if (isinstance (other, datetime)) { + return self._cmp (other) > 0; + } + else if (!(isinstance (other, date))) { + return NotImplemented; + } + else { + _cmperror (self, other); + } + });}, + get _cmp () {return __get__ (this, function (self, other, allow_mixed) { + if (typeof allow_mixed == 'undefined' || (allow_mixed != null && allow_mixed.hasOwnProperty ("__kwargtrans__"))) {; + var allow_mixed = false; + }; + assert (isinstance (other, datetime)); + var mytz = self._tzinfo; + var ottz = other._tzinfo; + var __left0__ = null; + var myoff = __left0__; + var otoff = __left0__; + if (mytz === ottz) { + var base_compare = true; + } + else { + var myoff = self.utcoffset (); + var otoff = other.utcoffset (); + var base_compare = myoff == otoff; + } + if (base_compare) { + var s1 = '{}{}{}{}{}{}{}'.format (zfill (self._year, 4), zfill (self._month, 2), zfill (self._day, 2), zfill (self._hour, 2), zfill (self._minute, 2), zfill (self._second, 2), zfill (self._microsecond, 6)); + var s2 = '{}{}{}{}{}{}{}'.format (zfill (other._year, 4), zfill (other._month, 2), zfill (other._day, 2), zfill (other._hour, 2), zfill (other._minute, 2), zfill (other._second, 2), zfill (other._microsecond, 6)); + return _cmp (s1, s2); + } + if (myoff === null || otoff === null) { + if (allow_mixed) { + return 2; + } + else { + var __except0__ = py_TypeError ('cannot compare naive and aware datetimes'); + __except0__.__cause__ = null; + throw __except0__; + } + } + var diff = __sub__ (self, other); + if (diff.days < 0) { + return -(1); + } + return diff && 1 || 0; + });}, + get __add__ () {return __get__ (this, function (self, other) { + if (!(isinstance (other, timedelta))) { + return NotImplemented; + } + var delta = timedelta (self.toordinal (), __kwargtrans__ ({hours: self._hour, minutes: self._minute, seconds: self._second, microseconds: self._microsecond})); + var delta = __call__ (__iadd__, null, delta, other); + var __left0__ = divmod (delta.seconds, 3600); + var hour = __left0__ [0]; + var rem = __left0__ [1]; + var __left0__ = divmod (rem, 60); + var minute = __left0__ [0]; + var second = __left0__ [1]; + if ((0 < delta.days && delta.days <= _MAXORDINAL)) { + return datetime.combine (date.fromordinal (delta.days), time (hour, minute, second, delta.microseconds, __kwargtrans__ ({tzinfo: self._tzinfo}))); + } + var __except0__ = OverflowError ('result out of range'); + __except0__.__cause__ = null; + throw __except0__; + });}, + get __radd__ () {return __get__ (this, function (self, other) { + return self.__add__ (other); + });}, + get __sub__ () {return __get__ (this, function (self, other) { + if (!(isinstance (other, datetime))) { + if (isinstance (other, timedelta)) { + return __add__ (self, __neg__ (other)); + } + return NotImplemented; + } + var days1 = self.toordinal (); + var days2 = other.toordinal (); + var secs1 = (self._second + self._minute * 60) + self._hour * 3600; + var secs2 = (other._second + other._minute * 60) + other._hour * 3600; + var base = timedelta (days1 - days2, secs1 - secs2, self._microsecond - other._microsecond); + if (self._tzinfo === other._tzinfo) { + return base; + } + var myoff = self.utcoffset (); + var otoff = other.utcoffset (); + if (myoff == otoff) { + return base; + } + if (myoff === null || otoff === null) { + var __except0__ = py_TypeError ('cannot mix naive and timezone-aware time'); + __except0__.__cause__ = null; + throw __except0__; + } + return __sub__ (__add__ (base, otoff), myoff); + });}, + resolution: timedelta (__kwargtrans__ ({microseconds: 1})) +}); +Object.defineProperty (datetime, 'tzinfo', property.call (datetime, datetime._get_tzinfo)); +Object.defineProperty (datetime, 'microsecond', property.call (datetime, datetime._get_microsecond)); +Object.defineProperty (datetime, 'second', property.call (datetime, datetime._get_second)); +Object.defineProperty (datetime, 'minute', property.call (datetime, datetime._get_minute)); +Object.defineProperty (datetime, 'hour', property.call (datetime, datetime._get_hour));; +export var _dt_min = datetime (1, 1, 1); +export var _dt_max = datetime (9999, 12, 31, 23, 59, 59, 999999); +Object.defineProperty (datetime, 'min', {get: function () {return _dt_min;}}) +Object.defineProperty (datetime, 'max', {get: function () {return _dt_max;}}) +export var _isoweek1monday = function (year) { + var THURSDAY = 3; + var firstday = _ymd2ord (year, 1, 1); + var firstweekday = __mod__ (firstday + 6, 7); + var week1monday = firstday - firstweekday; + if (firstweekday > THURSDAY) { + week1monday += 7; + } + return week1monday; +}; +export var _Omitted = '@#$^&$^'; +export var timezone = __class__ ('timezone', [tzinfo], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self, offset, py_name) { + if (typeof py_name == 'undefined' || (py_name != null && py_name.hasOwnProperty ("__kwargtrans__"))) {; + var py_name = _Omitted; + }; + if (arguments.length) { + var __ilastarg0__ = arguments.length - 1; + if (arguments [__ilastarg0__] && arguments [__ilastarg0__].hasOwnProperty ("__kwargtrans__")) { + var __allkwargs0__ = arguments [__ilastarg0__--]; + for (var __attrib0__ in __allkwargs0__) { + switch (__attrib0__) { + case 'self': var self = __allkwargs0__ [__attrib0__]; break; + case 'offset': var offset = __allkwargs0__ [__attrib0__]; break; + case 'py_name': var py_name = __allkwargs0__ [__attrib0__]; break; + } + } + } + } + else { + } + if (!(isinstance (offset, timedelta))) { + var __except0__ = py_TypeError ('offset must be a timedelta'); + __except0__.__cause__ = null; + throw __except0__; + } + if (py_name === _Omitted) { + if (!(offset)) { + var offset = self.utc; + } + var py_name = null; + } + else if (!(isinstance (py_name, str))) { + var __except0__ = py_TypeError ('name must be a string'); + __except0__.__cause__ = null; + throw __except0__; + } + if (!((__le__ (self._minoffset, offset) && __le__ (offset, self._maxoffset)))) { + var __except0__ = __call__ (ValueError, null, 'offset must be a timedelta strictly between -timedelta(hours=24) and timedelta(hours=24).'); + __except0__.__cause__ = null; + throw __except0__; + } + if (offset.microseconds != 0 || __mod__ (offset.seconds, 60) != 0) { + var __except0__ = ValueError ('offset must be a timedelta representing a whole number of minutes'); + __except0__.__cause__ = null; + throw __except0__; + } + self._offset = offset; + self._name = py_name; + });}, + get _create () {return __getcm__ (this, function (cls, offset, py_name) { + if (typeof py_name == 'undefined' || (py_name != null && py_name.hasOwnProperty ("__kwargtrans__"))) {; + var py_name = _Omitted; + }; + if (arguments.length) { + var __ilastarg0__ = arguments.length - 1; + if (arguments [__ilastarg0__] && arguments [__ilastarg0__].hasOwnProperty ("__kwargtrans__")) { + var __allkwargs0__ = arguments [__ilastarg0__--]; + for (var __attrib0__ in __allkwargs0__) { + switch (__attrib0__) { + case 'cls': var cls = __allkwargs0__ [__attrib0__]; break; + case 'offset': var offset = __allkwargs0__ [__attrib0__]; break; + case 'py_name': var py_name = __allkwargs0__ [__attrib0__]; break; + } + } + } + } + else { + } + return cls (offset, py_name); + });}, + get __eq__ () {return __get__ (this, function (self, other) { + if (py_typeof (other) != timezone) { + return false; + } + return self._offset == other._offset; + });}, + get __repr__ () {return __get__ (this, function (self) { + if (self === self.utc) { + return 'datetime.timezone.utc'; + } + if (self._name === null) { + return 'datetime.timezone({})'.format (self._offset.__repr__ ()); + } + return 'datetime.timezone({}, {})'.format (self._offset.__repr__ (), self._name.__repr__ ()); + });}, + get __str__ () {return __get__ (this, function (self) { + return self.tzname (null); + });}, + get utcoffset () {return __get__ (this, function (self, dt) { + if (isinstance (dt, datetime) || dt === null) { + return self._offset; + } + var __except0__ = py_TypeError ('utcoffset() argument must be a datetime instance or None'); + __except0__.__cause__ = null; + throw __except0__; + });}, + get tzname () {return __get__ (this, function (self, dt) { + if (isinstance (dt, datetime) || dt === null) { + if (self._name === null) { + return self._name_from_offset (self._offset); + } + return self._name; + } + var __except0__ = py_TypeError ('tzname() argument must be a datetime instance or None'); + __except0__.__cause__ = null; + throw __except0__; + });}, + get dst () {return __get__ (this, function (self, dt) { + if (isinstance (dt, datetime) || dt === null) { + return null; + } + var __except0__ = py_TypeError ('dst() argument must be a datetime instance or None'); + __except0__.__cause__ = null; + throw __except0__; + });}, + get fromutc () {return __get__ (this, function (self, dt) { + if (isinstance (dt, datetime)) { + if (dt.tzinfo !== self) { + var __except0__ = ValueError ('fromutc: dt.tzinfo is not self'); + __except0__.__cause__ = null; + throw __except0__; + } + return __add__ (dt, self._offset); + } + var __except0__ = py_TypeError ('fromutc() argument must be a datetime instance or None'); + __except0__.__cause__ = null; + throw __except0__; + });}, + _maxoffset: timedelta (__kwargtrans__ ({hours: 23, minutes: 59})), + _minoffset: __neg__ (__call__ (timedelta, null, __kwargtrans__ ({hours: 23, minutes: 59}))), + get _name_from_offset () {return function (delta) { + if (__lt__ (delta, __call__ (timedelta, null, 0))) { + var sign = '-'; + var delta = __neg__ (delta); + } + else { + var sign = '+'; + } + var __left0__ = __call__ (divmod, null, delta, __call__ (timedelta, null, __kwargtrans__ ({hours: 1}))); + var hours = __left0__ [0]; + var rest = __left0__ [1]; + var minutes = __floordiv__ (rest, __call__ (timedelta, null, __kwargtrans__ ({minutes: 1}))); + return 'UTC{}{}:{}'.format (sign, zfill (hours, 2), zfill (minutes, 2)); + };} +}); +export var _tz_utc = timezone._create (timedelta (0)); +export var _tz_min = timezone._create (timezone._minoffset); +export var _tz_max = timezone._create (timezone._maxoffset); +Object.defineProperty (timezone, 'utc', {get: function () {return _tz_utc;}}) +Object.defineProperty (timezone, 'min', {get: function () {return _tz_min;}}) +Object.defineProperty (timezone, 'max', {get: function () {return _tz_max;}}) +export var _EPOCH = datetime (1970, 1, 1, __kwargtrans__ ({tzinfo: timezone.utc})); + +//# sourceMappingURL=datetime.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/datetime.tree b/transcrypt/development/automated_tests/transcrypt/__target__39/datetime.tree new file mode 100644 index 000000000..66cffcc41 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/datetime.tree @@ -0,0 +1,19431 @@ +file: Module + body: list + element: Expr + value: Constant + value: str = Concrete date/time and related types. + +See http://www.iana.org/time-zones/repository/tz-link.html for +time zone and DST data sources. + + kind: NoneType = None + element: Import + names: list + element: alias + name: str = time + asname: str = _time + element: Import + names: list + element: alias + name: str = math + asname: str = _math + element: ImportFrom + module: str = org.transcrypt.stubs.browser + names: list + element: alias + name: str = __envir__ + asname: NoneType = None + level: int = 0 + element: FunctionDef + name: str = zfill + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = s + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = c + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Name + id: str = s + ctx: Store + value: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = s + ctx: Load + keywords: list + type_comment: NoneType = None + element: If + test: Compare + left: Call + func: Name + id: str = len + ctx: Load + args: list + element: Name + id: str = s + ctx: Load + keywords: list + ops: list + element: Lt + comparators: list + element: Name + id: str = c + ctx: Load + body: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = opov + kind: NoneType = None + keywords: list + element: Return + value: BinOp + left: BinOp + left: Constant + value: str = 0 + kind: NoneType = None + op: Mult + right: BinOp + left: Name + id: str = c + ctx: Load + op: Sub + right: Call + func: Name + id: str = len + ctx: Load + args: list + element: Name + id: str = s + ctx: Load + keywords: list + op: Add + right: Name + id: str = s + ctx: Load + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = noopov + kind: NoneType = None + keywords: list + orelse: list + element: Return + value: Name + id: str = s + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = rjust + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = s + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = c + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Name + id: str = s + ctx: Store + value: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = s + ctx: Load + keywords: list + type_comment: NoneType = None + element: If + test: Compare + left: Call + func: Name + id: str = len + ctx: Load + args: list + element: Name + id: str = s + ctx: Load + keywords: list + ops: list + element: Lt + comparators: list + element: Name + id: str = c + ctx: Load + body: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = opov + kind: NoneType = None + keywords: list + element: Return + value: BinOp + left: BinOp + left: Constant + value: str = + kind: NoneType = None + op: Mult + right: BinOp + left: Name + id: str = c + ctx: Load + op: Sub + right: Call + func: Name + id: str = len + ctx: Load + args: list + element: Name + id: str = s + ctx: Load + keywords: list + op: Add + right: Name + id: str = s + ctx: Load + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = noopov + kind: NoneType = None + keywords: list + orelse: list + element: Return + value: Name + id: str = s + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = _cmp + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = y + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: IfExp + test: Compare + left: Name + id: str = x + ctx: Load + ops: list + element: Eq + comparators: list + element: Name + id: str = y + ctx: Load + body: Constant + value: int = 0 + kind: NoneType = None + orelse: IfExp + test: Compare + left: Name + id: str = x + ctx: Load + ops: list + element: Gt + comparators: list + element: Name + id: str = y + ctx: Load + body: Constant + value: int = 1 + kind: NoneType = None + orelse: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = MINYEAR + ctx: Store + value: Constant + value: int = 1 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = MAXYEAR + ctx: Store + value: Constant + value: int = 9999 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = _MAXORDINAL + ctx: Store + value: Constant + value: int = 3652059 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = _DAYS_IN_MONTH + ctx: Store + value: List + elts: list + element: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 31 + kind: NoneType = None + element: Constant + value: int = 28 + kind: NoneType = None + element: Constant + value: int = 31 + kind: NoneType = None + element: Constant + value: int = 30 + kind: NoneType = None + element: Constant + value: int = 31 + kind: NoneType = None + element: Constant + value: int = 30 + kind: NoneType = None + element: Constant + value: int = 31 + kind: NoneType = None + element: Constant + value: int = 31 + kind: NoneType = None + element: Constant + value: int = 30 + kind: NoneType = None + element: Constant + value: int = 31 + kind: NoneType = None + element: Constant + value: int = 30 + kind: NoneType = None + element: Constant + value: int = 31 + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = _DAYS_BEFORE_MONTH + ctx: Store + value: List + elts: list + element: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = dbm + ctx: Store + value: Constant + value: int = 0 + kind: NoneType = None + type_comment: NoneType = None + element: For + target: Name + id: str = dim + ctx: Store + iter: Subscript + value: Name + id: str = _DAYS_IN_MONTH + ctx: Load + slice: Slice + lower: Constant + value: int = 1 + kind: NoneType = None + upper: NoneType = None + step: NoneType = None + ctx: Load + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = _DAYS_BEFORE_MONTH + ctx: Load + attr: str = append + ctx: Load + args: list + element: Name + id: str = dbm + ctx: Load + keywords: list + element: AugAssign + target: Name + id: str = dbm + ctx: Store + op: Add + value: Name + id: str = dim + ctx: Load + orelse: list + type_comment: NoneType = None + element: Delete + targets: list + element: Name + id: str = dbm + ctx: Del + element: Name + id: str = dim + ctx: Del + element: FunctionDef + name: str = _is_leap + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = year + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = year -> 1 if leap year, else 0. + kind: NoneType = None + element: Return + value: BoolOp + op: And + values: list + element: Compare + left: BinOp + left: Name + id: str = year + ctx: Load + op: Mod + right: Constant + value: int = 4 + kind: NoneType = None + ops: list + element: Eq + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + element: BoolOp + op: Or + values: list + element: Compare + left: BinOp + left: Name + id: str = year + ctx: Load + op: Mod + right: Constant + value: int = 100 + kind: NoneType = None + ops: list + element: NotEq + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + element: Compare + left: BinOp + left: Name + id: str = year + ctx: Load + op: Mod + right: Constant + value: int = 400 + kind: NoneType = None + ops: list + element: Eq + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = _days_before_year + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = year + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = year -> number of days before January 1st of year. + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = y + ctx: Store + value: BinOp + left: Name + id: str = year + ctx: Load + op: Sub + right: Constant + value: int = 1 + kind: NoneType = None + type_comment: NoneType = None + element: Return + value: BinOp + left: BinOp + left: BinOp + left: BinOp + left: Name + id: str = y + ctx: Load + op: Mult + right: Constant + value: int = 365 + kind: NoneType = None + op: Add + right: BinOp + left: Name + id: str = y + ctx: Load + op: FloorDiv + right: Constant + value: int = 4 + kind: NoneType = None + op: Sub + right: BinOp + left: Name + id: str = y + ctx: Load + op: FloorDiv + right: Constant + value: int = 100 + kind: NoneType = None + op: Add + right: BinOp + left: Name + id: str = y + ctx: Load + op: FloorDiv + right: Constant + value: int = 400 + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = _days_in_month + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = year + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = month + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = year, month -> number of days in that month in that year. + kind: NoneType = None + element: Assert + test: Compare + left: Constant + value: int = 1 + kind: NoneType = None + ops: list + element: LtE + element: LtE + comparators: list + element: Name + id: str = month + ctx: Load + element: Constant + value: int = 12 + kind: NoneType = None + msg: Name + id: str = month + ctx: Load + element: If + test: BoolOp + op: And + values: list + element: Compare + left: Name + id: str = month + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: int = 2 + kind: NoneType = None + element: Call + func: Name + id: str = _is_leap + ctx: Load + args: list + element: Name + id: str = year + ctx: Load + keywords: list + body: list + element: Return + value: Constant + value: int = 29 + kind: NoneType = None + orelse: list + element: Return + value: Subscript + value: Name + id: str = _DAYS_IN_MONTH + ctx: Load + slice: Name + id: str = month + ctx: Load + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = _days_before_month + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = year + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = month + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = year, month -> number of days in year preceding first day of month. + kind: NoneType = None + element: Assert + test: Compare + left: Constant + value: int = 1 + kind: NoneType = None + ops: list + element: LtE + element: LtE + comparators: list + element: Name + id: str = month + ctx: Load + element: Constant + value: int = 12 + kind: NoneType = None + msg: Constant + value: str = month must be in 1..12 + kind: NoneType = None + element: Return + value: BinOp + left: Subscript + value: Name + id: str = _DAYS_BEFORE_MONTH + ctx: Load + slice: Name + id: str = month + ctx: Load + ctx: Load + op: Add + right: BoolOp + op: And + values: list + element: Compare + left: Name + id: str = month + ctx: Load + ops: list + element: Gt + comparators: list + element: Constant + value: int = 2 + kind: NoneType = None + element: Call + func: Name + id: str = _is_leap + ctx: Load + args: list + element: Name + id: str = year + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = _ymd2ord + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = year + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = month + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = day + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = year, month, day -> ordinal, considering 01-Jan-0001 as day 1. + kind: NoneType = None + element: Assert + test: Compare + left: Constant + value: int = 1 + kind: NoneType = None + ops: list + element: LtE + element: LtE + comparators: list + element: Name + id: str = month + ctx: Load + element: Constant + value: int = 12 + kind: NoneType = None + msg: Constant + value: str = month must be in 1..12 + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = dim + ctx: Store + value: Call + func: Name + id: str = _days_in_month + ctx: Load + args: list + element: Name + id: str = year + ctx: Load + element: Name + id: str = month + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assert + test: Compare + left: Constant + value: int = 1 + kind: NoneType = None + ops: list + element: LtE + element: LtE + comparators: list + element: Name + id: str = day + ctx: Load + element: Name + id: str = dim + ctx: Load + msg: BinOp + left: Constant + value: str = day must be in 1..%d + kind: NoneType = None + op: Mod + right: Name + id: str = dim + ctx: Load + element: Return + value: BinOp + left: BinOp + left: Call + func: Name + id: str = _days_before_year + ctx: Load + args: list + element: Name + id: str = year + ctx: Load + keywords: list + op: Add + right: Call + func: Name + id: str = _days_before_month + ctx: Load + args: list + element: Name + id: str = year + ctx: Load + element: Name + id: str = month + ctx: Load + keywords: list + op: Add + right: Name + id: str = day + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = _DI400Y + ctx: Store + value: Call + func: Name + id: str = _days_before_year + ctx: Load + args: list + element: Constant + value: int = 401 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = _DI100Y + ctx: Store + value: Call + func: Name + id: str = _days_before_year + ctx: Load + args: list + element: Constant + value: int = 101 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = _DI4Y + ctx: Store + value: Call + func: Name + id: str = _days_before_year + ctx: Load + args: list + element: Constant + value: int = 5 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Assert + test: Compare + left: Name + id: str = _DI4Y + ctx: Load + ops: list + element: Eq + comparators: list + element: BinOp + left: BinOp + left: Constant + value: int = 4 + kind: NoneType = None + op: Mult + right: Constant + value: int = 365 + kind: NoneType = None + op: Add + right: Constant + value: int = 1 + kind: NoneType = None + msg: NoneType = None + element: Assert + test: Compare + left: Name + id: str = _DI400Y + ctx: Load + ops: list + element: Eq + comparators: list + element: BinOp + left: BinOp + left: Constant + value: int = 4 + kind: NoneType = None + op: Mult + right: Name + id: str = _DI100Y + ctx: Load + op: Add + right: Constant + value: int = 1 + kind: NoneType = None + msg: NoneType = None + element: Assert + test: Compare + left: Name + id: str = _DI100Y + ctx: Load + ops: list + element: Eq + comparators: list + element: BinOp + left: BinOp + left: Constant + value: int = 25 + kind: NoneType = None + op: Mult + right: Name + id: str = _DI4Y + ctx: Load + op: Sub + right: Constant + value: int = 1 + kind: NoneType = None + msg: NoneType = None + element: FunctionDef + name: str = _ord2ymd + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = n + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = ordinal -> (year, month, day), considering 01-Jan-0001 as day 1. + kind: NoneType = None + element: AugAssign + target: Name + id: str = n + ctx: Store + op: Sub + value: Constant + value: int = 1 + kind: NoneType = None + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = n400 + ctx: Store + element: Name + id: str = n + ctx: Store + ctx: Store + value: Call + func: Name + id: str = divmod + ctx: Load + args: list + element: Name + id: str = n + ctx: Load + element: Name + id: str = _DI400Y + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = year + ctx: Store + value: BinOp + left: BinOp + left: Name + id: str = n400 + ctx: Load + op: Mult + right: Constant + value: int = 400 + kind: NoneType = None + op: Add + right: Constant + value: int = 1 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = n100 + ctx: Store + element: Name + id: str = n + ctx: Store + ctx: Store + value: Call + func: Name + id: str = divmod + ctx: Load + args: list + element: Name + id: str = n + ctx: Load + element: Name + id: str = _DI100Y + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = n4 + ctx: Store + element: Name + id: str = n + ctx: Store + ctx: Store + value: Call + func: Name + id: str = divmod + ctx: Load + args: list + element: Name + id: str = n + ctx: Load + element: Name + id: str = _DI4Y + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = n1 + ctx: Store + element: Name + id: str = n + ctx: Store + ctx: Store + value: Call + func: Name + id: str = divmod + ctx: Load + args: list + element: Name + id: str = n + ctx: Load + element: Constant + value: int = 365 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: AugAssign + target: Name + id: str = year + ctx: Store + op: Add + value: BinOp + left: BinOp + left: BinOp + left: Name + id: str = n100 + ctx: Load + op: Mult + right: Constant + value: int = 100 + kind: NoneType = None + op: Add + right: BinOp + left: Name + id: str = n4 + ctx: Load + op: Mult + right: Constant + value: int = 4 + kind: NoneType = None + op: Add + right: Name + id: str = n1 + ctx: Load + element: If + test: BoolOp + op: Or + values: list + element: Compare + left: Name + id: str = n1 + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: int = 4 + kind: NoneType = None + element: Compare + left: Name + id: str = n100 + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: int = 4 + kind: NoneType = None + body: list + element: Assert + test: Compare + left: Name + id: str = n + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + msg: NoneType = None + element: Return + value: Tuple + elts: list + element: BinOp + left: Name + id: str = year + ctx: Load + op: Sub + right: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 12 + kind: NoneType = None + element: Constant + value: int = 31 + kind: NoneType = None + ctx: Load + orelse: list + element: Assign + targets: list + element: Name + id: str = leapyear + ctx: Store + value: BoolOp + op: And + values: list + element: Compare + left: Name + id: str = n1 + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: int = 3 + kind: NoneType = None + element: BoolOp + op: Or + values: list + element: Compare + left: Name + id: str = n4 + ctx: Load + ops: list + element: NotEq + comparators: list + element: Constant + value: int = 24 + kind: NoneType = None + element: Compare + left: Name + id: str = n100 + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: int = 3 + kind: NoneType = None + type_comment: NoneType = None + element: Assert + test: Compare + left: Name + id: str = leapyear + ctx: Load + ops: list + element: Eq + comparators: list + element: Call + func: Name + id: str = _is_leap + ctx: Load + args: list + element: Name + id: str = year + ctx: Load + keywords: list + msg: NoneType = None + element: Assign + targets: list + element: Name + id: str = month + ctx: Store + value: BinOp + left: BinOp + left: Name + id: str = n + ctx: Load + op: Add + right: Constant + value: int = 50 + kind: NoneType = None + op: RShift + right: Constant + value: int = 5 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = preceding + ctx: Store + value: BinOp + left: Subscript + value: Name + id: str = _DAYS_BEFORE_MONTH + ctx: Load + slice: Name + id: str = month + ctx: Load + ctx: Load + op: Add + right: BoolOp + op: And + values: list + element: Compare + left: Name + id: str = month + ctx: Load + ops: list + element: Gt + comparators: list + element: Constant + value: int = 2 + kind: NoneType = None + element: Name + id: str = leapyear + ctx: Load + type_comment: NoneType = None + element: If + test: Compare + left: Name + id: str = preceding + ctx: Load + ops: list + element: Gt + comparators: list + element: Name + id: str = n + ctx: Load + body: list + element: AugAssign + target: Name + id: str = month + ctx: Store + op: Sub + value: Constant + value: int = 1 + kind: NoneType = None + element: AugAssign + target: Name + id: str = preceding + ctx: Store + op: Sub + value: BinOp + left: Subscript + value: Name + id: str = _DAYS_IN_MONTH + ctx: Load + slice: Name + id: str = month + ctx: Load + ctx: Load + op: Add + right: BoolOp + op: And + values: list + element: Compare + left: Name + id: str = month + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: int = 2 + kind: NoneType = None + element: Name + id: str = leapyear + ctx: Load + orelse: list + element: AugAssign + target: Name + id: str = n + ctx: Store + op: Sub + value: Name + id: str = preceding + ctx: Load + element: Assert + test: Compare + left: Constant + value: int = 0 + kind: NoneType = None + ops: list + element: LtE + element: Lt + comparators: list + element: Name + id: str = n + ctx: Load + element: Call + func: Name + id: str = _days_in_month + ctx: Load + args: list + element: Name + id: str = year + ctx: Load + element: Name + id: str = month + ctx: Load + keywords: list + msg: NoneType = None + element: Return + value: Tuple + elts: list + element: Name + id: str = year + ctx: Load + element: Name + id: str = month + ctx: Load + element: BinOp + left: Name + id: str = n + ctx: Load + op: Add + right: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = _MONTHNAMES + ctx: Store + value: List + elts: list + element: Constant + value: NoneType = None + kind: NoneType = None + element: Constant + value: str = Jan + kind: NoneType = None + element: Constant + value: str = Feb + kind: NoneType = None + element: Constant + value: str = Mar + kind: NoneType = None + element: Constant + value: str = Apr + kind: NoneType = None + element: Constant + value: str = May + kind: NoneType = None + element: Constant + value: str = Jun + kind: NoneType = None + element: Constant + value: str = Jul + kind: NoneType = None + element: Constant + value: str = Aug + kind: NoneType = None + element: Constant + value: str = Sep + kind: NoneType = None + element: Constant + value: str = Oct + kind: NoneType = None + element: Constant + value: str = Nov + kind: NoneType = None + element: Constant + value: str = Dec + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = _DAYNAMES + ctx: Store + value: List + elts: list + element: Constant + value: NoneType = None + kind: NoneType = None + element: Constant + value: str = Mon + kind: NoneType = None + element: Constant + value: str = Tue + kind: NoneType = None + element: Constant + value: str = Wed + kind: NoneType = None + element: Constant + value: str = Thu + kind: NoneType = None + element: Constant + value: str = Fri + kind: NoneType = None + element: Constant + value: str = Sat + kind: NoneType = None + element: Constant + value: str = Sun + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: FunctionDef + name: str = _build_struct_time + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = y + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = m + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = d + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = hh + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = mm + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = ss + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = dstflag + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Name + id: str = wday + ctx: Store + value: BinOp + left: BinOp + left: Call + func: Name + id: str = _ymd2ord + ctx: Load + args: list + element: Name + id: str = y + ctx: Load + element: Name + id: str = m + ctx: Load + element: Name + id: str = d + ctx: Load + keywords: list + op: Add + right: Constant + value: int = 6 + kind: NoneType = None + op: Mod + right: Constant + value: int = 7 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = dnum + ctx: Store + value: BinOp + left: Call + func: Name + id: str = _days_before_month + ctx: Load + args: list + element: Name + id: str = y + ctx: Load + element: Name + id: str = m + ctx: Load + keywords: list + op: Add + right: Name + id: str = d + ctx: Load + type_comment: NoneType = None + element: Return + value: Tuple + elts: list + element: Name + id: str = y + ctx: Load + element: Name + id: str = m + ctx: Load + element: Name + id: str = d + ctx: Load + element: Name + id: str = hh + ctx: Load + element: Name + id: str = mm + ctx: Load + element: Name + id: str = ss + ctx: Load + element: Name + id: str = wday + ctx: Load + element: Name + id: str = dnum + ctx: Load + element: Name + id: str = dstflag + ctx: Load + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = _format_time + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = hh + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = mm + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = ss + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = us + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Name + id: str = result + ctx: Store + value: Call + func: Attribute + value: Constant + value: str = {}:{}:{} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Call + func: Name + id: str = zfill + ctx: Load + args: list + element: Name + id: str = hh + ctx: Load + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = zfill + ctx: Load + args: list + element: Name + id: str = mm + ctx: Load + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = zfill + ctx: Load + args: list + element: Name + id: str = ss + ctx: Load + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + keywords: list + type_comment: NoneType = None + element: If + test: Name + id: str = us + ctx: Load + body: list + element: AugAssign + target: Name + id: str = result + ctx: Store + op: Add + value: Call + func: Attribute + value: Constant + value: str = .{} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Call + func: Name + id: str = zfill + ctx: Load + args: list + element: Name + id: str = us + ctx: Load + element: Constant + value: int = 6 + kind: NoneType = None + keywords: list + keywords: list + orelse: list + element: Return + value: Name + id: str = result + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = _wrap_strftime + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = object + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = format + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = timetuple + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Name + id: str = freplace + ctx: Store + value: Constant + value: NoneType = None + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = zreplace + ctx: Store + value: Constant + value: NoneType = None + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = Zreplace + ctx: Store + value: Constant + value: NoneType = None + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = newformat + ctx: Store + value: List + elts: list + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = i + ctx: Store + element: Name + id: str = n + ctx: Store + ctx: Store + value: Tuple + elts: list + element: Constant + value: int = 0 + kind: NoneType = None + element: Call + func: Name + id: str = len + ctx: Load + args: list + element: Name + id: str = format + ctx: Load + keywords: list + ctx: Load + type_comment: NoneType = None + element: While + test: Compare + left: Name + id: str = i + ctx: Load + ops: list + element: Lt + comparators: list + element: Name + id: str = n + ctx: Load + body: list + element: Assign + targets: list + element: Name + id: str = ch + ctx: Store + value: Subscript + value: Name + id: str = format + ctx: Load + slice: Name + id: str = i + ctx: Load + ctx: Load + type_comment: NoneType = None + element: AugAssign + target: Name + id: str = i + ctx: Store + op: Add + value: Constant + value: int = 1 + kind: NoneType = None + element: If + test: Compare + left: Name + id: str = ch + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = % + kind: NoneType = None + body: list + element: If + test: Compare + left: Name + id: str = i + ctx: Load + ops: list + element: Lt + comparators: list + element: Name + id: str = n + ctx: Load + body: list + element: Assign + targets: list + element: Name + id: str = ch + ctx: Store + value: Subscript + value: Name + id: str = format + ctx: Load + slice: Name + id: str = i + ctx: Load + ctx: Load + type_comment: NoneType = None + element: AugAssign + target: Name + id: str = i + ctx: Store + op: Add + value: Constant + value: int = 1 + kind: NoneType = None + element: If + test: Compare + left: Name + id: str = ch + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = f + kind: NoneType = None + body: list + element: If + test: Compare + left: Name + id: str = freplace + ctx: Load + ops: list + element: Is + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = freplace + ctx: Store + value: Call + func: Attribute + value: Constant + value: str = {} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Call + func: Name + id: str = zfill + ctx: Load + args: list + element: Call + func: Name + id: str = getattr + ctx: Load + args: list + element: Name + id: str = object + ctx: Load + element: Constant + value: str = microsecond + kind: NoneType = None + element: Constant + value: int = 0 + kind: NoneType = None + keywords: list + element: Constant + value: int = 6 + kind: NoneType = None + keywords: list + keywords: list + type_comment: NoneType = None + orelse: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = newformat + ctx: Load + attr: str = append + ctx: Load + args: list + element: Name + id: str = freplace + ctx: Load + keywords: list + orelse: list + element: If + test: Compare + left: Name + id: str = ch + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = z + kind: NoneType = None + body: list + element: If + test: Compare + left: Name + id: str = zreplace + ctx: Load + ops: list + element: Is + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = zreplace + ctx: Store + value: Constant + value: str = + kind: NoneType = None + type_comment: NoneType = None + element: If + test: Call + func: Name + id: str = hasattr + ctx: Load + args: list + element: Name + id: str = object + ctx: Load + element: Constant + value: str = utcoffset + kind: NoneType = None + keywords: list + body: list + element: Assign + targets: list + element: Name + id: str = offset + ctx: Store + value: Call + func: Attribute + value: Name + id: str = object + ctx: Load + attr: str = utcoffset + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: If + test: Compare + left: Name + id: str = offset + ctx: Load + ops: list + element: IsNot + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = sign + ctx: Store + value: Constant + value: str = + + kind: NoneType = None + type_comment: NoneType = None + element: If + test: Compare + left: Attribute + value: Name + id: str = offset + ctx: Load + attr: str = days + ctx: Load + ops: list + element: Lt + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = offset + ctx: Store + value: UnaryOp + op: USub + operand: Name + id: str = offset + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = sign + ctx: Store + value: Constant + value: str = - + kind: NoneType = None + type_comment: NoneType = None + orelse: list + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = h + ctx: Store + element: Name + id: str = m + ctx: Store + ctx: Store + value: Call + func: Name + id: str = divmod + ctx: Load + args: list + element: Name + id: str = offset + ctx: Load + element: Call + func: Name + id: str = timedelta + ctx: Load + args: list + keywords: list + element: keyword + arg: str = hours + value: Constant + value: int = 1 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Assert + test: UnaryOp + op: Not + operand: BinOp + left: Name + id: str = m + ctx: Load + op: Mod + right: Call + func: Name + id: str = timedelta + ctx: Load + args: list + keywords: list + element: keyword + arg: str = minutes + value: Constant + value: int = 1 + kind: NoneType = None + msg: Constant + value: str = whole minute + kind: NoneType = None + element: AugAssign + target: Name + id: str = m + ctx: Store + op: FloorDiv + value: Call + func: Name + id: str = timedelta + ctx: Load + args: list + keywords: list + element: keyword + arg: str = minutes + value: Constant + value: int = 1 + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = zreplace + ctx: Store + value: Call + func: Attribute + value: Constant + value: str = {}{}{} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Name + id: str = sign + ctx: Load + element: Call + func: Name + id: str = zfill + ctx: Load + args: list + element: Name + id: str = h + ctx: Load + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = zfill + ctx: Load + args: list + element: Name + id: str = m + ctx: Load + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + keywords: list + type_comment: NoneType = None + orelse: list + orelse: list + orelse: list + element: Assert + test: Compare + left: Constant + value: str = % + kind: NoneType = None + ops: list + element: NotIn + comparators: list + element: Name + id: str = zreplace + ctx: Load + msg: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = newformat + ctx: Load + attr: str = append + ctx: Load + args: list + element: Name + id: str = zreplace + ctx: Load + keywords: list + orelse: list + element: If + test: Compare + left: Name + id: str = ch + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = Z + kind: NoneType = None + body: list + element: If + test: Compare + left: Name + id: str = Zreplace + ctx: Load + ops: list + element: Is + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = Zreplace + ctx: Store + value: Constant + value: str = + kind: NoneType = None + type_comment: NoneType = None + element: If + test: Call + func: Name + id: str = hasattr + ctx: Load + args: list + element: Name + id: str = object + ctx: Load + element: Constant + value: str = tzname + kind: NoneType = None + keywords: list + body: list + element: Assign + targets: list + element: Name + id: str = s + ctx: Store + value: Call + func: Attribute + value: Name + id: str = object + ctx: Load + attr: str = tzname + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: If + test: Compare + left: Name + id: str = s + ctx: Load + ops: list + element: IsNot + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = Zreplace + ctx: Store + value: Call + func: Attribute + value: Name + id: str = s + ctx: Load + attr: str = replace + ctx: Load + args: list + element: Constant + value: str = % + kind: NoneType = None + element: Constant + value: str = %% + kind: NoneType = None + keywords: list + type_comment: NoneType = None + orelse: list + orelse: list + orelse: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = newformat + ctx: Load + attr: str = append + ctx: Load + args: list + element: Name + id: str = Zreplace + ctx: Load + keywords: list + orelse: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = newformat + ctx: Load + attr: str = append + ctx: Load + args: list + element: Constant + value: str = % + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = newformat + ctx: Load + attr: str = append + ctx: Load + args: list + element: Name + id: str = ch + ctx: Load + keywords: list + orelse: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = newformat + ctx: Load + attr: str = append + ctx: Load + args: list + element: Constant + value: str = % + kind: NoneType = None + keywords: list + orelse: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = newformat + ctx: Load + attr: str = append + ctx: Load + args: list + element: Name + id: str = ch + ctx: Load + keywords: list + orelse: list + element: Assign + targets: list + element: Name + id: str = newformat + ctx: Store + value: Call + func: Attribute + value: Constant + value: str = + kind: NoneType = None + attr: str = join + ctx: Load + args: list + element: Name + id: str = newformat + ctx: Load + keywords: list + type_comment: NoneType = None + element: Return + value: Call + func: Attribute + value: Name + id: str = _time + ctx: Load + attr: str = strftime + ctx: Load + args: list + element: Name + id: str = newformat + ctx: Load + element: Name + id: str = timetuple + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = _check_tzname + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = name + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: BoolOp + op: And + values: list + element: Compare + left: Name + id: str = name + ctx: Load + ops: list + element: IsNot + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + element: UnaryOp + op: Not + operand: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = name + ctx: Load + element: Name + id: str = str + ctx: Load + keywords: list + body: list + element: Raise + exc: Call + func: Name + id: str = TypeError + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = tzinfo.tzname() must return None or string, not '{}' + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Call + func: Name + id: str = type + ctx: Load + args: list + element: Name + id: str = name + ctx: Load + keywords: list + keywords: list + keywords: list + cause: NoneType = None + orelse: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = _check_utc_offset + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = name + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = offset + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assert + test: Compare + left: Name + id: str = name + ctx: Load + ops: list + element: In + comparators: list + element: Tuple + elts: list + element: Constant + value: str = utcoffset + kind: NoneType = None + element: Constant + value: str = dst + kind: NoneType = None + ctx: Load + msg: NoneType = None + element: If + test: Compare + left: Name + id: str = offset + ctx: Load + ops: list + element: Is + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Return + value: NoneType = None + orelse: list + element: If + test: UnaryOp + op: Not + operand: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = offset + ctx: Load + element: Name + id: str = timedelta + ctx: Load + keywords: list + body: list + element: Raise + exc: Call + func: Name + id: str = TypeError + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = tzinfo.{}() must return None or timedelta, not '{}' + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Name + id: str = name + ctx: Load + element: Call + func: Name + id: str = type + ctx: Load + args: list + element: Name + id: str = offset + ctx: Load + keywords: list + keywords: list + keywords: list + cause: NoneType = None + orelse: list + element: If + test: BoolOp + op: Or + values: list + element: Attribute + value: Call + func: Attribute + value: Name + id: str = offset + ctx: Load + attr: str = __mod__ + ctx: Load + args: list + element: Call + func: Name + id: str = timedelta + ctx: Load + args: list + keywords: list + element: keyword + arg: str = minutes + value: Constant + value: int = 1 + kind: NoneType = None + keywords: list + attr: str = microseconds + ctx: Load + element: Attribute + value: Name + id: str = offset + ctx: Load + attr: str = microseconds + ctx: Load + body: list + element: Raise + exc: Call + func: Name + id: str = ValueError + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = tzinfo.{}() must return a whole number of minutes, got {} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Name + id: str = name + ctx: Load + element: Name + id: str = offset + ctx: Load + keywords: list + keywords: list + cause: NoneType = None + orelse: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = opov + kind: NoneType = None + keywords: list + element: If + test: UnaryOp + op: Not + operand: Compare + left: UnaryOp + op: USub + operand: Call + func: Name + id: str = timedelta + ctx: Load + args: list + element: Constant + value: int = 1 + kind: NoneType = None + keywords: list + ops: list + element: Lt + element: Lt + comparators: list + element: Name + id: str = offset + ctx: Load + element: Call + func: Name + id: str = timedelta + ctx: Load + args: list + element: Constant + value: int = 1 + kind: NoneType = None + keywords: list + body: list + element: Raise + exc: Call + func: Name + id: str = ValueError + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = {}()={}, must be must be strictly between -timedelta(hours=24) and timedelta(hours=24) + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Name + id: str = name + ctx: Load + element: Name + id: str = offset + ctx: Load + keywords: list + keywords: list + cause: NoneType = None + orelse: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = noopov + kind: NoneType = None + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = _check_int_field + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = value + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Name + id: str = _type + ctx: Store + value: Call + func: Name + id: str = type + ctx: Load + args: list + element: Name + id: str = value + ctx: Load + keywords: list + type_comment: NoneType = None + element: If + test: Compare + left: Name + id: str = _type + ctx: Load + ops: list + element: Eq + comparators: list + element: Name + id: str = int + ctx: Load + body: list + element: Return + value: Name + id: str = value + ctx: Load + orelse: list + element: If + test: UnaryOp + op: Not + operand: Compare + left: Name + id: str = _type + ctx: Load + ops: list + element: Eq + comparators: list + element: Name + id: str = float + ctx: Load + body: list + element: Try + body: list + element: Assign + targets: list + element: Name + id: str = value + ctx: Store + value: Call + func: Attribute + value: Name + id: str = value + ctx: Load + attr: str = __int__ + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + handlers: list + element: ExceptHandler + type: Name + id: str = AttributeError + ctx: Load + name: NoneType = None + body: list + element: Pass + orelse: list + element: If + test: Compare + left: Call + func: Name + id: str = type + ctx: Load + args: list + element: Name + id: str = value + ctx: Load + keywords: list + ops: list + element: Eq + comparators: list + element: Name + id: str = int + ctx: Load + body: list + element: Return + value: Name + id: str = value + ctx: Load + orelse: list + element: Raise + exc: Call + func: Name + id: str = TypeError + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = __int__ returned non-int (type {}) + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Attribute + value: Call + func: Name + id: str = type + ctx: Load + args: list + element: Name + id: str = value + ctx: Load + keywords: list + attr: str = __name__ + ctx: Load + keywords: list + keywords: list + cause: NoneType = None + finalbody: list + element: Raise + exc: Call + func: Name + id: str = TypeError + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = an integer is required (got type {}) + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Attribute + value: Call + func: Name + id: str = type + ctx: Load + args: list + element: Name + id: str = value + ctx: Load + keywords: list + attr: str = __name__ + ctx: Load + keywords: list + keywords: list + cause: NoneType = None + orelse: list + element: Raise + exc: Call + func: Name + id: str = TypeError + ctx: Load + args: list + element: Constant + value: str = integer argument expected, got float + kind: NoneType = None + keywords: list + cause: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = _check_date_fields + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = year + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = month + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = day + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Name + id: str = year + ctx: Store + value: Call + func: Name + id: str = _check_int_field + ctx: Load + args: list + element: Name + id: str = year + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = month + ctx: Store + value: Call + func: Name + id: str = _check_int_field + ctx: Load + args: list + element: Name + id: str = month + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = day + ctx: Store + value: Call + func: Name + id: str = _check_int_field + ctx: Load + args: list + element: Name + id: str = day + ctx: Load + keywords: list + type_comment: NoneType = None + element: If + test: UnaryOp + op: Not + operand: Compare + left: Name + id: str = MINYEAR + ctx: Load + ops: list + element: LtE + element: LtE + comparators: list + element: Name + id: str = year + ctx: Load + element: Name + id: str = MAXYEAR + ctx: Load + body: list + element: Raise + exc: Call + func: Name + id: str = ValueError + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = year must be in {}..{} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Name + id: str = MINYEAR + ctx: Load + element: Name + id: str = MAXYEAR + ctx: Load + keywords: list + element: Name + id: str = year + ctx: Load + keywords: list + cause: NoneType = None + orelse: list + element: If + test: UnaryOp + op: Not + operand: Compare + left: Constant + value: int = 1 + kind: NoneType = None + ops: list + element: LtE + element: LtE + comparators: list + element: Name + id: str = month + ctx: Load + element: Constant + value: int = 12 + kind: NoneType = None + body: list + element: Raise + exc: Call + func: Name + id: str = ValueError + ctx: Load + args: list + element: Constant + value: str = month must be in 1..12 + kind: NoneType = None + element: Name + id: str = month + ctx: Load + keywords: list + cause: NoneType = None + orelse: list + element: Assign + targets: list + element: Name + id: str = dim + ctx: Store + value: Call + func: Name + id: str = _days_in_month + ctx: Load + args: list + element: Name + id: str = year + ctx: Load + element: Name + id: str = month + ctx: Load + keywords: list + type_comment: NoneType = None + element: If + test: UnaryOp + op: Not + operand: Compare + left: Constant + value: int = 1 + kind: NoneType = None + ops: list + element: LtE + element: LtE + comparators: list + element: Name + id: str = day + ctx: Load + element: Name + id: str = dim + ctx: Load + body: list + element: Raise + exc: Call + func: Name + id: str = ValueError + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = day must be in 1..{} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Name + id: str = dim + ctx: Load + keywords: list + element: Name + id: str = day + ctx: Load + keywords: list + cause: NoneType = None + orelse: list + element: Return + value: Tuple + elts: list + element: Name + id: str = year + ctx: Load + element: Name + id: str = month + ctx: Load + element: Name + id: str = day + ctx: Load + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = _check_time_fields + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = hour + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = minute + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = second + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = microsecond + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Name + id: str = hour + ctx: Store + value: Call + func: Name + id: str = _check_int_field + ctx: Load + args: list + element: Name + id: str = hour + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = minute + ctx: Store + value: Call + func: Name + id: str = _check_int_field + ctx: Load + args: list + element: Name + id: str = minute + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = second + ctx: Store + value: Call + func: Name + id: str = _check_int_field + ctx: Load + args: list + element: Name + id: str = second + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = microsecond + ctx: Store + value: Call + func: Name + id: str = _check_int_field + ctx: Load + args: list + element: Name + id: str = microsecond + ctx: Load + keywords: list + type_comment: NoneType = None + element: If + test: UnaryOp + op: Not + operand: Compare + left: Constant + value: int = 0 + kind: NoneType = None + ops: list + element: LtE + element: LtE + comparators: list + element: Name + id: str = hour + ctx: Load + element: Constant + value: int = 23 + kind: NoneType = None + body: list + element: Raise + exc: Call + func: Name + id: str = ValueError + ctx: Load + args: list + element: Constant + value: str = hour must be in 0..23 + kind: NoneType = None + element: Name + id: str = hour + ctx: Load + keywords: list + cause: NoneType = None + orelse: list + element: If + test: UnaryOp + op: Not + operand: Compare + left: Constant + value: int = 0 + kind: NoneType = None + ops: list + element: LtE + element: LtE + comparators: list + element: Name + id: str = minute + ctx: Load + element: Constant + value: int = 59 + kind: NoneType = None + body: list + element: Raise + exc: Call + func: Name + id: str = ValueError + ctx: Load + args: list + element: Constant + value: str = minute must be in 0..59 + kind: NoneType = None + element: Name + id: str = minute + ctx: Load + keywords: list + cause: NoneType = None + orelse: list + element: If + test: UnaryOp + op: Not + operand: Compare + left: Constant + value: int = 0 + kind: NoneType = None + ops: list + element: LtE + element: LtE + comparators: list + element: Name + id: str = second + ctx: Load + element: Constant + value: int = 59 + kind: NoneType = None + body: list + element: Raise + exc: Call + func: Name + id: str = ValueError + ctx: Load + args: list + element: Constant + value: str = second must be in 0..59 + kind: NoneType = None + element: Name + id: str = second + ctx: Load + keywords: list + cause: NoneType = None + orelse: list + element: If + test: UnaryOp + op: Not + operand: Compare + left: Constant + value: int = 0 + kind: NoneType = None + ops: list + element: LtE + element: LtE + comparators: list + element: Name + id: str = microsecond + ctx: Load + element: Constant + value: int = 999999 + kind: NoneType = None + body: list + element: Raise + exc: Call + func: Name + id: str = ValueError + ctx: Load + args: list + element: Constant + value: str = microsecond must be in 0..999999 + kind: NoneType = None + element: Name + id: str = microsecond + ctx: Load + keywords: list + cause: NoneType = None + orelse: list + element: Return + value: Tuple + elts: list + element: Name + id: str = hour + ctx: Load + element: Name + id: str = minute + ctx: Load + element: Name + id: str = second + ctx: Load + element: Name + id: str = microsecond + ctx: Load + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = _check_tzinfo_arg + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = tz + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: BoolOp + op: And + values: list + element: Compare + left: Name + id: str = tz + ctx: Load + ops: list + element: IsNot + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + element: UnaryOp + op: Not + operand: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = tz + ctx: Load + element: Name + id: str = tzinfo + ctx: Load + keywords: list + body: list + element: Raise + exc: Call + func: Name + id: str = TypeError + ctx: Load + args: list + element: Constant + value: str = tzinfo argument must be None or of a tzinfo subclass + kind: NoneType = None + keywords: list + cause: NoneType = None + orelse: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = _cmperror + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = y + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Raise + exc: Call + func: Name + id: str = TypeError + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = can't compare '{}' to '{}' + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Attribute + value: Call + func: Name + id: str = type + ctx: Load + args: list + element: Name + id: str = x + ctx: Load + keywords: list + attr: str = __name__ + ctx: Load + element: Attribute + value: Call + func: Name + id: str = type + ctx: Load + args: list + element: Name + id: str = y + ctx: Load + keywords: list + attr: str = __name__ + ctx: Load + keywords: list + keywords: list + cause: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = _divide_and_round + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = a + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = b + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = divide a by b and round result to the nearest integer + + When the ratio is exactly half-way between two integers, + the even integer is returned. + + kind: NoneType = None + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = q + ctx: Store + element: Name + id: str = r + ctx: Store + ctx: Store + value: Call + func: Name + id: str = divmod + ctx: Load + args: list + element: Name + id: str = a + ctx: Load + element: Name + id: str = b + ctx: Load + keywords: list + type_comment: NoneType = None + element: AugAssign + target: Name + id: str = r + ctx: Store + op: Mult + value: Constant + value: int = 2 + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = greater_than_half + ctx: Store + value: IfExp + test: Compare + left: Name + id: str = b + ctx: Load + ops: list + element: Gt + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + body: Compare + left: Name + id: str = r + ctx: Load + ops: list + element: Gt + comparators: list + element: Name + id: str = b + ctx: Load + orelse: Compare + left: Name + id: str = r + ctx: Load + ops: list + element: Lt + comparators: list + element: Name + id: str = b + ctx: Load + type_comment: NoneType = None + element: If + test: BoolOp + op: Or + values: list + element: Name + id: str = greater_than_half + ctx: Load + element: BoolOp + op: And + values: list + element: Compare + left: Name + id: str = r + ctx: Load + ops: list + element: Eq + comparators: list + element: Name + id: str = b + ctx: Load + element: Compare + left: BinOp + left: Name + id: str = q + ctx: Load + op: Mod + right: Constant + value: int = 2 + kind: NoneType = None + ops: list + element: Eq + comparators: list + element: Constant + value: int = 1 + kind: NoneType = None + body: list + element: AugAssign + target: Name + id: str = q + ctx: Store + op: Add + value: Constant + value: int = 1 + kind: NoneType = None + orelse: list + element: Return + value: Name + id: str = q + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: ClassDef + name: str = timedelta + bases: list + keywords: list + body: list + element: Expr + value: Constant + value: str = Represent the difference between two datetime objects. + + Supported operators: + + - add, subtract timedelta + - unary plus, minus, abs + - compare to timedelta + - multiply, divide by int + + In addition, datetime supports subtraction of two datetime objects + returning a timedelta, and addition or subtraction of a datetime + and a timedelta giving a datetime. + + Representation: (days, seconds, microseconds). Why? Because I + felt like it. + + kind: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = kwargs + kind: NoneType = None + keywords: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = days + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = seconds + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = microseconds + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = milliseconds + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = minutes + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = hours + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = weeks + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + element: Constant + value: int = 0 + kind: NoneType = None + element: Constant + value: int = 0 + kind: NoneType = None + element: Constant + value: int = 0 + kind: NoneType = None + element: Constant + value: int = 0 + kind: NoneType = None + element: Constant + value: int = 0 + kind: NoneType = None + element: Constant + value: int = 0 + kind: NoneType = None + element: Constant + value: int = 0 + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = d + ctx: Store + element: Name + id: str = s + ctx: Store + element: Name + id: str = us + ctx: Store + value: Constant + value: int = 0 + kind: NoneType = None + type_comment: NoneType = None + element: AugAssign + target: Name + id: str = days + ctx: Store + op: Add + value: BinOp + left: Name + id: str = weeks + ctx: Load + op: Mult + right: Constant + value: int = 7 + kind: NoneType = None + element: AugAssign + target: Name + id: str = seconds + ctx: Store + op: Add + value: BinOp + left: BinOp + left: Name + id: str = minutes + ctx: Load + op: Mult + right: Constant + value: int = 60 + kind: NoneType = None + op: Add + right: BinOp + left: Name + id: str = hours + ctx: Load + op: Mult + right: Constant + value: int = 3600 + kind: NoneType = None + element: AugAssign + target: Name + id: str = microseconds + ctx: Store + op: Add + value: BinOp + left: Name + id: str = milliseconds + ctx: Load + op: Mult + right: Constant + value: int = 1000 + kind: NoneType = None + element: If + test: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = days + ctx: Load + element: Name + id: str = float + ctx: Load + keywords: list + body: list + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = dayfrac + ctx: Store + element: Name + id: str = days + ctx: Store + ctx: Store + value: Call + func: Attribute + value: Name + id: str = _math + ctx: Load + attr: str = modf + ctx: Load + args: list + element: Name + id: str = days + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = daysecondsfrac + ctx: Store + element: Name + id: str = daysecondswhole + ctx: Store + ctx: Store + value: Call + func: Attribute + value: Name + id: str = _math + ctx: Load + attr: str = modf + ctx: Load + args: list + element: BinOp + left: Name + id: str = dayfrac + ctx: Load + op: Mult + right: BinOp + left: Constant + value: float = 24.0 + kind: NoneType = None + op: Mult + right: Constant + value: float = 3600.0 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Assert + test: Compare + left: Name + id: str = daysecondswhole + ctx: Load + ops: list + element: Eq + comparators: list + element: Call + func: Name + id: str = int + ctx: Load + args: list + element: Name + id: str = daysecondswhole + ctx: Load + keywords: list + msg: NoneType = None + element: Assign + targets: list + element: Name + id: str = s + ctx: Store + value: Call + func: Name + id: str = int + ctx: Load + args: list + element: Name + id: str = daysecondswhole + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assert + test: Compare + left: Name + id: str = days + ctx: Load + ops: list + element: Eq + comparators: list + element: Call + func: Name + id: str = int + ctx: Load + args: list + element: Name + id: str = days + ctx: Load + keywords: list + msg: NoneType = None + element: Assign + targets: list + element: Name + id: str = d + ctx: Store + value: Call + func: Name + id: str = int + ctx: Load + args: list + element: Name + id: str = days + ctx: Load + keywords: list + type_comment: NoneType = None + orelse: list + element: Assign + targets: list + element: Name + id: str = daysecondsfrac + ctx: Store + value: Constant + value: float = 0.0 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = d + ctx: Store + value: Name + id: str = days + ctx: Load + type_comment: NoneType = None + element: Assert + test: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = daysecondsfrac + ctx: Load + element: Tuple + elts: list + element: Name + id: str = float + ctx: Load + element: Name + id: str = int + ctx: Load + ctx: Load + keywords: list + msg: NoneType = None + element: Assert + test: Compare + left: Call + func: Name + id: str = abs + ctx: Load + args: list + element: Name + id: str = daysecondsfrac + ctx: Load + keywords: list + ops: list + element: LtE + comparators: list + element: Constant + value: float = 1.0 + kind: NoneType = None + msg: NoneType = None + element: Assert + test: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = d + ctx: Load + element: Name + id: str = int + ctx: Load + keywords: list + msg: NoneType = None + element: Assert + test: Compare + left: Call + func: Name + id: str = abs + ctx: Load + args: list + element: Name + id: str = s + ctx: Load + keywords: list + ops: list + element: LtE + comparators: list + element: BinOp + left: Constant + value: int = 24 + kind: NoneType = None + op: Mult + right: Constant + value: int = 3600 + kind: NoneType = None + msg: NoneType = None + element: If + test: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = seconds + ctx: Load + element: Name + id: str = float + ctx: Load + keywords: list + body: list + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = secondsfrac + ctx: Store + element: Name + id: str = seconds + ctx: Store + ctx: Store + value: Call + func: Attribute + value: Name + id: str = _math + ctx: Load + attr: str = modf + ctx: Load + args: list + element: Name + id: str = seconds + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assert + test: Compare + left: Name + id: str = seconds + ctx: Load + ops: list + element: Eq + comparators: list + element: Call + func: Name + id: str = int + ctx: Load + args: list + element: Name + id: str = seconds + ctx: Load + keywords: list + msg: NoneType = None + element: Assign + targets: list + element: Name + id: str = seconds + ctx: Store + value: Call + func: Name + id: str = int + ctx: Load + args: list + element: Name + id: str = seconds + ctx: Load + keywords: list + type_comment: NoneType = None + element: AugAssign + target: Name + id: str = secondsfrac + ctx: Store + op: Add + value: Name + id: str = daysecondsfrac + ctx: Load + element: Assert + test: Compare + left: Call + func: Name + id: str = abs + ctx: Load + args: list + element: Name + id: str = secondsfrac + ctx: Load + keywords: list + ops: list + element: LtE + comparators: list + element: Constant + value: float = 2.0 + kind: NoneType = None + msg: NoneType = None + orelse: list + element: Assign + targets: list + element: Name + id: str = secondsfrac + ctx: Store + value: Name + id: str = daysecondsfrac + ctx: Load + type_comment: NoneType = None + element: Assert + test: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = secondsfrac + ctx: Load + element: Tuple + elts: list + element: Name + id: str = float + ctx: Load + element: Name + id: str = int + ctx: Load + ctx: Load + keywords: list + msg: NoneType = None + element: Assert + test: Compare + left: Call + func: Name + id: str = abs + ctx: Load + args: list + element: Name + id: str = secondsfrac + ctx: Load + keywords: list + ops: list + element: LtE + comparators: list + element: Constant + value: float = 2.0 + kind: NoneType = None + msg: NoneType = None + element: Assert + test: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = seconds + ctx: Load + element: Name + id: str = int + ctx: Load + keywords: list + msg: NoneType = None + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = days + ctx: Store + element: Name + id: str = seconds + ctx: Store + ctx: Store + value: Call + func: Name + id: str = divmod + ctx: Load + args: list + element: Name + id: str = seconds + ctx: Load + element: BinOp + left: Constant + value: int = 24 + kind: NoneType = None + op: Mult + right: Constant + value: int = 3600 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: AugAssign + target: Name + id: str = d + ctx: Store + op: Add + value: Name + id: str = days + ctx: Load + element: AugAssign + target: Name + id: str = s + ctx: Store + op: Add + value: Call + func: Name + id: str = int + ctx: Load + args: list + element: Name + id: str = seconds + ctx: Load + keywords: list + element: Assert + test: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = s + ctx: Load + element: Name + id: str = int + ctx: Load + keywords: list + msg: NoneType = None + element: Assert + test: Compare + left: Call + func: Name + id: str = abs + ctx: Load + args: list + element: Name + id: str = s + ctx: Load + keywords: list + ops: list + element: LtE + comparators: list + element: BinOp + left: BinOp + left: Constant + value: int = 2 + kind: NoneType = None + op: Mult + right: Constant + value: int = 24 + kind: NoneType = None + op: Mult + right: Constant + value: int = 3600 + kind: NoneType = None + msg: NoneType = None + element: Assign + targets: list + element: Name + id: str = usdouble + ctx: Store + value: BinOp + left: Name + id: str = secondsfrac + ctx: Load + op: Mult + right: Constant + value: float = 1000000.0 + kind: NoneType = None + type_comment: NoneType = None + element: Assert + test: Compare + left: Call + func: Name + id: str = abs + ctx: Load + args: list + element: Name + id: str = usdouble + ctx: Load + keywords: list + ops: list + element: Lt + comparators: list + element: Constant + value: float = 2100000.0 + kind: NoneType = None + msg: NoneType = None + element: If + test: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = microseconds + ctx: Load + element: Name + id: str = float + ctx: Load + keywords: list + body: list + element: Assign + targets: list + element: Name + id: str = microseconds + ctx: Store + value: Call + func: Name + id: str = round + ctx: Load + args: list + element: BinOp + left: Name + id: str = microseconds + ctx: Load + op: Add + right: Name + id: str = usdouble + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = seconds + ctx: Store + element: Name + id: str = microseconds + ctx: Store + ctx: Store + value: Call + func: Name + id: str = divmod + ctx: Load + args: list + element: Name + id: str = microseconds + ctx: Load + element: Constant + value: int = 1000000 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = days + ctx: Store + element: Name + id: str = seconds + ctx: Store + ctx: Store + value: Call + func: Name + id: str = divmod + ctx: Load + args: list + element: Name + id: str = seconds + ctx: Load + element: BinOp + left: Constant + value: int = 24 + kind: NoneType = None + op: Mult + right: Constant + value: int = 3600 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: AugAssign + target: Name + id: str = d + ctx: Store + op: Add + value: Name + id: str = days + ctx: Load + element: AugAssign + target: Name + id: str = s + ctx: Store + op: Add + value: Name + id: str = seconds + ctx: Load + orelse: list + element: Assign + targets: list + element: Name + id: str = microseconds + ctx: Store + value: Call + func: Name + id: str = int + ctx: Load + args: list + element: Name + id: str = microseconds + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = seconds + ctx: Store + element: Name + id: str = microseconds + ctx: Store + ctx: Store + value: Call + func: Name + id: str = divmod + ctx: Load + args: list + element: Name + id: str = microseconds + ctx: Load + element: Constant + value: int = 1000000 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = days + ctx: Store + element: Name + id: str = seconds + ctx: Store + ctx: Store + value: Call + func: Name + id: str = divmod + ctx: Load + args: list + element: Name + id: str = seconds + ctx: Load + element: BinOp + left: Constant + value: int = 24 + kind: NoneType = None + op: Mult + right: Constant + value: int = 3600 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: AugAssign + target: Name + id: str = d + ctx: Store + op: Add + value: Name + id: str = days + ctx: Load + element: AugAssign + target: Name + id: str = s + ctx: Store + op: Add + value: Name + id: str = seconds + ctx: Load + element: Assign + targets: list + element: Name + id: str = microseconds + ctx: Store + value: Call + func: Name + id: str = round + ctx: Load + args: list + element: BinOp + left: Name + id: str = microseconds + ctx: Load + op: Add + right: Name + id: str = usdouble + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assert + test: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = s + ctx: Load + element: Name + id: str = int + ctx: Load + keywords: list + msg: NoneType = None + element: Assert + test: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = microseconds + ctx: Load + element: Name + id: str = int + ctx: Load + keywords: list + msg: NoneType = None + element: Assert + test: Compare + left: Call + func: Name + id: str = abs + ctx: Load + args: list + element: Name + id: str = s + ctx: Load + keywords: list + ops: list + element: LtE + comparators: list + element: BinOp + left: BinOp + left: Constant + value: int = 3 + kind: NoneType = None + op: Mult + right: Constant + value: int = 24 + kind: NoneType = None + op: Mult + right: Constant + value: int = 3600 + kind: NoneType = None + msg: NoneType = None + element: Assert + test: Compare + left: Call + func: Name + id: str = abs + ctx: Load + args: list + element: Name + id: str = microseconds + ctx: Load + keywords: list + ops: list + element: Lt + comparators: list + element: Constant + value: float = 3100000.0 + kind: NoneType = None + msg: NoneType = None + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = seconds + ctx: Store + element: Name + id: str = us + ctx: Store + ctx: Store + value: Call + func: Name + id: str = divmod + ctx: Load + args: list + element: Name + id: str = microseconds + ctx: Load + element: Constant + value: int = 1000000 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: AugAssign + target: Name + id: str = s + ctx: Store + op: Add + value: Name + id: str = seconds + ctx: Load + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = days + ctx: Store + element: Name + id: str = s + ctx: Store + ctx: Store + value: Call + func: Name + id: str = divmod + ctx: Load + args: list + element: Name + id: str = s + ctx: Load + element: BinOp + left: Constant + value: int = 24 + kind: NoneType = None + op: Mult + right: Constant + value: int = 3600 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: AugAssign + target: Name + id: str = d + ctx: Store + op: Add + value: Name + id: str = days + ctx: Load + element: Assert + test: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = d + ctx: Load + element: Name + id: str = int + ctx: Load + keywords: list + msg: NoneType = None + element: Assert + test: BoolOp + op: And + values: list + element: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = s + ctx: Load + element: Name + id: str = int + ctx: Load + keywords: list + element: Compare + left: Constant + value: int = 0 + kind: NoneType = None + ops: list + element: LtE + element: Lt + comparators: list + element: Name + id: str = s + ctx: Load + element: BinOp + left: Constant + value: int = 24 + kind: NoneType = None + op: Mult + right: Constant + value: int = 3600 + kind: NoneType = None + msg: NoneType = None + element: Assert + test: BoolOp + op: And + values: list + element: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = us + ctx: Load + element: Name + id: str = int + ctx: Load + keywords: list + element: Compare + left: Constant + value: int = 0 + kind: NoneType = None + ops: list + element: LtE + element: Lt + comparators: list + element: Name + id: str = us + ctx: Load + element: Constant + value: int = 1000000 + kind: NoneType = None + msg: NoneType = None + element: If + test: Compare + left: Call + func: Name + id: str = abs + ctx: Load + args: list + element: Name + id: str = d + ctx: Load + keywords: list + ops: list + element: Gt + comparators: list + element: Constant + value: int = 999999999 + kind: NoneType = None + body: list + element: Raise + exc: Call + func: Name + id: str = OverflowError + ctx: Load + args: list + element: BinOp + left: Constant + value: str = timedelta # of days is too large: %d + kind: NoneType = None + op: Mod + right: Name + id: str = d + ctx: Load + keywords: list + cause: NoneType = None + orelse: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _days + ctx: Store + value: Name + id: str = d + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _seconds + ctx: Store + value: Name + id: str = s + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _microseconds + ctx: Store + value: Name + id: str = us + ctx: Load + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = nokwargs + kind: NoneType = None + keywords: list + element: FunctionDef + name: str = __repr__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _microseconds + ctx: Load + body: list + element: Return + value: Call + func: Attribute + value: Constant + value: str = datetime.timedelta(days={}, seconds={}, microseconds={}) + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _days + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _seconds + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _microseconds + ctx: Load + keywords: list + orelse: list + element: If + test: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _seconds + ctx: Load + body: list + element: Return + value: Call + func: Attribute + value: Constant + value: str = datetime.timedelta(days={}, seconds={}) + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _days + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _seconds + ctx: Load + keywords: list + orelse: list + element: Return + value: Call + func: Attribute + value: Constant + value: str = datetime.timedelta(days={}) + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _days + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __str__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = mm + ctx: Store + element: Name + id: str = ss + ctx: Store + ctx: Store + value: Call + func: Name + id: str = divmod + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _seconds + ctx: Load + element: Constant + value: int = 60 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = hh + ctx: Store + element: Name + id: str = mm + ctx: Store + ctx: Store + value: Call + func: Name + id: str = divmod + ctx: Load + args: list + element: Name + id: str = mm + ctx: Load + element: Constant + value: int = 60 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = s + ctx: Store + value: Call + func: Attribute + value: Constant + value: str = {}:{}:{} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Name + id: str = hh + ctx: Load + element: Call + func: Name + id: str = zfill + ctx: Load + args: list + element: Name + id: str = mm + ctx: Load + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = zfill + ctx: Load + args: list + element: Name + id: str = ss + ctx: Load + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + keywords: list + type_comment: NoneType = None + element: If + test: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _days + ctx: Load + body: list + element: FunctionDef + name: str = plural + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = n + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Tuple + elts: list + element: Name + id: str = n + ctx: Load + element: BoolOp + op: Or + values: list + element: BoolOp + op: And + values: list + element: Compare + left: Call + func: Name + id: str = abs + ctx: Load + args: list + element: Name + id: str = n + ctx: Load + keywords: list + ops: list + element: NotEq + comparators: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: str = s + kind: NoneType = None + element: Constant + value: str = + kind: NoneType = None + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = s + ctx: Store + value: BinOp + left: Call + func: Attribute + value: Constant + value: str = {} day{}, + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Call + func: Name + id: str = plural + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _days + ctx: Load + keywords: list + keywords: list + op: Add + right: Name + id: str = s + ctx: Load + type_comment: NoneType = None + orelse: list + element: If + test: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _microseconds + ctx: Load + body: list + element: Assign + targets: list + element: Name + id: str = s + ctx: Store + value: BinOp + left: Name + id: str = s + ctx: Load + op: Add + right: Call + func: Attribute + value: Constant + value: str = .{} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Call + func: Name + id: str = zfill + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _microseconds + ctx: Load + element: Constant + value: int = 6 + kind: NoneType = None + keywords: list + keywords: list + type_comment: NoneType = None + orelse: list + element: Return + value: Name + id: str = s + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = total_seconds + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = Total seconds in the duration. + kind: NoneType = None + element: Return + value: BinOp + left: BinOp + left: BinOp + left: BinOp + left: BinOp + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = days + ctx: Load + op: Mult + right: Constant + value: int = 86400 + kind: NoneType = None + op: Add + right: Attribute + value: Name + id: str = self + ctx: Load + attr: str = seconds + ctx: Load + op: Mult + right: BinOp + left: Constant + value: int = 10 + kind: NoneType = None + op: Pow + right: Constant + value: int = 6 + kind: NoneType = None + op: Add + right: Attribute + value: Name + id: str = self + ctx: Load + attr: str = microseconds + ctx: Load + op: Div + right: BinOp + left: Constant + value: int = 10 + kind: NoneType = None + op: Pow + right: Constant + value: int = 6 + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = days + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = days + kind: NoneType = None + element: Return + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _days + ctx: Load + decorator_list: list + element: Name + id: str = property + ctx: Load + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = seconds + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = seconds + kind: NoneType = None + element: Return + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _seconds + ctx: Load + decorator_list: list + element: Name + id: str = property + ctx: Load + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = microseconds + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = microseconds + kind: NoneType = None + element: Return + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _microseconds + ctx: Load + decorator_list: list + element: Name + id: str = property + ctx: Load + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __add__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + element: Name + id: str = timedelta + ctx: Load + keywords: list + body: list + element: Return + value: Call + func: Name + id: str = timedelta + ctx: Load + args: list + element: BinOp + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _days + ctx: Load + op: Add + right: Attribute + value: Name + id: str = other + ctx: Load + attr: str = _days + ctx: Load + element: BinOp + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _seconds + ctx: Load + op: Add + right: Attribute + value: Name + id: str = other + ctx: Load + attr: str = _seconds + ctx: Load + element: BinOp + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _microseconds + ctx: Load + op: Add + right: Attribute + value: Name + id: str = other + ctx: Load + attr: str = _microseconds + ctx: Load + keywords: list + orelse: list + element: Return + value: Name + id: str = NotImplemented + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __radd__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = __add__ + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __sub__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + element: Name + id: str = timedelta + ctx: Load + keywords: list + body: list + element: Return + value: Call + func: Name + id: str = timedelta + ctx: Load + args: list + element: BinOp + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _days + ctx: Load + op: Sub + right: Attribute + value: Name + id: str = other + ctx: Load + attr: str = _days + ctx: Load + element: BinOp + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _seconds + ctx: Load + op: Sub + right: Attribute + value: Name + id: str = other + ctx: Load + attr: str = _seconds + ctx: Load + element: BinOp + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _microseconds + ctx: Load + op: Sub + right: Attribute + value: Name + id: str = other + ctx: Load + attr: str = _microseconds + ctx: Load + keywords: list + orelse: list + element: Return + value: Name + id: str = NotImplemented + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __rsub__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + element: Name + id: str = timedelta + ctx: Load + keywords: list + body: list + element: Return + value: BinOp + left: UnaryOp + op: USub + operand: Name + id: str = self + ctx: Load + op: Add + right: Name + id: str = other + ctx: Load + orelse: list + element: Return + value: Name + id: str = NotImplemented + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __neg__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Call + func: Name + id: str = timedelta + ctx: Load + args: list + element: UnaryOp + op: USub + operand: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _days + ctx: Load + element: UnaryOp + op: USub + operand: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _seconds + ctx: Load + element: UnaryOp + op: USub + operand: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _microseconds + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __pos__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Name + id: str = self + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __abs__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: Compare + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _days + ctx: Load + ops: list + element: Lt + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + body: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = opov + kind: NoneType = None + keywords: list + element: Return + value: UnaryOp + op: USub + operand: Name + id: str = self + ctx: Load + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = noopov + kind: NoneType = None + keywords: list + orelse: list + element: Return + value: Name + id: str = self + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __mul__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + element: Name + id: str = int + ctx: Load + keywords: list + body: list + element: Return + value: Call + func: Name + id: str = timedelta + ctx: Load + args: list + element: BinOp + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _days + ctx: Load + op: Mult + right: Name + id: str = other + ctx: Load + element: BinOp + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _seconds + ctx: Load + op: Mult + right: Name + id: str = other + ctx: Load + element: BinOp + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _microseconds + ctx: Load + op: Mult + right: Name + id: str = other + ctx: Load + keywords: list + orelse: list + element: If + test: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + element: Name + id: str = float + ctx: Load + keywords: list + body: list + element: Assign + targets: list + element: Name + id: str = usec + ctx: Store + value: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _to_microseconds + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = a + ctx: Store + element: Name + id: str = b + ctx: Store + ctx: Store + value: Call + func: Attribute + value: Name + id: str = other + ctx: Load + attr: str = as_integer_ratio + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Return + value: Call + func: Name + id: str = timedelta + ctx: Load + args: list + element: Constant + value: int = 0 + kind: NoneType = None + element: Constant + value: int = 0 + kind: NoneType = None + element: Call + func: Name + id: str = _divide_and_round + ctx: Load + args: list + element: BinOp + left: Name + id: str = usec + ctx: Load + op: Mult + right: Name + id: str = a + ctx: Load + element: Name + id: str = b + ctx: Load + keywords: list + keywords: list + orelse: list + element: Return + value: Name + id: str = NotImplemented + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __rmul__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = __mul__ + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = _to_microseconds + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: BinOp + left: BinOp + left: BinOp + left: BinOp + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _days + ctx: Load + op: Mult + right: BinOp + left: Constant + value: int = 24 + kind: NoneType = None + op: Mult + right: Constant + value: int = 3600 + kind: NoneType = None + op: Add + right: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _seconds + ctx: Load + op: Mult + right: Constant + value: int = 1000000 + kind: NoneType = None + op: Add + right: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _microseconds + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __floordiv__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: UnaryOp + op: Not + operand: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + element: Tuple + elts: list + element: Name + id: str = int + ctx: Load + element: Name + id: str = timedelta + ctx: Load + ctx: Load + keywords: list + body: list + element: Return + value: Name + id: str = NotImplemented + ctx: Load + orelse: list + element: Assign + targets: list + element: Name + id: str = usec + ctx: Store + value: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _to_microseconds + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: If + test: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + element: Name + id: str = timedelta + ctx: Load + keywords: list + body: list + element: Return + value: BinOp + left: Name + id: str = usec + ctx: Load + op: FloorDiv + right: Call + func: Attribute + value: Name + id: str = other + ctx: Load + attr: str = _to_microseconds + ctx: Load + args: list + keywords: list + orelse: list + element: If + test: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + element: Name + id: str = int + ctx: Load + keywords: list + body: list + element: Return + value: Call + func: Name + id: str = timedelta + ctx: Load + args: list + element: Constant + value: int = 0 + kind: NoneType = None + element: Constant + value: int = 0 + kind: NoneType = None + element: BinOp + left: Name + id: str = usec + ctx: Load + op: FloorDiv + right: Name + id: str = other + ctx: Load + keywords: list + orelse: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __truediv__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: UnaryOp + op: Not + operand: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + element: Tuple + elts: list + element: Name + id: str = int + ctx: Load + element: Name + id: str = float + ctx: Load + element: Name + id: str = timedelta + ctx: Load + ctx: Load + keywords: list + body: list + element: Return + value: Name + id: str = NotImplemented + ctx: Load + orelse: list + element: Assign + targets: list + element: Name + id: str = usec + ctx: Store + value: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _to_microseconds + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: If + test: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + element: Name + id: str = timedelta + ctx: Load + keywords: list + body: list + element: Return + value: BinOp + left: Name + id: str = usec + ctx: Load + op: Div + right: Call + func: Attribute + value: Name + id: str = other + ctx: Load + attr: str = _to_microseconds + ctx: Load + args: list + keywords: list + orelse: list + element: If + test: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + element: Name + id: str = int + ctx: Load + keywords: list + body: list + element: Return + value: Call + func: Name + id: str = timedelta + ctx: Load + args: list + element: Constant + value: int = 0 + kind: NoneType = None + element: Constant + value: int = 0 + kind: NoneType = None + element: Call + func: Name + id: str = _divide_and_round + ctx: Load + args: list + element: Name + id: str = usec + ctx: Load + element: Name + id: str = other + ctx: Load + keywords: list + keywords: list + orelse: list + element: If + test: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + element: Name + id: str = float + ctx: Load + keywords: list + body: list + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = a + ctx: Store + element: Name + id: str = b + ctx: Store + ctx: Store + value: Call + func: Attribute + value: Name + id: str = other + ctx: Load + attr: str = as_integer_ratio + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Return + value: Call + func: Name + id: str = timedelta + ctx: Load + args: list + element: Constant + value: int = 0 + kind: NoneType = None + element: Constant + value: int = 0 + kind: NoneType = None + element: Call + func: Name + id: str = _divide_and_round + ctx: Load + args: list + element: BinOp + left: Name + id: str = b + ctx: Load + op: Mult + right: Name + id: str = usec + ctx: Load + element: Name + id: str = a + ctx: Load + keywords: list + keywords: list + orelse: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __mod__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + element: Name + id: str = timedelta + ctx: Load + keywords: list + body: list + element: Assign + targets: list + element: Name + id: str = r + ctx: Store + value: BinOp + left: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _to_microseconds + ctx: Load + args: list + keywords: list + op: Mod + right: Call + func: Attribute + value: Name + id: str = other + ctx: Load + attr: str = _to_microseconds + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Return + value: Call + func: Name + id: str = timedelta + ctx: Load + args: list + element: Constant + value: int = 0 + kind: NoneType = None + element: Constant + value: int = 0 + kind: NoneType = None + element: Name + id: str = r + ctx: Load + keywords: list + orelse: list + element: Return + value: Name + id: str = NotImplemented + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __divmod__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + element: Name + id: str = timedelta + ctx: Load + keywords: list + body: list + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = q + ctx: Store + element: Name + id: str = r + ctx: Store + ctx: Store + value: Call + func: Name + id: str = divmod + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _to_microseconds + ctx: Load + args: list + keywords: list + element: Call + func: Attribute + value: Name + id: str = other + ctx: Load + attr: str = _to_microseconds + ctx: Load + args: list + keywords: list + keywords: list + type_comment: NoneType = None + element: Return + value: Tuple + elts: list + element: Name + id: str = q + ctx: Load + element: Call + func: Name + id: str = timedelta + ctx: Load + args: list + element: Constant + value: int = 0 + kind: NoneType = None + element: Constant + value: int = 0 + kind: NoneType = None + element: Name + id: str = r + ctx: Load + keywords: list + ctx: Load + orelse: list + element: Return + value: Name + id: str = NotImplemented + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __eq__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + element: Name + id: str = timedelta + ctx: Load + keywords: list + body: list + element: Return + value: Compare + left: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _cmp + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + keywords: list + ops: list + element: Eq + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + orelse: list + element: Return + value: Constant + value: bool = False + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __le__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + element: Name + id: str = timedelta + ctx: Load + keywords: list + body: list + element: Return + value: Compare + left: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _cmp + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + keywords: list + ops: list + element: LtE + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + orelse: list + element: Expr + value: Call + func: Name + id: str = _cmperror + ctx: Load + args: list + element: Name + id: str = self + ctx: Load + element: Name + id: str = other + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __lt__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + element: Name + id: str = timedelta + ctx: Load + keywords: list + body: list + element: Return + value: Compare + left: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _cmp + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + keywords: list + ops: list + element: Lt + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + orelse: list + element: Expr + value: Call + func: Name + id: str = _cmperror + ctx: Load + args: list + element: Name + id: str = self + ctx: Load + element: Name + id: str = other + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __ge__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + element: Name + id: str = timedelta + ctx: Load + keywords: list + body: list + element: Return + value: Compare + left: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _cmp + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + keywords: list + ops: list + element: GtE + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + orelse: list + element: Expr + value: Call + func: Name + id: str = _cmperror + ctx: Load + args: list + element: Name + id: str = self + ctx: Load + element: Name + id: str = other + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __gt__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + element: Name + id: str = timedelta + ctx: Load + keywords: list + body: list + element: Return + value: Compare + left: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _cmp + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + keywords: list + ops: list + element: Gt + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + orelse: list + element: Expr + value: Call + func: Name + id: str = _cmperror + ctx: Load + args: list + element: Name + id: str = self + ctx: Load + element: Name + id: str = other + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = _cmp + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assert + test: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + element: Name + id: str = timedelta + ctx: Load + keywords: list + msg: NoneType = None + element: Return + value: Call + func: Name + id: str = _cmp + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _to_microseconds + ctx: Load + args: list + keywords: list + element: Call + func: Attribute + value: Name + id: str = other + ctx: Load + attr: str = _to_microseconds + ctx: Load + args: list + keywords: list + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __bool__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: BoolOp + op: Or + values: list + element: Compare + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _days + ctx: Load + ops: list + element: NotEq + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + element: Compare + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _seconds + ctx: Load + ops: list + element: NotEq + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + element: Compare + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _microseconds + ctx: Load + ops: list + element: NotEq + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: Assign + targets: list + element: Name + id: str = _td_min + ctx: Store + value: Call + func: Name + id: str = timedelta + ctx: Load + args: list + element: UnaryOp + op: USub + operand: Constant + value: int = 999999999 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = _td_max + ctx: Store + value: Call + func: Name + id: str = timedelta + ctx: Load + args: list + keywords: list + element: keyword + arg: str = days + value: Constant + value: int = 999999999 + kind: NoneType = None + element: keyword + arg: str = hours + value: Constant + value: int = 23 + kind: NoneType = None + element: keyword + arg: str = minutes + value: Constant + value: int = 59 + kind: NoneType = None + element: keyword + arg: str = seconds + value: Constant + value: int = 59 + kind: NoneType = None + element: keyword + arg: str = microseconds + value: Constant + value: int = 999999 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = _td_resolution + ctx: Store + value: Call + func: Name + id: str = timedelta + ctx: Load + args: list + keywords: list + element: keyword + arg: str = microseconds + value: Constant + value: int = 1 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = js + kind: NoneType = None + element: Constant + value: str = {} + kind: NoneType = None + element: Constant + value: str = Object.defineProperty (timedelta, 'min', {get: function () {return _td_min;}}) + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = js + kind: NoneType = None + element: Constant + value: str = {} + kind: NoneType = None + element: Constant + value: str = Object.defineProperty (timedelta, 'max', {get: function () {return _td_max;}}) + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = js + kind: NoneType = None + element: Constant + value: str = {} + kind: NoneType = None + element: Constant + value: str = Object.defineProperty (timedelta, 'resolution', {get: function () {return _td_resolution;}}) + kind: NoneType = None + keywords: list + element: ClassDef + name: str = date + bases: list + keywords: list + body: list + element: Expr + value: Constant + value: str = Concrete date type. + + Constructors: + + __new__() + fromtimestamp() + today() + fromordinal() + + Operators: + + __repr__, __str__ + __eq__, __le__, __lt__, __ge__, __gt__, + __add__, __radd__, __sub__ (add/radd only with timedelta arg) + + Methods: + + timetuple() + toordinal() + weekday() + isoweekday(), isocalendar(), isoformat() + ctime() + strftime() + + Properties (readonly): + year, month, day + + kind: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = kwargs + kind: NoneType = None + keywords: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = year + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = month + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = day + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + element: Constant + value: NoneType = None + kind: NoneType = None + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Expr + value: Constant + value: str = Constructor. + + Arguments: + + year, month, day (required, base 1) + + kind: NoneType = None + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = year + ctx: Store + element: Name + id: str = month + ctx: Store + element: Name + id: str = day + ctx: Store + ctx: Store + value: Call + func: Name + id: str = _check_date_fields + ctx: Load + args: list + element: Name + id: str = year + ctx: Load + element: Name + id: str = month + ctx: Load + element: Name + id: str = day + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _year + ctx: Store + value: Name + id: str = year + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _month + ctx: Store + value: Name + id: str = month + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _day + ctx: Store + value: Name + id: str = day + ctx: Load + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = nokwargs + kind: NoneType = None + keywords: list + element: FunctionDef + name: str = fromtimestamp + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = cls + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = t + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = Construct a date from a POSIX timestamp (like time.time()). + kind: NoneType = None + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = y + ctx: Store + element: Name + id: str = m + ctx: Store + element: Name + id: str = d + ctx: Store + element: Name + id: str = hh + ctx: Store + element: Name + id: str = mm + ctx: Store + element: Name + id: str = ss + ctx: Store + element: Name + id: str = weekday + ctx: Store + element: Name + id: str = jday + ctx: Store + element: Name + id: str = dst + ctx: Store + ctx: Store + value: Call + func: Attribute + value: Name + id: str = _time + ctx: Load + attr: str = localtime + ctx: Load + args: list + element: Name + id: str = t + ctx: Load + keywords: list + type_comment: NoneType = None + element: Return + value: Call + func: Name + id: str = cls + ctx: Load + args: list + element: Name + id: str = y + ctx: Load + element: Name + id: str = m + ctx: Load + element: Name + id: str = d + ctx: Load + keywords: list + decorator_list: list + element: Name + id: str = classmethod + ctx: Load + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = today + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = cls + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = Construct a date from time.time(). + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = t + ctx: Store + value: Call + func: Attribute + value: Name + id: str = _time + ctx: Load + attr: str = time + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Return + value: Call + func: Attribute + value: Name + id: str = cls + ctx: Load + attr: str = fromtimestamp + ctx: Load + args: list + element: Name + id: str = t + ctx: Load + keywords: list + decorator_list: list + element: Name + id: str = classmethod + ctx: Load + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = fromordinal + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = cls + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = n + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = Contruct a date from a proleptic Gregorian ordinal. + + January 1 of year 1 is day 1. Only the year, month and day are + non-zero in the result. + + kind: NoneType = None + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = y + ctx: Store + element: Name + id: str = m + ctx: Store + element: Name + id: str = d + ctx: Store + ctx: Store + value: Call + func: Name + id: str = _ord2ymd + ctx: Load + args: list + element: Name + id: str = n + ctx: Load + keywords: list + type_comment: NoneType = None + element: Return + value: Call + func: Name + id: str = cls + ctx: Load + args: list + element: Name + id: str = y + ctx: Load + element: Name + id: str = m + ctx: Load + element: Name + id: str = d + ctx: Load + keywords: list + decorator_list: list + element: Name + id: str = classmethod + ctx: Load + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __repr__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = Convert to formal string, for repr(). + + >>> dt = datetime(2010, 1, 1) + >>> repr(dt) + 'datetime.datetime(2010, 1, 1, 0, 0)' + + >>> dt = datetime(2010, 1, 1, tzinfo=timezone.utc) + >>> repr(dt) + 'datetime.datetime(2010, 1, 1, 0, 0, tzinfo=datetime.timezone.utc)' + + kind: NoneType = None + element: Return + value: Call + func: Attribute + value: Constant + value: str = datetime.date({}, {}, {}) + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _year + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _month + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _day + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = ctime + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = Return ctime() style string. + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = weekday + ctx: Store + value: BoolOp + op: Or + values: list + element: BinOp + left: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = toordinal + ctx: Load + args: list + keywords: list + op: Mod + right: Constant + value: int = 7 + kind: NoneType = None + element: Constant + value: int = 7 + kind: NoneType = None + type_comment: NoneType = None + element: Return + value: Call + func: Attribute + value: Constant + value: str = {} {} {} 00:00:00 {} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Subscript + value: Name + id: str = _DAYNAMES + ctx: Load + slice: Name + id: str = weekday + ctx: Load + ctx: Load + element: Subscript + value: Name + id: str = _MONTHNAMES + ctx: Load + slice: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _month + ctx: Load + ctx: Load + element: Call + func: Name + id: str = rjust + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _day + ctx: Load + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = zfill + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _year + ctx: Load + element: Constant + value: int = 4 + kind: NoneType = None + keywords: list + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = strftime + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = fmt + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = Format using strftime(). + kind: NoneType = None + element: Return + value: Call + func: Name + id: str = _wrap_strftime + ctx: Load + args: list + element: Name + id: str = self + ctx: Load + element: Name + id: str = fmt + ctx: Load + element: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = timetuple + ctx: Load + args: list + keywords: list + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __format__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = fmt + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: UnaryOp + op: Not + operand: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = fmt + ctx: Load + element: Name + id: str = str + ctx: Load + keywords: list + body: list + element: Raise + exc: Call + func: Name + id: str = TypeError + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = must be str, not {} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Attribute + value: Call + func: Name + id: str = type + ctx: Load + args: list + element: Name + id: str = fmt + ctx: Load + keywords: list + attr: str = __name__ + ctx: Load + keywords: list + keywords: list + cause: NoneType = None + orelse: list + element: If + test: Compare + left: Call + func: Name + id: str = len + ctx: Load + args: list + element: Name + id: str = fmt + ctx: Load + keywords: list + ops: list + element: NotEq + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + body: list + element: Return + value: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = strftime + ctx: Load + args: list + element: Name + id: str = fmt + ctx: Load + keywords: list + orelse: list + element: Return + value: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = self + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = isoformat + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = Return the date formatted according to ISO. + + This is 'YYYY-MM-DD'. + + References: + - http://www.w3.org/TR/NOTE-datetime + - http://www.cl.cam.ac.uk/~mgk25/iso-time.html + + kind: NoneType = None + element: Return + value: Call + func: Attribute + value: Constant + value: str = {}-{}-{} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Call + func: Name + id: str = zfill + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _year + ctx: Load + element: Constant + value: int = 4 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = zfill + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _month + ctx: Load + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = zfill + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _day + ctx: Load + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __str__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = isoformat + ctx: Load + args: list + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = year + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = year (1-9999) + kind: NoneType = None + element: Return + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _year + ctx: Load + decorator_list: list + element: Name + id: str = property + ctx: Load + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = month + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = month (1-12) + kind: NoneType = None + element: Return + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _month + ctx: Load + decorator_list: list + element: Name + id: str = property + ctx: Load + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = day + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = day (1-31) + kind: NoneType = None + element: Return + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _day + ctx: Load + decorator_list: list + element: Name + id: str = property + ctx: Load + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = timetuple + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = Return local time tuple compatible with time.localtime(). + kind: NoneType = None + element: Return + value: Call + func: Name + id: str = _build_struct_time + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _year + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _month + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _day + ctx: Load + element: Constant + value: int = 0 + kind: NoneType = None + element: Constant + value: int = 0 + kind: NoneType = None + element: Constant + value: int = 0 + kind: NoneType = None + element: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = toordinal + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = Return proleptic Gregorian ordinal for the year, month and day. + + January 1 of year 1 is day 1. Only the year, month and day values + contribute to the result. + + kind: NoneType = None + element: Return + value: Call + func: Name + id: str = _ymd2ord + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _year + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _month + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _day + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = kwargs + kind: NoneType = None + keywords: list + element: FunctionDef + name: str = replace + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = year + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = month + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = day + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + element: Constant + value: NoneType = None + kind: NoneType = None + element: Constant + value: NoneType = None + kind: NoneType = None + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Expr + value: Constant + value: str = Return a new date with new values for the specified fields. + kind: NoneType = None + element: If + test: Compare + left: Name + id: str = year + ctx: Load + ops: list + element: Is + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = year + ctx: Store + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _year + ctx: Load + type_comment: NoneType = None + orelse: list + element: If + test: Compare + left: Name + id: str = month + ctx: Load + ops: list + element: Is + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = month + ctx: Store + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _month + ctx: Load + type_comment: NoneType = None + orelse: list + element: If + test: Compare + left: Name + id: str = day + ctx: Load + ops: list + element: Is + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = day + ctx: Store + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _day + ctx: Load + type_comment: NoneType = None + orelse: list + element: Return + value: Call + func: Name + id: str = date + ctx: Load + args: list + element: Name + id: str = year + ctx: Load + element: Name + id: str = month + ctx: Load + element: Name + id: str = day + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = nokwargs + kind: NoneType = None + keywords: list + element: FunctionDef + name: str = __eq__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + element: Name + id: str = date + ctx: Load + keywords: list + body: list + element: Return + value: Compare + left: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _cmp + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + keywords: list + ops: list + element: Eq + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + orelse: list + element: Return + value: Name + id: str = NotImplemented + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __le__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + element: Name + id: str = date + ctx: Load + keywords: list + body: list + element: Return + value: Compare + left: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _cmp + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + keywords: list + ops: list + element: LtE + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + orelse: list + element: Return + value: Name + id: str = NotImplemented + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __lt__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + element: Name + id: str = date + ctx: Load + keywords: list + body: list + element: Return + value: Compare + left: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _cmp + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + keywords: list + ops: list + element: Lt + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + orelse: list + element: Return + value: Name + id: str = NotImplemented + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __ge__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + element: Name + id: str = date + ctx: Load + keywords: list + body: list + element: Return + value: Compare + left: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _cmp + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + keywords: list + ops: list + element: GtE + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + orelse: list + element: Return + value: Name + id: str = NotImplemented + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __gt__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + element: Name + id: str = date + ctx: Load + keywords: list + body: list + element: Return + value: Compare + left: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _cmp + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + keywords: list + ops: list + element: Gt + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + orelse: list + element: Return + value: Name + id: str = NotImplemented + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = _cmp + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assert + test: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + element: Name + id: str = date + ctx: Load + keywords: list + msg: NoneType = None + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = y + ctx: Store + element: Name + id: str = m + ctx: Store + element: Name + id: str = d + ctx: Store + ctx: Store + value: Tuple + elts: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _year + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _month + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _day + ctx: Load + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = y2 + ctx: Store + element: Name + id: str = m2 + ctx: Store + element: Name + id: str = d2 + ctx: Store + ctx: Store + value: Tuple + elts: list + element: Attribute + value: Name + id: str = other + ctx: Load + attr: str = _year + ctx: Load + element: Attribute + value: Name + id: str = other + ctx: Load + attr: str = _month + ctx: Load + element: Attribute + value: Name + id: str = other + ctx: Load + attr: str = _day + ctx: Load + ctx: Load + type_comment: NoneType = None + element: Return + value: Call + func: Name + id: str = _cmp + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = {}{}{} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Call + func: Name + id: str = zfill + ctx: Load + args: list + element: Name + id: str = y + ctx: Load + element: Constant + value: int = 4 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = zfill + ctx: Load + args: list + element: Name + id: str = m + ctx: Load + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = zfill + ctx: Load + args: list + element: Name + id: str = d + ctx: Load + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + keywords: list + element: Call + func: Attribute + value: Constant + value: str = {}{}{} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Call + func: Name + id: str = zfill + ctx: Load + args: list + element: Name + id: str = y2 + ctx: Load + element: Constant + value: int = 4 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = zfill + ctx: Load + args: list + element: Name + id: str = m2 + ctx: Load + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = zfill + ctx: Load + args: list + element: Name + id: str = d2 + ctx: Load + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + keywords: list + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __add__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = Add a date to a timedelta. + kind: NoneType = None + element: If + test: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + element: Name + id: str = timedelta + ctx: Load + keywords: list + body: list + element: Assign + targets: list + element: Name + id: str = o + ctx: Store + value: BinOp + left: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = toordinal + ctx: Load + args: list + keywords: list + op: Add + right: Attribute + value: Name + id: str = other + ctx: Load + attr: str = days + ctx: Load + type_comment: NoneType = None + element: If + test: Compare + left: Constant + value: int = 0 + kind: NoneType = None + ops: list + element: Lt + element: LtE + comparators: list + element: Name + id: str = o + ctx: Load + element: Name + id: str = _MAXORDINAL + ctx: Load + body: list + element: Return + value: Call + func: Attribute + value: Name + id: str = date + ctx: Load + attr: str = fromordinal + ctx: Load + args: list + element: Name + id: str = o + ctx: Load + keywords: list + orelse: list + element: Raise + exc: Call + func: Name + id: str = OverflowError + ctx: Load + args: list + element: Constant + value: str = result out of range + kind: NoneType = None + keywords: list + cause: NoneType = None + orelse: list + element: Return + value: Name + id: str = NotImplemented + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __radd__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = __add__ + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __sub__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = Subtract two dates, or a date and a timedelta. + kind: NoneType = None + element: If + test: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + element: Name + id: str = timedelta + ctx: Load + keywords: list + body: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = opov + kind: NoneType = None + keywords: list + element: Return + value: BinOp + left: Name + id: str = self + ctx: Load + op: Add + right: Call + func: Name + id: str = timedelta + ctx: Load + args: list + element: UnaryOp + op: USub + operand: Attribute + value: Name + id: str = other + ctx: Load + attr: str = days + ctx: Load + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = noopov + kind: NoneType = None + keywords: list + orelse: list + element: If + test: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + element: Name + id: str = date + ctx: Load + keywords: list + body: list + element: Assign + targets: list + element: Name + id: str = days1 + ctx: Store + value: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = toordinal + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = days2 + ctx: Store + value: Call + func: Attribute + value: Name + id: str = other + ctx: Load + attr: str = toordinal + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = opov + kind: NoneType = None + keywords: list + element: Return + value: Call + func: Name + id: str = timedelta + ctx: Load + args: list + element: BinOp + left: Name + id: str = days1 + ctx: Load + op: Sub + right: Name + id: str = days2 + ctx: Load + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = noopov + kind: NoneType = None + keywords: list + orelse: list + element: Return + value: Name + id: str = NotImplemented + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = weekday + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = Return day of the week, where Monday == 0 ... Sunday == 6. + kind: NoneType = None + element: Return + value: BinOp + left: BinOp + left: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = toordinal + ctx: Load + args: list + keywords: list + op: Add + right: Constant + value: int = 6 + kind: NoneType = None + op: Mod + right: Constant + value: int = 7 + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = isoweekday + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = Return day of the week, where Monday == 1 ... Sunday == 7. + kind: NoneType = None + element: Return + value: BoolOp + op: Or + values: list + element: BinOp + left: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = toordinal + ctx: Load + args: list + keywords: list + op: Mod + right: Constant + value: int = 7 + kind: NoneType = None + element: Constant + value: int = 7 + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = isocalendar + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = Return a 3-tuple containing ISO year, week number, and weekday. + + The first ISO week of the year is the (Mon-Sun) week + containing the year's first Thursday; everything else derives + from that. + + The first week is 1; Monday is 1 ... Sunday is 7. + + ISO calendar algorithm taken from + http://www.phys.uu.nl/~vgent/calendar/isocalendar.htm + (used with permission) + + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = year + ctx: Store + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _year + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = week1monday + ctx: Store + value: Call + func: Name + id: str = _isoweek1monday + ctx: Load + args: list + element: Name + id: str = year + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = today + ctx: Store + value: Call + func: Name + id: str = _ymd2ord + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _year + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _month + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _day + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = week + ctx: Store + element: Name + id: str = day + ctx: Store + ctx: Store + value: Call + func: Name + id: str = divmod + ctx: Load + args: list + element: BinOp + left: Name + id: str = today + ctx: Load + op: Sub + right: Name + id: str = week1monday + ctx: Load + element: Constant + value: int = 7 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: If + test: Compare + left: Name + id: str = week + ctx: Load + ops: list + element: Lt + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + body: list + element: AugAssign + target: Name + id: str = year + ctx: Store + op: Sub + value: Constant + value: int = 1 + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = week1monday + ctx: Store + value: Call + func: Name + id: str = _isoweek1monday + ctx: Load + args: list + element: Name + id: str = year + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = week + ctx: Store + element: Name + id: str = day + ctx: Store + ctx: Store + value: Call + func: Name + id: str = divmod + ctx: Load + args: list + element: BinOp + left: Name + id: str = today + ctx: Load + op: Sub + right: Name + id: str = week1monday + ctx: Load + element: Constant + value: int = 7 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + orelse: list + element: If + test: Compare + left: Name + id: str = week + ctx: Load + ops: list + element: GtE + comparators: list + element: Constant + value: int = 52 + kind: NoneType = None + body: list + element: If + test: Compare + left: Name + id: str = today + ctx: Load + ops: list + element: GtE + comparators: list + element: Call + func: Name + id: str = _isoweek1monday + ctx: Load + args: list + element: BinOp + left: Name + id: str = year + ctx: Load + op: Add + right: Constant + value: int = 1 + kind: NoneType = None + keywords: list + body: list + element: AugAssign + target: Name + id: str = year + ctx: Store + op: Add + value: Constant + value: int = 1 + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = week + ctx: Store + value: Constant + value: int = 0 + kind: NoneType = None + type_comment: NoneType = None + orelse: list + orelse: list + element: Return + value: Tuple + elts: list + element: Name + id: str = year + ctx: Load + element: BinOp + left: Name + id: str = week + ctx: Load + op: Add + right: Constant + value: int = 1 + kind: NoneType = None + element: BinOp + left: Name + id: str = day + ctx: Load + op: Add + right: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = resolution + ctx: Store + value: Call + func: Name + id: str = timedelta + ctx: Load + args: list + keywords: list + element: keyword + arg: str = days + value: Constant + value: int = 1 + kind: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: Assign + targets: list + element: Name + id: str = _date_class + ctx: Store + value: Name + id: str = date + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = _d_min + ctx: Store + value: Call + func: Name + id: str = date + ctx: Load + args: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 1 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = _d_max + ctx: Store + value: Call + func: Name + id: str = date + ctx: Load + args: list + element: Constant + value: int = 9999 + kind: NoneType = None + element: Constant + value: int = 12 + kind: NoneType = None + element: Constant + value: int = 31 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = js + kind: NoneType = None + element: Constant + value: str = {} + kind: NoneType = None + element: Constant + value: str = Object.defineProperty (date, 'min', {get: function () {return _d_min;}}) + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = js + kind: NoneType = None + element: Constant + value: str = {} + kind: NoneType = None + element: Constant + value: str = Object.defineProperty (date, 'max', {get: function () {return _d_max;}}) + kind: NoneType = None + keywords: list + element: ClassDef + name: str = tzinfo + bases: list + keywords: list + body: list + element: Expr + value: Constant + value: str = Abstract base class for time zone info classes. + + Subclasses must override the name(), utcoffset() and dst() methods. + + kind: NoneType = None + element: FunctionDef + name: str = tzname + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = dt + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = datetime -> string name of time zone. + kind: NoneType = None + element: Raise + exc: Call + func: Name + id: str = NotImplementedError + ctx: Load + args: list + element: Constant + value: str = tzinfo subclass must override tzname() + kind: NoneType = None + keywords: list + cause: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = utcoffset + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = dt + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = datetime -> minutes east of UTC (negative for west of UTC) + kind: NoneType = None + element: Raise + exc: Call + func: Name + id: str = NotImplementedError + ctx: Load + args: list + element: Constant + value: str = tzinfo subclass must override utcoffset() + kind: NoneType = None + keywords: list + cause: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = dst + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = dt + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = datetime -> DST offset in minutes east of UTC. + + Return 0 if DST not in effect. utcoffset() must include the DST + offset. + + kind: NoneType = None + element: Raise + exc: Call + func: Name + id: str = NotImplementedError + ctx: Load + args: list + element: Constant + value: str = tzinfo subclass must override dst() + kind: NoneType = None + keywords: list + cause: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = fromutc + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = dt + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = datetime in UTC -> datetime in local time. + kind: NoneType = None + element: If + test: UnaryOp + op: Not + operand: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = dt + ctx: Load + element: Name + id: str = datetime + ctx: Load + keywords: list + body: list + element: Raise + exc: Call + func: Name + id: str = TypeError + ctx: Load + args: list + element: Constant + value: str = fromutc() requires a datetime argument + kind: NoneType = None + keywords: list + cause: NoneType = None + orelse: list + element: If + test: Compare + left: Attribute + value: Name + id: str = dt + ctx: Load + attr: str = tzinfo + ctx: Load + ops: list + element: IsNot + comparators: list + element: Name + id: str = self + ctx: Load + body: list + element: Raise + exc: Call + func: Name + id: str = ValueError + ctx: Load + args: list + element: Constant + value: str = dt.tzinfo is not self + kind: NoneType = None + keywords: list + cause: NoneType = None + orelse: list + element: Assign + targets: list + element: Name + id: str = dtoff + ctx: Store + value: Call + func: Attribute + value: Name + id: str = dt + ctx: Load + attr: str = utcoffset + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: If + test: Compare + left: Name + id: str = dtoff + ctx: Load + ops: list + element: Is + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Raise + exc: Call + func: Name + id: str = ValueError + ctx: Load + args: list + element: Constant + value: str = fromutc() requires a non-None utcoffset() result + kind: NoneType = None + keywords: list + cause: NoneType = None + orelse: list + element: Assign + targets: list + element: Name + id: str = dtdst + ctx: Store + value: Call + func: Attribute + value: Name + id: str = dt + ctx: Load + attr: str = dst + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: If + test: Compare + left: Name + id: str = dtdst + ctx: Load + ops: list + element: Is + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Raise + exc: Call + func: Name + id: str = ValueError + ctx: Load + args: list + element: Constant + value: str = fromutc() requires a non-None dst() result + kind: NoneType = None + keywords: list + cause: NoneType = None + orelse: list + element: Assign + targets: list + element: Name + id: str = delta + ctx: Store + value: BinOp + left: Name + id: str = dtoff + ctx: Load + op: Sub + right: Name + id: str = dtdst + ctx: Load + type_comment: NoneType = None + element: If + test: Name + id: str = delta + ctx: Load + body: list + element: AugAssign + target: Name + id: str = dt + ctx: Store + op: Add + value: Name + id: str = delta + ctx: Load + element: Assign + targets: list + element: Name + id: str = dtdst + ctx: Store + value: Call + func: Attribute + value: Name + id: str = dt + ctx: Load + attr: str = dst + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: If + test: Compare + left: Name + id: str = dtdst + ctx: Load + ops: list + element: Is + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Raise + exc: Call + func: Name + id: str = ValueError + ctx: Load + args: list + element: Constant + value: str = fromutc(): dt.dst gave inconsistent results; cannot convert + kind: NoneType = None + keywords: list + cause: NoneType = None + orelse: list + orelse: list + element: Return + value: BinOp + left: Name + id: str = dt + ctx: Load + op: Add + right: Name + id: str = dtdst + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: Assign + targets: list + element: Name + id: str = _tzinfo_class + ctx: Store + value: Name + id: str = tzinfo + ctx: Load + type_comment: NoneType = None + element: ClassDef + name: str = time + bases: list + keywords: list + body: list + element: Expr + value: Constant + value: str = Time with time zone. + + Constructors: + + __new__() + + Operators: + + __repr__, __str__ + __eq__, __le__, __lt__, __ge__, __gt__, + + Methods: + + strftime() + isoformat() + utcoffset() + tzname() + dst() + + Properties (readonly): + hour, minute, second, microsecond, tzinfo + + kind: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = kwargs + kind: NoneType = None + keywords: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = hour + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = minute + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = second + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = microsecond + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = tzinfo + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + element: Constant + value: int = 0 + kind: NoneType = None + element: Constant + value: int = 0 + kind: NoneType = None + element: Constant + value: int = 0 + kind: NoneType = None + element: Constant + value: int = 0 + kind: NoneType = None + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Expr + value: Constant + value: str = Constructor. + + Arguments: + + hour, minute (required) + second, microsecond (default to zero) + tzinfo (default to None) + + kind: NoneType = None + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = hour + ctx: Store + element: Name + id: str = minute + ctx: Store + element: Name + id: str = second + ctx: Store + element: Name + id: str = microsecond + ctx: Store + ctx: Store + value: Call + func: Name + id: str = _check_time_fields + ctx: Load + args: list + element: Name + id: str = hour + ctx: Load + element: Name + id: str = minute + ctx: Load + element: Name + id: str = second + ctx: Load + element: Name + id: str = microsecond + ctx: Load + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = _check_tzinfo_arg + ctx: Load + args: list + element: Name + id: str = tzinfo + ctx: Load + keywords: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _hour + ctx: Store + value: Name + id: str = hour + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _minute + ctx: Store + value: Name + id: str = minute + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _second + ctx: Store + value: Name + id: str = second + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _microsecond + ctx: Store + value: Name + id: str = microsecond + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _tzinfo + ctx: Store + value: Name + id: str = tzinfo + ctx: Load + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = nokwargs + kind: NoneType = None + keywords: list + element: FunctionDef + name: str = hour + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = hour (0-23) + kind: NoneType = None + element: Return + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _hour + ctx: Load + decorator_list: list + element: Name + id: str = property + ctx: Load + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = minute + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = minute (0-59) + kind: NoneType = None + element: Return + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _minute + ctx: Load + decorator_list: list + element: Name + id: str = property + ctx: Load + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = second + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = second (0-59) + kind: NoneType = None + element: Return + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _second + ctx: Load + decorator_list: list + element: Name + id: str = property + ctx: Load + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = microsecond + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = microsecond (0-999999) + kind: NoneType = None + element: Return + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _microsecond + ctx: Load + decorator_list: list + element: Name + id: str = property + ctx: Load + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = tzinfo + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = timezone info object + kind: NoneType = None + element: Return + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _tzinfo + ctx: Load + decorator_list: list + element: Name + id: str = property + ctx: Load + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __eq__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + element: Name + id: str = time + ctx: Load + keywords: list + body: list + element: Return + value: Compare + left: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _cmp + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + keywords: list + element: keyword + arg: str = allow_mixed + value: Constant + value: bool = True + kind: NoneType = None + ops: list + element: Eq + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + orelse: list + element: Return + value: Constant + value: bool = False + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __le__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + element: Name + id: str = time + ctx: Load + keywords: list + body: list + element: Return + value: Compare + left: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _cmp + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + keywords: list + ops: list + element: LtE + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + orelse: list + element: Expr + value: Call + func: Name + id: str = _cmperror + ctx: Load + args: list + element: Name + id: str = self + ctx: Load + element: Name + id: str = other + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __lt__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + element: Name + id: str = time + ctx: Load + keywords: list + body: list + element: Return + value: Compare + left: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _cmp + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + keywords: list + ops: list + element: Lt + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + orelse: list + element: Expr + value: Call + func: Name + id: str = _cmperror + ctx: Load + args: list + element: Name + id: str = self + ctx: Load + element: Name + id: str = other + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __ge__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + element: Name + id: str = time + ctx: Load + keywords: list + body: list + element: Return + value: Compare + left: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _cmp + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + keywords: list + ops: list + element: GtE + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + orelse: list + element: Expr + value: Call + func: Name + id: str = _cmperror + ctx: Load + args: list + element: Name + id: str = self + ctx: Load + element: Name + id: str = other + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __gt__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + element: Name + id: str = time + ctx: Load + keywords: list + body: list + element: Return + value: Compare + left: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _cmp + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + keywords: list + ops: list + element: Gt + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + orelse: list + element: Expr + value: Call + func: Name + id: str = _cmperror + ctx: Load + args: list + element: Name + id: str = self + ctx: Load + element: Name + id: str = other + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = kwargs + kind: NoneType = None + keywords: list + element: FunctionDef + name: str = _cmp + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = allow_mixed + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + element: Constant + value: bool = False + kind: NoneType = None + body: list + element: Assert + test: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + element: Name + id: str = time + ctx: Load + keywords: list + msg: NoneType = None + element: Assign + targets: list + element: Name + id: str = mytz + ctx: Store + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _tzinfo + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = ottz + ctx: Store + value: Attribute + value: Name + id: str = other + ctx: Load + attr: str = _tzinfo + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = myoff + ctx: Store + element: Name + id: str = otoff + ctx: Store + value: Constant + value: NoneType = None + kind: NoneType = None + type_comment: NoneType = None + element: If + test: Compare + left: Name + id: str = mytz + ctx: Load + ops: list + element: Is + comparators: list + element: Name + id: str = ottz + ctx: Load + body: list + element: Assign + targets: list + element: Name + id: str = base_compare + ctx: Store + value: Constant + value: bool = True + kind: NoneType = None + type_comment: NoneType = None + orelse: list + element: Assign + targets: list + element: Name + id: str = myoff + ctx: Store + value: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = utcoffset + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = otoff + ctx: Store + value: Call + func: Attribute + value: Name + id: str = other + ctx: Load + attr: str = utcoffset + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = base_compare + ctx: Store + value: Compare + left: Name + id: str = myoff + ctx: Load + ops: list + element: Eq + comparators: list + element: Name + id: str = otoff + ctx: Load + type_comment: NoneType = None + element: If + test: Name + id: str = base_compare + ctx: Load + body: list + element: Return + value: Call + func: Name + id: str = _cmp + ctx: Load + args: list + element: Tuple + elts: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _hour + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _minute + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _second + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _microsecond + ctx: Load + ctx: Load + element: Tuple + elts: list + element: Attribute + value: Name + id: str = other + ctx: Load + attr: str = _hour + ctx: Load + element: Attribute + value: Name + id: str = other + ctx: Load + attr: str = _minute + ctx: Load + element: Attribute + value: Name + id: str = other + ctx: Load + attr: str = _second + ctx: Load + element: Attribute + value: Name + id: str = other + ctx: Load + attr: str = _microsecond + ctx: Load + ctx: Load + keywords: list + orelse: list + element: If + test: BoolOp + op: Or + values: list + element: Compare + left: Name + id: str = myoff + ctx: Load + ops: list + element: Is + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + element: Compare + left: Name + id: str = otoff + ctx: Load + ops: list + element: Is + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: If + test: Name + id: str = allow_mixed + ctx: Load + body: list + element: Return + value: Constant + value: int = 2 + kind: NoneType = None + orelse: list + element: Raise + exc: Call + func: Name + id: str = TypeError + ctx: Load + args: list + element: Constant + value: str = cannot compare naive and aware times + kind: NoneType = None + keywords: list + cause: NoneType = None + orelse: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = opov + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = myhhmm + ctx: Store + value: BinOp + left: BinOp + left: BinOp + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _hour + ctx: Load + op: Mult + right: Constant + value: int = 60 + kind: NoneType = None + op: Add + right: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _minute + ctx: Load + op: Sub + right: BinOp + left: Name + id: str = myoff + ctx: Load + op: FloorDiv + right: Call + func: Name + id: str = timedelta + ctx: Load + args: list + keywords: list + element: keyword + arg: str = minutes + value: Constant + value: int = 1 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = othhmm + ctx: Store + value: BinOp + left: BinOp + left: BinOp + left: Attribute + value: Name + id: str = other + ctx: Load + attr: str = _hour + ctx: Load + op: Mult + right: Constant + value: int = 60 + kind: NoneType = None + op: Add + right: Attribute + value: Name + id: str = other + ctx: Load + attr: str = _minute + ctx: Load + op: Sub + right: BinOp + left: Name + id: str = otoff + ctx: Load + op: FloorDiv + right: Call + func: Name + id: str = timedelta + ctx: Load + args: list + keywords: list + element: keyword + arg: str = minutes + value: Constant + value: int = 1 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = noopov + kind: NoneType = None + keywords: list + element: Return + value: Call + func: Name + id: str = _cmp + ctx: Load + args: list + element: Tuple + elts: list + element: Name + id: str = myhhmm + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _second + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _microsecond + ctx: Load + ctx: Load + element: Tuple + elts: list + element: Name + id: str = othhmm + ctx: Load + element: Attribute + value: Name + id: str = other + ctx: Load + attr: str = _second + ctx: Load + element: Attribute + value: Name + id: str = other + ctx: Load + attr: str = _microsecond + ctx: Load + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = nokwargs + kind: NoneType = None + keywords: list + element: FunctionDef + name: str = _tzstr + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = sep + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + element: Constant + value: str = : + kind: NoneType = None + body: list + element: Expr + value: Constant + value: str = Return formatted timezone offset (+xx:xx) or None. + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = off + ctx: Store + value: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = utcoffset + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: If + test: Compare + left: Name + id: str = off + ctx: Load + ops: list + element: IsNot + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: If + test: Compare + left: Attribute + value: Name + id: str = off + ctx: Load + attr: str = days + ctx: Load + ops: list + element: Lt + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = sign + ctx: Store + value: Constant + value: str = - + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = off + ctx: Store + value: UnaryOp + op: USub + operand: Name + id: str = off + ctx: Load + type_comment: NoneType = None + orelse: list + element: Assign + targets: list + element: Name + id: str = sign + ctx: Store + value: Constant + value: str = + + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = hh + ctx: Store + element: Name + id: str = mm + ctx: Store + ctx: Store + value: Call + func: Name + id: str = divmod + ctx: Load + args: list + element: Name + id: str = off + ctx: Load + element: Call + func: Name + id: str = timedelta + ctx: Load + args: list + keywords: list + element: keyword + arg: str = hours + value: Constant + value: int = 1 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Assert + test: UnaryOp + op: Not + operand: BinOp + left: Name + id: str = mm + ctx: Load + op: Mod + right: Call + func: Name + id: str = timedelta + ctx: Load + args: list + keywords: list + element: keyword + arg: str = minutes + value: Constant + value: int = 1 + kind: NoneType = None + msg: Constant + value: str = whole minute + kind: NoneType = None + element: AugAssign + target: Name + id: str = mm + ctx: Store + op: FloorDiv + value: Call + func: Name + id: str = timedelta + ctx: Load + args: list + keywords: list + element: keyword + arg: str = minutes + value: Constant + value: int = 1 + kind: NoneType = None + element: Assert + test: Compare + left: Constant + value: int = 0 + kind: NoneType = None + ops: list + element: LtE + element: Lt + comparators: list + element: Name + id: str = hh + ctx: Load + element: Constant + value: int = 24 + kind: NoneType = None + msg: NoneType = None + element: Assign + targets: list + element: Name + id: str = off + ctx: Store + value: Call + func: Attribute + value: Constant + value: str = {}{}{}{} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Name + id: str = sign + ctx: Load + element: Call + func: Name + id: str = zfill + ctx: Load + args: list + element: Name + id: str = hh + ctx: Load + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + element: Name + id: str = sep + ctx: Load + element: Call + func: Name + id: str = zfill + ctx: Load + args: list + element: Name + id: str = mm + ctx: Load + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + keywords: list + type_comment: NoneType = None + orelse: list + element: Return + value: Name + id: str = off + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __repr__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = Convert to formal string, for repr(). + kind: NoneType = None + element: If + test: Compare + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _microsecond + ctx: Load + ops: list + element: NotEq + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = s + ctx: Store + value: Call + func: Attribute + value: Constant + value: str = , {}, {} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _second + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _microsecond + ctx: Load + keywords: list + type_comment: NoneType = None + orelse: list + element: If + test: Compare + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _second + ctx: Load + ops: list + element: NotEq + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = s + ctx: Store + value: Call + func: Attribute + value: Constant + value: str = , {} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _second + ctx: Load + keywords: list + type_comment: NoneType = None + orelse: list + element: Assign + targets: list + element: Name + id: str = s + ctx: Store + value: Constant + value: str = + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = s + ctx: Store + value: Call + func: Attribute + value: Constant + value: str = datetime.time({}, {}{}) + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _hour + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _minute + ctx: Load + element: Name + id: str = s + ctx: Load + keywords: list + type_comment: NoneType = None + element: If + test: Compare + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _tzinfo + ctx: Load + ops: list + element: IsNot + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Assert + test: Compare + left: Subscript + value: Name + id: str = s + ctx: Load + slice: Slice + lower: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + upper: NoneType = None + step: NoneType = None + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = ) + kind: NoneType = None + msg: NoneType = None + element: Assign + targets: list + element: Name + id: str = s + ctx: Store + value: BinOp + left: BinOp + left: Subscript + value: Name + id: str = s + ctx: Load + slice: Slice + lower: NoneType = None + upper: BinOp + left: Call + func: Name + id: str = len + ctx: Load + args: list + element: Name + id: str = s + ctx: Load + keywords: list + op: Sub + right: Constant + value: int = 1 + kind: NoneType = None + step: NoneType = None + ctx: Load + op: Add + right: Call + func: Attribute + value: Constant + value: str = , tzinfo={} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Call + func: Attribute + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _tzinfo + ctx: Load + attr: str = __repr__ + ctx: Load + args: list + keywords: list + keywords: list + op: Add + right: Constant + value: str = ) + kind: NoneType = None + type_comment: NoneType = None + orelse: list + element: Return + value: Name + id: str = s + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = isoformat + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = Return the time formatted according to ISO. + + This is 'HH:MM:SS.mmmmmm+zz:zz', or 'HH:MM:SS+zz:zz' if + self.microsecond == 0. + + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = s + ctx: Store + value: Call + func: Name + id: str = _format_time + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _hour + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _minute + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _second + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _microsecond + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = tz + ctx: Store + value: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _tzstr + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: If + test: Name + id: str = tz + ctx: Load + body: list + element: AugAssign + target: Name + id: str = s + ctx: Store + op: Add + value: Name + id: str = tz + ctx: Load + orelse: list + element: Return + value: Name + id: str = s + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __str__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = isoformat + ctx: Load + args: list + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = strftime + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = fmt + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = Format using strftime(). The date part of the timestamp passed + to underlying strftime should not be used. + + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = timetuple + ctx: Store + value: Tuple + elts: list + element: Constant + value: int = 1900 + kind: NoneType = None + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 1 + kind: NoneType = None + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _hour + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _minute + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _second + ctx: Load + element: Constant + value: int = 0 + kind: NoneType = None + element: Constant + value: int = 1 + kind: NoneType = None + element: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Return + value: Call + func: Name + id: str = _wrap_strftime + ctx: Load + args: list + element: Name + id: str = self + ctx: Load + element: Name + id: str = fmt + ctx: Load + element: Name + id: str = timetuple + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __format__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = fmt + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: UnaryOp + op: Not + operand: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = fmt + ctx: Load + element: Name + id: str = str + ctx: Load + keywords: list + body: list + element: Raise + exc: Call + func: Name + id: str = TypeError + ctx: Load + args: list + element: BinOp + left: Constant + value: str = must be str, not %s + kind: NoneType = None + op: Mod + right: Attribute + value: Call + func: Name + id: str = type + ctx: Load + args: list + element: Name + id: str = fmt + ctx: Load + keywords: list + attr: str = __name__ + ctx: Load + keywords: list + cause: NoneType = None + orelse: list + element: If + test: Compare + left: Call + func: Name + id: str = len + ctx: Load + args: list + element: Name + id: str = fmt + ctx: Load + keywords: list + ops: list + element: NotEq + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + body: list + element: Return + value: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = strftime + ctx: Load + args: list + element: Name + id: str = fmt + ctx: Load + keywords: list + orelse: list + element: Return + value: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = self + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = utcoffset + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = Return the timezone offset in minutes east of UTC (negative west of + UTC). + kind: NoneType = None + element: If + test: Compare + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _tzinfo + ctx: Load + ops: list + element: Is + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Return + value: Constant + value: NoneType = None + kind: NoneType = None + orelse: list + element: Assign + targets: list + element: Name + id: str = offset + ctx: Store + value: Call + func: Attribute + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _tzinfo + ctx: Load + attr: str = utcoffset + ctx: Load + args: list + element: Constant + value: NoneType = None + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = _check_utc_offset + ctx: Load + args: list + element: Constant + value: str = utcoffset + kind: NoneType = None + element: Name + id: str = offset + ctx: Load + keywords: list + element: Return + value: Name + id: str = offset + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = tzname + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = Return the timezone name. + + Note that the name is 100% informational -- there's no requirement that + it mean anything in particular. For example, "GMT", "UTC", "-500", + "-5:00", "EDT", "US/Eastern", "America/New York" are all valid replies. + + kind: NoneType = None + element: If + test: Compare + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _tzinfo + ctx: Load + ops: list + element: Is + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Return + value: Constant + value: NoneType = None + kind: NoneType = None + orelse: list + element: Assign + targets: list + element: Name + id: str = name + ctx: Store + value: Call + func: Attribute + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _tzinfo + ctx: Load + attr: str = tzname + ctx: Load + args: list + element: Constant + value: NoneType = None + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = _check_tzname + ctx: Load + args: list + element: Name + id: str = name + ctx: Load + keywords: list + element: Return + value: Name + id: str = name + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = dst + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = Return 0 if DST is not in effect, or the DST offset (in minutes + eastward) if DST is in effect. + + This is purely informational; the DST offset has already been added to + the UTC offset returned by utcoffset() if applicable, so there's no + need to consult dst() unless you're interested in displaying the DST + info. + + kind: NoneType = None + element: If + test: Compare + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _tzinfo + ctx: Load + ops: list + element: Is + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Return + value: Constant + value: NoneType = None + kind: NoneType = None + orelse: list + element: Assign + targets: list + element: Name + id: str = offset + ctx: Store + value: Call + func: Attribute + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _tzinfo + ctx: Load + attr: str = dst + ctx: Load + args: list + element: Constant + value: NoneType = None + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = _check_utc_offset + ctx: Load + args: list + element: Constant + value: str = dst + kind: NoneType = None + element: Name + id: str = offset + ctx: Load + keywords: list + element: Return + value: Name + id: str = offset + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = kwargs + kind: NoneType = None + keywords: list + element: FunctionDef + name: str = replace + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = hour + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = minute + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = second + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = microsecond + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = tzinfo + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + element: Constant + value: NoneType = None + kind: NoneType = None + element: Constant + value: NoneType = None + kind: NoneType = None + element: Constant + value: NoneType = None + kind: NoneType = None + element: Constant + value: NoneType = None + kind: NoneType = None + element: Constant + value: bool = True + kind: NoneType = None + body: list + element: Expr + value: Constant + value: str = Return a new time with new values for the specified fields. + kind: NoneType = None + element: If + test: Compare + left: Name + id: str = hour + ctx: Load + ops: list + element: Is + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = hour + ctx: Store + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = hour + ctx: Load + type_comment: NoneType = None + orelse: list + element: If + test: Compare + left: Name + id: str = minute + ctx: Load + ops: list + element: Is + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = minute + ctx: Store + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = minute + ctx: Load + type_comment: NoneType = None + orelse: list + element: If + test: Compare + left: Name + id: str = second + ctx: Load + ops: list + element: Is + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = second + ctx: Store + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = second + ctx: Load + type_comment: NoneType = None + orelse: list + element: If + test: Compare + left: Name + id: str = microsecond + ctx: Load + ops: list + element: Is + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = microsecond + ctx: Store + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = microsecond + ctx: Load + type_comment: NoneType = None + orelse: list + element: If + test: Compare + left: Name + id: str = tzinfo + ctx: Load + ops: list + element: Is + comparators: list + element: Constant + value: bool = True + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = tzinfo + ctx: Store + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = tzinfo + ctx: Load + type_comment: NoneType = None + orelse: list + element: Return + value: Call + func: Name + id: str = time + ctx: Load + args: list + element: Name + id: str = hour + ctx: Load + element: Name + id: str = minute + ctx: Load + element: Name + id: str = second + ctx: Load + element: Name + id: str = microsecond + ctx: Load + element: Name + id: str = tzinfo + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = nokwargs + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = resolution + ctx: Store + value: Call + func: Name + id: str = timedelta + ctx: Load + args: list + keywords: list + element: keyword + arg: str = microseconds + value: Constant + value: int = 1 + kind: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: Assign + targets: list + element: Name + id: str = _time_class + ctx: Store + value: Name + id: str = time + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = _tm_min + ctx: Store + value: Call + func: Name + id: str = time + ctx: Load + args: list + element: Constant + value: int = 0 + kind: NoneType = None + element: Constant + value: int = 0 + kind: NoneType = None + element: Constant + value: int = 0 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = _tm_max + ctx: Store + value: Call + func: Name + id: str = time + ctx: Load + args: list + element: Constant + value: int = 23 + kind: NoneType = None + element: Constant + value: int = 59 + kind: NoneType = None + element: Constant + value: int = 59 + kind: NoneType = None + element: Constant + value: int = 999999 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = js + kind: NoneType = None + element: Constant + value: str = {} + kind: NoneType = None + element: Constant + value: str = Object.defineProperty (time, 'min', {get: function () {return _tm_min;}}) + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = js + kind: NoneType = None + element: Constant + value: str = {} + kind: NoneType = None + element: Constant + value: str = Object.defineProperty (time, 'max', {get: function () {return _tm_max;}}) + kind: NoneType = None + keywords: list + element: ClassDef + name: str = datetime + bases: list + element: Name + id: str = date + ctx: Load + keywords: list + body: list + element: Expr + value: Constant + value: str = datetime(year, month, day[, hour[, minute[, second[, microsecond[,tzinfo]]]]]) + + The year, month and day arguments are required. tzinfo may be None, or an + instance of a tzinfo subclass. The remaining arguments may be ints. + + kind: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = kwargs + kind: NoneType = None + keywords: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = year + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = month + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = day + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = hour + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = minute + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = second + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = microsecond + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = tzinfo + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + element: Constant + value: NoneType = None + kind: NoneType = None + element: Constant + value: NoneType = None + kind: NoneType = None + element: Constant + value: int = 0 + kind: NoneType = None + element: Constant + value: int = 0 + kind: NoneType = None + element: Constant + value: int = 0 + kind: NoneType = None + element: Constant + value: int = 0 + kind: NoneType = None + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = year + ctx: Store + element: Name + id: str = month + ctx: Store + element: Name + id: str = day + ctx: Store + ctx: Store + value: Call + func: Name + id: str = _check_date_fields + ctx: Load + args: list + element: Name + id: str = year + ctx: Load + element: Name + id: str = month + ctx: Load + element: Name + id: str = day + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = hour + ctx: Store + element: Name + id: str = minute + ctx: Store + element: Name + id: str = second + ctx: Store + element: Name + id: str = microsecond + ctx: Store + ctx: Store + value: Call + func: Name + id: str = _check_time_fields + ctx: Load + args: list + element: Name + id: str = hour + ctx: Load + element: Name + id: str = minute + ctx: Load + element: Name + id: str = second + ctx: Load + element: Name + id: str = microsecond + ctx: Load + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = _check_tzinfo_arg + ctx: Load + args: list + element: Name + id: str = tzinfo + ctx: Load + keywords: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _year + ctx: Store + value: Name + id: str = year + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _month + ctx: Store + value: Name + id: str = month + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _day + ctx: Store + value: Name + id: str = day + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _hour + ctx: Store + value: Name + id: str = hour + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _minute + ctx: Store + value: Name + id: str = minute + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _second + ctx: Store + value: Name + id: str = second + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _microsecond + ctx: Store + value: Name + id: str = microsecond + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _tzinfo + ctx: Store + value: Name + id: str = tzinfo + ctx: Load + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = nokwargs + kind: NoneType = None + keywords: list + element: FunctionDef + name: str = hour + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = hour (0-23) + kind: NoneType = None + element: Return + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _hour + ctx: Load + decorator_list: list + element: Name + id: str = property + ctx: Load + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = minute + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = minute (0-59) + kind: NoneType = None + element: Return + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _minute + ctx: Load + decorator_list: list + element: Name + id: str = property + ctx: Load + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = second + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = second (0-59) + kind: NoneType = None + element: Return + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _second + ctx: Load + decorator_list: list + element: Name + id: str = property + ctx: Load + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = microsecond + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = microsecond (0-999999) + kind: NoneType = None + element: Return + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _microsecond + ctx: Load + decorator_list: list + element: Name + id: str = property + ctx: Load + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = tzinfo + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = timezone info object + kind: NoneType = None + element: Return + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _tzinfo + ctx: Load + decorator_list: list + element: Name + id: str = property + ctx: Load + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = _fromtimestamp + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = cls + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = t + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = utc + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = tz + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = Construct a datetime from a POSIX timestamp (like time.time()). + + A timezone info object may be passed in as well. + + kind: NoneType = None + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = frac + ctx: Store + element: Name + id: str = t + ctx: Store + ctx: Store + value: Call + func: Attribute + value: Name + id: str = _math + ctx: Load + attr: str = modf + ctx: Load + args: list + element: Name + id: str = t + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = us + ctx: Store + value: Call + func: Name + id: str = round + ctx: Load + args: list + element: BinOp + left: Name + id: str = frac + ctx: Load + op: Mult + right: Constant + value: float = 1000000.0 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: If + test: Compare + left: Name + id: str = us + ctx: Load + ops: list + element: GtE + comparators: list + element: Constant + value: int = 1000000 + kind: NoneType = None + body: list + element: AugAssign + target: Name + id: str = t + ctx: Store + op: Add + value: Constant + value: int = 1 + kind: NoneType = None + element: AugAssign + target: Name + id: str = us + ctx: Store + op: Sub + value: Constant + value: int = 1000000 + kind: NoneType = None + orelse: list + element: If + test: Compare + left: Name + id: str = us + ctx: Load + ops: list + element: Lt + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + body: list + element: AugAssign + target: Name + id: str = t + ctx: Store + op: Sub + value: Constant + value: int = 1 + kind: NoneType = None + element: AugAssign + target: Name + id: str = us + ctx: Store + op: Add + value: Constant + value: int = 1000000 + kind: NoneType = None + orelse: list + element: Assign + targets: list + element: Name + id: str = converter + ctx: Store + value: IfExp + test: Name + id: str = utc + ctx: Load + body: Attribute + value: Name + id: str = _time + ctx: Load + attr: str = gmtime + ctx: Load + orelse: Attribute + value: Name + id: str = _time + ctx: Load + attr: str = localtime + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = y + ctx: Store + element: Name + id: str = m + ctx: Store + element: Name + id: str = d + ctx: Store + element: Name + id: str = hh + ctx: Store + element: Name + id: str = mm + ctx: Store + element: Name + id: str = ss + ctx: Store + element: Name + id: str = weekday + ctx: Store + element: Name + id: str = jday + ctx: Store + element: Name + id: str = dst + ctx: Store + ctx: Store + value: Call + func: Name + id: str = converter + ctx: Load + args: list + element: Name + id: str = t + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = ss + ctx: Store + value: Call + func: Name + id: str = min + ctx: Load + args: list + element: Name + id: str = ss + ctx: Load + element: Constant + value: int = 59 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Return + value: Call + func: Name + id: str = cls + ctx: Load + args: list + element: Name + id: str = y + ctx: Load + element: Name + id: str = m + ctx: Load + element: Name + id: str = d + ctx: Load + element: Name + id: str = hh + ctx: Load + element: Name + id: str = mm + ctx: Load + element: Name + id: str = ss + ctx: Load + element: Name + id: str = us + ctx: Load + element: Name + id: str = tz + ctx: Load + keywords: list + decorator_list: list + element: Name + id: str = classmethod + ctx: Load + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = fromtimestamp + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = cls + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = t + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = tz + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Expr + value: Constant + value: str = Construct a datetime from a POSIX timestamp (like time.time()). + + A timezone info object may be passed in as well. + + kind: NoneType = None + element: Expr + value: Call + func: Name + id: str = _check_tzinfo_arg + ctx: Load + args: list + element: Name + id: str = tz + ctx: Load + keywords: list + element: Assign + targets: list + element: Name + id: str = result + ctx: Store + value: Call + func: Attribute + value: Name + id: str = cls + ctx: Load + attr: str = _fromtimestamp + ctx: Load + args: list + element: Name + id: str = t + ctx: Load + element: Compare + left: Name + id: str = tz + ctx: Load + ops: list + element: IsNot + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + element: Name + id: str = tz + ctx: Load + keywords: list + type_comment: NoneType = None + element: If + test: Compare + left: Name + id: str = tz + ctx: Load + ops: list + element: IsNot + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = result + ctx: Store + value: Call + func: Attribute + value: Name + id: str = tz + ctx: Load + attr: str = fromutc + ctx: Load + args: list + element: Name + id: str = result + ctx: Load + keywords: list + type_comment: NoneType = None + orelse: list + element: Return + value: Name + id: str = result + ctx: Load + decorator_list: list + element: Name + id: str = classmethod + ctx: Load + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = utcfromtimestamp + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = cls + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = t + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = Construct a naive UTC datetime from a POSIX timestamp. + kind: NoneType = None + element: Return + value: Call + func: Attribute + value: Name + id: str = cls + ctx: Load + attr: str = _fromtimestamp + ctx: Load + args: list + element: Name + id: str = t + ctx: Load + element: Constant + value: bool = True + kind: NoneType = None + element: Constant + value: NoneType = None + kind: NoneType = None + keywords: list + decorator_list: list + element: Name + id: str = classmethod + ctx: Load + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = now + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = cls + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = tz + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Expr + value: Constant + value: str = Construct a datetime from time.time() and optional time zone info. + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = t + ctx: Store + value: Call + func: Attribute + value: Name + id: str = _time + ctx: Load + attr: str = time + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Return + value: Call + func: Attribute + value: Name + id: str = cls + ctx: Load + attr: str = fromtimestamp + ctx: Load + args: list + element: Name + id: str = t + ctx: Load + element: Name + id: str = tz + ctx: Load + keywords: list + decorator_list: list + element: Name + id: str = classmethod + ctx: Load + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = utcnow + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = cls + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = Construct a UTC datetime from time.time(). + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = t + ctx: Store + value: Call + func: Attribute + value: Name + id: str = _time + ctx: Load + attr: str = time + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Return + value: Call + func: Attribute + value: Name + id: str = cls + ctx: Load + attr: str = utcfromtimestamp + ctx: Load + args: list + element: Name + id: str = t + ctx: Load + keywords: list + decorator_list: list + element: Name + id: str = classmethod + ctx: Load + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = combine + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = cls + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = date + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = time + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = Construct a datetime from a given date and a given time. + kind: NoneType = None + element: If + test: UnaryOp + op: Not + operand: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = date + ctx: Load + element: Name + id: str = _date_class + ctx: Load + keywords: list + body: list + element: Raise + exc: Call + func: Name + id: str = TypeError + ctx: Load + args: list + element: Constant + value: str = date argument must be a date instance + kind: NoneType = None + keywords: list + cause: NoneType = None + orelse: list + element: If + test: UnaryOp + op: Not + operand: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = time + ctx: Load + element: Name + id: str = _time_class + ctx: Load + keywords: list + body: list + element: Raise + exc: Call + func: Name + id: str = TypeError + ctx: Load + args: list + element: Constant + value: str = time argument must be a time instance + kind: NoneType = None + keywords: list + cause: NoneType = None + orelse: list + element: Return + value: Call + func: Name + id: str = cls + ctx: Load + args: list + element: Attribute + value: Name + id: str = date + ctx: Load + attr: str = year + ctx: Load + element: Attribute + value: Name + id: str = date + ctx: Load + attr: str = month + ctx: Load + element: Attribute + value: Name + id: str = date + ctx: Load + attr: str = day + ctx: Load + element: Attribute + value: Name + id: str = time + ctx: Load + attr: str = hour + ctx: Load + element: Attribute + value: Name + id: str = time + ctx: Load + attr: str = minute + ctx: Load + element: Attribute + value: Name + id: str = time + ctx: Load + attr: str = second + ctx: Load + element: Attribute + value: Name + id: str = time + ctx: Load + attr: str = microsecond + ctx: Load + element: Attribute + value: Name + id: str = time + ctx: Load + attr: str = tzinfo + ctx: Load + keywords: list + decorator_list: list + element: Name + id: str = classmethod + ctx: Load + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = timetuple + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = Return local time tuple compatible with time.localtime(). + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = dst + ctx: Store + value: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = dst + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: If + test: Compare + left: Name + id: str = dst + ctx: Load + ops: list + element: Is + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = dst + ctx: Store + value: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + type_comment: NoneType = None + orelse: list + element: If + test: Name + id: str = dst + ctx: Load + body: list + element: Assign + targets: list + element: Name + id: str = dst + ctx: Store + value: Constant + value: int = 1 + kind: NoneType = None + type_comment: NoneType = None + orelse: list + element: Assign + targets: list + element: Name + id: str = dst + ctx: Store + value: Constant + value: int = 0 + kind: NoneType = None + type_comment: NoneType = None + element: Return + value: Call + func: Name + id: str = _build_struct_time + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = year + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = month + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = day + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = hour + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = minute + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = second + ctx: Load + element: Name + id: str = dst + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = timestamp + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = Return POSIX timestamp as float + kind: NoneType = None + element: If + test: Compare + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _tzinfo + ctx: Load + ops: list + element: Is + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Return + value: BinOp + left: Call + func: Attribute + value: Name + id: str = _time + ctx: Load + attr: str = mktime + ctx: Load + args: list + element: Tuple + elts: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = year + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = month + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = day + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = hour + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = minute + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = second + ctx: Load + element: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + element: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + element: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + keywords: list + op: Add + right: BinOp + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = microsecond + ctx: Load + op: Div + right: Constant + value: float = 1000000.0 + kind: NoneType = None + orelse: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = opov + kind: NoneType = None + keywords: list + element: Return + value: Call + func: Attribute + value: BinOp + left: Name + id: str = self + ctx: Load + op: Sub + right: Name + id: str = _EPOCH + ctx: Load + attr: str = total_seconds + ctx: Load + args: list + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = noopov + kind: NoneType = None + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = utctimetuple + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = Return UTC time tuple compatible with time.gmtime(). + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = offset + ctx: Store + value: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = utcoffset + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: If + test: Name + id: str = offset + ctx: Load + body: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = opov + kind: NoneType = None + keywords: list + element: AugAssign + target: Name + id: str = self + ctx: Store + op: Sub + value: Name + id: str = offset + ctx: Load + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = noopov + kind: NoneType = None + keywords: list + orelse: list + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = y + ctx: Store + element: Name + id: str = m + ctx: Store + element: Name + id: str = d + ctx: Store + ctx: Store + value: Tuple + elts: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = year + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = month + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = day + ctx: Load + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = hh + ctx: Store + element: Name + id: str = mm + ctx: Store + element: Name + id: str = ss + ctx: Store + ctx: Store + value: Tuple + elts: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = hour + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = minute + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = second + ctx: Load + ctx: Load + type_comment: NoneType = None + element: Return + value: Call + func: Name + id: str = _build_struct_time + ctx: Load + args: list + element: Name + id: str = y + ctx: Load + element: Name + id: str = m + ctx: Load + element: Name + id: str = d + ctx: Load + element: Name + id: str = hh + ctx: Load + element: Name + id: str = mm + ctx: Load + element: Name + id: str = ss + ctx: Load + element: Constant + value: int = 0 + kind: NoneType = None + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = date + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = Return the date part. + kind: NoneType = None + element: Return + value: Call + func: Name + id: str = date + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _year + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _month + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _day + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = time + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = Return the time part, with tzinfo None. + kind: NoneType = None + element: Return + value: Call + func: Name + id: str = time + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = hour + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = minute + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = second + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = microsecond + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = timetz + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = Return the time part, with same tzinfo. + kind: NoneType = None + element: Return + value: Call + func: Name + id: str = time + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = hour + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = minute + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = second + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = microsecond + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _tzinfo + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = kwargs + kind: NoneType = None + keywords: list + element: FunctionDef + name: str = replace + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = year + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = month + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = day + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = hour + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = minute + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = second + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = microsecond + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = tzinfo + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + element: Constant + value: NoneType = None + kind: NoneType = None + element: Constant + value: NoneType = None + kind: NoneType = None + element: Constant + value: NoneType = None + kind: NoneType = None + element: Constant + value: NoneType = None + kind: NoneType = None + element: Constant + value: NoneType = None + kind: NoneType = None + element: Constant + value: NoneType = None + kind: NoneType = None + element: Constant + value: NoneType = None + kind: NoneType = None + element: Constant + value: bool = True + kind: NoneType = None + body: list + element: Expr + value: Constant + value: str = Return a new datetime with new values for the specified fields. + kind: NoneType = None + element: If + test: Compare + left: Name + id: str = year + ctx: Load + ops: list + element: Is + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = year + ctx: Store + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = year + ctx: Load + type_comment: NoneType = None + orelse: list + element: If + test: Compare + left: Name + id: str = month + ctx: Load + ops: list + element: Is + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = month + ctx: Store + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = month + ctx: Load + type_comment: NoneType = None + orelse: list + element: If + test: Compare + left: Name + id: str = day + ctx: Load + ops: list + element: Is + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = day + ctx: Store + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = day + ctx: Load + type_comment: NoneType = None + orelse: list + element: If + test: Compare + left: Name + id: str = hour + ctx: Load + ops: list + element: Is + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = hour + ctx: Store + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = hour + ctx: Load + type_comment: NoneType = None + orelse: list + element: If + test: Compare + left: Name + id: str = minute + ctx: Load + ops: list + element: Is + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = minute + ctx: Store + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = minute + ctx: Load + type_comment: NoneType = None + orelse: list + element: If + test: Compare + left: Name + id: str = second + ctx: Load + ops: list + element: Is + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = second + ctx: Store + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = second + ctx: Load + type_comment: NoneType = None + orelse: list + element: If + test: Compare + left: Name + id: str = microsecond + ctx: Load + ops: list + element: Is + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = microsecond + ctx: Store + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = microsecond + ctx: Load + type_comment: NoneType = None + orelse: list + element: If + test: Compare + left: Name + id: str = tzinfo + ctx: Load + ops: list + element: Is + comparators: list + element: Constant + value: bool = True + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = tzinfo + ctx: Store + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = tzinfo + ctx: Load + type_comment: NoneType = None + orelse: list + element: Return + value: Call + func: Name + id: str = datetime + ctx: Load + args: list + element: Name + id: str = year + ctx: Load + element: Name + id: str = month + ctx: Load + element: Name + id: str = day + ctx: Load + element: Name + id: str = hour + ctx: Load + element: Name + id: str = minute + ctx: Load + element: Name + id: str = second + ctx: Load + element: Name + id: str = microsecond + ctx: Load + element: Name + id: str = tzinfo + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = nokwargs + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = kwargs + kind: NoneType = None + keywords: list + element: FunctionDef + name: str = astimezone + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = tz + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: If + test: Compare + left: Name + id: str = tz + ctx: Load + ops: list + element: Is + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: If + test: Compare + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = tzinfo + ctx: Load + ops: list + element: Is + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Raise + exc: Call + func: Name + id: str = ValueError + ctx: Load + args: list + element: Constant + value: str = astimezone() requires an aware datetime + kind: NoneType = None + keywords: list + cause: NoneType = None + orelse: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = opov + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = ts + ctx: Store + value: BinOp + left: BinOp + left: Name + id: str = self + ctx: Load + op: Sub + right: Name + id: str = _EPOCH + ctx: Load + op: FloorDiv + right: Call + func: Name + id: str = timedelta + ctx: Load + args: list + keywords: list + element: keyword + arg: str = seconds + value: Constant + value: int = 1 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = noopov + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = localtm + ctx: Store + value: Call + func: Attribute + value: Name + id: str = _time + ctx: Load + attr: str = localtime + ctx: Load + args: list + element: Name + id: str = ts + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = local + ctx: Store + value: Call + func: Name + id: str = datetime + ctx: Load + args: list + element: Starred + value: Subscript + value: Name + id: str = localtm + ctx: Load + slice: Slice + lower: NoneType = None + upper: Constant + value: int = 6 + kind: NoneType = None + step: NoneType = None + ctx: Load + ctx: Load + keywords: list + type_comment: NoneType = None + element: If + test: Compare + left: Call + func: Name + id: str = len + ctx: Load + args: list + element: Name + id: str = localtm + ctx: Load + keywords: list + ops: list + element: Gt + comparators: list + element: Constant + value: int = 9 + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = gmtoff + ctx: Store + value: Subscript + value: Name + id: str = localtm + ctx: Load + slice: Constant + value: int = 10 + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = zone + ctx: Store + value: Subscript + value: Name + id: str = localtm + ctx: Load + slice: Constant + value: int = 9 + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = tz + ctx: Store + value: Call + func: Name + id: str = timezone + ctx: Load + args: list + element: Call + func: Name + id: str = timedelta + ctx: Load + args: list + keywords: list + element: keyword + arg: str = seconds + value: Name + id: str = gmtoff + ctx: Load + element: Name + id: str = zone + ctx: Load + keywords: list + type_comment: NoneType = None + orelse: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = opov + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = delta + ctx: Store + value: BinOp + left: Name + id: str = local + ctx: Load + op: Sub + right: Call + func: Name + id: str = datetime + ctx: Load + args: list + element: Starred + value: Subscript + value: Call + func: Attribute + value: Name + id: str = _time + ctx: Load + attr: str = gmtime + ctx: Load + args: list + element: Name + id: str = ts + ctx: Load + keywords: list + slice: Slice + lower: NoneType = None + upper: Constant + value: int = 6 + kind: NoneType = None + step: NoneType = None + ctx: Load + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = dst + ctx: Store + value: BoolOp + op: And + values: list + element: Attribute + value: Name + id: str = _time + ctx: Load + attr: str = daylight + ctx: Load + element: Compare + left: Subscript + value: Name + id: str = localtm + ctx: Load + slice: Constant + value: int = 8 + kind: NoneType = None + ctx: Load + ops: list + element: Gt + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = gmtoff + ctx: Store + value: UnaryOp + op: USub + operand: IfExp + test: Name + id: str = dst + ctx: Load + body: Attribute + value: Name + id: str = _time + ctx: Load + attr: str = altzone + ctx: Load + orelse: Attribute + value: Name + id: str = _time + ctx: Load + attr: str = timezone + ctx: Load + type_comment: NoneType = None + element: If + test: Compare + left: Name + id: str = delta + ctx: Load + ops: list + element: Eq + comparators: list + element: Call + func: Name + id: str = timedelta + ctx: Load + args: list + keywords: list + element: keyword + arg: str = seconds + value: Name + id: str = gmtoff + ctx: Load + body: list + element: Assign + targets: list + element: Name + id: str = tz + ctx: Store + value: Call + func: Name + id: str = timezone + ctx: Load + args: list + element: Name + id: str = delta + ctx: Load + element: Subscript + value: Attribute + value: Name + id: str = _time + ctx: Load + attr: str = tzname + ctx: Load + slice: Name + id: str = dst + ctx: Load + ctx: Load + keywords: list + type_comment: NoneType = None + orelse: list + element: Assign + targets: list + element: Name + id: str = tz + ctx: Store + value: Call + func: Name + id: str = timezone + ctx: Load + args: list + element: Name + id: str = delta + ctx: Load + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = noopov + kind: NoneType = None + keywords: list + orelse: list + element: If + test: UnaryOp + op: Not + operand: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = tz + ctx: Load + element: Name + id: str = tzinfo + ctx: Load + keywords: list + body: list + element: Raise + exc: Call + func: Name + id: str = TypeError + ctx: Load + args: list + element: Constant + value: str = tz argument must be an instance of tzinfo + kind: NoneType = None + keywords: list + cause: NoneType = None + orelse: list + element: Assign + targets: list + element: Name + id: str = mytz + ctx: Store + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = tzinfo + ctx: Load + type_comment: NoneType = None + element: If + test: Compare + left: Name + id: str = mytz + ctx: Load + ops: list + element: Is + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Raise + exc: Call + func: Name + id: str = ValueError + ctx: Load + args: list + element: Constant + value: str = astimezone() requires an aware datetime + kind: NoneType = None + keywords: list + cause: NoneType = None + orelse: list + element: If + test: Compare + left: Name + id: str = tz + ctx: Load + ops: list + element: Is + comparators: list + element: Name + id: str = mytz + ctx: Load + body: list + element: Return + value: Name + id: str = self + ctx: Load + orelse: list + element: Assign + targets: list + element: Name + id: str = myoffset + ctx: Store + value: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = utcoffset + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: If + test: Compare + left: Name + id: str = myoffset + ctx: Load + ops: list + element: Is + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Raise + exc: Call + func: Name + id: str = ValueError + ctx: Load + args: list + element: Constant + value: str = astimezone() requires an aware datetime + kind: NoneType = None + keywords: list + cause: NoneType = None + orelse: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = opov + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = utc + ctx: Store + value: Call + func: Attribute + value: BinOp + left: Name + id: str = self + ctx: Load + op: Sub + right: Name + id: str = myoffset + ctx: Load + attr: str = replace + ctx: Load + args: list + keywords: list + element: keyword + arg: str = tzinfo + value: Name + id: str = tz + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = noopov + kind: NoneType = None + keywords: list + element: Return + value: Call + func: Attribute + value: Name + id: str = tz + ctx: Load + attr: str = fromutc + ctx: Load + args: list + element: Name + id: str = utc + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = nokwargs + kind: NoneType = None + keywords: list + element: FunctionDef + name: str = ctime + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = Return ctime() style string. + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = weekday + ctx: Store + value: BoolOp + op: Or + values: list + element: BinOp + left: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = toordinal + ctx: Load + args: list + keywords: list + op: Mod + right: Constant + value: int = 7 + kind: NoneType = None + element: Constant + value: int = 7 + kind: NoneType = None + type_comment: NoneType = None + element: Return + value: Call + func: Attribute + value: Constant + value: str = {} {} {} {}:{}:{} {} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Subscript + value: Name + id: str = _DAYNAMES + ctx: Load + slice: Name + id: str = weekday + ctx: Load + ctx: Load + element: Subscript + value: Name + id: str = _MONTHNAMES + ctx: Load + slice: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _month + ctx: Load + ctx: Load + element: Call + func: Name + id: str = zfill + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _day + ctx: Load + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = zfill + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _hour + ctx: Load + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = zfill + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _minute + ctx: Load + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = zfill + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _second + ctx: Load + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = zfill + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _year + ctx: Load + element: Constant + value: int = 4 + kind: NoneType = None + keywords: list + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = isoformat + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = sep + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + element: Constant + value: str = T + kind: NoneType = None + body: list + element: Expr + value: Constant + value: str = Return the time formatted according to ISO. + + This is 'YYYY-MM-DD HH:MM:SS.mmmmmm', or 'YYYY-MM-DD HH:MM:SS' if + self.microsecond == 0. + + If self.tzinfo is not None, the UTC offset is also attached, giving + 'YYYY-MM-DD HH:MM:SS.mmmmmm+HH:MM' or 'YYYY-MM-DD HH:MM:SS+HH:MM'. + + Optional argument sep specifies the separator between date and + time, default 'T'. + + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = s + ctx: Store + value: BinOp + left: Call + func: Attribute + value: Constant + value: str = {}-{}-{}{} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Call + func: Name + id: str = zfill + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _year + ctx: Load + element: Constant + value: int = 4 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = zfill + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _month + ctx: Load + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = zfill + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _day + ctx: Load + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + element: Name + id: str = sep + ctx: Load + keywords: list + op: Add + right: Call + func: Name + id: str = _format_time + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _hour + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _minute + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _second + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _microsecond + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = off + ctx: Store + value: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = utcoffset + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: If + test: Compare + left: Name + id: str = off + ctx: Load + ops: list + element: IsNot + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: If + test: Compare + left: Attribute + value: Name + id: str = off + ctx: Load + attr: str = days + ctx: Load + ops: list + element: Lt + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = sign + ctx: Store + value: Constant + value: str = - + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = off + ctx: Store + value: UnaryOp + op: USub + operand: Name + id: str = off + ctx: Load + type_comment: NoneType = None + orelse: list + element: Assign + targets: list + element: Name + id: str = sign + ctx: Store + value: Constant + value: str = + + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = hh + ctx: Store + element: Name + id: str = mm + ctx: Store + ctx: Store + value: Call + func: Name + id: str = divmod + ctx: Load + args: list + element: Name + id: str = off + ctx: Load + element: Call + func: Name + id: str = timedelta + ctx: Load + args: list + keywords: list + element: keyword + arg: str = hours + value: Constant + value: int = 1 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Assert + test: UnaryOp + op: Not + operand: BinOp + left: Name + id: str = mm + ctx: Load + op: Mod + right: Call + func: Name + id: str = timedelta + ctx: Load + args: list + keywords: list + element: keyword + arg: str = minutes + value: Constant + value: int = 1 + kind: NoneType = None + msg: Constant + value: str = whole minute + kind: NoneType = None + element: AugAssign + target: Name + id: str = mm + ctx: Store + op: FloorDiv + value: Call + func: Name + id: str = timedelta + ctx: Load + args: list + keywords: list + element: keyword + arg: str = minutes + value: Constant + value: int = 1 + kind: NoneType = None + element: AugAssign + target: Name + id: str = s + ctx: Store + op: Add + value: Call + func: Attribute + value: Constant + value: str = {}{}:{} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Name + id: str = sign + ctx: Load + element: Call + func: Name + id: str = zfill + ctx: Load + args: list + element: Name + id: str = hh + ctx: Load + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = zfill + ctx: Load + args: list + element: Name + id: str = mm + ctx: Load + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + keywords: list + orelse: list + element: Return + value: Name + id: str = s + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __repr__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = Convert to formal string, for repr(). + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = L + ctx: Store + value: List + elts: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _year + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _month + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _day + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _hour + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _minute + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _second + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _microsecond + ctx: Load + ctx: Load + type_comment: NoneType = None + element: If + test: Compare + left: Subscript + value: Name + id: str = L + ctx: Load + slice: BinOp + left: Call + func: Name + id: str = len + ctx: Load + args: list + element: Name + id: str = L + ctx: Load + keywords: list + op: Sub + right: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = L + ctx: Load + attr: str = pop + ctx: Load + args: list + keywords: list + orelse: list + element: If + test: Compare + left: Subscript + value: Name + id: str = L + ctx: Load + slice: BinOp + left: Call + func: Name + id: str = len + ctx: Load + args: list + element: Name + id: str = L + ctx: Load + keywords: list + op: Sub + right: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = L + ctx: Load + attr: str = pop + ctx: Load + args: list + keywords: list + orelse: list + element: Assign + targets: list + element: Name + id: str = s + ctx: Store + value: Call + func: Attribute + value: Constant + value: str = datetime.datetime({}) + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = , + kind: NoneType = None + attr: str = join + ctx: Load + args: list + element: Call + func: Name + id: str = map + ctx: Load + args: list + element: Name + id: str = str + ctx: Load + element: Name + id: str = L + ctx: Load + keywords: list + keywords: list + keywords: list + type_comment: NoneType = None + element: If + test: Compare + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _tzinfo + ctx: Load + ops: list + element: IsNot + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Assert + test: Compare + left: Subscript + value: Name + id: str = s + ctx: Load + slice: Slice + lower: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + upper: NoneType = None + step: NoneType = None + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = ) + kind: NoneType = None + msg: NoneType = None + element: Assign + targets: list + element: Name + id: str = s + ctx: Store + value: BinOp + left: BinOp + left: Subscript + value: Name + id: str = s + ctx: Load + slice: Slice + lower: NoneType = None + upper: BinOp + left: Call + func: Name + id: str = len + ctx: Load + args: list + element: Name + id: str = s + ctx: Load + keywords: list + op: Sub + right: Constant + value: int = 1 + kind: NoneType = None + step: NoneType = None + ctx: Load + op: Add + right: Call + func: Attribute + value: Constant + value: str = , tzinfo={} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Call + func: Attribute + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _tzinfo + ctx: Load + attr: str = __repr__ + ctx: Load + args: list + keywords: list + keywords: list + op: Add + right: Constant + value: str = ) + kind: NoneType = None + type_comment: NoneType = None + orelse: list + element: Return + value: Name + id: str = s + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __str__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = Convert to string, for str(). + kind: NoneType = None + element: Return + value: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = isoformat + ctx: Load + args: list + keywords: list + element: keyword + arg: str = sep + value: Constant + value: str = + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = strptime + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = cls + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = date_string + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = format + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = string, format -> new datetime parsed from a string (like time.strptime()). + kind: NoneType = None + element: Return + value: Call + func: Name + id: str = cls + ctx: Load + args: list + element: Starred + value: Subscript + value: Call + func: Attribute + value: Name + id: str = _time + ctx: Load + attr: str = strptime + ctx: Load + args: list + element: Name + id: str = date_string + ctx: Load + element: Name + id: str = format + ctx: Load + keywords: list + slice: Slice + lower: NoneType = None + upper: Constant + value: int = 6 + kind: NoneType = None + step: NoneType = None + ctx: Load + ctx: Load + keywords: list + decorator_list: list + element: Name + id: str = classmethod + ctx: Load + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = utcoffset + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = Return the timezone offset in minutes east of UTC (negative west of + UTC). + kind: NoneType = None + element: If + test: Compare + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _tzinfo + ctx: Load + ops: list + element: Is + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Return + value: Constant + value: NoneType = None + kind: NoneType = None + orelse: list + element: Assign + targets: list + element: Name + id: str = offset + ctx: Store + value: Call + func: Attribute + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _tzinfo + ctx: Load + attr: str = utcoffset + ctx: Load + args: list + element: Name + id: str = self + ctx: Load + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = _check_utc_offset + ctx: Load + args: list + element: Constant + value: str = utcoffset + kind: NoneType = None + element: Name + id: str = offset + ctx: Load + keywords: list + element: Return + value: Name + id: str = offset + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = tzname + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = Return the timezone name. + + Note that the name is 100% informational -- there's no requirement that + it mean anything in particular. For example, "GMT", "UTC", "-500", + "-5:00", "EDT", "US/Eastern", "America/New York" are all valid replies. + + kind: NoneType = None + element: If + test: Compare + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _tzinfo + ctx: Load + ops: list + element: Is + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Return + value: Constant + value: NoneType = None + kind: NoneType = None + orelse: list + element: Assign + targets: list + element: Name + id: str = name + ctx: Store + value: Call + func: Attribute + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _tzinfo + ctx: Load + attr: str = tzname + ctx: Load + args: list + element: Name + id: str = self + ctx: Load + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = _check_tzname + ctx: Load + args: list + element: Name + id: str = name + ctx: Load + keywords: list + element: Return + value: Name + id: str = name + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = dst + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = Return 0 if DST is not in effect, or the DST offset (in minutes + eastward) if DST is in effect. + + This is purely informational; the DST offset has already been added to + the UTC offset returned by utcoffset() if applicable, so there's no + need to consult dst() unless you're interested in displaying the DST + info. + + kind: NoneType = None + element: If + test: Compare + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _tzinfo + ctx: Load + ops: list + element: Is + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Return + value: Constant + value: NoneType = None + kind: NoneType = None + orelse: list + element: Assign + targets: list + element: Name + id: str = offset + ctx: Store + value: Call + func: Attribute + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _tzinfo + ctx: Load + attr: str = dst + ctx: Load + args: list + element: Name + id: str = self + ctx: Load + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = _check_utc_offset + ctx: Load + args: list + element: Constant + value: str = dst + kind: NoneType = None + element: Name + id: str = offset + ctx: Load + keywords: list + element: Return + value: Name + id: str = offset + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __eq__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + element: Name + id: str = datetime + ctx: Load + keywords: list + body: list + element: Return + value: Compare + left: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _cmp + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + keywords: list + element: keyword + arg: str = allow_mixed + value: Constant + value: bool = True + kind: NoneType = None + ops: list + element: Eq + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + orelse: list + element: If + test: UnaryOp + op: Not + operand: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + element: Name + id: str = date + ctx: Load + keywords: list + body: list + element: Return + value: Name + id: str = NotImplemented + ctx: Load + orelse: list + element: Return + value: Constant + value: bool = False + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __le__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + element: Name + id: str = datetime + ctx: Load + keywords: list + body: list + element: Return + value: Compare + left: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _cmp + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + keywords: list + ops: list + element: LtE + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + orelse: list + element: If + test: UnaryOp + op: Not + operand: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + element: Name + id: str = date + ctx: Load + keywords: list + body: list + element: Return + value: Name + id: str = NotImplemented + ctx: Load + orelse: list + element: Expr + value: Call + func: Name + id: str = _cmperror + ctx: Load + args: list + element: Name + id: str = self + ctx: Load + element: Name + id: str = other + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __lt__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + element: Name + id: str = datetime + ctx: Load + keywords: list + body: list + element: Return + value: Compare + left: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _cmp + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + keywords: list + ops: list + element: Lt + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + orelse: list + element: If + test: UnaryOp + op: Not + operand: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + element: Name + id: str = date + ctx: Load + keywords: list + body: list + element: Return + value: Name + id: str = NotImplemented + ctx: Load + orelse: list + element: Expr + value: Call + func: Name + id: str = _cmperror + ctx: Load + args: list + element: Name + id: str = self + ctx: Load + element: Name + id: str = other + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __ge__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + element: Name + id: str = datetime + ctx: Load + keywords: list + body: list + element: Return + value: Compare + left: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _cmp + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + keywords: list + ops: list + element: GtE + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + orelse: list + element: If + test: UnaryOp + op: Not + operand: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + element: Name + id: str = date + ctx: Load + keywords: list + body: list + element: Return + value: Name + id: str = NotImplemented + ctx: Load + orelse: list + element: Expr + value: Call + func: Name + id: str = _cmperror + ctx: Load + args: list + element: Name + id: str = self + ctx: Load + element: Name + id: str = other + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __gt__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + element: Name + id: str = datetime + ctx: Load + keywords: list + body: list + element: Return + value: Compare + left: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _cmp + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + keywords: list + ops: list + element: Gt + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + orelse: list + element: If + test: UnaryOp + op: Not + operand: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + element: Name + id: str = date + ctx: Load + keywords: list + body: list + element: Return + value: Name + id: str = NotImplemented + ctx: Load + orelse: list + element: Expr + value: Call + func: Name + id: str = _cmperror + ctx: Load + args: list + element: Name + id: str = self + ctx: Load + element: Name + id: str = other + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = _cmp + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = allow_mixed + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + element: Constant + value: bool = False + kind: NoneType = None + body: list + element: Assert + test: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + element: Name + id: str = datetime + ctx: Load + keywords: list + msg: NoneType = None + element: Assign + targets: list + element: Name + id: str = mytz + ctx: Store + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _tzinfo + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = ottz + ctx: Store + value: Attribute + value: Name + id: str = other + ctx: Load + attr: str = _tzinfo + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = myoff + ctx: Store + element: Name + id: str = otoff + ctx: Store + value: Constant + value: NoneType = None + kind: NoneType = None + type_comment: NoneType = None + element: If + test: Compare + left: Name + id: str = mytz + ctx: Load + ops: list + element: Is + comparators: list + element: Name + id: str = ottz + ctx: Load + body: list + element: Assign + targets: list + element: Name + id: str = base_compare + ctx: Store + value: Constant + value: bool = True + kind: NoneType = None + type_comment: NoneType = None + orelse: list + element: Assign + targets: list + element: Name + id: str = myoff + ctx: Store + value: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = utcoffset + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = otoff + ctx: Store + value: Call + func: Attribute + value: Name + id: str = other + ctx: Load + attr: str = utcoffset + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = base_compare + ctx: Store + value: Compare + left: Name + id: str = myoff + ctx: Load + ops: list + element: Eq + comparators: list + element: Name + id: str = otoff + ctx: Load + type_comment: NoneType = None + element: If + test: Name + id: str = base_compare + ctx: Load + body: list + element: Assign + targets: list + element: Name + id: str = s1 + ctx: Store + value: Call + func: Attribute + value: Constant + value: str = {}{}{}{}{}{}{} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Call + func: Name + id: str = zfill + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _year + ctx: Load + element: Constant + value: int = 4 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = zfill + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _month + ctx: Load + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = zfill + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _day + ctx: Load + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = zfill + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _hour + ctx: Load + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = zfill + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _minute + ctx: Load + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = zfill + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _second + ctx: Load + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = zfill + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _microsecond + ctx: Load + element: Constant + value: int = 6 + kind: NoneType = None + keywords: list + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = s2 + ctx: Store + value: Call + func: Attribute + value: Constant + value: str = {}{}{}{}{}{}{} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Call + func: Name + id: str = zfill + ctx: Load + args: list + element: Attribute + value: Name + id: str = other + ctx: Load + attr: str = _year + ctx: Load + element: Constant + value: int = 4 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = zfill + ctx: Load + args: list + element: Attribute + value: Name + id: str = other + ctx: Load + attr: str = _month + ctx: Load + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = zfill + ctx: Load + args: list + element: Attribute + value: Name + id: str = other + ctx: Load + attr: str = _day + ctx: Load + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = zfill + ctx: Load + args: list + element: Attribute + value: Name + id: str = other + ctx: Load + attr: str = _hour + ctx: Load + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = zfill + ctx: Load + args: list + element: Attribute + value: Name + id: str = other + ctx: Load + attr: str = _minute + ctx: Load + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = zfill + ctx: Load + args: list + element: Attribute + value: Name + id: str = other + ctx: Load + attr: str = _second + ctx: Load + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = zfill + ctx: Load + args: list + element: Attribute + value: Name + id: str = other + ctx: Load + attr: str = _microsecond + ctx: Load + element: Constant + value: int = 6 + kind: NoneType = None + keywords: list + keywords: list + type_comment: NoneType = None + element: Return + value: Call + func: Name + id: str = _cmp + ctx: Load + args: list + element: Name + id: str = s1 + ctx: Load + element: Name + id: str = s2 + ctx: Load + keywords: list + orelse: list + element: If + test: BoolOp + op: Or + values: list + element: Compare + left: Name + id: str = myoff + ctx: Load + ops: list + element: Is + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + element: Compare + left: Name + id: str = otoff + ctx: Load + ops: list + element: Is + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: If + test: Name + id: str = allow_mixed + ctx: Load + body: list + element: Return + value: Constant + value: int = 2 + kind: NoneType = None + orelse: list + element: Raise + exc: Call + func: Name + id: str = TypeError + ctx: Load + args: list + element: Constant + value: str = cannot compare naive and aware datetimes + kind: NoneType = None + keywords: list + cause: NoneType = None + orelse: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = opov + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = diff + ctx: Store + value: BinOp + left: Name + id: str = self + ctx: Load + op: Sub + right: Name + id: str = other + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = noopov + kind: NoneType = None + keywords: list + element: If + test: Compare + left: Attribute + value: Name + id: str = diff + ctx: Load + attr: str = days + ctx: Load + ops: list + element: Lt + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + body: list + element: Return + value: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + orelse: list + element: Return + value: BoolOp + op: Or + values: list + element: BoolOp + op: And + values: list + element: Name + id: str = diff + ctx: Load + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 0 + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __add__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = Add a datetime and a timedelta. + kind: NoneType = None + element: If + test: UnaryOp + op: Not + operand: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + element: Name + id: str = timedelta + ctx: Load + keywords: list + body: list + element: Return + value: Name + id: str = NotImplemented + ctx: Load + orelse: list + element: Assign + targets: list + element: Name + id: str = delta + ctx: Store + value: Call + func: Name + id: str = timedelta + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = toordinal + ctx: Load + args: list + keywords: list + keywords: list + element: keyword + arg: str = hours + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _hour + ctx: Load + element: keyword + arg: str = minutes + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _minute + ctx: Load + element: keyword + arg: str = seconds + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _second + ctx: Load + element: keyword + arg: str = microseconds + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _microsecond + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = opov + kind: NoneType = None + keywords: list + element: AugAssign + target: Name + id: str = delta + ctx: Store + op: Add + value: Name + id: str = other + ctx: Load + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = noopov + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = hour + ctx: Store + element: Name + id: str = rem + ctx: Store + ctx: Store + value: Call + func: Name + id: str = divmod + ctx: Load + args: list + element: Attribute + value: Name + id: str = delta + ctx: Load + attr: str = seconds + ctx: Load + element: Constant + value: int = 3600 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = minute + ctx: Store + element: Name + id: str = second + ctx: Store + ctx: Store + value: Call + func: Name + id: str = divmod + ctx: Load + args: list + element: Name + id: str = rem + ctx: Load + element: Constant + value: int = 60 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: If + test: Compare + left: Constant + value: int = 0 + kind: NoneType = None + ops: list + element: Lt + element: LtE + comparators: list + element: Attribute + value: Name + id: str = delta + ctx: Load + attr: str = days + ctx: Load + element: Name + id: str = _MAXORDINAL + ctx: Load + body: list + element: Return + value: Call + func: Attribute + value: Name + id: str = datetime + ctx: Load + attr: str = combine + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = date + ctx: Load + attr: str = fromordinal + ctx: Load + args: list + element: Attribute + value: Name + id: str = delta + ctx: Load + attr: str = days + ctx: Load + keywords: list + element: Call + func: Name + id: str = time + ctx: Load + args: list + element: Name + id: str = hour + ctx: Load + element: Name + id: str = minute + ctx: Load + element: Name + id: str = second + ctx: Load + element: Attribute + value: Name + id: str = delta + ctx: Load + attr: str = microseconds + ctx: Load + keywords: list + element: keyword + arg: str = tzinfo + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _tzinfo + ctx: Load + keywords: list + orelse: list + element: Raise + exc: Call + func: Name + id: str = OverflowError + ctx: Load + args: list + element: Constant + value: str = result out of range + kind: NoneType = None + keywords: list + cause: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __radd__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = __add__ + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __sub__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = Subtract two datetimes, or a datetime and a timedelta. + kind: NoneType = None + element: If + test: UnaryOp + op: Not + operand: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + element: Name + id: str = datetime + ctx: Load + keywords: list + body: list + element: If + test: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + element: Name + id: str = timedelta + ctx: Load + keywords: list + body: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = opov + kind: NoneType = None + keywords: list + element: Return + value: BinOp + left: Name + id: str = self + ctx: Load + op: Add + right: UnaryOp + op: USub + operand: Name + id: str = other + ctx: Load + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = noopov + kind: NoneType = None + keywords: list + orelse: list + element: Return + value: Name + id: str = NotImplemented + ctx: Load + orelse: list + element: Assign + targets: list + element: Name + id: str = days1 + ctx: Store + value: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = toordinal + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = days2 + ctx: Store + value: Call + func: Attribute + value: Name + id: str = other + ctx: Load + attr: str = toordinal + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = secs1 + ctx: Store + value: BinOp + left: BinOp + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _second + ctx: Load + op: Add + right: BinOp + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _minute + ctx: Load + op: Mult + right: Constant + value: int = 60 + kind: NoneType = None + op: Add + right: BinOp + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _hour + ctx: Load + op: Mult + right: Constant + value: int = 3600 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = secs2 + ctx: Store + value: BinOp + left: BinOp + left: Attribute + value: Name + id: str = other + ctx: Load + attr: str = _second + ctx: Load + op: Add + right: BinOp + left: Attribute + value: Name + id: str = other + ctx: Load + attr: str = _minute + ctx: Load + op: Mult + right: Constant + value: int = 60 + kind: NoneType = None + op: Add + right: BinOp + left: Attribute + value: Name + id: str = other + ctx: Load + attr: str = _hour + ctx: Load + op: Mult + right: Constant + value: int = 3600 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = base + ctx: Store + value: Call + func: Name + id: str = timedelta + ctx: Load + args: list + element: BinOp + left: Name + id: str = days1 + ctx: Load + op: Sub + right: Name + id: str = days2 + ctx: Load + element: BinOp + left: Name + id: str = secs1 + ctx: Load + op: Sub + right: Name + id: str = secs2 + ctx: Load + element: BinOp + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _microsecond + ctx: Load + op: Sub + right: Attribute + value: Name + id: str = other + ctx: Load + attr: str = _microsecond + ctx: Load + keywords: list + type_comment: NoneType = None + element: If + test: Compare + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _tzinfo + ctx: Load + ops: list + element: Is + comparators: list + element: Attribute + value: Name + id: str = other + ctx: Load + attr: str = _tzinfo + ctx: Load + body: list + element: Return + value: Name + id: str = base + ctx: Load + orelse: list + element: Assign + targets: list + element: Name + id: str = myoff + ctx: Store + value: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = utcoffset + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = otoff + ctx: Store + value: Call + func: Attribute + value: Name + id: str = other + ctx: Load + attr: str = utcoffset + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: If + test: Compare + left: Name + id: str = myoff + ctx: Load + ops: list + element: Eq + comparators: list + element: Name + id: str = otoff + ctx: Load + body: list + element: Return + value: Name + id: str = base + ctx: Load + orelse: list + element: If + test: BoolOp + op: Or + values: list + element: Compare + left: Name + id: str = myoff + ctx: Load + ops: list + element: Is + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + element: Compare + left: Name + id: str = otoff + ctx: Load + ops: list + element: Is + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Raise + exc: Call + func: Name + id: str = TypeError + ctx: Load + args: list + element: Constant + value: str = cannot mix naive and timezone-aware time + kind: NoneType = None + keywords: list + cause: NoneType = None + orelse: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = opov + kind: NoneType = None + keywords: list + element: Return + value: BinOp + left: BinOp + left: Name + id: str = base + ctx: Load + op: Add + right: Name + id: str = otoff + ctx: Load + op: Sub + right: Name + id: str = myoff + ctx: Load + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = noopov + kind: NoneType = None + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = resolution + ctx: Store + value: Call + func: Name + id: str = timedelta + ctx: Load + args: list + keywords: list + element: keyword + arg: str = microseconds + value: Constant + value: int = 1 + kind: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: Assign + targets: list + element: Name + id: str = _dt_min + ctx: Store + value: Call + func: Name + id: str = datetime + ctx: Load + args: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 1 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = _dt_max + ctx: Store + value: Call + func: Name + id: str = datetime + ctx: Load + args: list + element: Constant + value: int = 9999 + kind: NoneType = None + element: Constant + value: int = 12 + kind: NoneType = None + element: Constant + value: int = 31 + kind: NoneType = None + element: Constant + value: int = 23 + kind: NoneType = None + element: Constant + value: int = 59 + kind: NoneType = None + element: Constant + value: int = 59 + kind: NoneType = None + element: Constant + value: int = 999999 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = js + kind: NoneType = None + element: Constant + value: str = {} + kind: NoneType = None + element: Constant + value: str = Object.defineProperty (datetime, 'min', {get: function () {return _dt_min;}}) + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = js + kind: NoneType = None + element: Constant + value: str = {} + kind: NoneType = None + element: Constant + value: str = Object.defineProperty (datetime, 'max', {get: function () {return _dt_max;}}) + kind: NoneType = None + keywords: list + element: FunctionDef + name: str = _isoweek1monday + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = year + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Name + id: str = THURSDAY + ctx: Store + value: Constant + value: int = 3 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = firstday + ctx: Store + value: Call + func: Name + id: str = _ymd2ord + ctx: Load + args: list + element: Name + id: str = year + ctx: Load + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 1 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = firstweekday + ctx: Store + value: BinOp + left: BinOp + left: Name + id: str = firstday + ctx: Load + op: Add + right: Constant + value: int = 6 + kind: NoneType = None + op: Mod + right: Constant + value: int = 7 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = week1monday + ctx: Store + value: BinOp + left: Name + id: str = firstday + ctx: Load + op: Sub + right: Name + id: str = firstweekday + ctx: Load + type_comment: NoneType = None + element: If + test: Compare + left: Name + id: str = firstweekday + ctx: Load + ops: list + element: Gt + comparators: list + element: Name + id: str = THURSDAY + ctx: Load + body: list + element: AugAssign + target: Name + id: str = week1monday + ctx: Store + op: Add + value: Constant + value: int = 7 + kind: NoneType = None + orelse: list + element: Return + value: Name + id: str = week1monday + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = _Omitted + ctx: Store + value: Constant + value: str = @#$^&$^ + kind: NoneType = None + type_comment: NoneType = None + element: ClassDef + name: str = timezone + bases: list + element: Name + id: str = tzinfo + ctx: Load + keywords: list + body: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = kwargs + kind: NoneType = None + keywords: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = offset + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = name + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + element: Name + id: str = _Omitted + ctx: Load + body: list + element: If + test: UnaryOp + op: Not + operand: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = offset + ctx: Load + element: Name + id: str = timedelta + ctx: Load + keywords: list + body: list + element: Raise + exc: Call + func: Name + id: str = TypeError + ctx: Load + args: list + element: Constant + value: str = offset must be a timedelta + kind: NoneType = None + keywords: list + cause: NoneType = None + orelse: list + element: If + test: Compare + left: Name + id: str = name + ctx: Load + ops: list + element: Is + comparators: list + element: Name + id: str = _Omitted + ctx: Load + body: list + element: If + test: UnaryOp + op: Not + operand: Name + id: str = offset + ctx: Load + body: list + element: Assign + targets: list + element: Name + id: str = offset + ctx: Store + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = utc + ctx: Load + type_comment: NoneType = None + orelse: list + element: Assign + targets: list + element: Name + id: str = name + ctx: Store + value: Constant + value: NoneType = None + kind: NoneType = None + type_comment: NoneType = None + orelse: list + element: If + test: UnaryOp + op: Not + operand: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = name + ctx: Load + element: Name + id: str = str + ctx: Load + keywords: list + body: list + element: Raise + exc: Call + func: Name + id: str = TypeError + ctx: Load + args: list + element: Constant + value: str = name must be a string + kind: NoneType = None + keywords: list + cause: NoneType = None + orelse: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = opov + kind: NoneType = None + keywords: list + element: If + test: UnaryOp + op: Not + operand: Compare + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _minoffset + ctx: Load + ops: list + element: LtE + element: LtE + comparators: list + element: Name + id: str = offset + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _maxoffset + ctx: Load + body: list + element: Raise + exc: Call + func: Name + id: str = ValueError + ctx: Load + args: list + element: Constant + value: str = offset must be a timedelta strictly between -timedelta(hours=24) and timedelta(hours=24). + kind: NoneType = None + keywords: list + cause: NoneType = None + orelse: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = noopov + kind: NoneType = None + keywords: list + element: If + test: BoolOp + op: Or + values: list + element: Compare + left: Attribute + value: Name + id: str = offset + ctx: Load + attr: str = microseconds + ctx: Load + ops: list + element: NotEq + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + element: Compare + left: BinOp + left: Attribute + value: Name + id: str = offset + ctx: Load + attr: str = seconds + ctx: Load + op: Mod + right: Constant + value: int = 60 + kind: NoneType = None + ops: list + element: NotEq + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + body: list + element: Raise + exc: Call + func: Name + id: str = ValueError + ctx: Load + args: list + element: Constant + value: str = offset must be a timedelta representing a whole number of minutes + kind: NoneType = None + keywords: list + cause: NoneType = None + orelse: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _offset + ctx: Store + value: Name + id: str = offset + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _name + ctx: Store + value: Name + id: str = name + ctx: Load + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = nokwargs + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = kwargs + kind: NoneType = None + keywords: list + element: FunctionDef + name: str = _create + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = cls + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = offset + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = name + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + element: Name + id: str = _Omitted + ctx: Load + body: list + element: Return + value: Call + func: Name + id: str = cls + ctx: Load + args: list + element: Name + id: str = offset + ctx: Load + element: Name + id: str = name + ctx: Load + keywords: list + decorator_list: list + element: Name + id: str = classmethod + ctx: Load + returns: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = nokwargs + kind: NoneType = None + keywords: list + element: FunctionDef + name: str = __eq__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: Compare + left: Call + func: Name + id: str = type + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + keywords: list + ops: list + element: NotEq + comparators: list + element: Name + id: str = timezone + ctx: Load + body: list + element: Return + value: Constant + value: bool = False + kind: NoneType = None + orelse: list + element: Return + value: Compare + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _offset + ctx: Load + ops: list + element: Eq + comparators: list + element: Attribute + value: Name + id: str = other + ctx: Load + attr: str = _offset + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __repr__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = Convert to formal string, for repr(). + + >>> tz = timezone.utc + >>> repr(tz) + 'datetime.timezone.utc' + >>> tz = timezone(timedelta(hours=-5), 'EST') + >>> repr(tz) + "datetime.timezone(datetime.timedelta(-1, 68400), 'EST')" + + kind: NoneType = None + element: If + test: Compare + left: Name + id: str = self + ctx: Load + ops: list + element: Is + comparators: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = utc + ctx: Load + body: list + element: Return + value: Constant + value: str = datetime.timezone.utc + kind: NoneType = None + orelse: list + element: If + test: Compare + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _name + ctx: Load + ops: list + element: Is + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Return + value: Call + func: Attribute + value: Constant + value: str = datetime.timezone({}) + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Call + func: Attribute + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _offset + ctx: Load + attr: str = __repr__ + ctx: Load + args: list + keywords: list + keywords: list + orelse: list + element: Return + value: Call + func: Attribute + value: Constant + value: str = datetime.timezone({}, {}) + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Call + func: Attribute + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _offset + ctx: Load + attr: str = __repr__ + ctx: Load + args: list + keywords: list + element: Call + func: Attribute + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _name + ctx: Load + attr: str = __repr__ + ctx: Load + args: list + keywords: list + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __str__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = tzname + ctx: Load + args: list + element: Constant + value: NoneType = None + kind: NoneType = None + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = utcoffset + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = dt + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: BoolOp + op: Or + values: list + element: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = dt + ctx: Load + element: Name + id: str = datetime + ctx: Load + keywords: list + element: Compare + left: Name + id: str = dt + ctx: Load + ops: list + element: Is + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Return + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _offset + ctx: Load + orelse: list + element: Raise + exc: Call + func: Name + id: str = TypeError + ctx: Load + args: list + element: Constant + value: str = utcoffset() argument must be a datetime instance or None + kind: NoneType = None + keywords: list + cause: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = tzname + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = dt + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: BoolOp + op: Or + values: list + element: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = dt + ctx: Load + element: Name + id: str = datetime + ctx: Load + keywords: list + element: Compare + left: Name + id: str = dt + ctx: Load + ops: list + element: Is + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: If + test: Compare + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _name + ctx: Load + ops: list + element: Is + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Return + value: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _name_from_offset + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _offset + ctx: Load + keywords: list + orelse: list + element: Return + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _name + ctx: Load + orelse: list + element: Raise + exc: Call + func: Name + id: str = TypeError + ctx: Load + args: list + element: Constant + value: str = tzname() argument must be a datetime instance or None + kind: NoneType = None + keywords: list + cause: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = dst + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = dt + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: BoolOp + op: Or + values: list + element: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = dt + ctx: Load + element: Name + id: str = datetime + ctx: Load + keywords: list + element: Compare + left: Name + id: str = dt + ctx: Load + ops: list + element: Is + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Return + value: Constant + value: NoneType = None + kind: NoneType = None + orelse: list + element: Raise + exc: Call + func: Name + id: str = TypeError + ctx: Load + args: list + element: Constant + value: str = dst() argument must be a datetime instance or None + kind: NoneType = None + keywords: list + cause: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = fromutc + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = dt + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = dt + ctx: Load + element: Name + id: str = datetime + ctx: Load + keywords: list + body: list + element: If + test: Compare + left: Attribute + value: Name + id: str = dt + ctx: Load + attr: str = tzinfo + ctx: Load + ops: list + element: IsNot + comparators: list + element: Name + id: str = self + ctx: Load + body: list + element: Raise + exc: Call + func: Name + id: str = ValueError + ctx: Load + args: list + element: Constant + value: str = fromutc: dt.tzinfo is not self + kind: NoneType = None + keywords: list + cause: NoneType = None + orelse: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = opov + kind: NoneType = None + keywords: list + element: Return + value: BinOp + left: Name + id: str = dt + ctx: Load + op: Add + right: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _offset + ctx: Load + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = noopov + kind: NoneType = None + keywords: list + orelse: list + element: Raise + exc: Call + func: Name + id: str = TypeError + ctx: Load + args: list + element: Constant + value: str = fromutc() argument must be a datetime instance or None + kind: NoneType = None + keywords: list + cause: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = _maxoffset + ctx: Store + value: Call + func: Name + id: str = timedelta + ctx: Load + args: list + keywords: list + element: keyword + arg: str = hours + value: Constant + value: int = 23 + kind: NoneType = None + element: keyword + arg: str = minutes + value: Constant + value: int = 59 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = opov + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = _minoffset + ctx: Store + value: UnaryOp + op: USub + operand: Call + func: Name + id: str = timedelta + ctx: Load + args: list + keywords: list + element: keyword + arg: str = hours + value: Constant + value: int = 23 + kind: NoneType = None + element: keyword + arg: str = minutes + value: Constant + value: int = 59 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = noopov + kind: NoneType = None + keywords: list + element: FunctionDef + name: str = _name_from_offset + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = delta + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = opov + kind: NoneType = None + keywords: list + element: If + test: Compare + left: Name + id: str = delta + ctx: Load + ops: list + element: Lt + comparators: list + element: Call + func: Name + id: str = timedelta + ctx: Load + args: list + element: Constant + value: int = 0 + kind: NoneType = None + keywords: list + body: list + element: Assign + targets: list + element: Name + id: str = sign + ctx: Store + value: Constant + value: str = - + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = delta + ctx: Store + value: UnaryOp + op: USub + operand: Name + id: str = delta + ctx: Load + type_comment: NoneType = None + orelse: list + element: Assign + targets: list + element: Name + id: str = sign + ctx: Store + value: Constant + value: str = + + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = hours + ctx: Store + element: Name + id: str = rest + ctx: Store + ctx: Store + value: Call + func: Name + id: str = divmod + ctx: Load + args: list + element: Name + id: str = delta + ctx: Load + element: Call + func: Name + id: str = timedelta + ctx: Load + args: list + keywords: list + element: keyword + arg: str = hours + value: Constant + value: int = 1 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = minutes + ctx: Store + value: BinOp + left: Name + id: str = rest + ctx: Load + op: FloorDiv + right: Call + func: Name + id: str = timedelta + ctx: Load + args: list + keywords: list + element: keyword + arg: str = minutes + value: Constant + value: int = 1 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = noopov + kind: NoneType = None + keywords: list + element: Return + value: Call + func: Attribute + value: Constant + value: str = UTC{}{}:{} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Name + id: str = sign + ctx: Load + element: Call + func: Name + id: str = zfill + ctx: Load + args: list + element: Name + id: str = hours + ctx: Load + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = zfill + ctx: Load + args: list + element: Name + id: str = minutes + ctx: Load + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + keywords: list + decorator_list: list + element: Name + id: str = staticmethod + ctx: Load + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: Assign + targets: list + element: Name + id: str = _tz_utc + ctx: Store + value: Call + func: Attribute + value: Name + id: str = timezone + ctx: Load + attr: str = _create + ctx: Load + args: list + element: Call + func: Name + id: str = timedelta + ctx: Load + args: list + element: Constant + value: int = 0 + kind: NoneType = None + keywords: list + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = _tz_min + ctx: Store + value: Call + func: Attribute + value: Name + id: str = timezone + ctx: Load + attr: str = _create + ctx: Load + args: list + element: Attribute + value: Name + id: str = timezone + ctx: Load + attr: str = _minoffset + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = _tz_max + ctx: Store + value: Call + func: Attribute + value: Name + id: str = timezone + ctx: Load + attr: str = _create + ctx: Load + args: list + element: Attribute + value: Name + id: str = timezone + ctx: Load + attr: str = _maxoffset + ctx: Load + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = js + kind: NoneType = None + element: Constant + value: str = {} + kind: NoneType = None + element: Constant + value: str = Object.defineProperty (timezone, 'utc', {get: function () {return _tz_utc;}}) + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = js + kind: NoneType = None + element: Constant + value: str = {} + kind: NoneType = None + element: Constant + value: str = Object.defineProperty (timezone, 'min', {get: function () {return _tz_min;}}) + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = js + kind: NoneType = None + element: Constant + value: str = {} + kind: NoneType = None + element: Constant + value: str = Object.defineProperty (timezone, 'max', {get: function () {return _tz_max;}}) + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = _EPOCH + ctx: Store + value: Call + func: Name + id: str = datetime + ctx: Load + args: list + element: Constant + value: int = 1970 + kind: NoneType = None + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 1 + kind: NoneType = None + keywords: list + element: keyword + arg: str = tzinfo + value: Attribute + value: Name + id: str = timezone + ctx: Load + attr: str = utc + ctx: Load + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/decorators.js b/transcrypt/development/automated_tests/transcrypt/__target__39/decorators.js new file mode 100644 index 000000000..b07b65909 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/decorators.js @@ -0,0 +1,179 @@ +// Transcrypt'ed from Python, 2021-05-14 15:01:26 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get run () {return run;}, set run (value) {run = value;}}); +var __name__ = 'decorators'; +export var run = function (autoTester) { + var repeat3 = function (bareFunc) { + var innerFunc = function () { + var kwargs = dict (); + if (arguments.length) { + var __ilastarg0__ = arguments.length - 1; + if (arguments [__ilastarg0__] && arguments [__ilastarg0__].hasOwnProperty ("__kwargtrans__")) { + var __allkwargs0__ = arguments [__ilastarg0__--]; + for (var __attrib0__ in __allkwargs0__) { + switch (__attrib0__) { + default: kwargs [__attrib0__] = __allkwargs0__ [__attrib0__]; + } + } + delete kwargs.__kwargtrans__; + } + var args = tuple ([].slice.apply (arguments).slice (0, __ilastarg0__ + 1)); + } + else { + var args = tuple (); + } + autoTester.check ('BEGIN repeat3'); + for (var i = 0; i < 3; i++) { + bareFunc (...args, __kwargtrans__ (kwargs)); + } + autoTester.check ('END repeat3'); + }; + return innerFunc; + }; + var repeatN = function (n) { + var repeat = function (bareFunc) { + var innerFunc = function () { + var kwargs = dict (); + if (arguments.length) { + var __ilastarg0__ = arguments.length - 1; + if (arguments [__ilastarg0__] && arguments [__ilastarg0__].hasOwnProperty ("__kwargtrans__")) { + var __allkwargs0__ = arguments [__ilastarg0__--]; + for (var __attrib0__ in __allkwargs0__) { + switch (__attrib0__) { + default: kwargs [__attrib0__] = __allkwargs0__ [__attrib0__]; + } + } + delete kwargs.__kwargtrans__; + } + var args = tuple ([].slice.apply (arguments).slice (0, __ilastarg0__ + 1)); + } + else { + var args = tuple (); + } + autoTester.check ('BEGIN repeatN ({})'.format (n)); + for (var i = 0; i < n; i++) { + bareFunc (...args, __kwargtrans__ (kwargs)); + } + autoTester.check ('END repeatN ({})'.format (n)); + }; + return innerFunc; + }; + return repeat; + }; + var Repeater = __class__ ('Repeater', [object], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self, n) { + self.n = n; + });}, + get __call__ () {return __get__ (this, function (self, bareFunc) { + var innerFunc = function () { + var kwargs = dict (); + if (arguments.length) { + var __ilastarg0__ = arguments.length - 1; + if (arguments [__ilastarg0__] && arguments [__ilastarg0__].hasOwnProperty ("__kwargtrans__")) { + var __allkwargs0__ = arguments [__ilastarg0__--]; + for (var __attrib0__ in __allkwargs0__) { + switch (__attrib0__) { + default: kwargs [__attrib0__] = __allkwargs0__ [__attrib0__]; + } + } + delete kwargs.__kwargtrans__; + } + var args = tuple ([].slice.apply (arguments).slice (0, __ilastarg0__ + 1)); + } + else { + var args = tuple (); + } + autoTester.check ('BEGIN repeat3'); + for (var i = 0; i < self.n; i++) { + bareFunc (...args, __kwargtrans__ (kwargs)); + } + autoTester.check ('END repeat3'); + }; + return innerFunc; + });} + }); + var funcNoArg = repeatN (4) (repeat3 (function () { + autoTester.check ('spam'); + })); + funcNoArg (); + autoTester.check (); + var funcArg = repeat3 (repeatN (2) (function (a) { + if (arguments.length) { + var __ilastarg0__ = arguments.length - 1; + if (arguments [__ilastarg0__] && arguments [__ilastarg0__].hasOwnProperty ("__kwargtrans__")) { + var __allkwargs0__ = arguments [__ilastarg0__--]; + for (var __attrib0__ in __allkwargs0__) { + switch (__attrib0__) { + case 'a': var a = __allkwargs0__ [__attrib0__]; break; + } + } + } + } + else { + } + autoTester.check ('eggs', a); + })); + funcArg (3); + autoTester.check (); + funcArg (__kwargtrans__ ({a: 4})); + autoTester.check (); + var funcNoArg2 = __call__ (__call__ (Repeater, null, 3), null, function () { + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, 'toast'); + }) (); + }); + funcNoArg2 (); + autoTester.check (); + var funcArg2 = __call__ (__call__ (Repeater, null, 5), null, function (a) { + if (arguments.length) { + var __ilastarg0__ = arguments.length - 1; + if (arguments [__ilastarg0__] && arguments [__ilastarg0__].hasOwnProperty ("__kwargtrans__")) { + var __allkwargs0__ = arguments [__ilastarg0__--]; + for (var __attrib0__ in __allkwargs0__) { + switch (__attrib0__) { + case 'a': var a = __allkwargs0__ [__attrib0__]; break; + } + } + } + } + else { + } + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, 'jam', a); + }) (); + }); + funcArg2 (3); + autoTester.check (); + funcArg2 (__kwargtrans__ ({a: 4})); + autoTester.check (); + var py_next = function (bareFunc) { + var innerFunc = function (value) { + return bareFunc (value + 1); + }; + return innerFunc; + }; + var Number = py_next ( __class__ ('Number', [object], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self, value) { + self.value = value; + });} + })); + autoTester.check ('two', Number (1).value); + var Test = __class__ ('Test', [object], { + __module__: __name__, + get f () {return __getcm__ (this, function (cls, x, y) { + autoTester.check (cls.__name__, x, y); + });}, + get g () {return __get__ (this, function (self, x, y) { + autoTester.check (self.__class__.__name__, x, y); + });} + }); + var test = Test (); + test.f (1, 2); + test.g (3, 4); +}; + +//# sourceMappingURL=decorators.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/decorators.tree b/transcrypt/development/automated_tests/transcrypt/__target__39/decorators.tree new file mode 100644 index 000000000..0d68f5cee --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/decorators.tree @@ -0,0 +1,1115 @@ +file: Module + body: list + element: ImportFrom + module: str = org.transcrypt.stubs.browser + names: list + element: alias + name: str = __pragma__ + asname: NoneType = None + level: int = 0 + element: FunctionDef + name: str = run + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = autoTester + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: FunctionDef + name: str = repeat3 + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = bareFunc + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = kwargs + kind: NoneType = None + keywords: list + element: FunctionDef + name: str = innerFunc + args: arguments + posonlyargs: list + args: list + vararg: arg + arg: str = args + annotation: NoneType = None + type_comment: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: arg + arg: str = kwargs + annotation: NoneType = None + type_comment: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = BEGIN repeat3 + kind: NoneType = None + keywords: list + element: For + target: Name + id: str = i + ctx: Store + iter: Call + func: Name + id: str = range + ctx: Load + args: list + element: Constant + value: int = 3 + kind: NoneType = None + keywords: list + body: list + element: Expr + value: Call + func: Name + id: str = bareFunc + ctx: Load + args: list + element: Starred + value: Name + id: str = args + ctx: Load + ctx: Load + keywords: list + element: keyword + arg: NoneType = None + value: Name + id: str = kwargs + ctx: Load + orelse: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = END repeat3 + kind: NoneType = None + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = nokwargs + kind: NoneType = None + keywords: list + element: Return + value: Name + id: str = innerFunc + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = repeatN + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = n + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: FunctionDef + name: str = repeat + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = bareFunc + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = kwargs + kind: NoneType = None + keywords: list + element: FunctionDef + name: str = innerFunc + args: arguments + posonlyargs: list + args: list + vararg: arg + arg: str = args + annotation: NoneType = None + type_comment: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: arg + arg: str = kwargs + annotation: NoneType = None + type_comment: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = BEGIN repeatN ({}) + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Name + id: str = n + ctx: Load + keywords: list + keywords: list + element: For + target: Name + id: str = i + ctx: Store + iter: Call + func: Name + id: str = range + ctx: Load + args: list + element: Name + id: str = n + ctx: Load + keywords: list + body: list + element: Expr + value: Call + func: Name + id: str = bareFunc + ctx: Load + args: list + element: Starred + value: Name + id: str = args + ctx: Load + ctx: Load + keywords: list + element: keyword + arg: NoneType = None + value: Name + id: str = kwargs + ctx: Load + orelse: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = END repeatN ({}) + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Name + id: str = n + ctx: Load + keywords: list + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = nokwargs + kind: NoneType = None + keywords: list + element: Return + value: Name + id: str = innerFunc + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Return + value: Name + id: str = repeat + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: ClassDef + name: str = Repeater + bases: list + keywords: list + body: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = n + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = n + ctx: Store + value: Name + id: str = n + ctx: Load + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __call__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = bareFunc + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = kwargs + kind: NoneType = None + keywords: list + element: FunctionDef + name: str = innerFunc + args: arguments + posonlyargs: list + args: list + vararg: arg + arg: str = args + annotation: NoneType = None + type_comment: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: arg + arg: str = kwargs + annotation: NoneType = None + type_comment: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = BEGIN repeat3 + kind: NoneType = None + keywords: list + element: For + target: Name + id: str = i + ctx: Store + iter: Call + func: Name + id: str = range + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = n + ctx: Load + keywords: list + body: list + element: Expr + value: Call + func: Name + id: str = bareFunc + ctx: Load + args: list + element: Starred + value: Name + id: str = args + ctx: Load + ctx: Load + keywords: list + element: keyword + arg: NoneType = None + value: Name + id: str = kwargs + ctx: Load + orelse: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = END repeat3 + kind: NoneType = None + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = nokwargs + kind: NoneType = None + keywords: list + element: Return + value: Name + id: str = innerFunc + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: FunctionDef + name: str = funcNoArg + args: arguments + posonlyargs: list + args: list + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = spam + kind: NoneType = None + keywords: list + decorator_list: list + element: Call + func: Name + id: str = repeatN + ctx: Load + args: list + element: Constant + value: int = 4 + kind: NoneType = None + keywords: list + element: Name + id: str = repeat3 + ctx: Load + returns: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = funcNoArg + ctx: Load + args: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = kwargs + kind: NoneType = None + keywords: list + element: FunctionDef + name: str = funcArg + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = a + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = eggs + kind: NoneType = None + element: Name + id: str = a + ctx: Load + keywords: list + decorator_list: list + element: Name + id: str = repeat3 + ctx: Load + element: Call + func: Name + id: str = repeatN + ctx: Load + args: list + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + returns: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = nokwargs + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Name + id: str = funcArg + ctx: Load + args: list + element: Constant + value: int = 3 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + keywords: list + element: Expr + value: Call + func: Name + id: str = funcArg + ctx: Load + args: list + keywords: list + element: keyword + arg: str = a + value: Constant + value: int = 4 + kind: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = opov + kind: NoneType = None + keywords: list + element: FunctionDef + name: str = funcNoArg2 + args: arguments + posonlyargs: list + args: list + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = toast + kind: NoneType = None + keywords: list + decorator_list: list + element: Call + func: Name + id: str = Repeater + ctx: Load + args: list + element: Constant + value: int = 3 + kind: NoneType = None + keywords: list + returns: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = noopov + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Name + id: str = funcNoArg2 + ctx: Load + args: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = opov + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = kwargs + kind: NoneType = None + keywords: list + element: FunctionDef + name: str = funcArg2 + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = a + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = jam + kind: NoneType = None + element: Name + id: str = a + ctx: Load + keywords: list + decorator_list: list + element: Call + func: Name + id: str = Repeater + ctx: Load + args: list + element: Constant + value: int = 5 + kind: NoneType = None + keywords: list + returns: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = nokwargs + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = noopov + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Name + id: str = funcArg2 + ctx: Load + args: list + element: Constant + value: int = 3 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + keywords: list + element: Expr + value: Call + func: Name + id: str = funcArg2 + ctx: Load + args: list + keywords: list + element: keyword + arg: str = a + value: Constant + value: int = 4 + kind: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + keywords: list + element: FunctionDef + name: str = next + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = bareFunc + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: FunctionDef + name: str = innerFunc + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = value + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Call + func: Name + id: str = bareFunc + ctx: Load + args: list + element: BinOp + left: Name + id: str = value + ctx: Load + op: Add + right: Constant + value: int = 1 + kind: NoneType = None + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Return + value: Name + id: str = innerFunc + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: ClassDef + name: str = Number + bases: list + keywords: list + body: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = value + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = value + ctx: Store + value: Name + id: str = value + ctx: Load + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: Name + id: str = next + ctx: Load + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = two + kind: NoneType = None + element: Attribute + value: Call + func: Name + id: str = Number + ctx: Load + args: list + element: Constant + value: int = 1 + kind: NoneType = None + keywords: list + attr: str = value + ctx: Load + keywords: list + element: ClassDef + name: str = Test + bases: list + keywords: list + body: list + element: FunctionDef + name: str = f + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = cls + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = y + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = cls + ctx: Load + attr: str = __name__ + ctx: Load + element: Name + id: str = x + ctx: Load + element: Name + id: str = y + ctx: Load + keywords: list + decorator_list: list + element: Name + id: str = classmethod + ctx: Load + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = g + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = y + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = __class__ + ctx: Load + attr: str = __name__ + ctx: Load + element: Name + id: str = x + ctx: Load + element: Name + id: str = y + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: Assign + targets: list + element: Name + id: str = test + ctx: Store + value: Call + func: Name + id: str = Test + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = f + ctx: Load + args: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = g + ctx: Load + args: list + element: Constant + value: int = 3 + kind: NoneType = None + element: Constant + value: int = 4 + kind: NoneType = None + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/dict_comprehensions.js b/transcrypt/development/automated_tests/transcrypt/__target__39/dict_comprehensions.js new file mode 100644 index 000000000..ebdcb53ba --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/dict_comprehensions.js @@ -0,0 +1,18 @@ +// Transcrypt'ed from Python, 2021-05-14 15:01:26 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get run () {return run;}, set run (value) {run = value;}}); +var __name__ = 'dict_comprehensions'; +export var run = function (autoTester) { + var original = dict ({'Isaac': 'Newton', 'Albert': 'Einstein', 'Paul': 'Dirac'}); + autoTester.check (original); + var inverted = (function () { + var __accu0__ = []; + for (var key of __i__ (original)) { + __accu0__.append ([, key]); + } + return dict (__accu0__); + }) (); + autoTester.check (inverted); +}; + +//# sourceMappingURL=dict_comprehensions.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/dict_comprehensions.tree b/transcrypt/development/automated_tests/transcrypt/__target__39/dict_comprehensions.tree new file mode 100644 index 000000000..274eda54f --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/dict_comprehensions.tree @@ -0,0 +1,119 @@ +file: Module + body: list + element: ImportFrom + module: str = org.transcrypt.stubs.browser + names: list + element: alias + name: str = __pragma__ + asname: NoneType = None + level: int = 0 + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = iconv + kind: NoneType = None + keywords: list + element: FunctionDef + name: str = run + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = autoTester + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Name + id: str = original + ctx: Store + value: Dict + keys: list + element: Constant + value: str = Isaac + kind: NoneType = None + element: Constant + value: str = Albert + kind: NoneType = None + element: Constant + value: str = Paul + kind: NoneType = None + values: list + element: Constant + value: str = Newton + kind: NoneType = None + element: Constant + value: str = Einstein + kind: NoneType = None + element: Constant + value: str = Dirac + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = original + ctx: Load + keywords: list + element: Assign + targets: list + element: Name + id: str = inverted + ctx: Store + value: DictComp + key: Subscript + value: Name + id: str = original + ctx: Load + slice: Name + id: str = key + ctx: Load + ctx: Load + value: Name + id: str = key + ctx: Load + generators: list + element: comprehension + target: Name + id: str = key + ctx: Store + iter: Name + id: str = original + ctx: Load + ifs: list + is_async: int = 0 + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = inverted + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/dictionaries.js b/transcrypt/development/automated_tests/transcrypt/__target__39/dictionaries.js new file mode 100644 index 000000000..b4cbe6040 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/dictionaries.js @@ -0,0 +1,92 @@ +// Transcrypt'ed from Python, 2021-05-14 15:01:26 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get run () {return run;}, set run (value) {run = value;}}); +var __name__ = 'dictionaries'; +export var run = function (autoTester) { + var tel = dict ({'guido': 4127, 'jack': 4098}); + autoTester.check (len (tel)); + autoTester.check (tel); + autoTester.check (); + delete ; + autoTester.check (tel); + autoTester.check (sorted (list (tel.py_keys ())), false); + autoTester.check (sorted (tel.py_keys ())); + autoTester.check (__in__ ('guido', tel)); + autoTester.check (!__in__ ('jack', tel)); + autoTester.check (dict ([tuple (['guido', 4127]), tuple (['jack', 4098]), tuple (['sape', 4139])])); + autoTester.check (autoTester.expectException ((function __lambda__ () { + return dict (1); + }))); + autoTester.check (autoTester.expectException ((function __lambda__ () { + return dict (134.34); + }))); + autoTester.check (autoTester.expectException ((function __lambda__ () { + return dict ('asdf'); + }))); + autoTester.check (autoTester.expectException ((function __lambda__ () { + return dict (['1234', 1]); + }))); + autoTester.check (dict ([])); + autoTester.check (dict (dict ({}))); + autoTester.check (dict (dict ({'asdf': 1, 'qwer': 2}))); + var b = dict ({'a': 2.01, 'b': -(3.3)}); + var d = dict (b); + autoTester.check (d); + var b = dict ({'a': 2, 'b': [1, 2, 3]}); + var d = dict (b); + autoTester.check (d); + var b = dict ({'a': null, 'b': set ([1, 2, 3])}); + var d = dict (b); + autoTester.check (d); + var b = dict ({'a': dict ({'c': 2}), 'b': tuple ([1, 2])}); + var d = dict (b); + autoTester.check (d); + autoTester.check (); + autoTester.check (d.py_get ('a').py_get ('c')); + autoTester.check (b.py_get ('a').py_get ('c')); + autoTester.check (d.py_get ('a').py_get ('c')); + autoTester.check (b.py_get ('a').py_get ('c')); + var knights = dict ({'robin': 'the brave', 'gallahad': 'the pure'}); + for (var [k, v] of __i__ (sorted (knights.py_items ()))) { + autoTester.check (k, v); + } + if (__in__ ('gallahad', knights)) { + autoTester.check ('gallahad is a knight'); + } + for (var k of __i__ (sorted (knights))) { + autoTester.check (k); + } + var knight = dict ({'rudolph': 'the righteous'}); + for (var k of __i__ (knight)) { + autoTester.check (k); + } + var tel = dict ({'guido': 123}); + tel.py_update (dict ({'edsger': 42})); + autoTester.check (tel.py_setdefault ('linus', 456)); + autoTester.check (); + autoTester.check (tel.py_setdefault ('guido', 789)); + autoTester.check (tel.py_pop ('guido', 1)); + autoTester.check (tel.py_pop ('guido', 1)); + autoTester.check (tel.py_pop ('edsger', 2)); + autoTester.check (tel.py_pop ('foo', 'bar')); + autoTester.check (tel.py_pop ('foo', null)); + var d = dict ({}); + autoTester.check (, ); + var d = dict ({}); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, , ); + }) (); + var knights = dict ({'robin': 'the brave', 'gallahad': 'the pure'}); + autoTester.check (autoTester.expectException ((function __lambda__ () { + return knights.py_pop ('batman'); + }))); + autoTester.check (autoTester.expectException ((function __lambda__ () { + return knights.py_pop ('batman', null); + }))); + autoTester.check (autoTester.expectException ((function __lambda__ () { + return knights.py_pop ('batman', 'the gullible'); + }))); +}; + +//# sourceMappingURL=dictionaries.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/dictionaries.tree b/transcrypt/development/automated_tests/transcrypt/__target__39/dictionaries.tree new file mode 100644 index 000000000..b65840880 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/dictionaries.tree @@ -0,0 +1,1630 @@ +file: Module + body: list + element: ImportFrom + module: str = org.transcrypt.stubs.browser + names: list + element: alias + name: str = __pragma__ + asname: NoneType = None + level: int = 0 + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = iconv + kind: NoneType = None + keywords: list + element: FunctionDef + name: str = run + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = autoTester + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Name + id: str = tel + ctx: Store + value: Dict + keys: list + element: Constant + value: str = guido + kind: NoneType = None + element: Constant + value: str = jack + kind: NoneType = None + values: list + element: Constant + value: int = 4127 + kind: NoneType = None + element: Constant + value: int = 4098 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = len + ctx: Load + args: list + element: Name + id: str = tel + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Subscript + value: Name + id: str = tel + ctx: Load + slice: Constant + value: str = sape + kind: NoneType = None + ctx: Store + value: Constant + value: int = 4139 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = tel + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Subscript + value: Name + id: str = tel + ctx: Load + slice: Constant + value: str = jack + kind: NoneType = None + ctx: Load + keywords: list + element: Delete + targets: list + element: Subscript + value: Name + id: str = tel + ctx: Load + slice: Constant + value: str = sape + kind: NoneType = None + ctx: Del + element: Assign + targets: list + element: Subscript + value: Name + id: str = tel + ctx: Load + slice: Constant + value: str = irv + kind: NoneType = None + ctx: Store + value: Constant + value: int = 4127 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = tel + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = sorted + ctx: Load + args: list + element: Call + func: Name + id: str = list + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = tel + ctx: Load + attr: str = keys + ctx: Load + args: list + keywords: list + keywords: list + keywords: list + element: Constant + value: bool = False + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = sorted + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = tel + ctx: Load + attr: str = keys + ctx: Load + args: list + keywords: list + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Constant + value: str = guido + kind: NoneType = None + ops: list + element: In + comparators: list + element: Name + id: str = tel + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Constant + value: str = jack + kind: NoneType = None + ops: list + element: NotIn + comparators: list + element: Name + id: str = tel + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = dict + ctx: Load + args: list + element: List + elts: list + element: Tuple + elts: list + element: Constant + value: str = guido + kind: NoneType = None + element: Constant + value: int = 4127 + kind: NoneType = None + ctx: Load + element: Tuple + elts: list + element: Constant + value: str = jack + kind: NoneType = None + element: Constant + value: int = 4098 + kind: NoneType = None + ctx: Load + element: Tuple + elts: list + element: Constant + value: str = sape + kind: NoneType = None + element: Constant + value: int = 4139 + kind: NoneType = None + ctx: Load + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = expectException + ctx: Load + args: list + element: Lambda + args: arguments + posonlyargs: list + args: list + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: Call + func: Name + id: str = dict + ctx: Load + args: list + element: Constant + value: int = 1 + kind: NoneType = None + keywords: list + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = expectException + ctx: Load + args: list + element: Lambda + args: arguments + posonlyargs: list + args: list + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: Call + func: Name + id: str = dict + ctx: Load + args: list + element: Constant + value: float = 134.34 + kind: NoneType = None + keywords: list + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = expectException + ctx: Load + args: list + element: Lambda + args: arguments + posonlyargs: list + args: list + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: Call + func: Name + id: str = dict + ctx: Load + args: list + element: Constant + value: str = asdf + kind: NoneType = None + keywords: list + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = expectException + ctx: Load + args: list + element: Lambda + args: arguments + posonlyargs: list + args: list + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: Call + func: Name + id: str = dict + ctx: Load + args: list + element: List + elts: list + element: Constant + value: str = 1234 + kind: NoneType = None + element: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + keywords: list + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = dict + ctx: Load + args: list + element: List + elts: list + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = dict + ctx: Load + args: list + element: Dict + keys: list + values: list + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = dict + ctx: Load + args: list + element: Dict + keys: list + element: Constant + value: str = asdf + kind: NoneType = None + element: Constant + value: str = qwer + kind: NoneType = None + values: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = b + ctx: Store + value: Dict + keys: list + element: Constant + value: str = a + kind: NoneType = None + element: Constant + value: str = b + kind: NoneType = None + values: list + element: Constant + value: float = 2.01 + kind: NoneType = None + element: UnaryOp + op: USub + operand: Constant + value: float = 3.3 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = d + ctx: Store + value: Call + func: Name + id: str = dict + ctx: Load + args: list + element: Name + id: str = b + ctx: Load + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = d + ctx: Load + keywords: list + element: Assign + targets: list + element: Name + id: str = b + ctx: Store + value: Dict + keys: list + element: Constant + value: str = a + kind: NoneType = None + element: Constant + value: str = b + kind: NoneType = None + values: list + element: Constant + value: int = 2 + kind: NoneType = None + element: List + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = d + ctx: Store + value: Call + func: Name + id: str = dict + ctx: Load + args: list + element: Name + id: str = b + ctx: Load + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = d + ctx: Load + keywords: list + element: Assign + targets: list + element: Name + id: str = b + ctx: Store + value: Dict + keys: list + element: Constant + value: str = a + kind: NoneType = None + element: Constant + value: str = b + kind: NoneType = None + values: list + element: Constant + value: NoneType = None + kind: NoneType = None + element: Call + func: Name + id: str = set + ctx: Load + args: list + element: List + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = d + ctx: Store + value: Call + func: Name + id: str = dict + ctx: Load + args: list + element: Name + id: str = b + ctx: Load + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = d + ctx: Load + keywords: list + element: Assign + targets: list + element: Name + id: str = b + ctx: Store + value: Dict + keys: list + element: Constant + value: str = a + kind: NoneType = None + element: Constant + value: str = b + kind: NoneType = None + values: list + element: Dict + keys: list + element: Constant + value: str = c + kind: NoneType = None + values: list + element: Constant + value: int = 2 + kind: NoneType = None + element: Tuple + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = d + ctx: Store + value: Call + func: Name + id: str = dict + ctx: Load + args: list + element: Name + id: str = b + ctx: Load + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = d + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Subscript + value: Subscript + value: Name + id: str = d + ctx: Load + slice: Constant + value: str = a + kind: NoneType = None + ctx: Load + slice: Constant + value: str = c + kind: NoneType = None + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Call + func: Attribute + value: Name + id: str = d + ctx: Load + attr: str = get + ctx: Load + args: list + element: Constant + value: str = a + kind: NoneType = None + keywords: list + attr: str = get + ctx: Load + args: list + element: Constant + value: str = c + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Call + func: Attribute + value: Name + id: str = b + ctx: Load + attr: str = get + ctx: Load + args: list + element: Constant + value: str = a + kind: NoneType = None + keywords: list + attr: str = get + ctx: Load + args: list + element: Constant + value: str = c + kind: NoneType = None + keywords: list + keywords: list + element: Assign + targets: list + element: Subscript + value: Subscript + value: Name + id: str = d + ctx: Load + slice: Constant + value: str = a + kind: NoneType = None + ctx: Load + slice: Constant + value: str = c + kind: NoneType = None + ctx: Store + value: Constant + value: int = 3 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Call + func: Attribute + value: Name + id: str = d + ctx: Load + attr: str = get + ctx: Load + args: list + element: Constant + value: str = a + kind: NoneType = None + keywords: list + attr: str = get + ctx: Load + args: list + element: Constant + value: str = c + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Call + func: Attribute + value: Name + id: str = b + ctx: Load + attr: str = get + ctx: Load + args: list + element: Constant + value: str = a + kind: NoneType = None + keywords: list + attr: str = get + ctx: Load + args: list + element: Constant + value: str = c + kind: NoneType = None + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = knights + ctx: Store + value: Dict + keys: list + element: Constant + value: str = robin + kind: NoneType = None + element: Constant + value: str = gallahad + kind: NoneType = None + values: list + element: Constant + value: str = the brave + kind: NoneType = None + element: Constant + value: str = the pure + kind: NoneType = None + type_comment: NoneType = None + element: For + target: Tuple + elts: list + element: Name + id: str = k + ctx: Store + element: Name + id: str = v + ctx: Store + ctx: Store + iter: Call + func: Name + id: str = sorted + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = knights + ctx: Load + attr: str = items + ctx: Load + args: list + keywords: list + keywords: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = k + ctx: Load + element: Name + id: str = v + ctx: Load + keywords: list + orelse: list + type_comment: NoneType = None + element: If + test: Compare + left: Constant + value: str = gallahad + kind: NoneType = None + ops: list + element: In + comparators: list + element: Name + id: str = knights + ctx: Load + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = gallahad is a knight + kind: NoneType = None + keywords: list + orelse: list + element: For + target: Name + id: str = k + ctx: Store + iter: Call + func: Name + id: str = sorted + ctx: Load + args: list + element: Name + id: str = knights + ctx: Load + keywords: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = k + ctx: Load + keywords: list + orelse: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = knight + ctx: Store + value: Dict + keys: list + element: Constant + value: str = rudolph + kind: NoneType = None + values: list + element: Constant + value: str = the righteous + kind: NoneType = None + type_comment: NoneType = None + element: For + target: Name + id: str = k + ctx: Store + iter: Name + id: str = knight + ctx: Load + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = k + ctx: Load + keywords: list + orelse: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = tel + ctx: Store + value: Dict + keys: list + element: Constant + value: str = guido + kind: NoneType = None + values: list + element: Constant + value: int = 123 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = tel + ctx: Load + attr: str = update + ctx: Load + args: list + element: Dict + keys: list + element: Constant + value: str = edsger + kind: NoneType = None + values: list + element: Constant + value: int = 42 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = tel + ctx: Load + attr: str = setdefault + ctx: Load + args: list + element: Constant + value: str = linus + kind: NoneType = None + element: Constant + value: int = 456 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Subscript + value: Name + id: str = tel + ctx: Load + slice: Constant + value: str = linus + kind: NoneType = None + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = tel + ctx: Load + attr: str = setdefault + ctx: Load + args: list + element: Constant + value: str = guido + kind: NoneType = None + element: Constant + value: int = 789 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = tel + ctx: Load + attr: str = pop + ctx: Load + args: list + element: Constant + value: str = guido + kind: NoneType = None + element: Constant + value: int = 1 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = tel + ctx: Load + attr: str = pop + ctx: Load + args: list + element: Constant + value: str = guido + kind: NoneType = None + element: Constant + value: int = 1 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = tel + ctx: Load + attr: str = pop + ctx: Load + args: list + element: Constant + value: str = edsger + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = tel + ctx: Load + attr: str = pop + ctx: Load + args: list + element: Constant + value: str = foo + kind: NoneType = None + element: Constant + value: str = bar + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = tel + ctx: Load + attr: str = pop + ctx: Load + args: list + element: Constant + value: str = foo + kind: NoneType = None + element: Constant + value: NoneType = None + kind: NoneType = None + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = d + ctx: Store + value: Dict + keys: list + values: list + type_comment: NoneType = None + element: Assign + targets: list + element: Subscript + value: Name + id: str = d + ctx: Load + slice: Constant + value: str = a + kind: NoneType = None + ctx: Store + value: Constant + value: int = 3777 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Subscript + value: Name + id: str = d + ctx: Load + slice: Tuple + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + ctx: Load + ctx: Store + value: Constant + value: int = 4777 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Subscript + value: Name + id: str = d + ctx: Load + slice: Constant + value: str = a + kind: NoneType = None + ctx: Load + element: Subscript + value: Name + id: str = d + ctx: Load + slice: Tuple + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + ctx: Load + ctx: Load + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = opov + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = d + ctx: Store + value: Dict + keys: list + values: list + type_comment: NoneType = None + element: Assign + targets: list + element: Subscript + value: Name + id: str = d + ctx: Load + slice: Constant + value: str = a + kind: NoneType = None + ctx: Store + value: Constant + value: int = 3777 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Subscript + value: Name + id: str = d + ctx: Load + slice: Tuple + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + ctx: Load + ctx: Store + value: Constant + value: int = 4777 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Subscript + value: Name + id: str = d + ctx: Load + slice: Constant + value: str = a + kind: NoneType = None + ctx: Load + element: Subscript + value: Name + id: str = d + ctx: Load + slice: Tuple + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + ctx: Load + ctx: Load + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = noopov + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = knights + ctx: Store + value: Dict + keys: list + element: Constant + value: str = robin + kind: NoneType = None + element: Constant + value: str = gallahad + kind: NoneType = None + values: list + element: Constant + value: str = the brave + kind: NoneType = None + element: Constant + value: str = the pure + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = expectException + ctx: Load + args: list + element: Lambda + args: arguments + posonlyargs: list + args: list + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: Call + func: Attribute + value: Name + id: str = knights + ctx: Load + attr: str = pop + ctx: Load + args: list + element: Constant + value: str = batman + kind: NoneType = None + keywords: list + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = expectException + ctx: Load + args: list + element: Lambda + args: arguments + posonlyargs: list + args: list + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: Call + func: Attribute + value: Name + id: str = knights + ctx: Load + attr: str = pop + ctx: Load + args: list + element: Constant + value: str = batman + kind: NoneType = None + element: Constant + value: NoneType = None + kind: NoneType = None + keywords: list + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = expectException + ctx: Load + args: list + element: Lambda + args: arguments + posonlyargs: list + args: list + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: Call + func: Attribute + value: Name + id: str = knights + ctx: Load + attr: str = pop + ctx: Load + args: list + element: Constant + value: str = batman + kind: NoneType = None + element: Constant + value: str = the gullible + kind: NoneType = None + keywords: list + keywords: list + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/div_issues.issue387.js b/transcrypt/development/automated_tests/transcrypt/__target__39/div_issues.issue387.js new file mode 100644 index 000000000..a29da21eb --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/div_issues.issue387.js @@ -0,0 +1,21 @@ +// Transcrypt'ed from Python, 2021-05-14 15:01:26 +var div_issues = {}; +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +import * as __module_div_issues_issue387_test1_test2__ from './div_issues.issue387.test1.test2.js'; +__nest__ (div_issues, 'issue387.test1.test2', __module_div_issues_issue387_test1_test2__); +import * as __module_div_issues_issue387_test1__ from './div_issues.issue387.test1.js'; +__nest__ (div_issues, 'issue387.test1', __module_div_issues_issue387_test1__); +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get run387 () {return run387;}, set run387 (value) {run387 = value;}}); +var __name__ = 'div_issues.issue387'; +export var run387 = function (autoTester) { + autoTester.check (div_issues.issue387.test1.getReport ()); + autoTester.check ('From test: ', div_issues.issue387.test1.test2.C.__module__); + autoTester.check (__name__); + var D = __class__ ('D', [object], { + __module__: __name__, + }); + autoTester.check ('From test:', D.__module__); + autoTester.check (D.__name__); +}; + +//# sourceMappingURL=div_issues.issue387.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/div_issues.issue387.test1.js b/transcrypt/development/automated_tests/transcrypt/__target__39/div_issues.issue387.test1.js new file mode 100644 index 000000000..e7c45f821 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/div_issues.issue387.test1.js @@ -0,0 +1,12 @@ +// Transcrypt'ed from Python, 2021-05-14 15:01:26 +var div_issues = {}; +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +import * as __module_div_issues_issue387_test1_test2__ from './div_issues.issue387.test1.test2.js'; +__nest__ (div_issues, 'issue387.test1.test2', __module_div_issues_issue387_test1_test2__); +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get getReport () {return getReport;}, set getReport (value) {getReport = value;}}); +var __name__ = 'div_issues.issue387.test1'; +export var getReport = function () { + return 'From test1: {}'.format (div_issues.issue387.test1.test2.C.__module__); +}; + +//# sourceMappingURL=div_issues.issue387.test1.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/div_issues.issue387.test1.test2.js b/transcrypt/development/automated_tests/transcrypt/__target__39/div_issues.issue387.test1.test2.js new file mode 100644 index 000000000..cf8bbda6f --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/div_issues.issue387.test1.test2.js @@ -0,0 +1,17 @@ +// Transcrypt'ed from Python, 2021-05-14 15:01:26 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +var __all__ = dict ({get C () {return C;}, set C (value) {C = value;}, get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get c () {return c;}, set c (value) {c = value;}}); +var __name__ = 'div_issues.issue387.test1.test2'; +export var C = __class__ ('C', [object], { + __module__: __name__, + get f () {return __get__ (this, function (self) { + var g = function () { + // pass; + }; + return 0; + });} +}); +export var c = C (); +c.f (); + +//# sourceMappingURL=div_issues.issue387.test1.test2.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/div_issues.issue387.test1.test2.tree b/transcrypt/development/automated_tests/transcrypt/__target__39/div_issues.issue387.test1.test2.tree new file mode 100644 index 000000000..be1d071c2 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/div_issues.issue387.test1.test2.tree @@ -0,0 +1,68 @@ +file: Module + body: list + element: ClassDef + name: str = C + bases: list + keywords: list + body: list + element: FunctionDef + name: str = f + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: FunctionDef + name: str = g + args: arguments + posonlyargs: list + args: list + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Pass + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Return + value: Constant + value: int = 0 + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: Assign + targets: list + element: Name + id: str = c + ctx: Store + value: Call + func: Name + id: str = C + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = c + ctx: Load + attr: str = f + ctx: Load + args: list + keywords: list + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/div_issues.issue387.test1.tree b/transcrypt/development/automated_tests/transcrypt/__target__39/div_issues.issue387.test1.tree new file mode 100644 index 000000000..11a7d1c08 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/div_issues.issue387.test1.tree @@ -0,0 +1,50 @@ +file: Module + body: list + element: Import + names: list + element: alias + name: str = div_issues.issue387.test1.test2 + asname: NoneType = None + element: FunctionDef + name: str = getReport + args: arguments + posonlyargs: list + args: list + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Call + func: Attribute + value: Constant + value: str = From test1: {} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Attribute + value: Attribute + value: Attribute + value: Attribute + value: Attribute + value: Name + id: str = div_issues + ctx: Load + attr: str = issue387 + ctx: Load + attr: str = test1 + ctx: Load + attr: str = test2 + ctx: Load + attr: str = C + ctx: Load + attr: str = __module__ + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/div_issues.issue387.tree b/transcrypt/development/automated_tests/transcrypt/__target__39/div_issues.issue387.tree new file mode 100644 index 000000000..5f72a1003 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/div_issues.issue387.tree @@ -0,0 +1,142 @@ +file: Module + body: list + element: Import + names: list + element: alias + name: str = div_issues.issue387.test1 + asname: NoneType = None + element: Import + names: list + element: alias + name: str = div_issues.issue387.test1.test2 + asname: NoneType = None + element: FunctionDef + name: str = run387 + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = autoTester + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Attribute + value: Attribute + value: Name + id: str = div_issues + ctx: Load + attr: str = issue387 + ctx: Load + attr: str = test1 + ctx: Load + attr: str = getReport + ctx: Load + args: list + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = From test: + kind: NoneType = None + element: Attribute + value: Attribute + value: Attribute + value: Attribute + value: Attribute + value: Name + id: str = div_issues + ctx: Load + attr: str = issue387 + ctx: Load + attr: str = test1 + ctx: Load + attr: str = test2 + ctx: Load + attr: str = C + ctx: Load + attr: str = __module__ + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = __name__ + ctx: Load + keywords: list + element: ClassDef + name: str = D + bases: list + keywords: list + body: list + element: Pass + decorator_list: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = From test: + kind: NoneType = None + element: Attribute + value: Name + id: str = D + ctx: Load + attr: str = __module__ + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = D + ctx: Load + attr: str = __name__ + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/div_issues.issue55.a.js b/transcrypt/development/automated_tests/transcrypt/__target__39/div_issues.issue55.a.js new file mode 100644 index 000000000..dbf75dd6e --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/div_issues.issue55.a.js @@ -0,0 +1,9 @@ +// Transcrypt'ed from Python, 2021-05-14 15:01:26 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get f1 () {return f1;}, set f1 (value) {f1 = value;}}); +var __name__ = 'div_issues.issue55.a'; +export var f1 = function () { + return 'f1'; +}; + +//# sourceMappingURL=div_issues.issue55.a.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/div_issues.issue55.a.tree b/transcrypt/development/automated_tests/transcrypt/__target__39/div_issues.issue55.a.tree new file mode 100644 index 000000000..7d8b68aac --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/div_issues.issue55.a.tree @@ -0,0 +1,21 @@ +file: Module + body: list + element: FunctionDef + name: str = f1 + args: arguments + posonlyargs: list + args: list + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Constant + value: str = f1 + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/div_issues.issue55.js b/transcrypt/development/automated_tests/transcrypt/__target__39/div_issues.issue55.js new file mode 100644 index 000000000..ca5bd2cac --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/div_issues.issue55.js @@ -0,0 +1,11 @@ +// Transcrypt'ed from Python, 2021-05-14 15:01:26 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +import {x as y} from './div_issues.issue55.sub3.js'; +import {aB, anA} from './div_issues.issue55.sub2.js'; +import {p, q, r} from './div_issues.issue55.sub1.js'; +import {f1} from './div_issues.issue55.a.js'; +export {y, q, f1, r, aB, anA, p}; +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}}); +var __name__ = 'div_issues.issue55'; + +//# sourceMappingURL=div_issues.issue55.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/div_issues.issue55.sub1.js b/transcrypt/development/automated_tests/transcrypt/__target__39/div_issues.issue55.sub1.js new file mode 100644 index 000000000..b09a73bd1 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/div_issues.issue55.sub1.js @@ -0,0 +1,9 @@ +// Transcrypt'ed from Python, 2021-05-14 15:01:26 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get p () {return p;}, set p (value) {p = value;}, get q () {return q;}, set q (value) {q = value;}, get r () {return r;}, set r (value) {r = value;}}); +var __name__ = 'div_issues.issue55.sub1'; +export var p = 'p'; +export var q = 'q'; +export var r = 'r'; + +//# sourceMappingURL=div_issues.issue55.sub1.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/div_issues.issue55.sub1.tree b/transcrypt/development/automated_tests/transcrypt/__target__39/div_issues.issue55.sub1.tree new file mode 100644 index 000000000..b06546261 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/div_issues.issue55.sub1.tree @@ -0,0 +1,30 @@ +file: Module + body: list + element: Assign + targets: list + element: Name + id: str = p + ctx: Store + value: Constant + value: str = p + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = q + ctx: Store + value: Constant + value: str = q + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = r + ctx: Store + value: Constant + value: str = r + kind: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/div_issues.issue55.sub2.js b/transcrypt/development/automated_tests/transcrypt/__target__39/div_issues.issue55.sub2.js new file mode 100644 index 000000000..3dbcaca4b --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/div_issues.issue55.sub2.js @@ -0,0 +1,8 @@ +// Transcrypt'ed from Python, 2021-05-14 15:01:26 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get aB () {return aB;}, set aB (value) {aB = value;}, get anA () {return anA;}, set anA (value) {anA = value;}}); +var __name__ = 'div_issues.issue55.sub2'; +export var anA = 'a'; +export var aB = 'b'; + +//# sourceMappingURL=div_issues.issue55.sub2.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/div_issues.issue55.sub2.tree b/transcrypt/development/automated_tests/transcrypt/__target__39/div_issues.issue55.sub2.tree new file mode 100644 index 000000000..3623685c1 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/div_issues.issue55.sub2.tree @@ -0,0 +1,21 @@ +file: Module + body: list + element: Assign + targets: list + element: Name + id: str = anA + ctx: Store + value: Constant + value: str = a + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = aB + ctx: Store + value: Constant + value: str = b + kind: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/div_issues.issue55.sub3.js b/transcrypt/development/automated_tests/transcrypt/__target__39/div_issues.issue55.sub3.js new file mode 100644 index 000000000..e6bb092ad --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/div_issues.issue55.sub3.js @@ -0,0 +1,7 @@ +// Transcrypt'ed from Python, 2021-05-14 15:01:26 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get x () {return x;}, set x (value) {x = value;}}); +var __name__ = 'div_issues.issue55.sub3'; +export var x = 'x'; + +//# sourceMappingURL=div_issues.issue55.sub3.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/div_issues.issue55.sub3.tree b/transcrypt/development/automated_tests/transcrypt/__target__39/div_issues.issue55.sub3.tree new file mode 100644 index 000000000..db82b2801 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/div_issues.issue55.sub3.tree @@ -0,0 +1,12 @@ +file: Module + body: list + element: Assign + targets: list + element: Name + id: str = x + ctx: Store + value: Constant + value: str = x + kind: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/div_issues.issue55.tree b/transcrypt/development/automated_tests/transcrypt/__target__39/div_issues.issue55.tree new file mode 100644 index 000000000..f6d0e2e22 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/div_issues.issue55.tree @@ -0,0 +1,41 @@ +file: Module + body: list + element: Expr + value: Constant + value: str = +This sub-testlet only tests for error-free compilation. +It doesn't produce any output that's back to back checked with CPython output. + + kind: NoneType = None + element: ImportFrom + module: str = div_issues.issue55.a + names: list + element: alias + name: str = f1 + asname: NoneType = None + level: int = 0 + element: ImportFrom + module: str = div_issues.issue55.sub1 + names: list + element: alias + name: str = * + asname: NoneType = None + level: int = 0 + element: ImportFrom + module: str = div_issues.issue55.sub2 + names: list + element: alias + name: str = anA + asname: NoneType = None + element: alias + name: str = aB + asname: NoneType = None + level: int = 0 + element: ImportFrom + module: str = div_issues.issue55.sub3 + names: list + element: alias + name: str = x + asname: str = y + level: int = 0 + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/div_issues.issue559.js b/transcrypt/development/automated_tests/transcrypt/__target__39/div_issues.issue559.js new file mode 100644 index 000000000..a07f80faa --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/div_issues.issue559.js @@ -0,0 +1,13 @@ +// Transcrypt'ed from Python, 2021-05-14 15:01:26 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +import * as mylib from './div_issues.issue559.mylib.js'; +export {mylib}; +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get run559 () {return run559;}, set run559 (value) {run559 = value;}}); +var __name__ = 'div_issues.issue559'; +export var run559 = function (autoTester) { + mylib.mylibHello (autoTester); + var cl = mylib.mylibClass (autoTester); + cl.checkSymbols (); +}; + +//# sourceMappingURL=div_issues.issue559.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/div_issues.issue559.mylib.js b/transcrypt/development/automated_tests/transcrypt/__target__39/div_issues.issue559.mylib.js new file mode 100644 index 000000000..5d5d81a01 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/div_issues.issue559.mylib.js @@ -0,0 +1,8 @@ +// Transcrypt'ed from Python, 2021-05-14 15:01:26 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +import {mylibClass, mylibHello} from './div_issues.issue559.mylib.mylib.js'; +export {mylibClass, mylibHello}; +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}}); +var __name__ = 'div_issues.issue559.mylib'; + +//# sourceMappingURL=div_issues.issue559.mylib.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/div_issues.issue559.mylib.mylib.js b/transcrypt/development/automated_tests/transcrypt/__target__39/div_issues.issue559.mylib.mylib.js new file mode 100644 index 000000000..61e605fcc --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/div_issues.issue559.mylib.mylib.js @@ -0,0 +1,27 @@ +// Transcrypt'ed from Python, 2021-05-14 15:01:26 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get mylibClass () {return mylibClass;}, set mylibClass (value) {mylibClass = value;}, get mylibHello () {return mylibHello;}, set mylibHello (value) {mylibHello = value;}}); +var __name__ = 'div_issues.issue559.mylib.mylib'; +export var mylibHello = function (autoTester) { + autoTester.check ('Hello World Function'); +}; +export var mylibClass = __class__ ('mylibClass', [object], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self, autoTester) { + self.autoTester = autoTester; + self.autoTester.check ('Hello World Class'); + });}, + get checkSymbols () {return __get__ (this, function (self) { + self.autoTester.check (sorted ((function () { + var __accu0__ = []; + for (var x of __i__ (__all__)) { + if (x.startswith ('my')) { + __accu0__.append (x); + } + } + return __accu0__; + }) ())); + });} +}); + +//# sourceMappingURL=div_issues.issue559.mylib.mylib.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/div_issues.issue559.mylib.mylib.tree b/transcrypt/development/automated_tests/transcrypt/__target__39/div_issues.issue559.mylib.mylib.tree new file mode 100644 index 000000000..ff5955d6d --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/div_issues.issue559.mylib.mylib.tree @@ -0,0 +1,176 @@ +file: Module + body: list + element: FunctionDef + name: str = mylibHello + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = autoTester + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Hello World Function + kind: NoneType = None + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: ClassDef + name: str = mylibClass + bases: list + keywords: list + body: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = autoTester + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = autoTester + ctx: Store + value: Name + id: str = autoTester + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Hello World Class + kind: NoneType = None + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = checkSymbols + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = iconv + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = sorted + ctx: Load + args: list + element: ListComp + elt: Name + id: str = x + ctx: Load + generators: list + element: comprehension + target: Name + id: str = x + ctx: Store + iter: Call + func: Name + id: str = globals + ctx: Load + args: list + keywords: list + ifs: list + element: Call + func: Attribute + value: Name + id: str = x + ctx: Load + attr: str = startswith + ctx: Load + args: list + element: Constant + value: str = my + kind: NoneType = None + keywords: list + is_async: int = 0 + keywords: list + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = noiconv + kind: NoneType = None + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/div_issues.issue559.mylib.tree b/transcrypt/development/automated_tests/transcrypt/__target__39/div_issues.issue559.mylib.tree new file mode 100644 index 000000000..07e34bda0 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/div_issues.issue559.mylib.tree @@ -0,0 +1,10 @@ +file: Module + body: list + element: ImportFrom + module: str = div_issues.issue559.mylib.mylib + names: list + element: alias + name: str = * + asname: NoneType = None + level: int = 0 + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/div_issues.issue559.tree b/transcrypt/development/automated_tests/transcrypt/__target__39/div_issues.issue559.tree new file mode 100644 index 000000000..25f86881b --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/div_issues.issue559.tree @@ -0,0 +1,79 @@ +file: Module + body: list + element: Import + names: list + element: alias + name: str = div_issues.issue559.mylib + asname: str = mylib + element: Expr + value: Constant + value: str = +There are two ways to make a module re-export everything imported: + +1. Name it __init__.py +2. Compile the whole application that it's part of, with the -xr / --xreex switch + +In this case, mylib deliberately has been given the role of the module with the reexporting __init__.py, +although this file has the same name and does the same thing. + + kind: NoneType = None + element: FunctionDef + name: str = run559 + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = autoTester + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = mylib + ctx: Load + attr: str = mylibHello + ctx: Load + args: list + element: Name + id: str = autoTester + ctx: Load + keywords: list + element: Assign + targets: list + element: Name + id: str = cl + ctx: Store + value: Call + func: Attribute + value: Name + id: str = mylib + ctx: Load + attr: str = mylibClass + ctx: Load + args: list + element: Name + id: str = autoTester + ctx: Load + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = cl + ctx: Load + attr: str = checkSymbols + ctx: Load + args: list + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/div_issues.js b/transcrypt/development/automated_tests/transcrypt/__target__39/div_issues.js new file mode 100644 index 000000000..037f32f51 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/div_issues.js @@ -0,0 +1,679 @@ +// Transcrypt'ed from Python, 2021-05-14 15:01:25 +var re = {}; +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +import * as __module_re__ from './re.js'; +__nest__ (re, '', __module_re__); +import {run559} from './div_issues.issue559.js'; +import {run387} from './div_issues.issue387.js'; +import {aB, anA, f1, p, q, r, y} from './div_issues.issue55.js'; +export {q, y, f1, r, aB, run387, anA, p, run559}; +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get run () {return run;}, set run (value) {run = value;}}); +var __name__ = 'div_issues'; +export var run = function (autoTester) { + autoTester.check ('Issue 24'); + var py_switch = false; + autoTester.check (py_switch); + autoTester.check ('Issue 27'); + autoTester.check (['zero', 'one', 'two', 'three', 'four'].index ('three')); + autoTester.check ('Issue 36'); + var results = []; + for (var i = 0; i < 10; i++) { + results.append ((function __lambda__ (j) { + return (function __lambda__ () { + return j; + }); + }) (i)); + } + autoTester.check ((function () { + var __accu0__ = []; + for (var result of results) { + __accu0__.append (result ()); + } + return __accu0__; + }) ()); + autoTester.check ('Issue 37'); + autoTester.check (Math.floor (15 / 7)); + autoTester.check ('Issue 40'); + autoTester.check (65 / (5 * 2)); + autoTester.check ('Issue 50'); + autoTester.check ((Math.floor (((240 + 30) - 1) / 30)) * 30); + autoTester.check ('Issue 51'); + var a = 1; + var b = 1; + autoTester.check (a, b, new set ([a, b]) == new set ([1, 2])); + autoTester.check ('Issue 52'); + var __left0__ = tuple (['switch', 'case', 'default']); + var py_switch = __left0__ [0]; + var py_case = __left0__ [1]; + var py_default = __left0__ [2]; + autoTester.check (py_switch, py_case, py_default); + autoTester.check ('Issue 54'); + var aDict = dict ({1: 11, 2: 22, 3: 33}); + autoTester.check (aDict); + aDict.py_clear (); + autoTester.check (aDict); + autoTester.check ('Issue 60'); + var three = 3; + var one = three & 1; + var seven = three | 4; + var eight = one << 3; + var four = eight >> 1; + var aTrue = bool (three & one); + var aFalse = bool (three & four); + autoTester.check (3, three, 1, one, 7, seven, 8, eight, 4, four, true, aTrue, false, aFalse); + autoTester.check ('Issue 65'); + var aList = [4, 5, 6]; + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __add__ (__add__ ([1, 2, 3], aList), [4, 5, 6])); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __mul__ (3, [1, 2, 3])); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __mul__ ([1, 2, 3], 3)); + }) (); + var aString = 'Crocodile'; + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __add__ (__add__ ('Tiger', aString), 'Elephant')); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __mul__ (3, aString)); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __mul__ (aString, 3)); + }) (); + autoTester.check ('Issue 76'); + var initially17 = 17; + autoTester.check (initially17); + var initially17 = Math.floor (initially17 / 2); + autoTester.check (initially17); + var initially17 = Math.floor (initially17 / 2); + autoTester.check (initially17); + autoTester.check ('Issue 112'); + try { + if (__envir__.executor_name == __envir__.transpiler_name) { + var x = new Int8Array (2); + } + else { + var x = [null, null]; + } + for (var i of x) { + autoTester.check (i); + } + var y = 3; + for (var j of y) { + autoTester.check (j); + } + } + catch (__except0__) { + // pass; + } + autoTester.check ('Issue 122'); + var chunks = function* (aList, chunkLength) { + for (var index of range (0, len (aList), chunkLength)) { + yield aList.__getslice__ (index, index + chunkLength, 1); + } + }; + for (var chunk of chunks ((function () { + var __accu0__ = []; + for (var index = 0; index < 26; index++) { + __accu0__.append (chr (index + 97)); + } + return __accu0__; + }) (), 10)) { + autoTester.check (chunk); + } + autoTester.check ('Issue 123'); + autoTester.check (__mod__ (10, 3), __mod__ (10, -(3)), __mod__ (-(10), 3), __mod__ (-(10), -(3)), __mod__ (10, 10), __mod__ (10, -(10)), __mod__ (-(10), 10), __mod__ (-(10), -(10))); + autoTester.check ('Issue 125'); + var abc = 'abc'; + for (var index of abc) { + autoTester.check (abc); + } + autoTester.check ('Issue 127'); + autoTester.check (dict ({'include_docs': 'true', 'keys': ['key1', 'key2'], 'limit': 50})); + autoTester.check ('Issue 134'); + var __left0__ = tuple ([5, 12, -(5), -(5), 0, 0]); + var x0 = __left0__ [0]; + var x1 = __left0__ [1]; + var x2 = __left0__ [2]; + var x3 = __left0__ [3]; + var x4 = __left0__ [4]; + var x5 = __left0__ [5]; + var x0 = __mod__ (x0, 10); + var x1 = __mod__ (x1, 5); + var x2 = __mod__ (x2, 2); + var x3 = __mod__ (x3, -(3)); + var x4 = __mod__ (x4, 1); + var x5 = __mod__ (x5, -(1000)); + autoTester.check (x0, x1, x2, x3, x4); + autoTester.check ('Issue 136'); + var aDict = dict ({'a': 'ape', 'b': 'banana'}); + autoTester.check (aDict.py_get ('a', 'noApe'), aDict.py_get ('b'), aDict.py_get ('c', 'noCarot'), aDict.py_get ('d')); + autoTester.check ('Issue 144'); + var aList = (function () { + var __accu0__ = []; + var __iterable0__ = [1, 2, 3]; + for (var __index0__ = 0; __index0__ < len (__iterable0__); __index0__++) { + var x = ; + (function () { + var __accu1__ = __accu0__; + return __call__ (__accu1__.append, __accu1__, x); + }) (); + } + return __accu0__; + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, aList); + }) (); + autoTester.check ('

Issue 145
'); + var SortTest = __class__ ('SortTest', [object], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self) { + self.alphabet = 'abcdefghijklmnopqrstuvwxyz'; + self.nChars = 10; + self.nCols = 10; + self.nRows = 30; + self.pseudoRandom = 0; + var randomWord = function () { + var word = ''; + for (var iChar = 0; iChar < self.nChars; iChar++) { + self.pseudoRandom = __mod__ (81212 * self.pseudoRandom + 28411, 134456); + word += ; + } + return word; + }; + self.rows = (function () { + var __accu0__ = []; + for (var iRow = 0; iRow < self.nRows; iRow++) { + __accu0__.append ((function () { + var __accu1__ = []; + for (var iCol = 0; iCol < self.nCols; iCol++) { + __accu1__.append (randomWord ()); + } + return __accu1__; + }) ()); + } + return __accu0__; + }) (); + });}, + get py_sort () {return __get__ (this, function (self) { + for (var iCol of py_reversed (range (self.nCols))) { + self.rows.py_sort (__kwargtrans__ ({key: (function __lambda__ (row) { + return ; + })})); + } + });} + }); + var sortTest = SortTest (); + autoTester.check ('
Unsorted:
'); + for (var row of sortTest.rows) { + autoTester.check ('{}
'.format (','.join ((function () { + var __accu0__ = []; + for (var word of row) { + __accu0__.append (word); + } + return __accu0__; + }) ()))); + } + sortTest.py_sort (); + autoTester.check ('
Sorted:
'); + for (var row of sortTest.rows) { + autoTester.check ('{}
'.format (','.join ((function () { + var __accu0__ = []; + for (var word of row) { + __accu0__.append (word); + } + return __accu0__; + }) ()))); + } + autoTester.check ('

Issue 148
'); + var aDict = dict ({'items': [4, 5, 6]}); + for (var [aKey, aValue] of aDict.py_items ()) { + autoTester.check ('{}: {}'.format (aKey, aValue)); + } + autoTester.check ('

Issue 169
'); + autoTester.check (int (1 / float ('inf')), int (1 / float ('-inf'))); + autoTester.check ('

Issue 178
'); + var bitmaps = [tuple ([2, '']), tuple ([4, '']), tuple ([8, 'i']), tuple ([16, 'm']), tuple ([32, 'y']), tuple ([64, 'u']), tuple ([128, 'g'])]; + for (var flags of tuple ([122, 233, 11, 55, 79, 201, 23, 111, 200, 100, 50, 25, 12, 6])) { + autoTester.check (''.join ((function () { + var __accu0__ = []; + for (var x of bitmaps) { + if (( & flags) > 0) { + __accu0__.append (); + } + } + return __accu0__; + }) ())); + } + var issue256 = function () { + autoTester.check ('Issue 256'); + var C = __class__ ('C', [object], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self, value) { + self.value = value; + });} + }); + var f1 = function (value) { + return (C (value).value || 'second').capitalize () == 'First'; + }; + var f2 = function (value) { + return (C (value).value || 'second').capitalize () == 'Second'; + }; + var f3 = function (value) { + return C (value).value || 'second'; + }; + var f4 = function (value) { + return C (value).value || 'second'; + }; + autoTester.check (f1 ('first')); + autoTester.check (f1 ('')); + autoTester.check (f2 ('first')); + autoTester.check (f2 ('')); + autoTester.check (f3 ('first')); + autoTester.check (f4 ('')); + }; + issue256 (); + autoTester.check ('Issue 274'); + var a = 3; + autoTester.check ('Still alive'); + autoTester.check ('Issue 276'); + var a = 2; + var b = Math.pow (a, 3); + var a = Math.pow (a, 4); + autoTester.check (a, b); + autoTester.check ('Issue 277'); + var py_new = 3; + autoTester.check (py_new); + autoTester.check ('Issue 279'); + var A = __class__ ('A', [object], { + __module__: __name__, + py_TypeError: 111, + TypeError: 222 + }); + autoTester.check (A.py_TypeError, A.TypeError); + autoTester.check ('Still alive'); + autoTester.check ('Issue 301'); + var filter_word = function (word0, word1) { + if (len (word0) != len (word1)) { + return false; + } + for (var [char0, char1] of zip (word0, word1)) { + if (char0 != '_' && char0 != char1) { + return false; + } + } + return true; + }; + autoTester.check (filter_word ('bee', 'beer')); + autoTester.check (filter_word ('wine', 'wine')); + autoTester.check (filter_word ('win_', 'wind')); + autoTester.check (filter_word ('_in_', 'kind')); + autoTester.check (filter_word ('min_', 'kind')); + autoTester.check ('Issue 306'); + var dict_306 = dict ({'Abraham': 'Lincoln', 'Barack': "O'Bama", 'Thomas': 'Jefferson'}); + var results = []; + try { + while (true) { + results.append (dict_306.py_popitem ()); + } + } + catch (__except0__) { + if (isinstance (__except0__, Exception)) { + var exception = __except0__; + autoTester.check (sorted (results)); + autoTester.check ("That's it"); + } + else { + throw __except0__; + } + } + autoTester.check ('Issue 314'); + try { + autoTester.check (int (float (123))); + } + catch (__except0__) { + autoTester.check ('a'); + } + try { + autoTester.check (float (12.3)); + } + catch (__except0__) { + autoTester.check ('b'); + } + try { + autoTester.check (int (float ('123'))); + } + catch (__except0__) { + autoTester.check ('c'); + } + try { + autoTester.check (int (float (' 123'))); + } + catch (__except0__) { + autoTester.check ('d'); + } + try { + autoTester.check (float ('')); + } + catch (__except0__) { + autoTester.check ('e'); + } + try { + autoTester.check (float (' ')); + } + catch (__except0__) { + autoTester.check ('f'); + } + try { + autoTester.check (float ('drie')); + } + catch (__except0__) { + autoTester.check ('g'); + } + autoTester.check ('Issue 316'); + autoTester.check (list (filter (null, [[1, 2], [3], [], [4, 5], [6]]))); + autoTester.check (list (filter ((function __lambda__ (l) { + return len (l) >= 2; + }), [[1, 2], [3], [], [4, 5], [6]]))); + autoTester.check ('Issue 317'); + var mylist = []; + try { + mylist.remove ('value'); + } + catch (__except0__) { + if (isinstance (__except0__, ValueError)) { + var exception = __except0__; + autoTester.check (exception.__class__.__name__); + } + else { + throw __except0__; + } + } + autoTester.check ('Issue 331'); + autoTester.check (max (-(5), 4, 1, 2, -(3), 2)); + autoTester.check (max ([-(5), 4, 1, 2, -(3), 2])); + autoTester.check (max (tuple ([5, 6, 2, -(2), -(4)]))); + autoTester.check (min (-(5), 4, 1, 2, -(3), 2)); + autoTester.check (min ([-(5), 4, 1, 2, -(3), 2])); + autoTester.check (min (tuple ([5, 6, 2, -(2), -(4)]))); + autoTester.check ('issue 356'); + try { + var __except0__ = py_TypeError ('How are you?'); + __except0__.__cause__ = null; + throw __except0__; + } + catch (__except0__) { + if (isinstance (__except0__, py_TypeError)) { + var exception = __except0__; + autoTester.check (exception); + } + else { + throw __except0__; + } + } + autoTester.check ('Issue 369'); + var Vector = __class__ ('Vector', [object], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self) { + var py_values = tuple ([].slice.apply (arguments).slice (1)); + self.py_values = py_values; + });}, + get __iter__ () {return __get__ (this, function* (self) { + for (var item of self.py_values) { + yield item; + } + });}, + [Symbol.iterator] () {return this.__iter__ ()}, + get __add__ () {return __get__ (this, function (self, other) { + return Vector (...(function () { + var __accu0__ = []; + for (var [x, y] of zip (self, other)) { + __accu0__.append (x + y); + } + return py_iter (__accu0__); + }) ()); + });}, + get __str__ () {return __get__ (this, function (self) { + return str (list (self.py_values)); + });} + }); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __call__ (str, null, __add__ (__call__ (Vector, null, 1, 2, 3), __call__ (Vector, null, 3, 4, 5)))); + }) (); + autoTester.check ('Issue 387'); + run387 (autoTester); + autoTester.check ('Issue 391'); + autoTester.check (int (false)); + autoTester.check (int (true)); + autoTester.check (int (1 == 2)); + autoTester.check (int (1 != 2)); + autoTester.check ('Issue 392'); + var Example = __class__ ('Example', [object], { + __module__: __name__, + d: dict ({'A': 1, 'B': 2}), + rec: re.compile ('(?P\\d+)', re.ASCII), + get run () {return __get__ (this, function (self) { + var match = self.rec.match ('42'); + if (!(match)) { + print ('ERROR: RE does not match'); + } + var e = match.groupdict (); + autoTester.check ('before: self.d=', self.d); + autoTester.check ('before: e=', e); + self.d.py_update (e); + autoTester.check ('after: self.d=', self.d); + });} + }); + var example = Example (); + example.run (); + autoTester.check ('Issue 398'); + var Test398 = __class__ ('Test398', [object], { + __module__: __name__, + }); + var test398 = Test398 (); + autoTester.check ('Issue 399'); + try { + var surpressWarning = ; + var surpressWarning = ; + autoTester.check ('no problem'); + } + catch (__except0__) { + if (isinstance (__except0__, KeyError)) { + autoTester.check ('not found'); + } + else { + throw __except0__; + } + } + autoTester.check ('Issue 413'); + var Foo = __class__ ('Foo', [object], { + __module__: __name__, + get __len__ () {return __get__ (this, function (self) { + return 3; + });}, + get __getitem__ () {return __get__ (this, function (self, i) { + if (i >= 3) { + var __except0__ = IndexError; + __except0__.__cause__ = null; + throw __except0__; + } + return 'This is item ' + str (i); + });} + }); + var foo = Foo (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, 'Attempt 1:'); + }) (); + var __iterable0__ = foo; + for (var __index0__ = 0; __index0__ < len (__iterable0__); __index0__++) { + var i = ; + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, i); + }) (); + } + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, 'Attempt 2:'); + }) (); + for (var i = 0; i < __call__ (len, null, foo); i++) { + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, ); + }) (); + } + autoTester.check ('Issue 414'); + var Foo = __class__ ('Foo', [object], { + __module__: __name__, + }); + var foo = Foo (); + foo.bar = 'baz'; + foo.py_name = 'hello'; + foo.py_default = 'world'; + autoTester.check ((function () { + var __accu0__ = []; + for (var x of dir (foo)) { + if (!(x.startswith ('__'))) { + __accu0__.append (x); + } + } + return __accu0__; + }) ()); + var foo = function () { + var kwargs = dict (); + if (arguments.length) { + var __ilastarg0__ = arguments.length - 1; + if (arguments [__ilastarg0__] && arguments [__ilastarg0__].hasOwnProperty ("__kwargtrans__")) { + var __allkwargs0__ = arguments [__ilastarg0__--]; + for (var __attrib0__ in __allkwargs0__) { + switch (__attrib0__) { + default: kwargs [__attrib0__] = __allkwargs0__ [__attrib0__]; + } + } + delete kwargs.__kwargtrans__; + } + var args = tuple ([].slice.apply (arguments).slice (0, __ilastarg0__ + 1)); + } + else { + var args = tuple (); + } + var py_default = kwargs.py_get ('default', 'bar'); + return py_default; + }; + autoTester.check (foo ()); + autoTester.check (foo (__kwargtrans__ ({py_default: 'Hello World'}))); + autoTester.check ('Issue 460'); + var s460 = 'car'; + var l460 = [11, 22, 33]; + var t460 = tuple ([4, 5, 6]); + var d460 = dict ([[-(1), 'mmminusOne'], ['b', 'bbbike']]); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, , , , , , ); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, , , , , , ); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, , , , , , ); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, , ); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, , , , , , ); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, , , , , , ); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, , , , , , ); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, , ); + }) (); + try { + autoTester.check (, ); + } + catch (__except0__) { + autoTester.check (111); + } + try { + autoTester.check (, ); + } + catch (__except0__) { + autoTester.check (222); + } + var a = [1, 2, 3]; + var b = [4, 5, 6]; + var c = '1,2,34,5,6'; + if (__envir__.executor_name == __envir__.transpiler_name) { + autoTester.check (a + b); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __add__ (a, b)); + }) (); + autoTester.check (a + b); + } + else { + autoTester.check (c); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __add__ (a, b)); + }) (); + autoTester.check (c); + } + if (__eq__ (__envir__.executor_name, __envir__.transpiler_name)) { + autoTester.check (a + b); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __add__ (a, b)); + }) (); + autoTester.check (a + b); + } + else { + autoTester.check (c); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __add__ (a, b)); + }) (); + autoTester.check (c); + } + autoTester.check ('Issue 494'); + var a = 1; + autoTester.check ('a={}'.format (a)); + var a = null; + autoTester.check ('a={}'.format (a)); + autoTester.check ('Issue 515'); + autoTester.check ('a: {}; b: {}'.format (null, 1)); + autoTester.check ('a: {}; b: {}'.format (1, null)); + autoTester.check ('a: {0}; b: {1}'.format (1, null)); + autoTester.check ('a: {0}; b: {1}'.format (1, [])); + autoTester.check ('a: {}; b: {}'.format (1, [])); + autoTester.check ('a: {0}; b: {1}'.format (1, dict ({}))); + autoTester.check ('a: {}; b: {}'.format (1, dict ({}))); + autoTester.check ('a: {0}; b: {1}'.format (1, 0)); + autoTester.check ('a: {}; b: {}'.format (1, 0)); + autoTester.check ('Issue 559'); + run559 (autoTester); +}; + +//# sourceMappingURL=div_issues.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/div_issues.tree b/transcrypt/development/automated_tests/transcrypt/__target__39/div_issues.tree new file mode 100644 index 000000000..3c3b15b03 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/div_issues.tree @@ -0,0 +1,7159 @@ +file: Module + body: list + element: ImportFrom + module: str = org.transcrypt.stubs.browser + names: list + element: alias + name: str = __pragma__ + asname: NoneType = None + element: alias + name: str = __new__ + asname: NoneType = None + element: alias + name: str = __envir__ + asname: NoneType = None + element: alias + name: str = __symbols__ + asname: NoneType = None + level: int = 0 + element: ImportFrom + module: str = div_issues.issue55 + names: list + element: alias + name: str = * + asname: NoneType = None + level: int = 0 + element: ImportFrom + module: str = div_issues.issue387 + names: list + element: alias + name: str = run387 + asname: NoneType = None + level: int = 0 + element: ImportFrom + module: str = div_issues.issue559 + names: list + element: alias + name: str = run559 + asname: NoneType = None + level: int = 0 + element: Import + names: list + element: alias + name: str = re + asname: NoneType = None + element: FunctionDef + name: str = run + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = autoTester + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Issue 24 + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = switch + ctx: Store + value: Constant + value: bool = False + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = switch + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Issue 27 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: List + elts: list + element: Constant + value: str = zero + kind: NoneType = None + element: Constant + value: str = one + kind: NoneType = None + element: Constant + value: str = two + kind: NoneType = None + element: Constant + value: str = three + kind: NoneType = None + element: Constant + value: str = four + kind: NoneType = None + ctx: Load + attr: str = index + ctx: Load + args: list + element: Constant + value: str = three + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Issue 36 + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = results + ctx: Store + value: List + elts: list + ctx: Load + type_comment: NoneType = None + element: For + target: Name + id: str = i + ctx: Store + iter: Call + func: Name + id: str = range + ctx: Load + args: list + element: Constant + value: int = 10 + kind: NoneType = None + keywords: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = results + ctx: Load + attr: str = append + ctx: Load + args: list + element: Call + func: Lambda + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = j + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: Lambda + args: arguments + posonlyargs: list + args: list + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: Name + id: str = j + ctx: Load + args: list + element: Name + id: str = i + ctx: Load + keywords: list + keywords: list + orelse: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: ListComp + elt: Call + func: Name + id: str = result + ctx: Load + args: list + keywords: list + generators: list + element: comprehension + target: Name + id: str = result + ctx: Store + iter: Name + id: str = results + ctx: Load + ifs: list + is_async: int = 0 + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Issue 37 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BinOp + left: Constant + value: int = 15 + kind: NoneType = None + op: FloorDiv + right: Constant + value: int = 7 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Issue 40 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BinOp + left: Constant + value: int = 65 + kind: NoneType = None + op: Div + right: BinOp + left: Constant + value: int = 5 + kind: NoneType = None + op: Mult + right: Constant + value: int = 2 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Issue 50 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BinOp + left: BinOp + left: BinOp + left: BinOp + left: Constant + value: int = 240 + kind: NoneType = None + op: Add + right: Constant + value: int = 30 + kind: NoneType = None + op: Sub + right: Constant + value: int = 1 + kind: NoneType = None + op: FloorDiv + right: Constant + value: int = 30 + kind: NoneType = None + op: Mult + right: Constant + value: int = 30 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Issue 51 + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = a + ctx: Store + value: Constant + value: int = 1 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = b + ctx: Store + value: Constant + value: int = 1 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = a + ctx: Load + element: Name + id: str = b + ctx: Load + element: Compare + left: Set + elts: list + element: Name + id: str = a + ctx: Load + element: Name + id: str = b + ctx: Load + ops: list + element: Eq + comparators: list + element: Set + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Issue 52 + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = switch + ctx: Store + element: Name + id: str = case + ctx: Store + element: Name + id: str = default + ctx: Store + ctx: Store + value: Tuple + elts: list + element: Constant + value: str = switch + kind: NoneType = None + element: Constant + value: str = case + kind: NoneType = None + element: Constant + value: str = default + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = switch + ctx: Load + element: Name + id: str = case + ctx: Load + element: Name + id: str = default + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Issue 54 + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = aDict + ctx: Store + value: Dict + keys: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + values: list + element: Constant + value: int = 11 + kind: NoneType = None + element: Constant + value: int = 22 + kind: NoneType = None + element: Constant + value: int = 33 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = aDict + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = aDict + ctx: Load + attr: str = clear + ctx: Load + args: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = aDict + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Issue 60 + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = three + ctx: Store + value: Constant + value: int = 3 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = one + ctx: Store + value: BinOp + left: Name + id: str = three + ctx: Load + op: BitAnd + right: Constant + value: int = 1 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = seven + ctx: Store + value: BinOp + left: Name + id: str = three + ctx: Load + op: BitOr + right: Constant + value: int = 4 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = eight + ctx: Store + value: BinOp + left: Name + id: str = one + ctx: Load + op: LShift + right: Constant + value: int = 3 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = four + ctx: Store + value: BinOp + left: Name + id: str = eight + ctx: Load + op: RShift + right: Constant + value: int = 1 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = aTrue + ctx: Store + value: Call + func: Name + id: str = bool + ctx: Load + args: list + element: BinOp + left: Name + id: str = three + ctx: Load + op: BitAnd + right: Name + id: str = one + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = aFalse + ctx: Store + value: Call + func: Name + id: str = bool + ctx: Load + args: list + element: BinOp + left: Name + id: str = three + ctx: Load + op: BitAnd + right: Name + id: str = four + ctx: Load + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: int = 3 + kind: NoneType = None + element: Name + id: str = three + ctx: Load + element: Constant + value: int = 1 + kind: NoneType = None + element: Name + id: str = one + ctx: Load + element: Constant + value: int = 7 + kind: NoneType = None + element: Name + id: str = seven + ctx: Load + element: Constant + value: int = 8 + kind: NoneType = None + element: Name + id: str = eight + ctx: Load + element: Constant + value: int = 4 + kind: NoneType = None + element: Name + id: str = four + ctx: Load + element: Constant + value: bool = True + kind: NoneType = None + element: Name + id: str = aTrue + ctx: Load + element: Constant + value: bool = False + kind: NoneType = None + element: Name + id: str = aFalse + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Issue 65 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = opov + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = aList + ctx: Store + value: List + elts: list + element: Constant + value: int = 4 + kind: NoneType = None + element: Constant + value: int = 5 + kind: NoneType = None + element: Constant + value: int = 6 + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BinOp + left: BinOp + left: List + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + op: Add + right: Name + id: str = aList + ctx: Load + op: Add + right: List + elts: list + element: Constant + value: int = 4 + kind: NoneType = None + element: Constant + value: int = 5 + kind: NoneType = None + element: Constant + value: int = 6 + kind: NoneType = None + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BinOp + left: Constant + value: int = 3 + kind: NoneType = None + op: Mult + right: List + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BinOp + left: List + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + op: Mult + right: Constant + value: int = 3 + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = aString + ctx: Store + value: Constant + value: str = Crocodile + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BinOp + left: BinOp + left: Constant + value: str = Tiger + kind: NoneType = None + op: Add + right: Name + id: str = aString + ctx: Load + op: Add + right: Constant + value: str = Elephant + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BinOp + left: Constant + value: int = 3 + kind: NoneType = None + op: Mult + right: Name + id: str = aString + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BinOp + left: Name + id: str = aString + ctx: Load + op: Mult + right: Constant + value: int = 3 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = noopov + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Issue 76 + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = initially17 + ctx: Store + value: Constant + value: int = 17 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = initially17 + ctx: Load + keywords: list + element: AugAssign + target: Name + id: str = initially17 + ctx: Store + op: FloorDiv + value: Constant + value: int = 2 + kind: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = initially17 + ctx: Load + keywords: list + element: AugAssign + target: Name + id: str = initially17 + ctx: Store + op: FloorDiv + value: Constant + value: int = 2 + kind: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = initially17 + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Issue 112 + kind: NoneType = None + keywords: list + element: Try + body: list + element: If + test: Compare + left: Attribute + value: Name + id: str = __envir__ + ctx: Load + attr: str = executor_name + ctx: Load + ops: list + element: Eq + comparators: list + element: Attribute + value: Name + id: str = __envir__ + ctx: Load + attr: str = transpiler_name + ctx: Load + body: list + element: Assign + targets: list + element: Name + id: str = x + ctx: Store + value: Call + func: Name + id: str = __new__ + ctx: Load + args: list + element: Call + func: Name + id: str = Int8Array + ctx: Load + args: list + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + keywords: list + type_comment: NoneType = None + orelse: list + element: Assign + targets: list + element: Name + id: str = x + ctx: Store + value: List + elts: list + element: Constant + value: NoneType = None + kind: NoneType = None + element: Constant + value: NoneType = None + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Subscript + value: Name + id: str = x + ctx: Load + slice: Constant + value: int = 0 + kind: NoneType = None + ctx: Store + value: Constant + value: int = 3 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Subscript + value: Name + id: str = x + ctx: Load + slice: Constant + value: int = 1 + kind: NoneType = None + ctx: Store + value: Constant + value: int = 2 + kind: NoneType = None + type_comment: NoneType = None + element: For + target: Name + id: str = i + ctx: Store + iter: Name + id: str = x + ctx: Load + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = i + ctx: Load + keywords: list + orelse: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = y + ctx: Store + value: Constant + value: int = 3 + kind: NoneType = None + type_comment: NoneType = None + element: For + target: Name + id: str = j + ctx: Store + iter: Name + id: str = y + ctx: Load + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = j + ctx: Load + keywords: list + orelse: list + type_comment: NoneType = None + handlers: list + element: ExceptHandler + type: NoneType = None + name: NoneType = None + body: list + element: Pass + orelse: list + finalbody: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Issue 122 + kind: NoneType = None + keywords: list + element: FunctionDef + name: str = chunks + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = aList + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = chunkLength + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: For + target: Name + id: str = index + ctx: Store + iter: Call + func: Name + id: str = range + ctx: Load + args: list + element: Constant + value: int = 0 + kind: NoneType = None + element: Call + func: Name + id: str = len + ctx: Load + args: list + element: Name + id: str = aList + ctx: Load + keywords: list + element: Name + id: str = chunkLength + ctx: Load + keywords: list + body: list + element: Expr + value: Yield + value: Subscript + value: Name + id: str = aList + ctx: Load + slice: Slice + lower: Name + id: str = index + ctx: Load + upper: BinOp + left: Name + id: str = index + ctx: Load + op: Add + right: Name + id: str = chunkLength + ctx: Load + step: NoneType = None + ctx: Load + orelse: list + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: For + target: Name + id: str = chunk + ctx: Store + iter: Call + func: Name + id: str = chunks + ctx: Load + args: list + element: ListComp + elt: Call + func: Name + id: str = chr + ctx: Load + args: list + element: BinOp + left: Name + id: str = index + ctx: Load + op: Add + right: Constant + value: int = 97 + kind: NoneType = None + keywords: list + generators: list + element: comprehension + target: Name + id: str = index + ctx: Store + iter: Call + func: Name + id: str = range + ctx: Load + args: list + element: Constant + value: int = 26 + kind: NoneType = None + keywords: list + ifs: list + is_async: int = 0 + element: Constant + value: int = 10 + kind: NoneType = None + keywords: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = chunk + ctx: Load + keywords: list + orelse: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Issue 123 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BinOp + left: Constant + value: int = 10 + kind: NoneType = None + op: Mod + right: Constant + value: int = 3 + kind: NoneType = None + element: BinOp + left: Constant + value: int = 10 + kind: NoneType = None + op: Mod + right: UnaryOp + op: USub + operand: Constant + value: int = 3 + kind: NoneType = None + element: BinOp + left: UnaryOp + op: USub + operand: Constant + value: int = 10 + kind: NoneType = None + op: Mod + right: Constant + value: int = 3 + kind: NoneType = None + element: BinOp + left: UnaryOp + op: USub + operand: Constant + value: int = 10 + kind: NoneType = None + op: Mod + right: UnaryOp + op: USub + operand: Constant + value: int = 3 + kind: NoneType = None + element: BinOp + left: Constant + value: int = 10 + kind: NoneType = None + op: Mod + right: Constant + value: int = 10 + kind: NoneType = None + element: BinOp + left: Constant + value: int = 10 + kind: NoneType = None + op: Mod + right: UnaryOp + op: USub + operand: Constant + value: int = 10 + kind: NoneType = None + element: BinOp + left: UnaryOp + op: USub + operand: Constant + value: int = 10 + kind: NoneType = None + op: Mod + right: Constant + value: int = 10 + kind: NoneType = None + element: BinOp + left: UnaryOp + op: USub + operand: Constant + value: int = 10 + kind: NoneType = None + op: Mod + right: UnaryOp + op: USub + operand: Constant + value: int = 10 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Issue 125 + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = abc + ctx: Store + value: Constant + value: str = abc + kind: NoneType = None + type_comment: NoneType = None + element: For + target: Name + id: str = index + ctx: Store + iter: Name + id: str = abc + ctx: Load + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = abc + ctx: Load + keywords: list + orelse: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Issue 127 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Dict + keys: list + element: Constant + value: str = include_docs + kind: NoneType = None + element: Constant + value: str = keys + kind: NoneType = None + element: Constant + value: str = limit + kind: NoneType = None + values: list + element: Constant + value: str = true + kind: NoneType = None + element: List + elts: list + element: Constant + value: str = key1 + kind: NoneType = None + element: Constant + value: str = key2 + kind: NoneType = None + ctx: Load + element: Constant + value: int = 50 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Issue 134 + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = x0 + ctx: Store + element: Name + id: str = x1 + ctx: Store + element: Name + id: str = x2 + ctx: Store + element: Name + id: str = x3 + ctx: Store + element: Name + id: str = x4 + ctx: Store + element: Name + id: str = x5 + ctx: Store + ctx: Store + value: Tuple + elts: list + element: Constant + value: int = 5 + kind: NoneType = None + element: Constant + value: int = 12 + kind: NoneType = None + element: UnaryOp + op: USub + operand: Constant + value: int = 5 + kind: NoneType = None + element: UnaryOp + op: USub + operand: Constant + value: int = 5 + kind: NoneType = None + element: Constant + value: int = 0 + kind: NoneType = None + element: Constant + value: int = 0 + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: AugAssign + target: Name + id: str = x0 + ctx: Store + op: Mod + value: Constant + value: int = 10 + kind: NoneType = None + element: AugAssign + target: Name + id: str = x1 + ctx: Store + op: Mod + value: Constant + value: int = 5 + kind: NoneType = None + element: AugAssign + target: Name + id: str = x2 + ctx: Store + op: Mod + value: Constant + value: int = 2 + kind: NoneType = None + element: AugAssign + target: Name + id: str = x3 + ctx: Store + op: Mod + value: UnaryOp + op: USub + operand: Constant + value: int = 3 + kind: NoneType = None + element: AugAssign + target: Name + id: str = x4 + ctx: Store + op: Mod + value: Constant + value: int = 1 + kind: NoneType = None + element: AugAssign + target: Name + id: str = x5 + ctx: Store + op: Mod + value: UnaryOp + op: USub + operand: Constant + value: int = 1000 + kind: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = x0 + ctx: Load + element: Name + id: str = x1 + ctx: Load + element: Name + id: str = x2 + ctx: Load + element: Name + id: str = x3 + ctx: Load + element: Name + id: str = x4 + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Issue 136 + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = aDict + ctx: Store + value: Dict + keys: list + element: Constant + value: str = a + kind: NoneType = None + element: Constant + value: str = b + kind: NoneType = None + values: list + element: Constant + value: str = ape + kind: NoneType = None + element: Constant + value: str = banana + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = aDict + ctx: Load + attr: str = get + ctx: Load + args: list + element: Constant + value: str = a + kind: NoneType = None + element: Constant + value: str = noApe + kind: NoneType = None + keywords: list + element: Call + func: Attribute + value: Name + id: str = aDict + ctx: Load + attr: str = get + ctx: Load + args: list + element: Constant + value: str = b + kind: NoneType = None + keywords: list + element: Call + func: Attribute + value: Name + id: str = aDict + ctx: Load + attr: str = get + ctx: Load + args: list + element: Constant + value: str = c + kind: NoneType = None + element: Constant + value: str = noCarot + kind: NoneType = None + keywords: list + element: Call + func: Attribute + value: Name + id: str = aDict + ctx: Load + attr: str = get + ctx: Load + args: list + element: Constant + value: str = d + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Issue 144 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = opov + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = aList + ctx: Store + value: ListComp + elt: Name + id: str = x + ctx: Load + generators: list + element: comprehension + target: Name + id: str = x + ctx: Store + iter: List + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + ifs: list + is_async: int = 0 + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = aList + ctx: Load + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = noopov + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str =

Issue 145
+ kind: NoneType = None + keywords: list + element: ClassDef + name: str = SortTest + bases: list + keywords: list + body: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = alphabet + ctx: Store + value: Constant + value: str = abcdefghijklmnopqrstuvwxyz + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = nChars + ctx: Store + value: Constant + value: int = 10 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = nCols + ctx: Store + value: Constant + value: int = 10 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = nRows + ctx: Store + value: Constant + value: int = 30 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = pseudoRandom + ctx: Store + value: Constant + value: int = 0 + kind: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = randomWord + args: arguments + posonlyargs: list + args: list + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Name + id: str = word + ctx: Store + value: Constant + value: str = + kind: NoneType = None + type_comment: NoneType = None + element: For + target: Name + id: str = iChar + ctx: Store + iter: Call + func: Name + id: str = range + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = nChars + ctx: Load + keywords: list + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = pseudoRandom + ctx: Store + value: BinOp + left: BinOp + left: BinOp + left: Constant + value: int = 81212 + kind: NoneType = None + op: Mult + right: Attribute + value: Name + id: str = self + ctx: Load + attr: str = pseudoRandom + ctx: Load + op: Add + right: Constant + value: int = 28411 + kind: NoneType = None + op: Mod + right: Constant + value: int = 134456 + kind: NoneType = None + type_comment: NoneType = None + element: AugAssign + target: Name + id: str = word + ctx: Store + op: Add + value: Subscript + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = alphabet + ctx: Load + slice: BinOp + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = pseudoRandom + ctx: Load + op: Mod + right: Constant + value: int = 26 + kind: NoneType = None + ctx: Load + orelse: list + type_comment: NoneType = None + element: Return + value: Name + id: str = word + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = rows + ctx: Store + value: ListComp + elt: ListComp + elt: Call + func: Name + id: str = randomWord + ctx: Load + args: list + keywords: list + generators: list + element: comprehension + target: Name + id: str = iCol + ctx: Store + iter: Call + func: Name + id: str = range + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = nCols + ctx: Load + keywords: list + ifs: list + is_async: int = 0 + generators: list + element: comprehension + target: Name + id: str = iRow + ctx: Store + iter: Call + func: Name + id: str = range + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = nRows + ctx: Load + keywords: list + ifs: list + is_async: int = 0 + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = sort + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: For + target: Name + id: str = iCol + ctx: Store + iter: Call + func: Name + id: str = reversed + ctx: Load + args: list + element: Call + func: Name + id: str = range + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = nCols + ctx: Load + keywords: list + keywords: list + body: list + element: Expr + value: Call + func: Attribute + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = rows + ctx: Load + attr: str = sort + ctx: Load + args: list + keywords: list + element: keyword + arg: str = key + value: Lambda + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = row + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: Subscript + value: Name + id: str = row + ctx: Load + slice: Name + id: str = iCol + ctx: Load + ctx: Load + orelse: list + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: Assign + targets: list + element: Name + id: str = sortTest + ctx: Store + value: Call + func: Name + id: str = SortTest + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str =
Unsorted:
+ kind: NoneType = None + keywords: list + element: For + target: Name + id: str = row + ctx: Store + iter: Attribute + value: Name + id: str = sortTest + ctx: Load + attr: str = rows + ctx: Load + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = {}
+ kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = , + kind: NoneType = None + attr: str = join + ctx: Load + args: list + element: ListComp + elt: Name + id: str = word + ctx: Load + generators: list + element: comprehension + target: Name + id: str = word + ctx: Store + iter: Name + id: str = row + ctx: Load + ifs: list + is_async: int = 0 + keywords: list + keywords: list + keywords: list + orelse: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = sortTest + ctx: Load + attr: str = sort + ctx: Load + args: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str =
Sorted:
+ kind: NoneType = None + keywords: list + element: For + target: Name + id: str = row + ctx: Store + iter: Attribute + value: Name + id: str = sortTest + ctx: Load + attr: str = rows + ctx: Load + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = {}
+ kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = , + kind: NoneType = None + attr: str = join + ctx: Load + args: list + element: ListComp + elt: Name + id: str = word + ctx: Load + generators: list + element: comprehension + target: Name + id: str = word + ctx: Store + iter: Name + id: str = row + ctx: Load + ifs: list + is_async: int = 0 + keywords: list + keywords: list + keywords: list + orelse: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str =

Issue 148
+ kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = aDict + ctx: Store + value: Dict + keys: list + element: Constant + value: str = items + kind: NoneType = None + values: list + element: List + elts: list + element: Constant + value: int = 4 + kind: NoneType = None + element: Constant + value: int = 5 + kind: NoneType = None + element: Constant + value: int = 6 + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: For + target: Tuple + elts: list + element: Name + id: str = aKey + ctx: Store + element: Name + id: str = aValue + ctx: Store + ctx: Store + iter: Call + func: Attribute + value: Name + id: str = aDict + ctx: Load + attr: str = items + ctx: Load + args: list + keywords: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = {}: {} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Name + id: str = aKey + ctx: Load + element: Name + id: str = aValue + ctx: Load + keywords: list + keywords: list + orelse: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str =

Issue 169
+ kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = int + ctx: Load + args: list + element: BinOp + left: Constant + value: int = 1 + kind: NoneType = None + op: Div + right: Call + func: Name + id: str = float + ctx: Load + args: list + element: Constant + value: str = inf + kind: NoneType = None + keywords: list + keywords: list + element: Call + func: Name + id: str = int + ctx: Load + args: list + element: BinOp + left: Constant + value: int = 1 + kind: NoneType = None + op: Div + right: Call + func: Name + id: str = float + ctx: Load + args: list + element: Constant + value: str = -inf + kind: NoneType = None + keywords: list + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str =

Issue 178
+ kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = bitmaps + ctx: Store + value: List + elts: list + element: Tuple + elts: list + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: str = + kind: NoneType = None + ctx: Load + element: Tuple + elts: list + element: Constant + value: int = 4 + kind: NoneType = None + element: Constant + value: str = + kind: NoneType = None + ctx: Load + element: Tuple + elts: list + element: Constant + value: int = 8 + kind: NoneType = None + element: Constant + value: str = i + kind: NoneType = None + ctx: Load + element: Tuple + elts: list + element: Constant + value: int = 16 + kind: NoneType = None + element: Constant + value: str = m + kind: NoneType = None + ctx: Load + element: Tuple + elts: list + element: Constant + value: int = 32 + kind: NoneType = None + element: Constant + value: str = y + kind: NoneType = None + ctx: Load + element: Tuple + elts: list + element: Constant + value: int = 64 + kind: NoneType = None + element: Constant + value: str = u + kind: NoneType = None + ctx: Load + element: Tuple + elts: list + element: Constant + value: int = 128 + kind: NoneType = None + element: Constant + value: str = g + kind: NoneType = None + ctx: Load + ctx: Load + type_comment: NoneType = None + element: For + target: Name + id: str = flags + ctx: Store + iter: Tuple + elts: list + element: Constant + value: int = 122 + kind: NoneType = None + element: Constant + value: int = 233 + kind: NoneType = None + element: Constant + value: int = 11 + kind: NoneType = None + element: Constant + value: int = 55 + kind: NoneType = None + element: Constant + value: int = 79 + kind: NoneType = None + element: Constant + value: int = 201 + kind: NoneType = None + element: Constant + value: int = 23 + kind: NoneType = None + element: Constant + value: int = 111 + kind: NoneType = None + element: Constant + value: int = 200 + kind: NoneType = None + element: Constant + value: int = 100 + kind: NoneType = None + element: Constant + value: int = 50 + kind: NoneType = None + element: Constant + value: int = 25 + kind: NoneType = None + element: Constant + value: int = 12 + kind: NoneType = None + element: Constant + value: int = 6 + kind: NoneType = None + ctx: Load + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = + kind: NoneType = None + attr: str = join + ctx: Load + args: list + element: ListComp + elt: Subscript + value: Name + id: str = x + ctx: Load + slice: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + generators: list + element: comprehension + target: Name + id: str = x + ctx: Store + iter: Name + id: str = bitmaps + ctx: Load + ifs: list + element: Compare + left: BinOp + left: Subscript + value: Name + id: str = x + ctx: Load + slice: Constant + value: int = 0 + kind: NoneType = None + ctx: Load + op: BitAnd + right: Name + id: str = flags + ctx: Load + ops: list + element: Gt + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + is_async: int = 0 + keywords: list + keywords: list + orelse: list + type_comment: NoneType = None + element: FunctionDef + name: str = issue256 + args: arguments + posonlyargs: list + args: list + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Issue 256 + kind: NoneType = None + keywords: list + element: ClassDef + name: str = C + bases: list + keywords: list + body: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = value + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = value + ctx: Store + value: Name + id: str = value + ctx: Load + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: FunctionDef + name: str = f1 + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = value + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Compare + left: Call + func: Attribute + value: BoolOp + op: Or + values: list + element: Attribute + value: Call + func: Name + id: str = C + ctx: Load + args: list + element: Name + id: str = value + ctx: Load + keywords: list + attr: str = value + ctx: Load + element: Constant + value: str = second + kind: NoneType = None + attr: str = capitalize + ctx: Load + args: list + keywords: list + ops: list + element: Eq + comparators: list + element: Constant + value: str = First + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = f2 + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = value + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Compare + left: Call + func: Attribute + value: BoolOp + op: Or + values: list + element: Attribute + value: Call + func: Name + id: str = C + ctx: Load + args: list + element: Name + id: str = value + ctx: Load + keywords: list + attr: str = value + ctx: Load + element: Constant + value: str = second + kind: NoneType = None + attr: str = capitalize + ctx: Load + args: list + keywords: list + ops: list + element: Eq + comparators: list + element: Constant + value: str = Second + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = f3 + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = value + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: BoolOp + op: Or + values: list + element: Attribute + value: Call + func: Name + id: str = C + ctx: Load + args: list + element: Name + id: str = value + ctx: Load + keywords: list + attr: str = value + ctx: Load + element: Constant + value: str = second + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = f4 + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = value + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: BoolOp + op: Or + values: list + element: Attribute + value: Call + func: Name + id: str = C + ctx: Load + args: list + element: Name + id: str = value + ctx: Load + keywords: list + attr: str = value + ctx: Load + element: Constant + value: str = second + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = f1 + ctx: Load + args: list + element: Constant + value: str = first + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = f1 + ctx: Load + args: list + element: Constant + value: str = + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = f2 + ctx: Load + args: list + element: Constant + value: str = first + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = f2 + ctx: Load + args: list + element: Constant + value: str = + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = f3 + ctx: Load + args: list + element: Constant + value: str = first + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = f4 + ctx: Load + args: list + element: Constant + value: str = + kind: NoneType = None + keywords: list + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = issue256 + ctx: Load + args: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Issue 274 + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = a + ctx: Store + value: Constant + value: int = 3 + kind: NoneType = None + type_comment: NoneType = None + element: Delete + targets: list + element: Name + id: str = a + ctx: Del + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Still alive + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Issue 276 + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = a + ctx: Store + value: Constant + value: int = 2 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = b + ctx: Store + value: BinOp + left: Name + id: str = a + ctx: Load + op: Pow + right: Constant + value: int = 3 + kind: NoneType = None + type_comment: NoneType = None + element: AugAssign + target: Name + id: str = a + ctx: Store + op: Pow + value: Constant + value: int = 4 + kind: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = a + ctx: Load + element: Name + id: str = b + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Issue 277 + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = new + ctx: Store + value: Constant + value: int = 3 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = new + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Issue 279 + kind: NoneType = None + keywords: list + element: ClassDef + name: str = A + bases: list + keywords: list + body: list + element: Assign + targets: list + element: Name + id: str = TypeError + ctx: Store + value: Constant + value: int = 111 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = js_TypeError + ctx: Store + value: Constant + value: int = 222 + kind: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = A + ctx: Load + attr: str = TypeError + ctx: Load + element: Attribute + value: Name + id: str = A + ctx: Load + attr: str = js_TypeError + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Still alive + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Issue 301 + kind: NoneType = None + keywords: list + element: FunctionDef + name: str = filter_word + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = word0 + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = word1 + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: Compare + left: Call + func: Name + id: str = len + ctx: Load + args: list + element: Name + id: str = word0 + ctx: Load + keywords: list + ops: list + element: NotEq + comparators: list + element: Call + func: Name + id: str = len + ctx: Load + args: list + element: Name + id: str = word1 + ctx: Load + keywords: list + body: list + element: Return + value: Constant + value: bool = False + kind: NoneType = None + orelse: list + element: For + target: Tuple + elts: list + element: Name + id: str = char0 + ctx: Store + element: Name + id: str = char1 + ctx: Store + ctx: Store + iter: Call + func: Name + id: str = zip + ctx: Load + args: list + element: Name + id: str = word0 + ctx: Load + element: Name + id: str = word1 + ctx: Load + keywords: list + body: list + element: If + test: BoolOp + op: And + values: list + element: Compare + left: Name + id: str = char0 + ctx: Load + ops: list + element: NotEq + comparators: list + element: Constant + value: str = _ + kind: NoneType = None + element: Compare + left: Name + id: str = char0 + ctx: Load + ops: list + element: NotEq + comparators: list + element: Name + id: str = char1 + ctx: Load + body: list + element: Return + value: Constant + value: bool = False + kind: NoneType = None + orelse: list + orelse: list + type_comment: NoneType = None + element: Return + value: Constant + value: bool = True + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = filter_word + ctx: Load + args: list + element: Constant + value: str = bee + kind: NoneType = None + element: Constant + value: str = beer + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = filter_word + ctx: Load + args: list + element: Constant + value: str = wine + kind: NoneType = None + element: Constant + value: str = wine + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = filter_word + ctx: Load + args: list + element: Constant + value: str = win_ + kind: NoneType = None + element: Constant + value: str = wind + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = filter_word + ctx: Load + args: list + element: Constant + value: str = _in_ + kind: NoneType = None + element: Constant + value: str = kind + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = filter_word + ctx: Load + args: list + element: Constant + value: str = min_ + kind: NoneType = None + element: Constant + value: str = kind + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Issue 306 + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = dict_306 + ctx: Store + value: Dict + keys: list + element: Constant + value: str = Abraham + kind: NoneType = None + element: Constant + value: str = Barack + kind: NoneType = None + element: Constant + value: str = Thomas + kind: NoneType = None + values: list + element: Constant + value: str = Lincoln + kind: NoneType = None + element: Constant + value: str = O'Bama + kind: NoneType = None + element: Constant + value: str = Jefferson + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = results + ctx: Store + value: List + elts: list + ctx: Load + type_comment: NoneType = None + element: Try + body: list + element: While + test: Constant + value: bool = True + kind: NoneType = None + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = results + ctx: Load + attr: str = append + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = dict_306 + ctx: Load + attr: str = popitem + ctx: Load + args: list + keywords: list + keywords: list + orelse: list + handlers: list + element: ExceptHandler + type: Name + id: str = Exception + ctx: Load + name: str = exception + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = sorted + ctx: Load + args: list + element: Name + id: str = results + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = That's it + kind: NoneType = None + keywords: list + orelse: list + finalbody: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Issue 314 + kind: NoneType = None + keywords: list + element: Try + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = int + ctx: Load + args: list + element: Call + func: Name + id: str = float + ctx: Load + args: list + element: Constant + value: int = 123 + kind: NoneType = None + keywords: list + keywords: list + keywords: list + handlers: list + element: ExceptHandler + type: NoneType = None + name: NoneType = None + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = a + kind: NoneType = None + keywords: list + orelse: list + finalbody: list + element: Try + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = float + ctx: Load + args: list + element: Constant + value: float = 12.3 + kind: NoneType = None + keywords: list + keywords: list + handlers: list + element: ExceptHandler + type: NoneType = None + name: NoneType = None + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = b + kind: NoneType = None + keywords: list + orelse: list + finalbody: list + element: Try + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = int + ctx: Load + args: list + element: Call + func: Name + id: str = float + ctx: Load + args: list + element: Constant + value: str = 123 + kind: NoneType = None + keywords: list + keywords: list + keywords: list + handlers: list + element: ExceptHandler + type: NoneType = None + name: NoneType = None + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = c + kind: NoneType = None + keywords: list + orelse: list + finalbody: list + element: Try + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = int + ctx: Load + args: list + element: Call + func: Name + id: str = float + ctx: Load + args: list + element: Constant + value: str = 123 + kind: NoneType = None + keywords: list + keywords: list + keywords: list + handlers: list + element: ExceptHandler + type: NoneType = None + name: NoneType = None + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = d + kind: NoneType = None + keywords: list + orelse: list + finalbody: list + element: Try + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = float + ctx: Load + args: list + element: Constant + value: str = + kind: NoneType = None + keywords: list + keywords: list + handlers: list + element: ExceptHandler + type: NoneType = None + name: NoneType = None + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = e + kind: NoneType = None + keywords: list + orelse: list + finalbody: list + element: Try + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = float + ctx: Load + args: list + element: Constant + value: str = + kind: NoneType = None + keywords: list + keywords: list + handlers: list + element: ExceptHandler + type: NoneType = None + name: NoneType = None + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = f + kind: NoneType = None + keywords: list + orelse: list + finalbody: list + element: Try + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = float + ctx: Load + args: list + element: Constant + value: str = drie + kind: NoneType = None + keywords: list + keywords: list + handlers: list + element: ExceptHandler + type: NoneType = None + name: NoneType = None + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = g + kind: NoneType = None + keywords: list + orelse: list + finalbody: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Issue 316 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = list + ctx: Load + args: list + element: Call + func: Name + id: str = filter + ctx: Load + args: list + element: Constant + value: NoneType = None + kind: NoneType = None + element: List + elts: list + element: List + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + ctx: Load + element: List + elts: list + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + element: List + elts: list + ctx: Load + element: List + elts: list + element: Constant + value: int = 4 + kind: NoneType = None + element: Constant + value: int = 5 + kind: NoneType = None + ctx: Load + element: List + elts: list + element: Constant + value: int = 6 + kind: NoneType = None + ctx: Load + ctx: Load + keywords: list + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = list + ctx: Load + args: list + element: Call + func: Name + id: str = filter + ctx: Load + args: list + element: Lambda + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = l + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: Compare + left: Call + func: Name + id: str = len + ctx: Load + args: list + element: Name + id: str = l + ctx: Load + keywords: list + ops: list + element: GtE + comparators: list + element: Constant + value: int = 2 + kind: NoneType = None + element: List + elts: list + element: List + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + ctx: Load + element: List + elts: list + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + element: List + elts: list + ctx: Load + element: List + elts: list + element: Constant + value: int = 4 + kind: NoneType = None + element: Constant + value: int = 5 + kind: NoneType = None + ctx: Load + element: List + elts: list + element: Constant + value: int = 6 + kind: NoneType = None + ctx: Load + ctx: Load + keywords: list + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Issue 317 + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = mylist + ctx: Store + value: List + elts: list + ctx: Load + type_comment: NoneType = None + element: Try + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = mylist + ctx: Load + attr: str = remove + ctx: Load + args: list + element: Constant + value: str = value + kind: NoneType = None + keywords: list + handlers: list + element: ExceptHandler + type: Name + id: str = ValueError + ctx: Load + name: str = exception + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Attribute + value: Name + id: str = exception + ctx: Load + attr: str = __class__ + ctx: Load + attr: str = __name__ + ctx: Load + keywords: list + orelse: list + finalbody: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Issue 331 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = max + ctx: Load + args: list + element: UnaryOp + op: USub + operand: Constant + value: int = 5 + kind: NoneType = None + element: Constant + value: int = 4 + kind: NoneType = None + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: UnaryOp + op: USub + operand: Constant + value: int = 3 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = max + ctx: Load + args: list + element: List + elts: list + element: UnaryOp + op: USub + operand: Constant + value: int = 5 + kind: NoneType = None + element: Constant + value: int = 4 + kind: NoneType = None + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: UnaryOp + op: USub + operand: Constant + value: int = 3 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = max + ctx: Load + args: list + element: Tuple + elts: list + element: Constant + value: int = 5 + kind: NoneType = None + element: Constant + value: int = 6 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: UnaryOp + op: USub + operand: Constant + value: int = 2 + kind: NoneType = None + element: UnaryOp + op: USub + operand: Constant + value: int = 4 + kind: NoneType = None + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = min + ctx: Load + args: list + element: UnaryOp + op: USub + operand: Constant + value: int = 5 + kind: NoneType = None + element: Constant + value: int = 4 + kind: NoneType = None + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: UnaryOp + op: USub + operand: Constant + value: int = 3 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = min + ctx: Load + args: list + element: List + elts: list + element: UnaryOp + op: USub + operand: Constant + value: int = 5 + kind: NoneType = None + element: Constant + value: int = 4 + kind: NoneType = None + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: UnaryOp + op: USub + operand: Constant + value: int = 3 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = min + ctx: Load + args: list + element: Tuple + elts: list + element: Constant + value: int = 5 + kind: NoneType = None + element: Constant + value: int = 6 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: UnaryOp + op: USub + operand: Constant + value: int = 2 + kind: NoneType = None + element: UnaryOp + op: USub + operand: Constant + value: int = 4 + kind: NoneType = None + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = issue 356 + kind: NoneType = None + keywords: list + element: Try + body: list + element: Raise + exc: Call + func: Name + id: str = TypeError + ctx: Load + args: list + element: Constant + value: str = How are you? + kind: NoneType = None + keywords: list + cause: NoneType = None + handlers: list + element: ExceptHandler + type: Name + id: str = TypeError + ctx: Load + name: str = exception + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = exception + ctx: Load + keywords: list + orelse: list + finalbody: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Issue 369 + kind: NoneType = None + keywords: list + element: ClassDef + name: str = Vector + bases: list + keywords: list + body: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: arg + arg: str = values + annotation: NoneType = None + type_comment: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = values + ctx: Store + value: Name + id: str = values + ctx: Load + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __iter__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: For + target: Name + id: str = item + ctx: Store + iter: Attribute + value: Name + id: str = self + ctx: Load + attr: str = values + ctx: Load + body: list + element: Expr + value: Yield + value: Name + id: str = item + ctx: Load + orelse: list + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __add__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Call + func: Name + id: str = Vector + ctx: Load + args: list + element: Starred + value: GeneratorExp + elt: BinOp + left: Name + id: str = x + ctx: Load + op: Add + right: Name + id: str = y + ctx: Load + generators: list + element: comprehension + target: Tuple + elts: list + element: Name + id: str = x + ctx: Store + element: Name + id: str = y + ctx: Store + ctx: Store + iter: Call + func: Name + id: str = zip + ctx: Load + args: list + element: Name + id: str = self + ctx: Load + element: Name + id: str = other + ctx: Load + keywords: list + ifs: list + is_async: int = 0 + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __str__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Call + func: Name + id: str = str + ctx: Load + args: list + element: Call + func: Name + id: str = list + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = values + ctx: Load + keywords: list + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = opov + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = str + ctx: Load + args: list + element: BinOp + left: Call + func: Name + id: str = Vector + ctx: Load + args: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + keywords: list + op: Add + right: Call + func: Name + id: str = Vector + ctx: Load + args: list + element: Constant + value: int = 3 + kind: NoneType = None + element: Constant + value: int = 4 + kind: NoneType = None + element: Constant + value: int = 5 + kind: NoneType = None + keywords: list + keywords: list + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = noopov + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Issue 387 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Name + id: str = run387 + ctx: Load + args: list + element: Name + id: str = autoTester + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Issue 391 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = int + ctx: Load + args: list + element: Constant + value: bool = False + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = int + ctx: Load + args: list + element: Constant + value: bool = True + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = int + ctx: Load + args: list + element: Compare + left: Constant + value: int = 1 + kind: NoneType = None + ops: list + element: Eq + comparators: list + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = int + ctx: Load + args: list + element: Compare + left: Constant + value: int = 1 + kind: NoneType = None + ops: list + element: NotEq + comparators: list + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Issue 392 + kind: NoneType = None + keywords: list + element: ClassDef + name: str = Example + bases: list + keywords: list + body: list + element: Assign + targets: list + element: Name + id: str = d + ctx: Store + value: Dict + keys: list + element: Constant + value: str = A + kind: NoneType = None + element: Constant + value: str = B + kind: NoneType = None + values: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = rec + ctx: Store + value: Call + func: Attribute + value: Name + id: str = re + ctx: Load + attr: str = compile + ctx: Load + args: list + element: Constant + value: str = (?P\d+) + kind: NoneType = None + element: Attribute + value: Name + id: str = re + ctx: Load + attr: str = ASCII + ctx: Load + keywords: list + type_comment: NoneType = None + element: FunctionDef + name: str = run + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Name + id: str = match + ctx: Store + value: Call + func: Attribute + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = rec + ctx: Load + attr: str = match + ctx: Load + args: list + element: Constant + value: str = 42 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: If + test: UnaryOp + op: Not + operand: Name + id: str = match + ctx: Load + body: list + element: Expr + value: Call + func: Name + id: str = print + ctx: Load + args: list + element: Constant + value: str = ERROR: RE does not match + kind: NoneType = None + keywords: list + orelse: list + element: Assign + targets: list + element: Name + id: str = e + ctx: Store + value: Call + func: Attribute + value: Name + id: str = match + ctx: Load + attr: str = groupdict + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = before: self.d= + kind: NoneType = None + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = d + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = before: e= + kind: NoneType = None + element: Name + id: str = e + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = d + ctx: Load + attr: str = update + ctx: Load + args: list + element: Name + id: str = e + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = after: self.d= + kind: NoneType = None + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = d + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: Assign + targets: list + element: Name + id: str = example + ctx: Store + value: Call + func: Name + id: str = Example + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = example + ctx: Load + attr: str = run + ctx: Load + args: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Issue 398 + kind: NoneType = None + keywords: list + element: ClassDef + name: str = Test398 + bases: list + element: Name + id: str = object + ctx: Load + keywords: list + body: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = skip + kind: NoneType = None + keywords: list + element: FunctionDef + name: str = method1 + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Pass + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = method2 + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Pass + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = noskip + kind: NoneType = None + keywords: list + element: Pass + decorator_list: list + element: Assign + targets: list + element: Name + id: str = test398 + ctx: Store + value: Call + func: Name + id: str = Test398 + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Issue 399 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = keycheck + kind: NoneType = None + keywords: list + element: Try + body: list + element: Assign + targets: list + element: Name + id: str = surpressWarning + ctx: Store + value: Subscript + value: Dict + keys: list + element: Constant + value: str = a + kind: NoneType = None + values: list + element: Constant + value: int = 5 + kind: NoneType = None + slice: Constant + value: str = a + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = surpressWarning + ctx: Store + value: Subscript + value: Dict + keys: list + element: Constant + value: str = a + kind: NoneType = None + values: list + element: Constant + value: int = 5 + kind: NoneType = None + slice: Constant + value: str = b + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = no problem + kind: NoneType = None + keywords: list + handlers: list + element: ExceptHandler + type: Name + id: str = KeyError + ctx: Load + name: NoneType = None + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = not found + kind: NoneType = None + keywords: list + orelse: list + finalbody: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Issue 413 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = nokeycheck + kind: NoneType = None + keywords: list + element: ClassDef + name: str = Foo + bases: list + keywords: list + body: list + element: FunctionDef + name: str = __len__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Constant + value: int = 3 + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __getitem__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = i + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: Compare + left: Name + id: str = i + ctx: Load + ops: list + element: GtE + comparators: list + element: Constant + value: int = 3 + kind: NoneType = None + body: list + element: Raise + exc: Name + id: str = IndexError + ctx: Load + cause: NoneType = None + orelse: list + element: Return + value: BinOp + left: Constant + value: str = This is item + kind: NoneType = None + op: Add + right: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = i + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: Assign + targets: list + element: Name + id: str = foo + ctx: Store + value: Call + func: Name + id: str = Foo + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = opov + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Attempt 1: + kind: NoneType = None + keywords: list + element: For + target: Name + id: str = i + ctx: Store + iter: Name + id: str = foo + ctx: Load + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = i + ctx: Load + keywords: list + orelse: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Attempt 2: + kind: NoneType = None + keywords: list + element: For + target: Name + id: str = i + ctx: Store + iter: Call + func: Name + id: str = range + ctx: Load + args: list + element: Call + func: Name + id: str = len + ctx: Load + args: list + element: Name + id: str = foo + ctx: Load + keywords: list + keywords: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Subscript + value: Name + id: str = foo + ctx: Load + slice: Name + id: str = i + ctx: Load + ctx: Load + keywords: list + orelse: list + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = noopov + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Issue 414 + kind: NoneType = None + keywords: list + element: ClassDef + name: str = Foo + bases: list + keywords: list + body: list + element: Pass + decorator_list: list + element: Assign + targets: list + element: Name + id: str = foo + ctx: Store + value: Call + func: Name + id: str = Foo + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = foo + ctx: Load + attr: str = bar + ctx: Store + value: Constant + value: str = baz + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = foo + ctx: Load + attr: str = name + ctx: Store + value: Constant + value: str = hello + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = foo + ctx: Load + attr: str = default + ctx: Store + value: Constant + value: str = world + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: ListComp + elt: Name + id: str = x + ctx: Load + generators: list + element: comprehension + target: Name + id: str = x + ctx: Store + iter: Call + func: Name + id: str = dir + ctx: Load + args: list + element: Name + id: str = foo + ctx: Load + keywords: list + ifs: list + element: UnaryOp + op: Not + operand: Call + func: Attribute + value: Name + id: str = x + ctx: Load + attr: str = startswith + ctx: Load + args: list + element: Constant + value: str = __ + kind: NoneType = None + keywords: list + is_async: int = 0 + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = kwargs + kind: NoneType = None + keywords: list + element: FunctionDef + name: str = foo + args: arguments + posonlyargs: list + args: list + vararg: arg + arg: str = args + annotation: NoneType = None + type_comment: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: arg + arg: str = kwargs + annotation: NoneType = None + type_comment: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Name + id: str = default + ctx: Store + value: Call + func: Attribute + value: Name + id: str = kwargs + ctx: Load + attr: str = get + ctx: Load + args: list + element: Constant + value: str = default + kind: NoneType = None + element: Constant + value: str = bar + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Return + value: Name + id: str = default + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = foo + ctx: Load + args: list + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = foo + ctx: Load + args: list + keywords: list + element: keyword + arg: str = default + value: Constant + value: str = Hello World + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Issue 460 + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = s460 + ctx: Store + value: Constant + value: str = car + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = l460 + ctx: Store + value: List + elts: list + element: Constant + value: int = 11 + kind: NoneType = None + element: Constant + value: int = 22 + kind: NoneType = None + element: Constant + value: int = 33 + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = t460 + ctx: Store + value: Tuple + elts: list + element: Constant + value: int = 4 + kind: NoneType = None + element: Constant + value: int = 5 + kind: NoneType = None + element: Constant + value: int = 6 + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = d460 + ctx: Store + value: Dict + keys: list + element: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: str = b + kind: NoneType = None + values: list + element: Constant + value: str = mmminusOne + kind: NoneType = None + element: Constant + value: str = bbbike + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = opov + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Subscript + value: Name + id: str = l460 + ctx: Load + slice: Constant + value: int = 0 + kind: NoneType = None + ctx: Store + value: Constant + value: int = 1 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Subscript + value: Name + id: str = l460 + ctx: Load + slice: UnaryOp + op: USub + operand: Constant + value: int = 2 + kind: NoneType = None + ctx: Store + value: Constant + value: int = 2 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Subscript + value: Name + id: str = l460 + ctx: Load + slice: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + ctx: Store + value: Constant + value: int = 3 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Subscript + value: Name + id: str = d460 + ctx: Load + slice: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + ctx: Store + value: Constant + value: str = minusOne + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Subscript + value: Name + id: str = d460 + ctx: Load + slice: Constant + value: str = b + kind: NoneType = None + ctx: Store + value: Constant + value: str = bike + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Subscript + value: Name + id: str = s460 + ctx: Load + slice: Constant + value: int = 0 + kind: NoneType = None + ctx: Load + element: Subscript + value: Name + id: str = s460 + ctx: Load + slice: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + element: Subscript + value: Name + id: str = s460 + ctx: Load + slice: Constant + value: int = 2 + kind: NoneType = None + ctx: Load + element: Subscript + value: Name + id: str = s460 + ctx: Load + slice: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + element: Subscript + value: Name + id: str = s460 + ctx: Load + slice: UnaryOp + op: USub + operand: Constant + value: int = 2 + kind: NoneType = None + ctx: Load + element: Subscript + value: Name + id: str = s460 + ctx: Load + slice: UnaryOp + op: USub + operand: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Subscript + value: Name + id: str = l460 + ctx: Load + slice: Constant + value: int = 0 + kind: NoneType = None + ctx: Load + element: Subscript + value: Name + id: str = l460 + ctx: Load + slice: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + element: Subscript + value: Name + id: str = l460 + ctx: Load + slice: Constant + value: int = 2 + kind: NoneType = None + ctx: Load + element: Subscript + value: Name + id: str = l460 + ctx: Load + slice: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + element: Subscript + value: Name + id: str = l460 + ctx: Load + slice: UnaryOp + op: USub + operand: Constant + value: int = 2 + kind: NoneType = None + ctx: Load + element: Subscript + value: Name + id: str = l460 + ctx: Load + slice: UnaryOp + op: USub + operand: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Subscript + value: Name + id: str = t460 + ctx: Load + slice: Constant + value: int = 0 + kind: NoneType = None + ctx: Load + element: Subscript + value: Name + id: str = t460 + ctx: Load + slice: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + element: Subscript + value: Name + id: str = t460 + ctx: Load + slice: Constant + value: int = 2 + kind: NoneType = None + ctx: Load + element: Subscript + value: Name + id: str = t460 + ctx: Load + slice: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + element: Subscript + value: Name + id: str = t460 + ctx: Load + slice: UnaryOp + op: USub + operand: Constant + value: int = 2 + kind: NoneType = None + ctx: Load + element: Subscript + value: Name + id: str = t460 + ctx: Load + slice: UnaryOp + op: USub + operand: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Subscript + value: Name + id: str = d460 + ctx: Load + slice: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + element: Subscript + value: Name + id: str = d460 + ctx: Load + slice: Constant + value: str = b + kind: NoneType = None + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Subscript + value: Name + id: str = s460 + ctx: Load + slice: Constant + value: int = 0 + kind: NoneType = None + ctx: Load + element: Subscript + value: Name + id: str = s460 + ctx: Load + slice: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + element: Subscript + value: Name + id: str = s460 + ctx: Load + slice: Constant + value: int = 2 + kind: NoneType = None + ctx: Load + element: Subscript + value: Name + id: str = s460 + ctx: Load + slice: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + element: Subscript + value: Name + id: str = s460 + ctx: Load + slice: UnaryOp + op: USub + operand: Constant + value: int = 2 + kind: NoneType = None + ctx: Load + element: Subscript + value: Name + id: str = s460 + ctx: Load + slice: UnaryOp + op: USub + operand: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Subscript + value: Name + id: str = l460 + ctx: Load + slice: Constant + value: int = 0 + kind: NoneType = None + ctx: Load + element: Subscript + value: Name + id: str = l460 + ctx: Load + slice: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + element: Subscript + value: Name + id: str = l460 + ctx: Load + slice: Constant + value: int = 2 + kind: NoneType = None + ctx: Load + element: Subscript + value: Name + id: str = l460 + ctx: Load + slice: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + element: Subscript + value: Name + id: str = l460 + ctx: Load + slice: UnaryOp + op: USub + operand: Constant + value: int = 2 + kind: NoneType = None + ctx: Load + element: Subscript + value: Name + id: str = l460 + ctx: Load + slice: UnaryOp + op: USub + operand: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Subscript + value: Name + id: str = t460 + ctx: Load + slice: Constant + value: int = 0 + kind: NoneType = None + ctx: Load + element: Subscript + value: Name + id: str = t460 + ctx: Load + slice: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + element: Subscript + value: Name + id: str = t460 + ctx: Load + slice: Constant + value: int = 2 + kind: NoneType = None + ctx: Load + element: Subscript + value: Name + id: str = t460 + ctx: Load + slice: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + element: Subscript + value: Name + id: str = t460 + ctx: Load + slice: UnaryOp + op: USub + operand: Constant + value: int = 2 + kind: NoneType = None + ctx: Load + element: Subscript + value: Name + id: str = t460 + ctx: Load + slice: UnaryOp + op: USub + operand: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Subscript + value: Name + id: str = d460 + ctx: Load + slice: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + element: Subscript + value: Name + id: str = d460 + ctx: Load + slice: Constant + value: str = b + kind: NoneType = None + ctx: Load + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = noopov + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = keycheck + kind: NoneType = None + keywords: list + element: Try + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Subscript + value: Name + id: str = d460 + ctx: Load + slice: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + element: Subscript + value: Name + id: str = d460 + ctx: Load + slice: Constant + value: str = c + kind: NoneType = None + ctx: Load + keywords: list + handlers: list + element: ExceptHandler + type: NoneType = None + name: NoneType = None + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: int = 111 + kind: NoneType = None + keywords: list + orelse: list + finalbody: list + element: Try + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Subscript + value: Name + id: str = d460 + ctx: Load + slice: UnaryOp + op: USub + operand: Constant + value: int = 2 + kind: NoneType = None + ctx: Load + element: Subscript + value: Name + id: str = d460 + ctx: Load + slice: Constant + value: str = b + kind: NoneType = None + ctx: Load + keywords: list + handlers: list + element: ExceptHandler + type: NoneType = None + name: NoneType = None + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: int = 222 + kind: NoneType = None + keywords: list + orelse: list + finalbody: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = nokeycheck + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = a + ctx: Store + value: List + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = b + ctx: Store + value: List + elts: list + element: Constant + value: int = 4 + kind: NoneType = None + element: Constant + value: int = 5 + kind: NoneType = None + element: Constant + value: int = 6 + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = c + ctx: Store + value: Constant + value: str = 1,2,34,5,6 + kind: NoneType = None + type_comment: NoneType = None + element: If + test: Compare + left: Attribute + value: Name + id: str = __envir__ + ctx: Load + attr: str = executor_name + ctx: Load + ops: list + element: Eq + comparators: list + element: Attribute + value: Name + id: str = __envir__ + ctx: Load + attr: str = transpiler_name + ctx: Load + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BinOp + left: Name + id: str = a + ctx: Load + op: Add + right: Name + id: str = b + ctx: Load + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = opov + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BinOp + left: Name + id: str = a + ctx: Load + op: Add + right: Name + id: str = b + ctx: Load + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = noopov + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BinOp + left: Name + id: str = a + ctx: Load + op: Add + right: Name + id: str = b + ctx: Load + keywords: list + orelse: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = c + ctx: Load + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = opov + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BinOp + left: Name + id: str = a + ctx: Load + op: Add + right: Name + id: str = b + ctx: Load + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = noopov + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = c + ctx: Load + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = opov + kind: NoneType = None + keywords: list + element: If + test: Compare + left: Attribute + value: Name + id: str = __envir__ + ctx: Load + attr: str = executor_name + ctx: Load + ops: list + element: Eq + comparators: list + element: Attribute + value: Name + id: str = __envir__ + ctx: Load + attr: str = transpiler_name + ctx: Load + body: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = noopov + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BinOp + left: Name + id: str = a + ctx: Load + op: Add + right: Name + id: str = b + ctx: Load + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = opov + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BinOp + left: Name + id: str = a + ctx: Load + op: Add + right: Name + id: str = b + ctx: Load + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = noopov + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BinOp + left: Name + id: str = a + ctx: Load + op: Add + right: Name + id: str = b + ctx: Load + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = opov + kind: NoneType = None + keywords: list + orelse: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = noopov + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = c + ctx: Load + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = opov + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BinOp + left: Name + id: str = a + ctx: Load + op: Add + right: Name + id: str = b + ctx: Load + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = noopov + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = c + ctx: Load + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = opov + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = noopov + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Issue 494 + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = a + ctx: Store + value: Constant + value: int = 1 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: JoinedStr + values: list + element: Constant + value: str = a= + kind: NoneType = None + element: FormattedValue + value: Name + id: str = a + ctx: Load + conversion: int = -1 + format_spec: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = a + ctx: Store + value: Constant + value: NoneType = None + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: JoinedStr + values: list + element: Constant + value: str = a= + kind: NoneType = None + element: FormattedValue + value: Name + id: str = a + ctx: Load + conversion: int = -1 + format_spec: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Issue 515 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = a: {}; b: {} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Constant + value: NoneType = None + kind: NoneType = None + element: Constant + value: int = 1 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = a: {}; b: {} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: NoneType = None + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = a: {0}; b: {1} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: NoneType = None + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = a: {0}; b: {1} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Constant + value: int = 1 + kind: NoneType = None + element: List + elts: list + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = a: {}; b: {} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Constant + value: int = 1 + kind: NoneType = None + element: List + elts: list + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = a: {0}; b: {1} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Dict + keys: list + values: list + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = a: {}; b: {} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Dict + keys: list + values: list + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = a: {0}; b: {1} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 0 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = a: {}; b: {} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 0 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Issue 559 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Name + id: str = run559 + ctx: Load + args: list + element: Name + id: str = autoTester + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/div_pulls.js b/transcrypt/development/automated_tests/transcrypt/__target__39/div_pulls.js new file mode 100644 index 000000000..05a3bbde7 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/div_pulls.js @@ -0,0 +1,43 @@ +// Transcrypt'ed from Python, 2021-05-14 15:01:25 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +import * as pull575 from './div_pulls.pull575_reexport_modules.js'; +export {pull575}; +var __all__ = dict ({get A () {return A;}, set A (value) {A = value;}, get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get a () {return a;}, set a (value) {a = value;}, get run () {return run;}, set run (value) {run = value;}}); +var __name__ = 'div_pulls'; +export var A = __class__ ('A', [object], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self, x) { + self.x = x; + });} +}); +export var a = A (5.5); +export var run = function (autoTester) { + autoTester.check ('Pull 56'); + var s = 'abcdefghij'; + autoTester.check (s.__getslice__ (2, 3, 1)); + autoTester.check (s.__getslice__ (0, 3, 1)); + autoTester.check (s.__getslice__ (2, null, 1)); + autoTester.check (s.__getslice__ (0, null, 2)); + autoTester.check ('Pull 59'); + autoTester.check (list (filter ((function __lambda__ (x) { + return __mod__ (x, 2) == 0; + }), range (10)))); + autoTester.check (list (map ((function __lambda__ (x) { + return x * x; + }), range (0, 31, 3)))); + autoTester.check ('Pull 561'); + var brackets = function (word) { + autoTester.check ('sideeffect'); + return ('[' + word) + ']'; + }; + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, (function () { + var __accu1__ = __call__ (brackets, null, 'anything'); + return __call__ (__accu1__.lower, __accu1__); + }) ()); + }) (); + pull575.run (autoTester); +}; + +//# sourceMappingURL=div_pulls.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/div_pulls.pull575_reexport_modules.js b/transcrypt/development/automated_tests/transcrypt/__target__39/div_pulls.pull575_reexport_modules.js new file mode 100644 index 000000000..7399644f4 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/div_pulls.pull575_reexport_modules.js @@ -0,0 +1,12 @@ +// Transcrypt'ed from Python, 2021-05-14 15:01:25 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +import {aHtml5, bHtml5, cHtml5, ext} from './div_pulls.pull575_reexport_modules.reexporter.js'; +export {cHtml5, ext, bHtml5, aHtml5}; +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get run () {return run;}, set run (value) {run = value;}}); +var __name__ = 'div_pulls.pull575_reexport_modules'; +export var run = function (autoTester) { + autoTester.check ('Pull 575: Re-export modules'); + autoTester.check (aHtml5, bHtml5, cHtml5, ext.dExt); +}; + +//# sourceMappingURL=div_pulls.pull575_reexport_modules.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/div_pulls.pull575_reexport_modules.reexporter.html5.ext.js b/transcrypt/development/automated_tests/transcrypt/__target__39/div_pulls.pull575_reexport_modules.reexporter.html5.ext.js new file mode 100644 index 000000000..2a2b41b19 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/div_pulls.pull575_reexport_modules.reexporter.html5.ext.js @@ -0,0 +1,7 @@ +// Transcrypt'ed from Python, 2021-05-14 15:01:25 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get dExt () {return dExt;}, set dExt (value) {dExt = value;}}); +var __name__ = 'div_pulls.pull575_reexport_modules.reexporter.html5.ext'; +export var dExt = 3; + +//# sourceMappingURL=div_pulls.pull575_reexport_modules.reexporter.html5.ext.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/div_pulls.pull575_reexport_modules.reexporter.html5.ext.tree b/transcrypt/development/automated_tests/transcrypt/__target__39/div_pulls.pull575_reexport_modules.reexporter.html5.ext.tree new file mode 100644 index 000000000..d614f9325 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/div_pulls.pull575_reexport_modules.reexporter.html5.ext.tree @@ -0,0 +1,12 @@ +file: Module + body: list + element: Assign + targets: list + element: Name + id: str = dExt + ctx: Store + value: Constant + value: int = 3 + kind: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/div_pulls.pull575_reexport_modules.reexporter.html5.html5.js b/transcrypt/development/automated_tests/transcrypt/__target__39/div_pulls.pull575_reexport_modules.reexporter.html5.html5.js new file mode 100644 index 000000000..3bf58ebc1 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/div_pulls.pull575_reexport_modules.reexporter.html5.html5.js @@ -0,0 +1,9 @@ +// Transcrypt'ed from Python, 2021-05-14 15:01:25 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get aHtml5 () {return aHtml5;}, set aHtml5 (value) {aHtml5 = value;}, get bHtml5 () {return bHtml5;}, set bHtml5 (value) {bHtml5 = value;}, get cHtml5 () {return cHtml5;}, set cHtml5 (value) {cHtml5 = value;}}); +var __name__ = 'div_pulls.pull575_reexport_modules.reexporter.html5.html5'; +export var aHtml5 = 0; +export var bHtml5 = 1; +export var cHtml5 = 2; + +//# sourceMappingURL=div_pulls.pull575_reexport_modules.reexporter.html5.html5.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/div_pulls.pull575_reexport_modules.reexporter.html5.html5.tree b/transcrypt/development/automated_tests/transcrypt/__target__39/div_pulls.pull575_reexport_modules.reexporter.html5.html5.tree new file mode 100644 index 000000000..b5d37c6b8 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/div_pulls.pull575_reexport_modules.reexporter.html5.html5.tree @@ -0,0 +1,30 @@ +file: Module + body: list + element: Assign + targets: list + element: Name + id: str = aHtml5 + ctx: Store + value: Constant + value: int = 0 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = bHtml5 + ctx: Store + value: Constant + value: int = 1 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = cHtml5 + ctx: Store + value: Constant + value: int = 2 + kind: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/div_pulls.pull575_reexport_modules.reexporter.js b/transcrypt/development/automated_tests/transcrypt/__target__39/div_pulls.pull575_reexport_modules.reexporter.js new file mode 100644 index 000000000..882d7bded --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/div_pulls.pull575_reexport_modules.reexporter.js @@ -0,0 +1,9 @@ +// Transcrypt'ed from Python, 2021-05-14 15:01:25 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +import * as ext from './div_pulls.pull575_reexport_modules.reexporter.html5.ext.js'; +import {aHtml5, bHtml5, cHtml5} from './div_pulls.pull575_reexport_modules.reexporter.html5.html5.js'; +export {ext, cHtml5, bHtml5, aHtml5}; +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}}); +var __name__ = 'div_pulls.pull575_reexport_modules.reexporter'; + +//# sourceMappingURL=div_pulls.pull575_reexport_modules.reexporter.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/div_pulls.pull575_reexport_modules.reexporter.tree b/transcrypt/development/automated_tests/transcrypt/__target__39/div_pulls.pull575_reexport_modules.reexporter.tree new file mode 100644 index 000000000..980147849 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/div_pulls.pull575_reexport_modules.reexporter.tree @@ -0,0 +1,17 @@ +file: Module + body: list + element: ImportFrom + module: str = div_pulls.pull575_reexport_modules.reexporter.html5.html5 + names: list + element: alias + name: str = * + asname: NoneType = None + level: int = 0 + element: ImportFrom + module: str = div_pulls.pull575_reexport_modules.reexporter.html5 + names: list + element: alias + name: str = ext + asname: NoneType = None + level: int = 0 + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/div_pulls.pull575_reexport_modules.tree b/transcrypt/development/automated_tests/transcrypt/__target__39/div_pulls.pull575_reexport_modules.tree new file mode 100644 index 000000000..ba6f4d58a --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/div_pulls.pull575_reexport_modules.tree @@ -0,0 +1,66 @@ +file: Module + body: list + element: ImportFrom + module: str = div_pulls.pull575_reexport_modules.reexporter + names: list + element: alias + name: str = * + asname: NoneType = None + level: int = 0 + element: FunctionDef + name: str = run + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = autoTester + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Pull 575: Re-export modules + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = aHtml5 + ctx: Load + element: Name + id: str = bHtml5 + ctx: Load + element: Name + id: str = cHtml5 + ctx: Load + element: Attribute + value: Name + id: str = ext + ctx: Load + attr: str = dExt + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/div_pulls.tree b/transcrypt/development/automated_tests/transcrypt/__target__39/div_pulls.tree new file mode 100644 index 000000000..af04055cc --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/div_pulls.tree @@ -0,0 +1,477 @@ +file: Module + body: list + element: Import + names: list + element: alias + name: str = div_pulls.pull575_reexport_modules + asname: str = pull575 + element: Expr + value: Constant + value: str = This is a single line docstring + kind: NoneType = None + element: ClassDef + name: str = A + bases: list + keywords: list + body: list + element: Expr + value: Constant + value: str = + This + is + a + multiline + docstring + + kind: NoneType = None + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = This is a single line comment + kind: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = x + ctx: Store + value: Name + id: str = x + ctx: Load + type_comment: NoneType = None + element: Expr + value: Constant + value: str = + This + is + a + multiline + docstring + + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Expr + value: Constant + value: str = This is a single line docstring + kind: NoneType = None + decorator_list: list + element: Expr + value: Constant + value: str = +This +is +a +multiline +docstring + + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = a + ctx: Store + value: Call + func: Name + id: str = A + ctx: Load + args: list + element: Constant + value: float = 5.5 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: FunctionDef + name: str = run + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = autoTester + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Pull 56 + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = s + ctx: Store + value: Constant + value: str = abcdefghij + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Subscript + value: Name + id: str = s + ctx: Load + slice: Slice + lower: Constant + value: int = 2 + kind: NoneType = None + upper: Constant + value: int = 3 + kind: NoneType = None + step: NoneType = None + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Subscript + value: Name + id: str = s + ctx: Load + slice: Slice + lower: NoneType = None + upper: Constant + value: int = 3 + kind: NoneType = None + step: NoneType = None + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Subscript + value: Name + id: str = s + ctx: Load + slice: Slice + lower: Constant + value: int = 2 + kind: NoneType = None + upper: NoneType = None + step: NoneType = None + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Subscript + value: Name + id: str = s + ctx: Load + slice: Slice + lower: NoneType = None + upper: NoneType = None + step: Constant + value: int = 2 + kind: NoneType = None + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Pull 59 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = list + ctx: Load + args: list + element: Call + func: Name + id: str = filter + ctx: Load + args: list + element: Lambda + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: Compare + left: BinOp + left: Name + id: str = x + ctx: Load + op: Mod + right: Constant + value: int = 2 + kind: NoneType = None + ops: list + element: Eq + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + element: Call + func: Name + id: str = range + ctx: Load + args: list + element: Constant + value: int = 10 + kind: NoneType = None + keywords: list + keywords: list + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = list + ctx: Load + args: list + element: Call + func: Name + id: str = map + ctx: Load + args: list + element: Lambda + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: BinOp + left: Name + id: str = x + ctx: Load + op: Mult + right: Name + id: str = x + ctx: Load + element: Call + func: Name + id: str = range + ctx: Load + args: list + element: Constant + value: int = 0 + kind: NoneType = None + element: Constant + value: int = 31 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + keywords: list + keywords: list + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Pull 561 + kind: NoneType = None + keywords: list + element: FunctionDef + name: str = brackets + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = word + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = sideeffect + kind: NoneType = None + keywords: list + element: Return + value: BinOp + left: BinOp + left: Constant + value: str = [ + kind: NoneType = None + op: Add + right: Name + id: str = word + ctx: Load + op: Add + right: Constant + value: str = ] + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = opov + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Call + func: Name + id: str = brackets + ctx: Load + args: list + element: Constant + value: str = anything + kind: NoneType = None + keywords: list + attr: str = lower + ctx: Load + args: list + keywords: list + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = noopov + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = pull575 + ctx: Load + attr: str = run + ctx: Load + args: list + element: Name + id: str = autoTester + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/docstrings.js b/transcrypt/development/automated_tests/transcrypt/__target__39/docstrings.js new file mode 100644 index 000000000..84aba83ac --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/docstrings.js @@ -0,0 +1,28 @@ +// Transcrypt'ed from Python, 2021-05-14 15:01:25 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +export var __doc__ = 'Just a module\nto test docstrings'; +var __all__ = dict ({get __doc__ () {return __doc__;}, set __doc__ (value) {__doc__ = value;}, get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get run () {return run;}, set run (value) {run = value;}}); +var __name__ = 'docstrings'; +export var run = function (autoTester) { + var f = function (p) { + autoTester.check (p); + } .__setdoc__ ('Just a function\n called f'); + var C = __class__ ('C', [object], { + __module__: __name__, + get g () {return __get__ (this, function (self, q) { + autoTester.check (q); + } .__setdoc__ ('Just a method\n called g'));} + }) .__setdoc__ ('Just a class\n called C'); + autoTester.check (__doc__); + autoTester.check (); + autoTester.check (f.__doc__); + autoTester.check (); + autoTester.check (C.__doc__); + autoTester.check (); + autoTester.check (C.g.__doc__); + autoTester.check (); + f ('Doc'); + C ().g ('strings'); +}; + +//# sourceMappingURL=docstrings.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/docstrings.tree b/transcrypt/development/automated_tests/transcrypt/__target__39/docstrings.tree new file mode 100644 index 000000000..94389f267 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/docstrings.tree @@ -0,0 +1,276 @@ +file: Module + body: list + element: Expr + value: Constant + value: str = Just a module +to test docstrings + kind: NoneType = None + element: Expr + value: Constant + value: str = Not visible + kind: NoneType = None + element: ImportFrom + module: str = org.transcrypt.stubs.browser + names: list + element: alias + name: str = __pragma__ + asname: NoneType = None + level: int = 0 + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = docat + kind: NoneType = None + keywords: list + element: FunctionDef + name: str = run + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = autoTester + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: FunctionDef + name: str = f + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = p + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = Just a function + called f + kind: NoneType = None + element: Expr + value: Constant + value: str = Not visible + kind: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = p + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: ClassDef + name: str = C + bases: list + keywords: list + body: list + element: Expr + value: Constant + value: str = Just a class + called C + kind: NoneType = None + element: Expr + value: Constant + value: str = Not visible + kind: NoneType = None + element: FunctionDef + name: str = g + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = q + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = Just a method + called g + kind: NoneType = None + element: Expr + value: Constant + value: str = Not visible + kind: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = q + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = __doc__ + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = f + ctx: Load + attr: str = __doc__ + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = C + ctx: Load + attr: str = __doc__ + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Attribute + value: Name + id: str = C + ctx: Load + attr: str = g + ctx: Load + attr: str = __doc__ + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + keywords: list + element: Expr + value: Call + func: Name + id: str = f + ctx: Load + args: list + element: Constant + value: str = Doc + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Call + func: Name + id: str = C + ctx: Load + args: list + keywords: list + attr: str = g + ctx: Load + args: list + element: Constant + value: str = strings + kind: NoneType = None + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/exceptions.js b/transcrypt/development/automated_tests/transcrypt/__target__39/exceptions.js new file mode 100644 index 000000000..7deedcfd0 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/exceptions.js @@ -0,0 +1,300 @@ +// Transcrypt'ed from Python, 2021-05-14 15:01:25 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +var __all__ = dict ({get Ex1 () {return Ex1;}, set Ex1 (value) {Ex1 = value;}, get Ex2 () {return Ex2;}, set Ex2 (value) {Ex2 = value;}, get Ex3 () {return Ex3;}, set Ex3 (value) {Ex3 = value;}, get Table () {return Table;}, set Table (value) {Table = value;}, get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get run () {return run;}, set run (value) {run = value;}, get test1 () {return test1;}, set test1 (value) {test1 = value;}, get test2 () {return test2;}, set test2 (value) {test2 = value;}}); +var __name__ = 'exceptions'; +export var Ex1 = __class__ ('Ex1', [Exception], { + __module__: __name__, +}); +export var Ex2 = __class__ ('Ex2', [Ex1], { + __module__: __name__, +}); +export var Ex3 = __class__ ('Ex3', [Exception], { + __module__: __name__, +}); +export var Table = __class__ ('Table', [BaseException], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self) { + var args = tuple ([].slice.apply (arguments).slice (1)); + self.fields = args; + });}, + get __repr__ () {return __get__ (this, function (self) { + return 'Table' + repr (self.fields).py_replace (', ', ',').py_replace ("'", ''); + });} +}); +export var test1 = function () { + var __except0__ = Exception ('mary'); + __except0__.__cause__ = null; + throw __except0__; +}; +export var test2 = function (autoTester) { + try { + test1 (); + } + catch (__except0__) { + if (isinstance (__except0__, Ex1)) { + var exception = __except0__; + autoTester.check (111); + autoTester.check (exception); + } + else if (isinstance (__except0__, Exception)) { + var exception = __except0__; + autoTester.check (222); + autoTester.check (exception); + } + else { + throw __except0__; + } + } +}; +export var run = function (autoTester) { + test2 (autoTester); + try { + var __except0__ = Ex2 ('had'); + __except0__.__cause__ = null; + throw __except0__; + } + catch (__except0__) { + if (isinstance (__except0__, Ex1)) { + var exception = __except0__; + autoTester.check ('a'); + } + else if (isinstance (__except0__, Exception)) { + var exception = __except0__; + autoTester.check ('little'); + autoTester.check (exception); + } + else { + throw __except0__; + } + } + autoTester.check (333); + try { + var __except0__ = Ex1 ('lamb'); + __except0__.__cause__ = null; + throw __except0__; + } + catch (__except0__) { + if (isinstance (__except0__, Ex2)) { + var exception = __except0__; + autoTester.check ('his'); + autoTester.check (exception); + } + else if (isinstance (__except0__, Ex1)) { + var exception = __except0__; + autoTester.check ('fleece'); + autoTester.check (exception); + } + else if (isinstance (__except0__, Exception)) { + var exception = __except0__; + autoTester.check ('was'); + autoTester.check (exception); + } + else { + throw __except0__; + } + } + finally { + autoTester.check ('white'); + } + autoTester.check (444); + var test3 = function () { + var __except0__ = Ex3 ('as'); + __except0__.__cause__ = null; + throw __except0__; + }; + autoTester.check (555); + try { + test3 (); + } + catch (__except0__) { + if (isinstance (__except0__, Ex1)) { + var exception = __except0__; + autoTester.check ('snow'); + autoTester.check (exception); + } + else if (isinstance (__except0__, Exception)) { + var exception = __except0__; + autoTester.check ('and'); + autoTester.check (exception); + } + else { + throw __except0__; + } + } + finally { + autoTester.check ('everywhere'); + } + autoTester.check (666); + try { + var __except0__ = Ex3 ('that'); + __except0__.__cause__ = null; + throw __except0__; + } + catch (__except0__) { + if (isinstance (__except0__, Ex1)) { + var exception = __except0__; + autoTester.check ('mary'); + autoTester.check (exception); + } + else autoTester.check ('went'); + } + finally { + autoTester.check ('the'); + } + autoTester.check (777); + try { + try { + var __except0__ = Ex3 ('lamb'); + __except0__.__cause__ = null; + throw __except0__; + } + catch (__except0__) { + if (isinstance (__except0__, Ex1)) { + var exception = __except0__; + autoTester.check ('was'); + autoTester.check (exception); + } + else { + throw __except0__; + } + } + finally { + autoTester.check ('to'); + } + } + catch (__except0__) { + if (isinstance (__except0__, Ex3)) { + var exception = __except0__; + autoTester.check ('go'); + autoTester.check (exception); + } + else { + throw __except0__; + } + } + try { + var __except0__ = new Table ('he', 'followed', 'her'); + __except0__.__cause__ = null; + throw __except0__; + } + catch (__except0__) { + if (isinstance (__except0__, Ex1)) { + var exception = __except0__; + autoTester.check ('to'); + autoTester.check (exception); + } + else if (isinstance (__except0__, Table)) { + var exception = __except0__; + autoTester.check ('school'); + autoTester.check (exception); + } + else if (isinstance (__except0__, Ex3)) { + var exception = __except0__; + autoTester.check ('one'); + autoTester.check (exception); + } + else { + throw __except0__; + } + } + finally { + autoTester.check ('day'); + } + try { + assert ((2 * 8) / 4 == 2, 'Assert error 1'); + } + catch (__except0__) { + if (isinstance (__except0__, AssertionError)) { + var exception = __except0__; + autoTester.check (exception); + } + else { + throw __except0__; + } + } + try { + assert ((2 * 8) / 4 == 4, 'Assert error 2'); + } + catch (__except0__) { + if (isinstance (__except0__, AssertionError)) { + var exception = __except0__; + autoTester.check (exception); + } + else { + throw __except0__; + } + } + try { + assert ((2 * 8) / 4 == 2); + } + catch (__except0__) { + if (isinstance (__except0__, AssertionError)) { + var exception = __except0__; + autoTester.check (exception); + } + else { + throw __except0__; + } + } + try { + assert ((2 * 8) / 4 == 4); + } + catch (__except0__) { + if (isinstance (__except0__, AssertionError)) { + var exception = __except0__; + autoTester.check (exception); + } + else { + throw __except0__; + } + } + autoTester.check (888); + try { + autoTester.check ('hello world 1'); + try { + autoTester.check ('no error 1'); + } + catch (__except0__) { + } + } + catch (__except0__) { + autoTester.check ('error 1'); + } + var i = 1 + 2; + try { + autoTester.check ('hello world 2'); + if (i == 3) { + var __except0__ = Exception (); + __except0__.__cause__ = null; + throw __except0__; + } + try { + autoTester.check ('no error 2'); + } + catch (__except0__) { + } + } + catch (__except0__) { + autoTester.check ('error 2'); + } + for (var raiseIt of tuple ([false, true])) { + try { + try { + if (raiseIt) { + var __except0__ = Exception (); + __except0__.__cause__ = null; + throw __except0__; + } + autoTester.check ('no error 3'); + } + finally { + autoTester.check ('anyhow 3'); + } + } + catch (__except0__) { + autoTester.check ('error 3'); + } + } +}; + +//# sourceMappingURL=exceptions.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/exceptions.tree b/transcrypt/development/automated_tests/transcrypt/__target__39/exceptions.tree new file mode 100644 index 000000000..e7e185b44 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/exceptions.tree @@ -0,0 +1,1394 @@ +file: Module + body: list + element: ImportFrom + module: str = org.transcrypt.stubs.browser + names: list + element: alias + name: str = __envir__ + asname: NoneType = None + element: alias + name: str = __new__ + asname: NoneType = None + element: alias + name: str = __pragma__ + asname: NoneType = None + level: int = 0 + element: ClassDef + name: str = Ex1 + bases: list + element: Name + id: str = Exception + ctx: Load + keywords: list + body: list + element: Pass + decorator_list: list + element: ClassDef + name: str = Ex2 + bases: list + element: Name + id: str = Ex1 + ctx: Load + keywords: list + body: list + element: Pass + decorator_list: list + element: ClassDef + name: str = Ex3 + bases: list + element: Name + id: str = Exception + ctx: Load + keywords: list + body: list + element: Pass + decorator_list: list + element: ClassDef + name: str = Table + bases: list + element: Name + id: str = BaseException + ctx: Load + keywords: list + body: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: arg + arg: str = args + annotation: NoneType = None + type_comment: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = fields + ctx: Store + value: Name + id: str = args + ctx: Load + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __repr__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: BinOp + left: Constant + value: str = Table + kind: NoneType = None + op: Add + right: Call + func: Attribute + value: Call + func: Attribute + value: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = fields + ctx: Load + keywords: list + attr: str = replace + ctx: Load + args: list + element: Constant + value: str = , + kind: NoneType = None + element: Constant + value: str = , + kind: NoneType = None + keywords: list + attr: str = replace + ctx: Load + args: list + element: Constant + value: str = ' + kind: NoneType = None + element: Constant + value: str = + kind: NoneType = None + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: FunctionDef + name: str = test1 + args: arguments + posonlyargs: list + args: list + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Raise + exc: Call + func: Name + id: str = Exception + ctx: Load + args: list + element: Constant + value: str = mary + kind: NoneType = None + keywords: list + cause: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = test2 + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = autoTester + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Try + body: list + element: Expr + value: Call + func: Name + id: str = test1 + ctx: Load + args: list + keywords: list + handlers: list + element: ExceptHandler + type: Name + id: str = Ex1 + ctx: Load + name: str = exception + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: int = 111 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = exception + ctx: Load + keywords: list + element: ExceptHandler + type: Name + id: str = Exception + ctx: Load + name: str = exception + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: int = 222 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = exception + ctx: Load + keywords: list + orelse: list + finalbody: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = run + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = autoTester + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Name + id: str = test2 + ctx: Load + args: list + element: Name + id: str = autoTester + ctx: Load + keywords: list + element: Try + body: list + element: Raise + exc: Call + func: Name + id: str = Ex2 + ctx: Load + args: list + element: Constant + value: str = had + kind: NoneType = None + keywords: list + cause: NoneType = None + handlers: list + element: ExceptHandler + type: Name + id: str = Ex1 + ctx: Load + name: str = exception + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = a + kind: NoneType = None + keywords: list + element: ExceptHandler + type: Name + id: str = Exception + ctx: Load + name: str = exception + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = little + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = exception + ctx: Load + keywords: list + orelse: list + finalbody: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: int = 333 + kind: NoneType = None + keywords: list + element: Try + body: list + element: Raise + exc: Call + func: Name + id: str = Ex1 + ctx: Load + args: list + element: Constant + value: str = lamb + kind: NoneType = None + keywords: list + cause: NoneType = None + handlers: list + element: ExceptHandler + type: Name + id: str = Ex2 + ctx: Load + name: str = exception + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = his + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = exception + ctx: Load + keywords: list + element: ExceptHandler + type: Name + id: str = Ex1 + ctx: Load + name: str = exception + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = fleece + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = exception + ctx: Load + keywords: list + element: ExceptHandler + type: Name + id: str = Exception + ctx: Load + name: str = exception + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = was + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = exception + ctx: Load + keywords: list + orelse: list + finalbody: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = white + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: int = 444 + kind: NoneType = None + keywords: list + element: FunctionDef + name: str = test3 + args: arguments + posonlyargs: list + args: list + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Raise + exc: Call + func: Name + id: str = Ex3 + ctx: Load + args: list + element: Constant + value: str = as + kind: NoneType = None + keywords: list + cause: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: int = 555 + kind: NoneType = None + keywords: list + element: Try + body: list + element: Expr + value: Call + func: Name + id: str = test3 + ctx: Load + args: list + keywords: list + handlers: list + element: ExceptHandler + type: Name + id: str = Ex1 + ctx: Load + name: str = exception + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = snow + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = exception + ctx: Load + keywords: list + element: ExceptHandler + type: Name + id: str = Exception + ctx: Load + name: str = exception + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = and + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = exception + ctx: Load + keywords: list + orelse: list + finalbody: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = everywhere + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: int = 666 + kind: NoneType = None + keywords: list + element: Try + body: list + element: Raise + exc: Call + func: Name + id: str = Ex3 + ctx: Load + args: list + element: Constant + value: str = that + kind: NoneType = None + keywords: list + cause: NoneType = None + handlers: list + element: ExceptHandler + type: Name + id: str = Ex1 + ctx: Load + name: str = exception + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = mary + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = exception + ctx: Load + keywords: list + element: ExceptHandler + type: NoneType = None + name: NoneType = None + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = went + kind: NoneType = None + keywords: list + orelse: list + finalbody: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = the + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: int = 777 + kind: NoneType = None + keywords: list + element: Try + body: list + element: Try + body: list + element: Raise + exc: Call + func: Name + id: str = Ex3 + ctx: Load + args: list + element: Constant + value: str = lamb + kind: NoneType = None + keywords: list + cause: NoneType = None + handlers: list + element: ExceptHandler + type: Name + id: str = Ex1 + ctx: Load + name: str = exception + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = was + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = exception + ctx: Load + keywords: list + orelse: list + finalbody: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = to + kind: NoneType = None + keywords: list + handlers: list + element: ExceptHandler + type: Name + id: str = Ex3 + ctx: Load + name: str = exception + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = go + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = exception + ctx: Load + keywords: list + orelse: list + finalbody: list + element: Try + body: list + element: Raise + exc: Call + func: Name + id: str = __new__ + ctx: Load + args: list + element: Call + func: Name + id: str = Table + ctx: Load + args: list + element: Constant + value: str = he + kind: NoneType = None + element: Constant + value: str = followed + kind: NoneType = None + element: Constant + value: str = her + kind: NoneType = None + keywords: list + keywords: list + cause: NoneType = None + handlers: list + element: ExceptHandler + type: Name + id: str = Ex1 + ctx: Load + name: str = exception + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = to + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = exception + ctx: Load + keywords: list + element: ExceptHandler + type: Name + id: str = Table + ctx: Load + name: str = exception + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = school + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = exception + ctx: Load + keywords: list + element: ExceptHandler + type: Name + id: str = Ex3 + ctx: Load + name: str = exception + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = one + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = exception + ctx: Load + keywords: list + orelse: list + finalbody: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = day + kind: NoneType = None + keywords: list + element: Try + body: list + element: Assert + test: Compare + left: BinOp + left: BinOp + left: Constant + value: int = 2 + kind: NoneType = None + op: Mult + right: Constant + value: int = 8 + kind: NoneType = None + op: Div + right: Constant + value: int = 4 + kind: NoneType = None + ops: list + element: Eq + comparators: list + element: Constant + value: int = 2 + kind: NoneType = None + msg: Constant + value: str = Assert error 1 + kind: NoneType = None + handlers: list + element: ExceptHandler + type: Name + id: str = AssertionError + ctx: Load + name: str = exception + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = exception + ctx: Load + keywords: list + orelse: list + finalbody: list + element: Try + body: list + element: Assert + test: Compare + left: BinOp + left: BinOp + left: Constant + value: int = 2 + kind: NoneType = None + op: Mult + right: Constant + value: int = 8 + kind: NoneType = None + op: Div + right: Constant + value: int = 4 + kind: NoneType = None + ops: list + element: Eq + comparators: list + element: Constant + value: int = 4 + kind: NoneType = None + msg: Constant + value: str = Assert error 2 + kind: NoneType = None + handlers: list + element: ExceptHandler + type: Name + id: str = AssertionError + ctx: Load + name: str = exception + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = exception + ctx: Load + keywords: list + orelse: list + finalbody: list + element: Try + body: list + element: Assert + test: Compare + left: BinOp + left: BinOp + left: Constant + value: int = 2 + kind: NoneType = None + op: Mult + right: Constant + value: int = 8 + kind: NoneType = None + op: Div + right: Constant + value: int = 4 + kind: NoneType = None + ops: list + element: Eq + comparators: list + element: Constant + value: int = 2 + kind: NoneType = None + msg: NoneType = None + handlers: list + element: ExceptHandler + type: Name + id: str = AssertionError + ctx: Load + name: str = exception + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = exception + ctx: Load + keywords: list + orelse: list + finalbody: list + element: Try + body: list + element: Assert + test: Compare + left: BinOp + left: BinOp + left: Constant + value: int = 2 + kind: NoneType = None + op: Mult + right: Constant + value: int = 8 + kind: NoneType = None + op: Div + right: Constant + value: int = 4 + kind: NoneType = None + ops: list + element: Eq + comparators: list + element: Constant + value: int = 4 + kind: NoneType = None + msg: NoneType = None + handlers: list + element: ExceptHandler + type: Name + id: str = AssertionError + ctx: Load + name: str = exception + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = exception + ctx: Load + keywords: list + orelse: list + finalbody: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: int = 888 + kind: NoneType = None + keywords: list + element: Try + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = hello world 1 + kind: NoneType = None + keywords: list + handlers: list + element: ExceptHandler + type: NoneType = None + name: NoneType = None + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = error 1 + kind: NoneType = None + keywords: list + orelse: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = no error 1 + kind: NoneType = None + keywords: list + finalbody: list + element: Assign + targets: list + element: Name + id: str = i + ctx: Store + value: BinOp + left: Constant + value: int = 1 + kind: NoneType = None + op: Add + right: Constant + value: int = 2 + kind: NoneType = None + type_comment: NoneType = None + element: Try + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = hello world 2 + kind: NoneType = None + keywords: list + element: If + test: Compare + left: Name + id: str = i + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: int = 3 + kind: NoneType = None + body: list + element: Raise + exc: Call + func: Name + id: str = Exception + ctx: Load + args: list + keywords: list + cause: NoneType = None + orelse: list + handlers: list + element: ExceptHandler + type: NoneType = None + name: NoneType = None + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = error 2 + kind: NoneType = None + keywords: list + orelse: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = no error 2 + kind: NoneType = None + keywords: list + finalbody: list + element: For + target: Name + id: str = raiseIt + ctx: Store + iter: Tuple + elts: list + element: Constant + value: bool = False + kind: NoneType = None + element: Constant + value: bool = True + kind: NoneType = None + ctx: Load + body: list + element: Try + body: list + element: Try + body: list + element: If + test: Name + id: str = raiseIt + ctx: Load + body: list + element: Raise + exc: Call + func: Name + id: str = Exception + ctx: Load + args: list + keywords: list + cause: NoneType = None + orelse: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = no error 3 + kind: NoneType = None + keywords: list + handlers: list + orelse: list + finalbody: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = anyhow 3 + kind: NoneType = None + keywords: list + handlers: list + element: ExceptHandler + type: NoneType = None + name: NoneType = None + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = error 3 + kind: NoneType = None + keywords: list + orelse: list + finalbody: list + orelse: list + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/executable_comments.js b/transcrypt/development/automated_tests/transcrypt/__target__39/executable_comments.js new file mode 100644 index 000000000..5572a5618 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/executable_comments.js @@ -0,0 +1,16 @@ +// Transcrypt'ed from Python, 2021-05-14 15:01:25 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get run () {return run;}, set run (value) {run = value;}}); +var __name__ = 'executable_comments'; +export var run = function (autoTester) { + for (var i = 0; i < 10; i++) { + autoTester.check (i); + } + autoTester.check (100); + for (var i = 20; i < 30; i++) { + autoTester.check (i); + } + autoTester.check (300); +}; + +//# sourceMappingURL=executable_comments.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/executable_comments.tree b/transcrypt/development/automated_tests/transcrypt/__target__39/executable_comments.tree new file mode 100644 index 000000000..2a69aa3b6 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/executable_comments.tree @@ -0,0 +1,296 @@ +file: Module + body: list + element: ImportFrom + module: str = org.transcrypt.stubs.browser + names: list + element: alias + name: str = __pragma__ + asname: NoneType = None + level: int = 0 + element: FunctionDef + name: str = run + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = autoTester + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: For + target: Name + id: str = i + ctx: Store + iter: Call + func: Name + id: str = range + ctx: Load + args: list + element: Constant + value: int = 10 + kind: NoneType = None + keywords: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = i + ctx: Load + keywords: list + orelse: list + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = skip + kind: NoneType = None + keywords: list + element: For + target: Name + id: str = i + ctx: Store + iter: Call + func: Name + id: str = range + ctx: Load + args: list + element: Constant + value: int = 10 + kind: NoneType = None + keywords: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = i + ctx: Load + keywords: list + orelse: list + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = noskip + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: int = 100 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = skip + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: int = 100 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = noskip + kind: NoneType = None + keywords: list + element: Expr + value: Constant + value: str = ? + for i in range (10, 20): + autoTester.check (i) + ? + kind: NoneType = None + element: For + target: Name + id: str = i + ctx: Store + iter: Call + func: Name + id: str = range + ctx: Load + args: list + element: Constant + value: int = 20 + kind: NoneType = None + element: Constant + value: int = 30 + kind: NoneType = None + keywords: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = i + ctx: Load + keywords: list + orelse: list + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = skip + kind: NoneType = None + keywords: list + element: For + target: Name + id: str = i + ctx: Store + iter: Call + func: Name + id: str = range + ctx: Load + args: list + element: Constant + value: int = 20 + kind: NoneType = None + element: Constant + value: int = 30 + kind: NoneType = None + keywords: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = i + ctx: Load + keywords: list + orelse: list + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = noskip + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: int = 300 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = skip + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: int = 300 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = noskip + kind: NoneType = None + keywords: list + element: Expr + value: Constant + value: str = ? + for i in range (30, 40): + autoTester.check (i) + ? + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/extended_slices.js b/transcrypt/development/automated_tests/transcrypt/__target__39/extended_slices.js new file mode 100644 index 000000000..a17716da9 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/extended_slices.js @@ -0,0 +1,60 @@ +// Transcrypt'ed from Python, 2021-05-14 15:01:25 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +var __all__ = dict ({get Test () {return Test;}, set Test (value) {Test = value;}, get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get indices () {return indices;}, set indices (value) {indices = value;}, get run () {return run;}, set run (value) {run = value;}}); +var __name__ = 'extended_slices'; +export var indices = function (key) { + if (__envir__.executor_name == __envir__.transpiler_name) { + return (py_typeof (key) == list ? tuple (key) : key); + } + else { + try { + return key.indices (1000000000); + } + catch (__except0__) { + try { + return tuple ((function () { + var __accu0__ = []; + for (var subkey of key) { + __accu0__.append (indices (subkey)); + } + return __accu0__; + }) ()); + } + catch (__except1__) { + return key; + } + } + } +}; +export var Test = __class__ ('Test', [object], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self, autoTester) { + self.autoTester = autoTester; + });}, + get __getitem__ () {return __get__ (this, function (self, key) { + self.autoTester.check ('getitem (', indices (key), ')'); + return 1234567; + });}, + get __setitem__ () {return __get__ (this, function (self, key, value) { + self.autoTester.check ('setitem (', indices (key), ')', value); + });} +}); +export var run = function (autoTester) { + var __left0__ = Test (autoTester); + var a = __left0__; + var b = __left0__; + var c = __left0__; + var d = __left0__; + var e = __left0__; + var f = __left0__; + var g = __left0__; + var h = __left0__; + var i = __left0__; + var j = __left0__; + var k = __left0__; + var l = __left0__; + __setslice__ (c, 1, 2, 3, ); + __setslice__ (k, 1, 2, 3, __getslice__ (l, 1, 2, 3)); +}; + +//# sourceMappingURL=extended_slices.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/extended_slices.tree b/transcrypt/development/automated_tests/transcrypt/__target__39/extended_slices.tree new file mode 100644 index 000000000..41220f560 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/extended_slices.tree @@ -0,0 +1,608 @@ +file: Module + body: list + element: ImportFrom + module: str = org.transcrypt.stubs.browser + names: list + element: alias + name: str = * + asname: NoneType = None + level: int = 0 + element: ImportFrom + module: str = org.transcrypt.stubs.browser + names: list + element: alias + name: str = __pragma__ + asname: NoneType = None + element: alias + name: str = __envir__ + asname: NoneType = None + level: int = 0 + element: FunctionDef + name: str = indices + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = key + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: Compare + left: Attribute + value: Name + id: str = __envir__ + ctx: Load + attr: str = executor_name + ctx: Load + ops: list + element: Eq + comparators: list + element: Attribute + value: Name + id: str = __envir__ + ctx: Load + attr: str = transpiler_name + ctx: Load + body: list + element: Return + value: IfExp + test: Compare + left: Call + func: Name + id: str = type + ctx: Load + args: list + element: Name + id: str = key + ctx: Load + keywords: list + ops: list + element: Eq + comparators: list + element: Name + id: str = list + ctx: Load + body: Call + func: Name + id: str = tuple + ctx: Load + args: list + element: Name + id: str = key + ctx: Load + keywords: list + orelse: Name + id: str = key + ctx: Load + orelse: list + element: Try + body: list + element: Return + value: Call + func: Attribute + value: Name + id: str = key + ctx: Load + attr: str = indices + ctx: Load + args: list + element: Constant + value: int = 1000000000 + kind: NoneType = None + keywords: list + handlers: list + element: ExceptHandler + type: NoneType = None + name: NoneType = None + body: list + element: Try + body: list + element: Return + value: Call + func: Name + id: str = tuple + ctx: Load + args: list + element: ListComp + elt: Call + func: Name + id: str = indices + ctx: Load + args: list + element: Name + id: str = subkey + ctx: Load + keywords: list + generators: list + element: comprehension + target: Name + id: str = subkey + ctx: Store + iter: Name + id: str = key + ctx: Load + ifs: list + is_async: int = 0 + keywords: list + handlers: list + element: ExceptHandler + type: NoneType = None + name: NoneType = None + body: list + element: Return + value: Name + id: str = key + ctx: Load + orelse: list + finalbody: list + orelse: list + finalbody: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: ClassDef + name: str = Test + bases: list + keywords: list + body: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = autoTester + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = autoTester + ctx: Store + value: Name + id: str = autoTester + ctx: Load + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __getitem__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = key + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = getitem ( + kind: NoneType = None + element: Call + func: Name + id: str = indices + ctx: Load + args: list + element: Name + id: str = key + ctx: Load + keywords: list + element: Constant + value: str = ) + kind: NoneType = None + keywords: list + element: Return + value: Constant + value: int = 1234567 + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __setitem__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = key + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = value + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = setitem ( + kind: NoneType = None + element: Call + func: Name + id: str = indices + ctx: Load + args: list + element: Name + id: str = key + ctx: Load + keywords: list + element: Constant + value: str = ) + kind: NoneType = None + element: Name + id: str = value + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: FunctionDef + name: str = run + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = autoTester + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Name + id: str = a + ctx: Store + element: Name + id: str = b + ctx: Store + element: Name + id: str = c + ctx: Store + element: Name + id: str = d + ctx: Store + element: Name + id: str = e + ctx: Store + element: Name + id: str = f + ctx: Store + element: Name + id: str = g + ctx: Store + element: Name + id: str = h + ctx: Store + element: Name + id: str = i + ctx: Store + element: Name + id: str = j + ctx: Store + element: Name + id: str = k + ctx: Store + element: Name + id: str = l + ctx: Store + value: Call + func: Name + id: str = Test + ctx: Load + args: list + element: Name + id: str = autoTester + ctx: Load + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = opov + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Subscript + value: Name + id: str = a + ctx: Load + slice: Tuple + elts: list + element: Slice + lower: Constant + value: int = 1 + kind: NoneType = None + upper: Constant + value: int = 2 + kind: NoneType = None + step: Constant + value: int = 3 + kind: NoneType = None + element: Slice + lower: Constant + value: int = 4 + kind: NoneType = None + upper: Constant + value: int = 5 + kind: NoneType = None + step: Constant + value: int = 6 + kind: NoneType = None + ctx: Load + ctx: Store + value: Subscript + value: Name + id: str = b + ctx: Load + slice: Slice + lower: Constant + value: int = 7 + kind: NoneType = None + upper: Constant + value: int = 8 + kind: NoneType = None + step: Constant + value: int = 9 + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Subscript + value: Name + id: str = c + ctx: Load + slice: Slice + lower: Constant + value: int = 1 + kind: NoneType = None + upper: Constant + value: int = 2 + kind: NoneType = None + step: Constant + value: int = 3 + kind: NoneType = None + ctx: Store + value: Subscript + value: Name + id: str = d + ctx: Load + slice: Tuple + elts: list + element: Slice + lower: Constant + value: int = 4 + kind: NoneType = None + upper: Constant + value: int = 5 + kind: NoneType = None + step: Constant + value: int = 6 + kind: NoneType = None + element: Slice + lower: Constant + value: int = 7 + kind: NoneType = None + upper: Constant + value: int = 8 + kind: NoneType = None + step: Constant + value: int = 9 + kind: NoneType = None + ctx: Load + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Subscript + value: Name + id: str = e + ctx: Load + slice: Tuple + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Slice + lower: Constant + value: int = 1 + kind: NoneType = None + upper: Constant + value: int = 2 + kind: NoneType = None + step: Constant + value: int = 3 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + ctx: Store + value: Subscript + value: Name + id: str = f + ctx: Load + slice: Tuple + elts: list + element: Constant + value: int = 4 + kind: NoneType = None + element: Slice + lower: Constant + value: int = 4 + kind: NoneType = None + upper: Constant + value: int = 5 + kind: NoneType = None + step: Constant + value: int = 6 + kind: NoneType = None + element: Constant + value: int = 6 + kind: NoneType = None + ctx: Load + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Subscript + value: Name + id: str = g + ctx: Load + slice: Tuple + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + ctx: Store + value: Subscript + value: Name + id: str = h + ctx: Load + slice: Tuple + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Subscript + value: Name + id: str = i + ctx: Load + slice: Constant + value: int = 1 + kind: NoneType = None + ctx: Store + value: Subscript + value: Name + id: str = j + ctx: Load + slice: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Subscript + value: Name + id: str = k + ctx: Load + slice: Slice + lower: Constant + value: int = 1 + kind: NoneType = None + upper: Constant + value: int = 2 + kind: NoneType = None + step: Constant + value: int = 3 + kind: NoneType = None + ctx: Store + value: Subscript + value: Name + id: str = l + ctx: Load + slice: Slice + lower: Constant + value: int = 1 + kind: NoneType = None + upper: Constant + value: int = 2 + kind: NoneType = None + step: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/fstrings.js b/transcrypt/development/automated_tests/transcrypt/__target__39/fstrings.js new file mode 100644 index 000000000..5f21210a5 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/fstrings.js @@ -0,0 +1,25 @@ +// Transcrypt'ed from Python, 2021-05-14 15:01:25 +var math = {}; +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +import * as __module_math__ from './math.js'; +__nest__ (math, '', __module_math__); +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get run () {return run;}, set run (value) {run = value;}}); +var __name__ = 'fstrings'; +export var run = function (autoTester) { + var aDict = dict ({'one': 1}); + var aSet = new set (['rose']); + var anArray = ['hundred', 100, 'pi', 3.14, 'e', 2.74, 'dozen', 12]; + var anInt = 144; + var aFloat = 3.14; + autoTester.check (aDict); + autoTester.check (str (aDict)); + autoTester.check (repr (aDict)); + autoTester.check ('aDictionary: ({}, {})'.format (aDict, )); + autoTester.check ('aDictionary: ({}, {})'.format (aDict, )); + autoTester.check ('aSet: ({}, {})'.format (aSet, __in__ ('rose', aSet))); + autoTester.check ('anArray ({}, {}, {})'.format (anArray, anArray.__getslice__ (1, 4, 1), )); + autoTester.check ('anInt ({}, {})'.format (anInt, int (math.sqrt (anInt)))); + autoTester.check ('aFloat ({}, {})'.format (aFloat, round (math.sin (aFloat + 2.74), 2))); +}; + +//# sourceMappingURL=fstrings.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/fstrings.tree b/transcrypt/development/automated_tests/transcrypt/__target__39/fstrings.tree new file mode 100644 index 000000000..5ca41f5c7 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/fstrings.tree @@ -0,0 +1,423 @@ +file: Module + body: list + element: Import + names: list + element: alias + name: str = math + asname: NoneType = None + element: FunctionDef + name: str = run + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = autoTester + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Name + id: str = aDict + ctx: Store + value: Dict + keys: list + element: Constant + value: str = one + kind: NoneType = None + values: list + element: Constant + value: int = 1 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = aSet + ctx: Store + value: Set + elts: list + element: Constant + value: str = rose + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = anArray + ctx: Store + value: List + elts: list + element: Constant + value: str = hundred + kind: NoneType = None + element: Constant + value: int = 100 + kind: NoneType = None + element: Constant + value: str = pi + kind: NoneType = None + element: Constant + value: float = 3.14 + kind: NoneType = None + element: Constant + value: str = e + kind: NoneType = None + element: Constant + value: float = 2.74 + kind: NoneType = None + element: Constant + value: str = dozen + kind: NoneType = None + element: Constant + value: int = 12 + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = anInt + ctx: Store + value: Constant + value: int = 144 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = aFloat + ctx: Store + value: Constant + value: float = 3.14 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = aDict + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = aDict + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Name + id: str = aDict + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = aDictionary: ({}, {}) + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Name + id: str = aDict + ctx: Load + element: Subscript + value: Name + id: str = aDict + ctx: Load + slice: Constant + value: str = one + kind: NoneType = None + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: JoinedStr + values: list + element: Constant + value: str = aDictionary: ( + kind: NoneType = None + element: FormattedValue + value: Name + id: str = aDict + ctx: Load + conversion: int = -1 + format_spec: NoneType = None + element: Constant + value: str = , + kind: NoneType = None + element: FormattedValue + value: Subscript + value: Name + id: str = aDict + ctx: Load + slice: Constant + value: str = one + kind: NoneType = None + ctx: Load + conversion: int = -1 + format_spec: NoneType = None + element: Constant + value: str = ) + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: JoinedStr + values: list + element: Constant + value: str = aSet: ( + kind: NoneType = None + element: FormattedValue + value: Name + id: str = aSet + ctx: Load + conversion: int = -1 + format_spec: NoneType = None + element: Constant + value: str = , + kind: NoneType = None + element: FormattedValue + value: Compare + left: Constant + value: str = rose + kind: NoneType = None + ops: list + element: In + comparators: list + element: Name + id: str = aSet + ctx: Load + conversion: int = -1 + format_spec: NoneType = None + element: Constant + value: str = ) + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: JoinedStr + values: list + element: Constant + value: str = anArray ( + kind: NoneType = None + element: FormattedValue + value: Name + id: str = anArray + ctx: Load + conversion: int = -1 + format_spec: NoneType = None + element: Constant + value: str = , + kind: NoneType = None + element: FormattedValue + value: Subscript + value: Name + id: str = anArray + ctx: Load + slice: Slice + lower: Constant + value: int = 1 + kind: NoneType = None + upper: Constant + value: int = 4 + kind: NoneType = None + step: NoneType = None + ctx: Load + conversion: int = -1 + format_spec: NoneType = None + element: Constant + value: str = , + kind: NoneType = None + element: FormattedValue + value: Subscript + value: Name + id: str = anArray + ctx: Load + slice: Constant + value: int = 5 + kind: NoneType = None + ctx: Load + conversion: int = -1 + format_spec: NoneType = None + element: Constant + value: str = ) + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: JoinedStr + values: list + element: Constant + value: str = anInt ( + kind: NoneType = None + element: FormattedValue + value: Name + id: str = anInt + ctx: Load + conversion: int = -1 + format_spec: NoneType = None + element: Constant + value: str = , + kind: NoneType = None + element: FormattedValue + value: Call + func: Name + id: str = int + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = math + ctx: Load + attr: str = sqrt + ctx: Load + args: list + element: Name + id: str = anInt + ctx: Load + keywords: list + keywords: list + conversion: int = -1 + format_spec: NoneType = None + element: Constant + value: str = ) + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: JoinedStr + values: list + element: Constant + value: str = aFloat ( + kind: NoneType = None + element: FormattedValue + value: Name + id: str = aFloat + ctx: Load + conversion: int = -1 + format_spec: NoneType = None + element: Constant + value: str = , + kind: NoneType = None + element: FormattedValue + value: Call + func: Name + id: str = round + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = math + ctx: Load + attr: str = sin + ctx: Load + args: list + element: BinOp + left: Name + id: str = aFloat + ctx: Load + op: Add + right: Constant + value: float = 2.74 + kind: NoneType = None + keywords: list + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + conversion: int = -1 + format_spec: NoneType = None + element: Constant + value: str = ) + kind: NoneType = None + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/general_functions.js b/transcrypt/development/automated_tests/transcrypt/__target__39/general_functions.js new file mode 100644 index 000000000..1f92dea5c --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/general_functions.js @@ -0,0 +1,134 @@ +// Transcrypt'ed from Python, 2021-05-14 15:01:25 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +var __all__ = dict ({get A () {return A;}, set A (value) {A = value;}, get B () {return B;}, set B (value) {B = value;}, get C () {return C;}, set C (value) {C = value;}, get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get run () {return run;}, set run (value) {run = value;}}); +var __name__ = 'general_functions'; +export var A = __class__ ('A', [object], { + __module__: __name__, + foo: 'bar', + get __init__ () {return __get__ (this, function (self) { + self.foo2 = 'bar2'; + });} +}); +export var B = __class__ ('B', [A], { + __module__: __name__, + foo3: 'bar3', + get __init__ () {return __get__ (this, function (self) { + self.foo4 = 'bar4'; + });} +}); +export var C = __class__ ('C', [object], { + __module__: __name__, + get __len__ () {return __get__ (this, function (self) { + return 42; + });} +}); +export var run = function (autoTester) { + autoTester.check ('len'); + var strings = ['hello', ',', 'world', '!']; + var instances = [C ()]; + var collections = [[], [1], [1, 2], tuple (), tuple ([1]), tuple ([1, 2]), dict ({}), dict ({1: 1}), dict ({1: 1, 2: 2})]; + for (var string of strings) { + autoTester.check (len (string)); + } + for (var instance of instances) { + autoTester.check (len (instance)); + } + for (var collection of collections) { + autoTester.check (len (collection)); + } + autoTester.check ('sort and sorted
'); + var a = [1, 5, 3, 2, -(1)]; + var b = ['sun', 'earth', 'moon']; + autoTester.check (sorted (a)); + autoTester.check (sorted (b)); + a.py_sort (); + autoTester.check (a); + b.py_sort (); + autoTester.check (b); + autoTester.check (sorted (a, __kwargtrans__ ({reverse: true}))); + autoTester.check (sorted (b, __kwargtrans__ ({reverse: true}))); + a.py_sort (__kwargtrans__ ({reverse: true})); + autoTester.check (a); + b.py_sort (__kwargtrans__ ({reverse: true})); + autoTester.check (b); + b.py_sort (__kwargtrans__ ({key: (function __lambda__ (x) { + return len (x); + })})); + autoTester.check (b); + b.py_sort (__kwargtrans__ ({key: (function __lambda__ (x) { + return len (x); + }), reverse: true})); + autoTester.check (b); + autoTester.check ('

dir
'); + autoTester.check ((function () { + var __accu0__ = []; + for (var entry of dir (A)) { + if (!(entry.startswith ('__'))) { + __accu0__.append (entry); + } + } + return __accu0__; + }) ()); + autoTester.check ((function () { + var __accu0__ = []; + for (var entry of dir (A ())) { + if (!(entry.startswith ('__'))) { + __accu0__.append (entry); + } + } + return __accu0__; + }) ()); + autoTester.check ((function () { + var __accu0__ = []; + for (var entry of dir (B)) { + if (!(entry.startswith ('__'))) { + __accu0__.append (entry); + } + } + return __accu0__; + }) ()); + autoTester.check ((function () { + var __accu0__ = []; + for (var entry of dir (B ())) { + if (!(entry.startswith ('__'))) { + __accu0__.append (entry); + } + } + return __accu0__; + }) ()); + autoTester.check ('

any, all, sum
'); + var list1 = ['ape', 'node', 'mice']; + var list2 = ['vim', '', 'jet']; + var list3 = ['', '', '']; + var list4 = [[1, 2], [1], []]; + autoTester.check (list1, any (list1), all (list1)); + autoTester.check (list2, any (list2), all (list2)); + autoTester.check (list3, any (list3), all (list3)); + autoTester.check (list4, any (list4), all (list4)); + autoTester.check (sum (range (5))); + var generator1 = function* () { + for (var i = 0; i < 5; i++) { + yield i; + } + }; + var generator2 = function* () { + for (var i = 0; i < 5; i++) { + if (__mod__ (i, 2)) { + yield 0; + } + else { + yield i; + } + } + }; + var generator3 = function* () { + for (var i = 0; i < 5; i++) { + yield 0; + } + autoTester.check (generator1 (), any (generator1 ()), all (generator1 ())); + autoTester.check (generator2 (), any (generator2 ()), all (generator2 ())); + autoTester.check (generator3 (), any (generator3 ()), all (generator3 ())); + autoTester.check (sum (generator1 ()))}; +}; + +//# sourceMappingURL=general_functions.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/general_functions.tree b/transcrypt/development/automated_tests/transcrypt/__target__39/general_functions.tree new file mode 100644 index 000000000..9a402dbcc --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/general_functions.tree @@ -0,0 +1,1415 @@ +file: Module + body: list + element: ImportFrom + module: str = org.transcrypt.stubs.browser + names: list + element: alias + name: str = __pragma__ + asname: NoneType = None + level: int = 0 + element: ClassDef + name: str = A + bases: list + keywords: list + body: list + element: Assign + targets: list + element: Name + id: str = foo + ctx: Store + value: Constant + value: str = bar + kind: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = foo2 + ctx: Store + value: Constant + value: str = bar2 + kind: NoneType = None + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: ClassDef + name: str = B + bases: list + element: Name + id: str = A + ctx: Load + keywords: list + body: list + element: Assign + targets: list + element: Name + id: str = foo3 + ctx: Store + value: Constant + value: str = bar3 + kind: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = foo4 + ctx: Store + value: Constant + value: str = bar4 + kind: NoneType = None + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: ClassDef + name: str = C + bases: list + keywords: list + body: list + element: FunctionDef + name: str = __len__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Constant + value: int = 42 + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: FunctionDef + name: str = run + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = autoTester + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = len + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = strings + ctx: Store + value: List + elts: list + element: Constant + value: str = hello + kind: NoneType = None + element: Constant + value: str = , + kind: NoneType = None + element: Constant + value: str = world + kind: NoneType = None + element: Constant + value: str = ! + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = instances + ctx: Store + value: List + elts: list + element: Call + func: Name + id: str = C + ctx: Load + args: list + keywords: list + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = collections + ctx: Store + value: List + elts: list + element: List + elts: list + ctx: Load + element: List + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + element: List + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + ctx: Load + element: Call + func: Name + id: str = tuple + ctx: Load + args: list + keywords: list + element: Tuple + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + element: Tuple + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + ctx: Load + element: Dict + keys: list + values: list + element: Dict + keys: list + element: Constant + value: int = 1 + kind: NoneType = None + values: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Dict + keys: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + values: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: For + target: Name + id: str = string + ctx: Store + iter: Name + id: str = strings + ctx: Load + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = len + ctx: Load + args: list + element: Name + id: str = string + ctx: Load + keywords: list + keywords: list + orelse: list + type_comment: NoneType = None + element: For + target: Name + id: str = instance + ctx: Store + iter: Name + id: str = instances + ctx: Load + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = len + ctx: Load + args: list + element: Name + id: str = instance + ctx: Load + keywords: list + keywords: list + orelse: list + type_comment: NoneType = None + element: For + target: Name + id: str = collection + ctx: Store + iter: Name + id: str = collections + ctx: Load + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = len + ctx: Load + args: list + element: Name + id: str = collection + ctx: Load + keywords: list + keywords: list + orelse: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = sort and sorted
+ kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = a + ctx: Store + value: List + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 5 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = b + ctx: Store + value: List + elts: list + element: Constant + value: str = sun + kind: NoneType = None + element: Constant + value: str = earth + kind: NoneType = None + element: Constant + value: str = moon + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = sorted + ctx: Load + args: list + element: Name + id: str = a + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = sorted + ctx: Load + args: list + element: Name + id: str = b + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = a + ctx: Load + attr: str = sort + ctx: Load + args: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = a + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = b + ctx: Load + attr: str = sort + ctx: Load + args: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = b + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = sorted + ctx: Load + args: list + element: Name + id: str = a + ctx: Load + keywords: list + element: keyword + arg: str = reverse + value: Constant + value: bool = True + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = sorted + ctx: Load + args: list + element: Name + id: str = b + ctx: Load + keywords: list + element: keyword + arg: str = reverse + value: Constant + value: bool = True + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = a + ctx: Load + attr: str = sort + ctx: Load + args: list + keywords: list + element: keyword + arg: str = reverse + value: Constant + value: bool = True + kind: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = a + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = b + ctx: Load + attr: str = sort + ctx: Load + args: list + keywords: list + element: keyword + arg: str = reverse + value: Constant + value: bool = True + kind: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = b + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = b + ctx: Load + attr: str = sort + ctx: Load + args: list + keywords: list + element: keyword + arg: str = key + value: Lambda + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: Call + func: Name + id: str = len + ctx: Load + args: list + element: Name + id: str = x + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = b + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = b + ctx: Load + attr: str = sort + ctx: Load + args: list + keywords: list + element: keyword + arg: str = key + value: Lambda + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: Call + func: Name + id: str = len + ctx: Load + args: list + element: Name + id: str = x + ctx: Load + keywords: list + element: keyword + arg: str = reverse + value: Constant + value: bool = True + kind: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = b + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str =

dir
+ kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: ListComp + elt: Name + id: str = entry + ctx: Load + generators: list + element: comprehension + target: Name + id: str = entry + ctx: Store + iter: Call + func: Name + id: str = dir + ctx: Load + args: list + element: Name + id: str = A + ctx: Load + keywords: list + ifs: list + element: UnaryOp + op: Not + operand: Call + func: Attribute + value: Name + id: str = entry + ctx: Load + attr: str = startswith + ctx: Load + args: list + element: Constant + value: str = __ + kind: NoneType = None + keywords: list + is_async: int = 0 + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: ListComp + elt: Name + id: str = entry + ctx: Load + generators: list + element: comprehension + target: Name + id: str = entry + ctx: Store + iter: Call + func: Name + id: str = dir + ctx: Load + args: list + element: Call + func: Name + id: str = A + ctx: Load + args: list + keywords: list + keywords: list + ifs: list + element: UnaryOp + op: Not + operand: Call + func: Attribute + value: Name + id: str = entry + ctx: Load + attr: str = startswith + ctx: Load + args: list + element: Constant + value: str = __ + kind: NoneType = None + keywords: list + is_async: int = 0 + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: ListComp + elt: Name + id: str = entry + ctx: Load + generators: list + element: comprehension + target: Name + id: str = entry + ctx: Store + iter: Call + func: Name + id: str = dir + ctx: Load + args: list + element: Name + id: str = B + ctx: Load + keywords: list + ifs: list + element: UnaryOp + op: Not + operand: Call + func: Attribute + value: Name + id: str = entry + ctx: Load + attr: str = startswith + ctx: Load + args: list + element: Constant + value: str = __ + kind: NoneType = None + keywords: list + is_async: int = 0 + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: ListComp + elt: Name + id: str = entry + ctx: Load + generators: list + element: comprehension + target: Name + id: str = entry + ctx: Store + iter: Call + func: Name + id: str = dir + ctx: Load + args: list + element: Call + func: Name + id: str = B + ctx: Load + args: list + keywords: list + keywords: list + ifs: list + element: UnaryOp + op: Not + operand: Call + func: Attribute + value: Name + id: str = entry + ctx: Load + attr: str = startswith + ctx: Load + args: list + element: Constant + value: str = __ + kind: NoneType = None + keywords: list + is_async: int = 0 + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str =

any, all, sum
+ kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = list1 + ctx: Store + value: List + elts: list + element: Constant + value: str = ape + kind: NoneType = None + element: Constant + value: str = node + kind: NoneType = None + element: Constant + value: str = mice + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = list2 + ctx: Store + value: List + elts: list + element: Constant + value: str = vim + kind: NoneType = None + element: Constant + value: str = + kind: NoneType = None + element: Constant + value: str = jet + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = list3 + ctx: Store + value: List + elts: list + element: Constant + value: str = + kind: NoneType = None + element: Constant + value: str = + kind: NoneType = None + element: Constant + value: str = + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = list4 + ctx: Store + value: List + elts: list + element: List + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + ctx: Load + element: List + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + element: List + elts: list + ctx: Load + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = list1 + ctx: Load + element: Call + func: Name + id: str = any + ctx: Load + args: list + element: Name + id: str = list1 + ctx: Load + keywords: list + element: Call + func: Name + id: str = all + ctx: Load + args: list + element: Name + id: str = list1 + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = list2 + ctx: Load + element: Call + func: Name + id: str = any + ctx: Load + args: list + element: Name + id: str = list2 + ctx: Load + keywords: list + element: Call + func: Name + id: str = all + ctx: Load + args: list + element: Name + id: str = list2 + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = list3 + ctx: Load + element: Call + func: Name + id: str = any + ctx: Load + args: list + element: Name + id: str = list3 + ctx: Load + keywords: list + element: Call + func: Name + id: str = all + ctx: Load + args: list + element: Name + id: str = list3 + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = list4 + ctx: Load + element: Call + func: Name + id: str = any + ctx: Load + args: list + element: Name + id: str = list4 + ctx: Load + keywords: list + element: Call + func: Name + id: str = all + ctx: Load + args: list + element: Name + id: str = list4 + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = sum + ctx: Load + args: list + element: Call + func: Name + id: str = range + ctx: Load + args: list + element: Constant + value: int = 5 + kind: NoneType = None + keywords: list + keywords: list + keywords: list + element: FunctionDef + name: str = generator1 + args: arguments + posonlyargs: list + args: list + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: For + target: Name + id: str = i + ctx: Store + iter: Call + func: Name + id: str = range + ctx: Load + args: list + element: Constant + value: int = 5 + kind: NoneType = None + keywords: list + body: list + element: Expr + value: Yield + value: Name + id: str = i + ctx: Load + orelse: list + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = generator2 + args: arguments + posonlyargs: list + args: list + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: For + target: Name + id: str = i + ctx: Store + iter: Call + func: Name + id: str = range + ctx: Load + args: list + element: Constant + value: int = 5 + kind: NoneType = None + keywords: list + body: list + element: If + test: BinOp + left: Name + id: str = i + ctx: Load + op: Mod + right: Constant + value: int = 2 + kind: NoneType = None + body: list + element: Expr + value: Yield + value: Constant + value: int = 0 + kind: NoneType = None + orelse: list + element: Expr + value: Yield + value: Name + id: str = i + ctx: Load + orelse: list + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = generator3 + args: arguments + posonlyargs: list + args: list + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: For + target: Name + id: str = i + ctx: Store + iter: Call + func: Name + id: str = range + ctx: Load + args: list + element: Constant + value: int = 5 + kind: NoneType = None + keywords: list + body: list + element: Expr + value: Yield + value: Constant + value: int = 0 + kind: NoneType = None + orelse: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = generator1 + ctx: Load + args: list + keywords: list + element: Call + func: Name + id: str = any + ctx: Load + args: list + element: Call + func: Name + id: str = generator1 + ctx: Load + args: list + keywords: list + keywords: list + element: Call + func: Name + id: str = all + ctx: Load + args: list + element: Call + func: Name + id: str = generator1 + ctx: Load + args: list + keywords: list + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = generator2 + ctx: Load + args: list + keywords: list + element: Call + func: Name + id: str = any + ctx: Load + args: list + element: Call + func: Name + id: str = generator2 + ctx: Load + args: list + keywords: list + keywords: list + element: Call + func: Name + id: str = all + ctx: Load + args: list + element: Call + func: Name + id: str = generator2 + ctx: Load + args: list + keywords: list + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = generator3 + ctx: Load + args: list + keywords: list + element: Call + func: Name + id: str = any + ctx: Load + args: list + element: Call + func: Name + id: str = generator3 + ctx: Load + args: list + keywords: list + keywords: list + element: Call + func: Name + id: str = all + ctx: Load + args: list + element: Call + func: Name + id: str = generator3 + ctx: Load + args: list + keywords: list + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = sum + ctx: Load + args: list + element: Call + func: Name + id: str = generator1 + ctx: Load + args: list + keywords: list + keywords: list + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = endif + kind: NoneType = None + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/globals_function.js b/transcrypt/development/automated_tests/transcrypt/__target__39/globals_function.js new file mode 100644 index 000000000..4ce329de6 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/globals_function.js @@ -0,0 +1,42 @@ +// Transcrypt'ed from Python, 2021-05-14 15:01:25 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +import * as sub from './globals_function.sub.js'; +export {sub}; +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get f () {return f;}, set f (value) {f = value;}, get name () {return name;}, set name (value) {name = value;}, get run () {return run;}, set run (value) {run = value;}, get xxa () {return xxa;}, set xxa (value) {xxa = value;}, get xxb () {return xxb;}, set xxb (value) {xxb = value;}, get xxp () {return xxp;}, set xxp (value) {xxp = value;}, get xxq () {return xxq;}, set xxq (value) {xxq = value;}, get xxr () {return xxr;}, set xxr (value) {xxr = value;}, get xxs () {return xxs;}, set xxs (value) {xxs = value;}}); +var __name__ = 'globals_function'; +export var xxa = 'mainXxa'; +export var xxb = 'mainXxb'; +export var xxp = null; +export var xxq = null; +export var xxr = null; +export var xxs = null; +for (var py_name of tuple (['xxp', 'xxq'])) { +} +export var f = function () { + for (var py_name of tuple (['xxr', 'xxs'])) { + } +}; +export var run = function (autoTester) { + f (); + sub.run (autoTester); + autoTester.check ('Check main 1', xxa, xxb); + autoTester.check ('Check main 2', ...(function () { + var __accu0__ = []; + for (var py_name of tuple (['xxa', 'xxb', 'xxp', 'xxq', 'xxr', 'xxs'])) { + __accu0__.append (); + } + return __accu0__; + }) ()); + autoTester.check ('Check main 3', sub.xxa, sub.xxb, sub.xxp, sub.xxq, sub.xxr, sub.xxs); + autoTester.check ('Check main 4', ...sorted ((function () { + var __accu0__ = []; + for (var [key, value] of __all__.py_items ()) { + if (key.startswith ('xx')) { + __accu0__.append (value); + } + } + return __accu0__; + }) ())); +}; + +//# sourceMappingURL=globals_function.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/globals_function.sub.js b/transcrypt/development/automated_tests/transcrypt/__target__39/globals_function.sub.js new file mode 100644 index 000000000..f10e94b7a --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/globals_function.sub.js @@ -0,0 +1,38 @@ +// Transcrypt'ed from Python, 2021-05-14 15:01:25 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get f () {return f;}, set f (value) {f = value;}, get name () {return name;}, set name (value) {name = value;}, get run () {return run;}, set run (value) {run = value;}, get xxa () {return xxa;}, set xxa (value) {xxa = value;}, get xxb () {return xxb;}, set xxb (value) {xxb = value;}, get xxp () {return xxp;}, set xxp (value) {xxp = value;}, get xxq () {return xxq;}, set xxq (value) {xxq = value;}, get xxr () {return xxr;}, set xxr (value) {xxr = value;}, get xxs () {return xxs;}, set xxs (value) {xxs = value;}}); +var __name__ = 'globals_function.sub'; +export var xxa = 'subXxa'; +export var xxb = 'subXxb'; +export var xxp = null; +export var xxq = null; +export var xxr = null; +export var xxs = null; +for (var py_name of tuple (['xxp', 'xxq'])) { +} +export var f = function () { + for (var py_name of tuple (['xxr', 'xxs'])) { + } +}; +export var run = function (autoTester) { + f (); + autoTester.check ('Check sub 1', xxa, xxb); + autoTester.check ('Check sub 2', ...(function () { + var __accu0__ = []; + for (var py_name of tuple (['xxa', 'xxb', 'xxp', 'xxq', 'xxr', 'xxs'])) { + __accu0__.append (); + } + return __accu0__; + }) ()); + autoTester.check ('Check sub 3', ...sorted ((function () { + var __accu0__ = []; + for (var [key, value] of __all__.py_items ()) { + if (key.startswith ('xx')) { + __accu0__.append (value); + } + } + return __accu0__; + }) ())); +}; + +//# sourceMappingURL=globals_function.sub.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/globals_function.sub.tree b/transcrypt/development/automated_tests/transcrypt/__target__39/globals_function.sub.tree new file mode 100644 index 000000000..593660c18 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/globals_function.sub.tree @@ -0,0 +1,338 @@ +file: Module + body: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = xglobs + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = xxa + ctx: Store + value: Constant + value: str = subXxa + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = xxb + ctx: Store + value: Constant + value: str = subXxb + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = xxp + ctx: Store + value: Constant + value: NoneType = None + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = xxq + ctx: Store + value: Constant + value: NoneType = None + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = xxr + ctx: Store + value: Constant + value: NoneType = None + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = xxs + ctx: Store + value: Constant + value: NoneType = None + kind: NoneType = None + type_comment: NoneType = None + element: For + target: Name + id: str = name + ctx: Store + iter: Tuple + elts: list + element: Constant + value: str = xxp + kind: NoneType = None + element: Constant + value: str = xxq + kind: NoneType = None + ctx: Load + body: list + element: Assign + targets: list + element: Subscript + value: Call + func: Name + id: str = globals + ctx: Load + args: list + keywords: list + slice: Name + id: str = name + ctx: Load + ctx: Store + value: Call + func: Attribute + value: Constant + value: str = sub{} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = name + ctx: Load + attr: str = capitalize + ctx: Load + args: list + keywords: list + keywords: list + type_comment: NoneType = None + orelse: list + type_comment: NoneType = None + element: FunctionDef + name: str = f + args: arguments + posonlyargs: list + args: list + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: For + target: Name + id: str = name + ctx: Store + iter: Tuple + elts: list + element: Constant + value: str = xxr + kind: NoneType = None + element: Constant + value: str = xxs + kind: NoneType = None + ctx: Load + body: list + element: Assign + targets: list + element: Subscript + value: Call + func: Name + id: str = globals + ctx: Load + args: list + keywords: list + slice: Name + id: str = name + ctx: Load + ctx: Store + value: Call + func: Attribute + value: Constant + value: str = sub{} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = name + ctx: Load + attr: str = capitalize + ctx: Load + args: list + keywords: list + keywords: list + type_comment: NoneType = None + orelse: list + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = run + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = autoTester + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Name + id: str = f + ctx: Load + args: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Check sub 1 + kind: NoneType = None + element: Name + id: str = xxa + ctx: Load + element: Name + id: str = xxb + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Check sub 2 + kind: NoneType = None + element: Starred + value: ListComp + elt: Subscript + value: Call + func: Name + id: str = globals + ctx: Load + args: list + keywords: list + slice: Name + id: str = name + ctx: Load + ctx: Load + generators: list + element: comprehension + target: Name + id: str = name + ctx: Store + iter: Tuple + elts: list + element: Constant + value: str = xxa + kind: NoneType = None + element: Constant + value: str = xxb + kind: NoneType = None + element: Constant + value: str = xxp + kind: NoneType = None + element: Constant + value: str = xxq + kind: NoneType = None + element: Constant + value: str = xxr + kind: NoneType = None + element: Constant + value: str = xxs + kind: NoneType = None + ctx: Load + ifs: list + is_async: int = 0 + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Check sub 3 + kind: NoneType = None + element: Starred + value: Call + func: Name + id: str = sorted + ctx: Load + args: list + element: ListComp + elt: Name + id: str = value + ctx: Load + generators: list + element: comprehension + target: Tuple + elts: list + element: Name + id: str = key + ctx: Store + element: Name + id: str = value + ctx: Store + ctx: Store + iter: Call + func: Attribute + value: Call + func: Name + id: str = globals + ctx: Load + args: list + keywords: list + attr: str = items + ctx: Load + args: list + keywords: list + ifs: list + element: Call + func: Attribute + value: Name + id: str = key + ctx: Load + attr: str = startswith + ctx: Load + args: list + element: Constant + value: str = xx + kind: NoneType = None + keywords: list + is_async: int = 0 + keywords: list + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/globals_function.tree b/transcrypt/development/automated_tests/transcrypt/__target__39/globals_function.tree new file mode 100644 index 000000000..18aab1890 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/globals_function.tree @@ -0,0 +1,407 @@ +file: Module + body: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = xglobs + kind: NoneType = None + keywords: list + element: ImportFrom + module: str = globals_function + names: list + element: alias + name: str = sub + asname: NoneType = None + level: int = 0 + element: Assign + targets: list + element: Name + id: str = xxa + ctx: Store + value: Constant + value: str = mainXxa + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = xxb + ctx: Store + value: Constant + value: str = mainXxb + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = xxp + ctx: Store + value: Constant + value: NoneType = None + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = xxq + ctx: Store + value: Constant + value: NoneType = None + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = xxr + ctx: Store + value: Constant + value: NoneType = None + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = xxs + ctx: Store + value: Constant + value: NoneType = None + kind: NoneType = None + type_comment: NoneType = None + element: For + target: Name + id: str = name + ctx: Store + iter: Tuple + elts: list + element: Constant + value: str = xxp + kind: NoneType = None + element: Constant + value: str = xxq + kind: NoneType = None + ctx: Load + body: list + element: Assign + targets: list + element: Subscript + value: Call + func: Name + id: str = globals + ctx: Load + args: list + keywords: list + slice: Name + id: str = name + ctx: Load + ctx: Store + value: Call + func: Attribute + value: Constant + value: str = main{} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = name + ctx: Load + attr: str = capitalize + ctx: Load + args: list + keywords: list + keywords: list + type_comment: NoneType = None + orelse: list + type_comment: NoneType = None + element: FunctionDef + name: str = f + args: arguments + posonlyargs: list + args: list + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: For + target: Name + id: str = name + ctx: Store + iter: Tuple + elts: list + element: Constant + value: str = xxr + kind: NoneType = None + element: Constant + value: str = xxs + kind: NoneType = None + ctx: Load + body: list + element: Assign + targets: list + element: Subscript + value: Call + func: Name + id: str = globals + ctx: Load + args: list + keywords: list + slice: Name + id: str = name + ctx: Load + ctx: Store + value: Call + func: Attribute + value: Constant + value: str = main{} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = name + ctx: Load + attr: str = capitalize + ctx: Load + args: list + keywords: list + keywords: list + type_comment: NoneType = None + orelse: list + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = run + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = autoTester + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Name + id: str = f + ctx: Load + args: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = sub + ctx: Load + attr: str = run + ctx: Load + args: list + element: Name + id: str = autoTester + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Check main 1 + kind: NoneType = None + element: Name + id: str = xxa + ctx: Load + element: Name + id: str = xxb + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Check main 2 + kind: NoneType = None + element: Starred + value: ListComp + elt: Subscript + value: Call + func: Name + id: str = globals + ctx: Load + args: list + keywords: list + slice: Name + id: str = name + ctx: Load + ctx: Load + generators: list + element: comprehension + target: Name + id: str = name + ctx: Store + iter: Tuple + elts: list + element: Constant + value: str = xxa + kind: NoneType = None + element: Constant + value: str = xxb + kind: NoneType = None + element: Constant + value: str = xxp + kind: NoneType = None + element: Constant + value: str = xxq + kind: NoneType = None + element: Constant + value: str = xxr + kind: NoneType = None + element: Constant + value: str = xxs + kind: NoneType = None + ctx: Load + ifs: list + is_async: int = 0 + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Check main 3 + kind: NoneType = None + element: Attribute + value: Name + id: str = sub + ctx: Load + attr: str = xxa + ctx: Load + element: Attribute + value: Name + id: str = sub + ctx: Load + attr: str = xxb + ctx: Load + element: Attribute + value: Name + id: str = sub + ctx: Load + attr: str = xxp + ctx: Load + element: Attribute + value: Name + id: str = sub + ctx: Load + attr: str = xxq + ctx: Load + element: Attribute + value: Name + id: str = sub + ctx: Load + attr: str = xxr + ctx: Load + element: Attribute + value: Name + id: str = sub + ctx: Load + attr: str = xxs + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Check main 4 + kind: NoneType = None + element: Starred + value: Call + func: Name + id: str = sorted + ctx: Load + args: list + element: ListComp + elt: Name + id: str = value + ctx: Load + generators: list + element: comprehension + target: Tuple + elts: list + element: Name + id: str = key + ctx: Store + element: Name + id: str = value + ctx: Store + ctx: Store + iter: Call + func: Attribute + value: Call + func: Name + id: str = globals + ctx: Load + args: list + keywords: list + attr: str = items + ctx: Load + args: list + keywords: list + ifs: list + element: Call + func: Attribute + value: Name + id: str = key + ctx: Load + attr: str = startswith + ctx: Load + args: list + element: Constant + value: str = xx + kind: NoneType = None + keywords: list + is_async: int = 0 + keywords: list + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/grep_out39.txt b/transcrypt/development/automated_tests/transcrypt/__target__39/grep_out39.txt new file mode 100644 index 000000000..243494745 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/grep_out39.txt @@ -0,0 +1,4356 @@ +autotest.tree- name: str = executable_comments +autotest.tree- asname: NoneType = None +autotest.tree- element: Import +autotest.tree- names: list +autotest.tree- element: alias +autotest.tree: name: str = extended_slices +autotest.tree- asname: NoneType = None +autotest.tree- element: Import +autotest.tree- names: list +autotest.tree- element: alias +autotest.tree- name: str = fstrings +-- +autotest.tree- name: str = globals_function +autotest.tree- asname: NoneType = None +autotest.tree- element: Import +autotest.tree- names: list +autotest.tree- element: alias +autotest.tree: name: str = indices_and_slices +autotest.tree- asname: NoneType = None +autotest.tree- element: Import +autotest.tree- names: list +autotest.tree- element: alias +autotest.tree- name: str = iterators_and_generators +-- +autotest.tree- ctx: Load +autotest.tree- attr: str = run +autotest.tree- ctx: Load +autotest.tree- args: list +autotest.tree- element: Name +autotest.tree: id: str = extended_slices +autotest.tree- ctx: Load +autotest.tree- element: Constant +autotest.tree: value: str = extended_slices +autotest.tree- kind: NoneType = None +autotest.tree- keywords: list +autotest.tree- element: Expr +autotest.tree- value: Call +autotest.tree- func: Attribute +-- +autotest.tree- ctx: Load +autotest.tree- attr: str = run +autotest.tree- ctx: Load +autotest.tree- args: list +autotest.tree- element: Name +autotest.tree: id: str = indices_and_slices +autotest.tree- ctx: Load +autotest.tree- element: Constant +autotest.tree: value: str = indices_and_slices +autotest.tree- kind: NoneType = None +autotest.tree- keywords: list +autotest.tree- element: Expr +autotest.tree- value: Call +autotest.tree- func: Attribute +-- +control_structures.tree- element: Compare +control_structures.tree- left: Subscript +control_structures.tree- value: Name +control_structures.tree- id: str = vehicles +control_structures.tree- ctx: Load +control_structures.tree: slice: Name +control_structures.tree- id: str = index +control_structures.tree- ctx: Load +control_structures.tree- ctx: Load +control_structures.tree- ops: list +control_structures.tree- element: NotEq +-- +control_structures.tree- ctx: Load +control_structures.tree- element: Subscript +control_structures.tree- value: Name +control_structures.tree- id: str = vehicles +control_structures.tree- ctx: Load +control_structures.tree: slice: Name +control_structures.tree- id: str = index +control_structures.tree- ctx: Load +control_structures.tree- ctx: Load +control_structures.tree- keywords: list +control_structures.tree- element: If +-- +control_structures.tree- element: Compare +control_structures.tree- left: Subscript +control_structures.tree- value: Name +control_structures.tree- id: str = vehicles +control_structures.tree- ctx: Load +control_structures.tree: slice: Name +control_structures.tree- id: str = index +control_structures.tree- ctx: Load +control_structures.tree- ctx: Load +control_structures.tree- ops: list +control_structures.tree- element: Eq +-- +control_structures.tree- element: Compare +control_structures.tree- left: Subscript +control_structures.tree- value: Name +control_structures.tree- id: str = vehicles +control_structures.tree- ctx: Load +control_structures.tree: slice: Name +control_structures.tree- id: str = index +control_structures.tree- ctx: Load +control_structures.tree- ctx: Load +control_structures.tree- ops: list +control_structures.tree- element: Eq +-- +data_structures.tree- args: list +data_structures.tree- element: Subscript +data_structures.tree- value: Name +data_structures.tree- id: str = aList +data_structures.tree- ctx: Load +data_structures.tree: slice: Slice +data_structures.tree- lower: Constant +data_structures.tree- value: int = 2 +data_structures.tree- kind: NoneType = None +data_structures.tree- upper: Constant +data_structures.tree- value: int = 4 +-- +data_structures.tree- args: list +data_structures.tree- element: Subscript +data_structures.tree- value: Name +data_structures.tree- id: str = aList +data_structures.tree- ctx: Load +data_structures.tree: slice: Slice +data_structures.tree- lower: NoneType = None +data_structures.tree- upper: NoneType = None +data_structures.tree- step: NoneType = None +data_structures.tree- ctx: Load +data_structures.tree- keywords: list +-- +data_structures.tree- args: list +data_structures.tree- element: Subscript +data_structures.tree- value: Name +data_structures.tree- id: str = aList +data_structures.tree- ctx: Load +data_structures.tree: slice: Slice +data_structures.tree- lower: Constant +data_structures.tree- value: int = 2 +data_structures.tree- kind: NoneType = None +data_structures.tree- upper: NoneType = None +data_structures.tree- step: NoneType = None +-- +data_structures.tree- args: list +data_structures.tree- element: Subscript +data_structures.tree- value: Name +data_structures.tree- id: str = aDict +data_structures.tree- ctx: Load +data_structures.tree: slice: Constant +data_structures.tree- value: int = 1 +data_structures.tree- kind: NoneType = None +data_structures.tree- ctx: Load +data_structures.tree- element: Subscript +data_structures.tree- value: Name +data_structures.tree- id: str = aDict +data_structures.tree- ctx: Load +data_structures.tree: slice: Constant +data_structures.tree- value: str = animal +data_structures.tree- kind: NoneType = None +data_structures.tree- ctx: Load +data_structures.tree- keywords: list +data_structures.tree- element: FunctionDef +-- +datetime.tree- ctx: Store +datetime.tree- iter: Subscript +datetime.tree- value: Name +datetime.tree- id: str = _DAYS_IN_MONTH +datetime.tree- ctx: Load +datetime.tree: slice: Slice +datetime.tree- lower: Constant +datetime.tree- value: int = 1 +datetime.tree- kind: NoneType = None +datetime.tree- upper: NoneType = None +datetime.tree- step: NoneType = None +-- +datetime.tree- element: Return +datetime.tree- value: Subscript +datetime.tree- value: Name +datetime.tree- id: str = _DAYS_IN_MONTH +datetime.tree- ctx: Load +datetime.tree: slice: Name +datetime.tree- id: str = month +datetime.tree- ctx: Load +datetime.tree- ctx: Load +datetime.tree- decorator_list: list +datetime.tree- returns: NoneType = None +-- +datetime.tree- value: BinOp +datetime.tree- left: Subscript +datetime.tree- value: Name +datetime.tree- id: str = _DAYS_BEFORE_MONTH +datetime.tree- ctx: Load +datetime.tree: slice: Name +datetime.tree- id: str = month +datetime.tree- ctx: Load +datetime.tree- ctx: Load +datetime.tree- op: Add +datetime.tree- right: BoolOp +-- +datetime.tree- value: BinOp +datetime.tree- left: Subscript +datetime.tree- value: Name +datetime.tree- id: str = _DAYS_BEFORE_MONTH +datetime.tree- ctx: Load +datetime.tree: slice: Name +datetime.tree- id: str = month +datetime.tree- ctx: Load +datetime.tree- ctx: Load +datetime.tree- op: Add +datetime.tree- right: BoolOp +-- +datetime.tree- value: BinOp +datetime.tree- left: Subscript +datetime.tree- value: Name +datetime.tree- id: str = _DAYS_IN_MONTH +datetime.tree- ctx: Load +datetime.tree: slice: Name +datetime.tree- id: str = month +datetime.tree- ctx: Load +datetime.tree- ctx: Load +datetime.tree- op: Add +datetime.tree- right: BoolOp +-- +datetime.tree- ctx: Store +datetime.tree- value: Subscript +datetime.tree- value: Name +datetime.tree- id: str = format +datetime.tree- ctx: Load +datetime.tree: slice: Name +datetime.tree- id: str = i +datetime.tree- ctx: Load +datetime.tree- ctx: Load +datetime.tree- type_comment: NoneType = None +datetime.tree- element: AugAssign +-- +datetime.tree- ctx: Store +datetime.tree- value: Subscript +datetime.tree- value: Name +datetime.tree- id: str = format +datetime.tree- ctx: Load +datetime.tree: slice: Name +datetime.tree- id: str = i +datetime.tree- ctx: Load +datetime.tree- ctx: Load +datetime.tree- type_comment: NoneType = None +datetime.tree- element: AugAssign +-- +datetime.tree- args: list +datetime.tree- element: Subscript +datetime.tree- value: Name +datetime.tree- id: str = _DAYNAMES +datetime.tree- ctx: Load +datetime.tree: slice: Name +datetime.tree- id: str = weekday +datetime.tree- ctx: Load +datetime.tree- ctx: Load +datetime.tree- element: Subscript +datetime.tree- value: Name +datetime.tree- id: str = _MONTHNAMES +datetime.tree- ctx: Load +datetime.tree: slice: Attribute +datetime.tree- value: Name +datetime.tree- id: str = self +datetime.tree- ctx: Load +datetime.tree- attr: str = _month +datetime.tree- ctx: Load +-- +datetime.tree- test: Compare +datetime.tree- left: Subscript +datetime.tree- value: Name +datetime.tree- id: str = s +datetime.tree- ctx: Load +datetime.tree: slice: Slice +datetime.tree- lower: UnaryOp +datetime.tree- op: USub +datetime.tree- operand: Constant +datetime.tree- value: int = 1 +datetime.tree- kind: NoneType = None +-- +datetime.tree- left: BinOp +datetime.tree- left: Subscript +datetime.tree- value: Name +datetime.tree- id: str = s +datetime.tree- ctx: Load +datetime.tree: slice: Slice +datetime.tree- lower: NoneType = None +datetime.tree- upper: BinOp +datetime.tree- left: Call +datetime.tree- func: Name +datetime.tree- id: str = len +-- +datetime.tree- element: Starred +datetime.tree- value: Subscript +datetime.tree- value: Name +datetime.tree- id: str = localtm +datetime.tree- ctx: Load +datetime.tree: slice: Slice +datetime.tree- lower: NoneType = None +datetime.tree- upper: Constant +datetime.tree- value: int = 6 +datetime.tree- kind: NoneType = None +datetime.tree- step: NoneType = None +-- +datetime.tree- ctx: Store +datetime.tree- value: Subscript +datetime.tree- value: Name +datetime.tree- id: str = localtm +datetime.tree- ctx: Load +datetime.tree: slice: Constant +datetime.tree- value: int = 10 +datetime.tree- kind: NoneType = None +datetime.tree- ctx: Load +datetime.tree- type_comment: NoneType = None +datetime.tree- element: Assign +-- +datetime.tree- ctx: Store +datetime.tree- value: Subscript +datetime.tree- value: Name +datetime.tree- id: str = localtm +datetime.tree- ctx: Load +datetime.tree: slice: Constant +datetime.tree- value: int = 9 +datetime.tree- kind: NoneType = None +datetime.tree- ctx: Load +datetime.tree- type_comment: NoneType = None +datetime.tree- element: Assign +-- +datetime.tree- args: list +datetime.tree- element: Name +datetime.tree- id: str = ts +datetime.tree- ctx: Load +datetime.tree- keywords: list +datetime.tree: slice: Slice +datetime.tree- lower: NoneType = None +datetime.tree- upper: Constant +datetime.tree- value: int = 6 +datetime.tree- kind: NoneType = None +datetime.tree- step: NoneType = None +-- +datetime.tree- element: Compare +datetime.tree- left: Subscript +datetime.tree- value: Name +datetime.tree- id: str = localtm +datetime.tree- ctx: Load +datetime.tree: slice: Constant +datetime.tree- value: int = 8 +datetime.tree- kind: NoneType = None +datetime.tree- ctx: Load +datetime.tree- ops: list +datetime.tree- element: Gt +-- +datetime.tree- value: Name +datetime.tree- id: str = _time +datetime.tree- ctx: Load +datetime.tree- attr: str = tzname +datetime.tree- ctx: Load +datetime.tree: slice: Name +datetime.tree- id: str = dst +datetime.tree- ctx: Load +datetime.tree- ctx: Load +datetime.tree- keywords: list +datetime.tree- type_comment: NoneType = None +-- +datetime.tree- args: list +datetime.tree- element: Subscript +datetime.tree- value: Name +datetime.tree- id: str = _DAYNAMES +datetime.tree- ctx: Load +datetime.tree: slice: Name +datetime.tree- id: str = weekday +datetime.tree- ctx: Load +datetime.tree- ctx: Load +datetime.tree- element: Subscript +datetime.tree- value: Name +datetime.tree- id: str = _MONTHNAMES +datetime.tree- ctx: Load +datetime.tree: slice: Attribute +datetime.tree- value: Name +datetime.tree- id: str = self +datetime.tree- ctx: Load +datetime.tree- attr: str = _month +datetime.tree- ctx: Load +-- +datetime.tree- test: Compare +datetime.tree- left: Subscript +datetime.tree- value: Name +datetime.tree- id: str = L +datetime.tree- ctx: Load +datetime.tree: slice: BinOp +datetime.tree- left: Call +datetime.tree- func: Name +datetime.tree- id: str = len +datetime.tree- ctx: Load +datetime.tree- args: list +-- +datetime.tree- test: Compare +datetime.tree- left: Subscript +datetime.tree- value: Name +datetime.tree- id: str = L +datetime.tree- ctx: Load +datetime.tree: slice: BinOp +datetime.tree- left: Call +datetime.tree- func: Name +datetime.tree- id: str = len +datetime.tree- ctx: Load +datetime.tree- args: list +-- +datetime.tree- test: Compare +datetime.tree- left: Subscript +datetime.tree- value: Name +datetime.tree- id: str = s +datetime.tree- ctx: Load +datetime.tree: slice: Slice +datetime.tree- lower: UnaryOp +datetime.tree- op: USub +datetime.tree- operand: Constant +datetime.tree- value: int = 1 +datetime.tree- kind: NoneType = None +-- +datetime.tree- left: BinOp +datetime.tree- left: Subscript +datetime.tree- value: Name +datetime.tree- id: str = s +datetime.tree- ctx: Load +datetime.tree: slice: Slice +datetime.tree- lower: NoneType = None +datetime.tree- upper: BinOp +datetime.tree- left: Call +datetime.tree- func: Name +datetime.tree- id: str = len +-- +datetime.tree- ctx: Load +datetime.tree- element: Name +datetime.tree- id: str = format +datetime.tree- ctx: Load +datetime.tree- keywords: list +datetime.tree: slice: Slice +datetime.tree- lower: NoneType = None +datetime.tree- upper: Constant +datetime.tree- value: int = 6 +datetime.tree- kind: NoneType = None +datetime.tree- step: NoneType = None +-- +dict_comprehensions.tree- value: DictComp +dict_comprehensions.tree- key: Subscript +dict_comprehensions.tree- value: Name +dict_comprehensions.tree- id: str = original +dict_comprehensions.tree- ctx: Load +dict_comprehensions.tree: slice: Name +dict_comprehensions.tree- id: str = key +dict_comprehensions.tree- ctx: Load +dict_comprehensions.tree- ctx: Load +dict_comprehensions.tree- value: Name +dict_comprehensions.tree- id: str = key +-- +dictionaries.tree- targets: list +dictionaries.tree- element: Subscript +dictionaries.tree- value: Name +dictionaries.tree- id: str = tel +dictionaries.tree- ctx: Load +dictionaries.tree: slice: Constant +dictionaries.tree- value: str = sape +dictionaries.tree- kind: NoneType = None +dictionaries.tree- ctx: Store +dictionaries.tree- value: Constant +dictionaries.tree- value: int = 4139 +-- +dictionaries.tree- args: list +dictionaries.tree- element: Subscript +dictionaries.tree- value: Name +dictionaries.tree- id: str = tel +dictionaries.tree- ctx: Load +dictionaries.tree: slice: Constant +dictionaries.tree- value: str = jack +dictionaries.tree- kind: NoneType = None +dictionaries.tree- ctx: Load +dictionaries.tree- keywords: list +dictionaries.tree- element: Delete +dictionaries.tree- targets: list +dictionaries.tree- element: Subscript +dictionaries.tree- value: Name +dictionaries.tree- id: str = tel +dictionaries.tree- ctx: Load +dictionaries.tree: slice: Constant +dictionaries.tree- value: str = sape +dictionaries.tree- kind: NoneType = None +dictionaries.tree- ctx: Del +dictionaries.tree- element: Assign +dictionaries.tree- targets: list +dictionaries.tree- element: Subscript +dictionaries.tree- value: Name +dictionaries.tree- id: str = tel +dictionaries.tree- ctx: Load +dictionaries.tree: slice: Constant +dictionaries.tree- value: str = irv +dictionaries.tree- kind: NoneType = None +dictionaries.tree- ctx: Store +dictionaries.tree- value: Constant +dictionaries.tree- value: int = 4127 +-- +dictionaries.tree- element: Subscript +dictionaries.tree- value: Subscript +dictionaries.tree- value: Name +dictionaries.tree- id: str = d +dictionaries.tree- ctx: Load +dictionaries.tree: slice: Constant +dictionaries.tree- value: str = a +dictionaries.tree- kind: NoneType = None +dictionaries.tree- ctx: Load +dictionaries.tree: slice: Constant +dictionaries.tree- value: str = c +dictionaries.tree- kind: NoneType = None +dictionaries.tree- ctx: Load +dictionaries.tree- keywords: list +dictionaries.tree- element: Expr +-- +dictionaries.tree- element: Subscript +dictionaries.tree- value: Subscript +dictionaries.tree- value: Name +dictionaries.tree- id: str = d +dictionaries.tree- ctx: Load +dictionaries.tree: slice: Constant +dictionaries.tree- value: str = a +dictionaries.tree- kind: NoneType = None +dictionaries.tree- ctx: Load +dictionaries.tree: slice: Constant +dictionaries.tree- value: str = c +dictionaries.tree- kind: NoneType = None +dictionaries.tree- ctx: Store +dictionaries.tree- value: Constant +dictionaries.tree- value: int = 3 +-- +dictionaries.tree- args: list +dictionaries.tree- element: Subscript +dictionaries.tree- value: Name +dictionaries.tree- id: str = tel +dictionaries.tree- ctx: Load +dictionaries.tree: slice: Constant +dictionaries.tree- value: str = linus +dictionaries.tree- kind: NoneType = None +dictionaries.tree- ctx: Load +dictionaries.tree- keywords: list +dictionaries.tree- element: Expr +-- +dictionaries.tree- targets: list +dictionaries.tree- element: Subscript +dictionaries.tree- value: Name +dictionaries.tree- id: str = d +dictionaries.tree- ctx: Load +dictionaries.tree: slice: Constant +dictionaries.tree- value: str = a +dictionaries.tree- kind: NoneType = None +dictionaries.tree- ctx: Store +dictionaries.tree- value: Constant +dictionaries.tree- value: int = 3777 +-- +dictionaries.tree- targets: list +dictionaries.tree- element: Subscript +dictionaries.tree- value: Name +dictionaries.tree- id: str = d +dictionaries.tree- ctx: Load +dictionaries.tree: slice: Tuple +dictionaries.tree- elts: list +dictionaries.tree- element: Constant +dictionaries.tree- value: int = 1 +dictionaries.tree- kind: NoneType = None +dictionaries.tree- element: Constant +-- +dictionaries.tree- args: list +dictionaries.tree- element: Subscript +dictionaries.tree- value: Name +dictionaries.tree- id: str = d +dictionaries.tree- ctx: Load +dictionaries.tree: slice: Constant +dictionaries.tree- value: str = a +dictionaries.tree- kind: NoneType = None +dictionaries.tree- ctx: Load +dictionaries.tree- element: Subscript +dictionaries.tree- value: Name +dictionaries.tree- id: str = d +dictionaries.tree- ctx: Load +dictionaries.tree: slice: Tuple +dictionaries.tree- elts: list +dictionaries.tree- element: Constant +dictionaries.tree- value: int = 1 +dictionaries.tree- kind: NoneType = None +dictionaries.tree- element: Constant +-- +dictionaries.tree- targets: list +dictionaries.tree- element: Subscript +dictionaries.tree- value: Name +dictionaries.tree- id: str = d +dictionaries.tree- ctx: Load +dictionaries.tree: slice: Constant +dictionaries.tree- value: str = a +dictionaries.tree- kind: NoneType = None +dictionaries.tree- ctx: Store +dictionaries.tree- value: Constant +dictionaries.tree- value: int = 3777 +-- +dictionaries.tree- targets: list +dictionaries.tree- element: Subscript +dictionaries.tree- value: Name +dictionaries.tree- id: str = d +dictionaries.tree- ctx: Load +dictionaries.tree: slice: Tuple +dictionaries.tree- elts: list +dictionaries.tree- element: Constant +dictionaries.tree- value: int = 1 +dictionaries.tree- kind: NoneType = None +dictionaries.tree- element: Constant +-- +dictionaries.tree- args: list +dictionaries.tree- element: Subscript +dictionaries.tree- value: Name +dictionaries.tree- id: str = d +dictionaries.tree- ctx: Load +dictionaries.tree: slice: Constant +dictionaries.tree- value: str = a +dictionaries.tree- kind: NoneType = None +dictionaries.tree- ctx: Load +dictionaries.tree- element: Subscript +dictionaries.tree- value: Name +dictionaries.tree- id: str = d +dictionaries.tree- ctx: Load +dictionaries.tree: slice: Tuple +dictionaries.tree- elts: list +dictionaries.tree- element: Constant +dictionaries.tree- value: int = 1 +dictionaries.tree- kind: NoneType = None +dictionaries.tree- element: Constant +-- +div_issues.tree- targets: list +div_issues.tree- element: Subscript +div_issues.tree- value: Name +div_issues.tree- id: str = x +div_issues.tree- ctx: Load +div_issues.tree: slice: Constant +div_issues.tree- value: int = 0 +div_issues.tree- kind: NoneType = None +div_issues.tree- ctx: Store +div_issues.tree- value: Constant +div_issues.tree- value: int = 3 +-- +div_issues.tree- targets: list +div_issues.tree- element: Subscript +div_issues.tree- value: Name +div_issues.tree- id: str = x +div_issues.tree- ctx: Load +div_issues.tree: slice: Constant +div_issues.tree- value: int = 1 +div_issues.tree- kind: NoneType = None +div_issues.tree- ctx: Store +div_issues.tree- value: Constant +div_issues.tree- value: int = 2 +-- +div_issues.tree- value: Yield +div_issues.tree- value: Subscript +div_issues.tree- value: Name +div_issues.tree- id: str = aList +div_issues.tree- ctx: Load +div_issues.tree: slice: Slice +div_issues.tree- lower: Name +div_issues.tree- id: str = index +div_issues.tree- ctx: Load +div_issues.tree- upper: BinOp +div_issues.tree- left: Name +-- +div_issues.tree- value: Name +div_issues.tree- id: str = self +div_issues.tree- ctx: Load +div_issues.tree- attr: str = alphabet +div_issues.tree- ctx: Load +div_issues.tree: slice: BinOp +div_issues.tree- left: Attribute +div_issues.tree- value: Name +div_issues.tree- id: str = self +div_issues.tree- ctx: Load +div_issues.tree- attr: str = pseudoRandom +-- +div_issues.tree- defaults: list +div_issues.tree- body: Subscript +div_issues.tree- value: Name +div_issues.tree- id: str = row +div_issues.tree- ctx: Load +div_issues.tree: slice: Name +div_issues.tree- id: str = iCol +div_issues.tree- ctx: Load +div_issues.tree- ctx: Load +div_issues.tree- orelse: list +div_issues.tree- type_comment: NoneType = None +-- +div_issues.tree- element: ListComp +div_issues.tree- elt: Subscript +div_issues.tree- value: Name +div_issues.tree- id: str = x +div_issues.tree- ctx: Load +div_issues.tree: slice: Constant +div_issues.tree- value: int = 1 +div_issues.tree- kind: NoneType = None +div_issues.tree- ctx: Load +div_issues.tree- generators: list +div_issues.tree- element: comprehension +-- +div_issues.tree- left: BinOp +div_issues.tree- left: Subscript +div_issues.tree- value: Name +div_issues.tree- id: str = x +div_issues.tree- ctx: Load +div_issues.tree: slice: Constant +div_issues.tree- value: int = 0 +div_issues.tree- kind: NoneType = None +div_issues.tree- ctx: Load +div_issues.tree- op: BitAnd +div_issues.tree- right: Name +-- +div_issues.tree- kind: NoneType = None +div_issues.tree- values: list +div_issues.tree- element: Constant +div_issues.tree- value: int = 5 +div_issues.tree- kind: NoneType = None +div_issues.tree: slice: Constant +div_issues.tree- value: str = a +div_issues.tree- kind: NoneType = None +div_issues.tree- ctx: Load +div_issues.tree- type_comment: NoneType = None +div_issues.tree- element: Assign +-- +div_issues.tree- kind: NoneType = None +div_issues.tree- values: list +div_issues.tree- element: Constant +div_issues.tree- value: int = 5 +div_issues.tree- kind: NoneType = None +div_issues.tree: slice: Constant +div_issues.tree- value: str = b +div_issues.tree- kind: NoneType = None +div_issues.tree- ctx: Load +div_issues.tree- type_comment: NoneType = None +div_issues.tree- element: Expr +-- +div_issues.tree- args: list +div_issues.tree- element: Subscript +div_issues.tree- value: Name +div_issues.tree- id: str = foo +div_issues.tree- ctx: Load +div_issues.tree: slice: Name +div_issues.tree- id: str = i +div_issues.tree- ctx: Load +div_issues.tree- ctx: Load +div_issues.tree- keywords: list +div_issues.tree- orelse: list +-- +div_issues.tree- targets: list +div_issues.tree- element: Subscript +div_issues.tree- value: Name +div_issues.tree- id: str = l460 +div_issues.tree- ctx: Load +div_issues.tree: slice: Constant +div_issues.tree- value: int = 0 +div_issues.tree- kind: NoneType = None +div_issues.tree- ctx: Store +div_issues.tree- value: Constant +div_issues.tree- value: int = 1 +-- +div_issues.tree- targets: list +div_issues.tree- element: Subscript +div_issues.tree- value: Name +div_issues.tree- id: str = l460 +div_issues.tree- ctx: Load +div_issues.tree: slice: UnaryOp +div_issues.tree- op: USub +div_issues.tree- operand: Constant +div_issues.tree- value: int = 2 +div_issues.tree- kind: NoneType = None +div_issues.tree- ctx: Store +-- +div_issues.tree- targets: list +div_issues.tree- element: Subscript +div_issues.tree- value: Name +div_issues.tree- id: str = l460 +div_issues.tree- ctx: Load +div_issues.tree: slice: UnaryOp +div_issues.tree- op: USub +div_issues.tree- operand: Constant +div_issues.tree- value: int = 1 +div_issues.tree- kind: NoneType = None +div_issues.tree- ctx: Store +-- +div_issues.tree- targets: list +div_issues.tree- element: Subscript +div_issues.tree- value: Name +div_issues.tree- id: str = d460 +div_issues.tree- ctx: Load +div_issues.tree: slice: UnaryOp +div_issues.tree- op: USub +div_issues.tree- operand: Constant +div_issues.tree- value: int = 1 +div_issues.tree- kind: NoneType = None +div_issues.tree- ctx: Store +-- +div_issues.tree- targets: list +div_issues.tree- element: Subscript +div_issues.tree- value: Name +div_issues.tree- id: str = d460 +div_issues.tree- ctx: Load +div_issues.tree: slice: Constant +div_issues.tree- value: str = b +div_issues.tree- kind: NoneType = None +div_issues.tree- ctx: Store +div_issues.tree- value: Constant +div_issues.tree- value: str = bike +-- +div_issues.tree- args: list +div_issues.tree- element: Subscript +div_issues.tree- value: Name +div_issues.tree- id: str = s460 +div_issues.tree- ctx: Load +div_issues.tree: slice: Constant +div_issues.tree- value: int = 0 +div_issues.tree- kind: NoneType = None +div_issues.tree- ctx: Load +div_issues.tree- element: Subscript +div_issues.tree- value: Name +div_issues.tree- id: str = s460 +div_issues.tree- ctx: Load +div_issues.tree: slice: Constant +div_issues.tree- value: int = 1 +div_issues.tree- kind: NoneType = None +div_issues.tree- ctx: Load +div_issues.tree- element: Subscript +div_issues.tree- value: Name +div_issues.tree- id: str = s460 +div_issues.tree- ctx: Load +div_issues.tree: slice: Constant +div_issues.tree- value: int = 2 +div_issues.tree- kind: NoneType = None +div_issues.tree- ctx: Load +div_issues.tree- element: Subscript +div_issues.tree- value: Name +div_issues.tree- id: str = s460 +div_issues.tree- ctx: Load +div_issues.tree: slice: UnaryOp +div_issues.tree- op: USub +div_issues.tree- operand: Constant +div_issues.tree- value: int = 1 +div_issues.tree- kind: NoneType = None +div_issues.tree- ctx: Load +div_issues.tree- element: Subscript +div_issues.tree- value: Name +div_issues.tree- id: str = s460 +div_issues.tree- ctx: Load +div_issues.tree: slice: UnaryOp +div_issues.tree- op: USub +div_issues.tree- operand: Constant +div_issues.tree- value: int = 2 +div_issues.tree- kind: NoneType = None +div_issues.tree- ctx: Load +div_issues.tree- element: Subscript +div_issues.tree- value: Name +div_issues.tree- id: str = s460 +div_issues.tree- ctx: Load +div_issues.tree: slice: UnaryOp +div_issues.tree- op: USub +div_issues.tree- operand: Constant +div_issues.tree- value: int = 3 +div_issues.tree- kind: NoneType = None +div_issues.tree- ctx: Load +-- +div_issues.tree- args: list +div_issues.tree- element: Subscript +div_issues.tree- value: Name +div_issues.tree- id: str = l460 +div_issues.tree- ctx: Load +div_issues.tree: slice: Constant +div_issues.tree- value: int = 0 +div_issues.tree- kind: NoneType = None +div_issues.tree- ctx: Load +div_issues.tree- element: Subscript +div_issues.tree- value: Name +div_issues.tree- id: str = l460 +div_issues.tree- ctx: Load +div_issues.tree: slice: Constant +div_issues.tree- value: int = 1 +div_issues.tree- kind: NoneType = None +div_issues.tree- ctx: Load +div_issues.tree- element: Subscript +div_issues.tree- value: Name +div_issues.tree- id: str = l460 +div_issues.tree- ctx: Load +div_issues.tree: slice: Constant +div_issues.tree- value: int = 2 +div_issues.tree- kind: NoneType = None +div_issues.tree- ctx: Load +div_issues.tree- element: Subscript +div_issues.tree- value: Name +div_issues.tree- id: str = l460 +div_issues.tree- ctx: Load +div_issues.tree: slice: UnaryOp +div_issues.tree- op: USub +div_issues.tree- operand: Constant +div_issues.tree- value: int = 1 +div_issues.tree- kind: NoneType = None +div_issues.tree- ctx: Load +div_issues.tree- element: Subscript +div_issues.tree- value: Name +div_issues.tree- id: str = l460 +div_issues.tree- ctx: Load +div_issues.tree: slice: UnaryOp +div_issues.tree- op: USub +div_issues.tree- operand: Constant +div_issues.tree- value: int = 2 +div_issues.tree- kind: NoneType = None +div_issues.tree- ctx: Load +div_issues.tree- element: Subscript +div_issues.tree- value: Name +div_issues.tree- id: str = l460 +div_issues.tree- ctx: Load +div_issues.tree: slice: UnaryOp +div_issues.tree- op: USub +div_issues.tree- operand: Constant +div_issues.tree- value: int = 3 +div_issues.tree- kind: NoneType = None +div_issues.tree- ctx: Load +-- +div_issues.tree- args: list +div_issues.tree- element: Subscript +div_issues.tree- value: Name +div_issues.tree- id: str = t460 +div_issues.tree- ctx: Load +div_issues.tree: slice: Constant +div_issues.tree- value: int = 0 +div_issues.tree- kind: NoneType = None +div_issues.tree- ctx: Load +div_issues.tree- element: Subscript +div_issues.tree- value: Name +div_issues.tree- id: str = t460 +div_issues.tree- ctx: Load +div_issues.tree: slice: Constant +div_issues.tree- value: int = 1 +div_issues.tree- kind: NoneType = None +div_issues.tree- ctx: Load +div_issues.tree- element: Subscript +div_issues.tree- value: Name +div_issues.tree- id: str = t460 +div_issues.tree- ctx: Load +div_issues.tree: slice: Constant +div_issues.tree- value: int = 2 +div_issues.tree- kind: NoneType = None +div_issues.tree- ctx: Load +div_issues.tree- element: Subscript +div_issues.tree- value: Name +div_issues.tree- id: str = t460 +div_issues.tree- ctx: Load +div_issues.tree: slice: UnaryOp +div_issues.tree- op: USub +div_issues.tree- operand: Constant +div_issues.tree- value: int = 1 +div_issues.tree- kind: NoneType = None +div_issues.tree- ctx: Load +div_issues.tree- element: Subscript +div_issues.tree- value: Name +div_issues.tree- id: str = t460 +div_issues.tree- ctx: Load +div_issues.tree: slice: UnaryOp +div_issues.tree- op: USub +div_issues.tree- operand: Constant +div_issues.tree- value: int = 2 +div_issues.tree- kind: NoneType = None +div_issues.tree- ctx: Load +div_issues.tree- element: Subscript +div_issues.tree- value: Name +div_issues.tree- id: str = t460 +div_issues.tree- ctx: Load +div_issues.tree: slice: UnaryOp +div_issues.tree- op: USub +div_issues.tree- operand: Constant +div_issues.tree- value: int = 3 +div_issues.tree- kind: NoneType = None +div_issues.tree- ctx: Load +-- +div_issues.tree- args: list +div_issues.tree- element: Subscript +div_issues.tree- value: Name +div_issues.tree- id: str = d460 +div_issues.tree- ctx: Load +div_issues.tree: slice: UnaryOp +div_issues.tree- op: USub +div_issues.tree- operand: Constant +div_issues.tree- value: int = 1 +div_issues.tree- kind: NoneType = None +div_issues.tree- ctx: Load +div_issues.tree- element: Subscript +div_issues.tree- value: Name +div_issues.tree- id: str = d460 +div_issues.tree- ctx: Load +div_issues.tree: slice: Constant +div_issues.tree- value: str = b +div_issues.tree- kind: NoneType = None +div_issues.tree- ctx: Load +div_issues.tree- keywords: list +div_issues.tree- element: Expr +-- +div_issues.tree- args: list +div_issues.tree- element: Subscript +div_issues.tree- value: Name +div_issues.tree- id: str = s460 +div_issues.tree- ctx: Load +div_issues.tree: slice: Constant +div_issues.tree- value: int = 0 +div_issues.tree- kind: NoneType = None +div_issues.tree- ctx: Load +div_issues.tree- element: Subscript +div_issues.tree- value: Name +div_issues.tree- id: str = s460 +div_issues.tree- ctx: Load +div_issues.tree: slice: Constant +div_issues.tree- value: int = 1 +div_issues.tree- kind: NoneType = None +div_issues.tree- ctx: Load +div_issues.tree- element: Subscript +div_issues.tree- value: Name +div_issues.tree- id: str = s460 +div_issues.tree- ctx: Load +div_issues.tree: slice: Constant +div_issues.tree- value: int = 2 +div_issues.tree- kind: NoneType = None +div_issues.tree- ctx: Load +div_issues.tree- element: Subscript +div_issues.tree- value: Name +div_issues.tree- id: str = s460 +div_issues.tree- ctx: Load +div_issues.tree: slice: UnaryOp +div_issues.tree- op: USub +div_issues.tree- operand: Constant +div_issues.tree- value: int = 1 +div_issues.tree- kind: NoneType = None +div_issues.tree- ctx: Load +div_issues.tree- element: Subscript +div_issues.tree- value: Name +div_issues.tree- id: str = s460 +div_issues.tree- ctx: Load +div_issues.tree: slice: UnaryOp +div_issues.tree- op: USub +div_issues.tree- operand: Constant +div_issues.tree- value: int = 2 +div_issues.tree- kind: NoneType = None +div_issues.tree- ctx: Load +div_issues.tree- element: Subscript +div_issues.tree- value: Name +div_issues.tree- id: str = s460 +div_issues.tree- ctx: Load +div_issues.tree: slice: UnaryOp +div_issues.tree- op: USub +div_issues.tree- operand: Constant +div_issues.tree- value: int = 3 +div_issues.tree- kind: NoneType = None +div_issues.tree- ctx: Load +-- +div_issues.tree- args: list +div_issues.tree- element: Subscript +div_issues.tree- value: Name +div_issues.tree- id: str = l460 +div_issues.tree- ctx: Load +div_issues.tree: slice: Constant +div_issues.tree- value: int = 0 +div_issues.tree- kind: NoneType = None +div_issues.tree- ctx: Load +div_issues.tree- element: Subscript +div_issues.tree- value: Name +div_issues.tree- id: str = l460 +div_issues.tree- ctx: Load +div_issues.tree: slice: Constant +div_issues.tree- value: int = 1 +div_issues.tree- kind: NoneType = None +div_issues.tree- ctx: Load +div_issues.tree- element: Subscript +div_issues.tree- value: Name +div_issues.tree- id: str = l460 +div_issues.tree- ctx: Load +div_issues.tree: slice: Constant +div_issues.tree- value: int = 2 +div_issues.tree- kind: NoneType = None +div_issues.tree- ctx: Load +div_issues.tree- element: Subscript +div_issues.tree- value: Name +div_issues.tree- id: str = l460 +div_issues.tree- ctx: Load +div_issues.tree: slice: UnaryOp +div_issues.tree- op: USub +div_issues.tree- operand: Constant +div_issues.tree- value: int = 1 +div_issues.tree- kind: NoneType = None +div_issues.tree- ctx: Load +div_issues.tree- element: Subscript +div_issues.tree- value: Name +div_issues.tree- id: str = l460 +div_issues.tree- ctx: Load +div_issues.tree: slice: UnaryOp +div_issues.tree- op: USub +div_issues.tree- operand: Constant +div_issues.tree- value: int = 2 +div_issues.tree- kind: NoneType = None +div_issues.tree- ctx: Load +div_issues.tree- element: Subscript +div_issues.tree- value: Name +div_issues.tree- id: str = l460 +div_issues.tree- ctx: Load +div_issues.tree: slice: UnaryOp +div_issues.tree- op: USub +div_issues.tree- operand: Constant +div_issues.tree- value: int = 3 +div_issues.tree- kind: NoneType = None +div_issues.tree- ctx: Load +-- +div_issues.tree- args: list +div_issues.tree- element: Subscript +div_issues.tree- value: Name +div_issues.tree- id: str = t460 +div_issues.tree- ctx: Load +div_issues.tree: slice: Constant +div_issues.tree- value: int = 0 +div_issues.tree- kind: NoneType = None +div_issues.tree- ctx: Load +div_issues.tree- element: Subscript +div_issues.tree- value: Name +div_issues.tree- id: str = t460 +div_issues.tree- ctx: Load +div_issues.tree: slice: Constant +div_issues.tree- value: int = 1 +div_issues.tree- kind: NoneType = None +div_issues.tree- ctx: Load +div_issues.tree- element: Subscript +div_issues.tree- value: Name +div_issues.tree- id: str = t460 +div_issues.tree- ctx: Load +div_issues.tree: slice: Constant +div_issues.tree- value: int = 2 +div_issues.tree- kind: NoneType = None +div_issues.tree- ctx: Load +div_issues.tree- element: Subscript +div_issues.tree- value: Name +div_issues.tree- id: str = t460 +div_issues.tree- ctx: Load +div_issues.tree: slice: UnaryOp +div_issues.tree- op: USub +div_issues.tree- operand: Constant +div_issues.tree- value: int = 1 +div_issues.tree- kind: NoneType = None +div_issues.tree- ctx: Load +div_issues.tree- element: Subscript +div_issues.tree- value: Name +div_issues.tree- id: str = t460 +div_issues.tree- ctx: Load +div_issues.tree: slice: UnaryOp +div_issues.tree- op: USub +div_issues.tree- operand: Constant +div_issues.tree- value: int = 2 +div_issues.tree- kind: NoneType = None +div_issues.tree- ctx: Load +div_issues.tree- element: Subscript +div_issues.tree- value: Name +div_issues.tree- id: str = t460 +div_issues.tree- ctx: Load +div_issues.tree: slice: UnaryOp +div_issues.tree- op: USub +div_issues.tree- operand: Constant +div_issues.tree- value: int = 3 +div_issues.tree- kind: NoneType = None +div_issues.tree- ctx: Load +-- +div_issues.tree- args: list +div_issues.tree- element: Subscript +div_issues.tree- value: Name +div_issues.tree- id: str = d460 +div_issues.tree- ctx: Load +div_issues.tree: slice: UnaryOp +div_issues.tree- op: USub +div_issues.tree- operand: Constant +div_issues.tree- value: int = 1 +div_issues.tree- kind: NoneType = None +div_issues.tree- ctx: Load +div_issues.tree- element: Subscript +div_issues.tree- value: Name +div_issues.tree- id: str = d460 +div_issues.tree- ctx: Load +div_issues.tree: slice: Constant +div_issues.tree- value: str = b +div_issues.tree- kind: NoneType = None +div_issues.tree- ctx: Load +div_issues.tree- keywords: list +div_issues.tree- element: Expr +-- +div_issues.tree- args: list +div_issues.tree- element: Subscript +div_issues.tree- value: Name +div_issues.tree- id: str = d460 +div_issues.tree- ctx: Load +div_issues.tree: slice: UnaryOp +div_issues.tree- op: USub +div_issues.tree- operand: Constant +div_issues.tree- value: int = 1 +div_issues.tree- kind: NoneType = None +div_issues.tree- ctx: Load +div_issues.tree- element: Subscript +div_issues.tree- value: Name +div_issues.tree- id: str = d460 +div_issues.tree- ctx: Load +div_issues.tree: slice: Constant +div_issues.tree- value: str = c +div_issues.tree- kind: NoneType = None +div_issues.tree- ctx: Load +div_issues.tree- keywords: list +div_issues.tree- handlers: list +-- +div_issues.tree- args: list +div_issues.tree- element: Subscript +div_issues.tree- value: Name +div_issues.tree- id: str = d460 +div_issues.tree- ctx: Load +div_issues.tree: slice: UnaryOp +div_issues.tree- op: USub +div_issues.tree- operand: Constant +div_issues.tree- value: int = 2 +div_issues.tree- kind: NoneType = None +div_issues.tree- ctx: Load +div_issues.tree- element: Subscript +div_issues.tree- value: Name +div_issues.tree- id: str = d460 +div_issues.tree- ctx: Load +div_issues.tree: slice: Constant +div_issues.tree- value: str = b +div_issues.tree- kind: NoneType = None +div_issues.tree- ctx: Load +div_issues.tree- keywords: list +div_issues.tree- handlers: list +-- +div_pulls.tree- args: list +div_pulls.tree- element: Subscript +div_pulls.tree- value: Name +div_pulls.tree- id: str = s +div_pulls.tree- ctx: Load +div_pulls.tree: slice: Slice +div_pulls.tree- lower: Constant +div_pulls.tree- value: int = 2 +div_pulls.tree- kind: NoneType = None +div_pulls.tree- upper: Constant +div_pulls.tree- value: int = 3 +-- +div_pulls.tree- args: list +div_pulls.tree- element: Subscript +div_pulls.tree- value: Name +div_pulls.tree- id: str = s +div_pulls.tree- ctx: Load +div_pulls.tree: slice: Slice +div_pulls.tree- lower: NoneType = None +div_pulls.tree- upper: Constant +div_pulls.tree- value: int = 3 +div_pulls.tree- kind: NoneType = None +div_pulls.tree- step: NoneType = None +-- +div_pulls.tree- args: list +div_pulls.tree- element: Subscript +div_pulls.tree- value: Name +div_pulls.tree- id: str = s +div_pulls.tree- ctx: Load +div_pulls.tree: slice: Slice +div_pulls.tree- lower: Constant +div_pulls.tree- value: int = 2 +div_pulls.tree- kind: NoneType = None +div_pulls.tree- upper: NoneType = None +div_pulls.tree- step: NoneType = None +-- +div_pulls.tree- args: list +div_pulls.tree- element: Subscript +div_pulls.tree- value: Name +div_pulls.tree- id: str = s +div_pulls.tree- ctx: Load +div_pulls.tree: slice: Slice +div_pulls.tree- lower: NoneType = None +div_pulls.tree- upper: NoneType = None +div_pulls.tree- step: Constant +div_pulls.tree- value: int = 2 +div_pulls.tree- kind: NoneType = None +-- +extended_slices.tree- targets: list +extended_slices.tree- element: Subscript +extended_slices.tree- value: Name +extended_slices.tree- id: str = a +extended_slices.tree- ctx: Load +extended_slices.tree: slice: Tuple +extended_slices.tree- elts: list +extended_slices.tree- element: Slice +extended_slices.tree- lower: Constant +extended_slices.tree- value: int = 1 +extended_slices.tree- kind: NoneType = None +-- +extended_slices.tree- ctx: Store +extended_slices.tree- value: Subscript +extended_slices.tree- value: Name +extended_slices.tree- id: str = b +extended_slices.tree- ctx: Load +extended_slices.tree: slice: Slice +extended_slices.tree- lower: Constant +extended_slices.tree- value: int = 7 +extended_slices.tree- kind: NoneType = None +extended_slices.tree- upper: Constant +extended_slices.tree- value: int = 8 +-- +extended_slices.tree- targets: list +extended_slices.tree- element: Subscript +extended_slices.tree- value: Name +extended_slices.tree- id: str = c +extended_slices.tree- ctx: Load +extended_slices.tree: slice: Slice +extended_slices.tree- lower: Constant +extended_slices.tree- value: int = 1 +extended_slices.tree- kind: NoneType = None +extended_slices.tree- upper: Constant +extended_slices.tree- value: int = 2 +-- +extended_slices.tree- ctx: Store +extended_slices.tree- value: Subscript +extended_slices.tree- value: Name +extended_slices.tree- id: str = d +extended_slices.tree- ctx: Load +extended_slices.tree: slice: Tuple +extended_slices.tree- elts: list +extended_slices.tree- element: Slice +extended_slices.tree- lower: Constant +extended_slices.tree- value: int = 4 +extended_slices.tree- kind: NoneType = None +-- +extended_slices.tree- targets: list +extended_slices.tree- element: Subscript +extended_slices.tree- value: Name +extended_slices.tree- id: str = e +extended_slices.tree- ctx: Load +extended_slices.tree: slice: Tuple +extended_slices.tree- elts: list +extended_slices.tree- element: Constant +extended_slices.tree- value: int = 1 +extended_slices.tree- kind: NoneType = None +extended_slices.tree- element: Slice +-- +extended_slices.tree- ctx: Store +extended_slices.tree- value: Subscript +extended_slices.tree- value: Name +extended_slices.tree- id: str = f +extended_slices.tree- ctx: Load +extended_slices.tree: slice: Tuple +extended_slices.tree- elts: list +extended_slices.tree- element: Constant +extended_slices.tree- value: int = 4 +extended_slices.tree- kind: NoneType = None +extended_slices.tree- element: Slice +-- +extended_slices.tree- targets: list +extended_slices.tree- element: Subscript +extended_slices.tree- value: Name +extended_slices.tree- id: str = g +extended_slices.tree- ctx: Load +extended_slices.tree: slice: Tuple +extended_slices.tree- elts: list +extended_slices.tree- element: Constant +extended_slices.tree- value: int = 1 +extended_slices.tree- kind: NoneType = None +extended_slices.tree- element: Constant +-- +extended_slices.tree- ctx: Store +extended_slices.tree- value: Subscript +extended_slices.tree- value: Name +extended_slices.tree- id: str = h +extended_slices.tree- ctx: Load +extended_slices.tree: slice: Tuple +extended_slices.tree- elts: list +extended_slices.tree- element: Constant +extended_slices.tree- value: int = 1 +extended_slices.tree- kind: NoneType = None +extended_slices.tree- element: Constant +-- +extended_slices.tree- targets: list +extended_slices.tree- element: Subscript +extended_slices.tree- value: Name +extended_slices.tree- id: str = i +extended_slices.tree- ctx: Load +extended_slices.tree: slice: Constant +extended_slices.tree- value: int = 1 +extended_slices.tree- kind: NoneType = None +extended_slices.tree- ctx: Store +extended_slices.tree- value: Subscript +extended_slices.tree- value: Name +extended_slices.tree- id: str = j +extended_slices.tree- ctx: Load +extended_slices.tree: slice: Constant +extended_slices.tree- value: int = 1 +extended_slices.tree- kind: NoneType = None +extended_slices.tree- ctx: Load +extended_slices.tree- type_comment: NoneType = None +extended_slices.tree- element: Assign +extended_slices.tree- targets: list +extended_slices.tree- element: Subscript +extended_slices.tree- value: Name +extended_slices.tree- id: str = k +extended_slices.tree- ctx: Load +extended_slices.tree: slice: Slice +extended_slices.tree- lower: Constant +extended_slices.tree- value: int = 1 +extended_slices.tree- kind: NoneType = None +extended_slices.tree- upper: Constant +extended_slices.tree- value: int = 2 +-- +extended_slices.tree- ctx: Store +extended_slices.tree- value: Subscript +extended_slices.tree- value: Name +extended_slices.tree- id: str = l +extended_slices.tree- ctx: Load +extended_slices.tree: slice: Slice +extended_slices.tree- lower: Constant +extended_slices.tree- value: int = 1 +extended_slices.tree- kind: NoneType = None +extended_slices.tree- upper: Constant +extended_slices.tree- value: int = 2 +-- +fstrings.tree- ctx: Load +fstrings.tree- element: Subscript +fstrings.tree- value: Name +fstrings.tree- id: str = aDict +fstrings.tree- ctx: Load +fstrings.tree: slice: Constant +fstrings.tree- value: str = one +fstrings.tree- kind: NoneType = None +fstrings.tree- ctx: Load +fstrings.tree- keywords: list +fstrings.tree- keywords: list +-- +fstrings.tree- element: FormattedValue +fstrings.tree- value: Subscript +fstrings.tree- value: Name +fstrings.tree- id: str = aDict +fstrings.tree- ctx: Load +fstrings.tree: slice: Constant +fstrings.tree- value: str = one +fstrings.tree- kind: NoneType = None +fstrings.tree- ctx: Load +fstrings.tree- conversion: int = -1 +fstrings.tree- format_spec: NoneType = None +-- +fstrings.tree- element: FormattedValue +fstrings.tree- value: Subscript +fstrings.tree- value: Name +fstrings.tree- id: str = anArray +fstrings.tree- ctx: Load +fstrings.tree: slice: Slice +fstrings.tree- lower: Constant +fstrings.tree- value: int = 1 +fstrings.tree- kind: NoneType = None +fstrings.tree- upper: Constant +fstrings.tree- value: int = 4 +-- +fstrings.tree- element: FormattedValue +fstrings.tree- value: Subscript +fstrings.tree- value: Name +fstrings.tree- id: str = anArray +fstrings.tree- ctx: Load +fstrings.tree: slice: Constant +fstrings.tree- value: int = 5 +fstrings.tree- kind: NoneType = None +fstrings.tree- ctx: Load +fstrings.tree- conversion: int = -1 +fstrings.tree- format_spec: NoneType = None +-- +globals_function.sub.tree- func: Name +globals_function.sub.tree- id: str = globals +globals_function.sub.tree- ctx: Load +globals_function.sub.tree- args: list +globals_function.sub.tree- keywords: list +globals_function.sub.tree: slice: Name +globals_function.sub.tree- id: str = name +globals_function.sub.tree- ctx: Load +globals_function.sub.tree- ctx: Store +globals_function.sub.tree- value: Call +globals_function.sub.tree- func: Attribute +-- +globals_function.sub.tree- func: Name +globals_function.sub.tree- id: str = globals +globals_function.sub.tree- ctx: Load +globals_function.sub.tree- args: list +globals_function.sub.tree- keywords: list +globals_function.sub.tree: slice: Name +globals_function.sub.tree- id: str = name +globals_function.sub.tree- ctx: Load +globals_function.sub.tree- ctx: Store +globals_function.sub.tree- value: Call +globals_function.sub.tree- func: Attribute +-- +globals_function.sub.tree- func: Name +globals_function.sub.tree- id: str = globals +globals_function.sub.tree- ctx: Load +globals_function.sub.tree- args: list +globals_function.sub.tree- keywords: list +globals_function.sub.tree: slice: Name +globals_function.sub.tree- id: str = name +globals_function.sub.tree- ctx: Load +globals_function.sub.tree- ctx: Load +globals_function.sub.tree- generators: list +globals_function.sub.tree- element: comprehension +-- +globals_function.tree- func: Name +globals_function.tree- id: str = globals +globals_function.tree- ctx: Load +globals_function.tree- args: list +globals_function.tree- keywords: list +globals_function.tree: slice: Name +globals_function.tree- id: str = name +globals_function.tree- ctx: Load +globals_function.tree- ctx: Store +globals_function.tree- value: Call +globals_function.tree- func: Attribute +-- +globals_function.tree- func: Name +globals_function.tree- id: str = globals +globals_function.tree- ctx: Load +globals_function.tree- args: list +globals_function.tree- keywords: list +globals_function.tree: slice: Name +globals_function.tree- id: str = name +globals_function.tree- ctx: Load +globals_function.tree- ctx: Store +globals_function.tree- value: Call +globals_function.tree- func: Attribute +-- +globals_function.tree- func: Name +globals_function.tree- id: str = globals +globals_function.tree- ctx: Load +globals_function.tree- args: list +globals_function.tree- keywords: list +globals_function.tree: slice: Name +globals_function.tree- id: str = name +globals_function.tree- ctx: Load +globals_function.tree- ctx: Load +globals_function.tree- generators: list +globals_function.tree- element: comprehension +-- +indices_and_slices.tree- args: list +indices_and_slices.tree- element: Subscript +indices_and_slices.tree- value: Name +indices_and_slices.tree- id: str = all +indices_and_slices.tree- ctx: Load +indices_and_slices.tree: slice: Slice +indices_and_slices.tree- lower: Constant +indices_and_slices.tree- value: int = 8 +indices_and_slices.tree- kind: NoneType = None +indices_and_slices.tree- upper: Constant +indices_and_slices.tree- value: int = 24 +-- +indices_and_slices.tree- args: list +indices_and_slices.tree- element: Subscript +indices_and_slices.tree- value: Name +indices_and_slices.tree- id: str = all +indices_and_slices.tree- ctx: Load +indices_and_slices.tree: slice: Slice +indices_and_slices.tree- lower: Constant +indices_and_slices.tree- value: int = 8 +indices_and_slices.tree- kind: NoneType = None +indices_and_slices.tree- upper: Constant +indices_and_slices.tree- value: int = 24 +-- +indices_and_slices.tree- targets: list +indices_and_slices.tree- element: Subscript +indices_and_slices.tree- value: Name +indices_and_slices.tree- id: str = aList +indices_and_slices.tree- ctx: Load +indices_and_slices.tree: slice: Slice +indices_and_slices.tree- lower: Constant +indices_and_slices.tree- value: int = 4 +indices_and_slices.tree- kind: NoneType = None +indices_and_slices.tree- upper: Constant +indices_and_slices.tree- value: int = 4 +-- +indices_and_slices.tree- targets: list +indices_and_slices.tree- element: Subscript +indices_and_slices.tree- value: Name +indices_and_slices.tree- id: str = aList +indices_and_slices.tree- ctx: Load +indices_and_slices.tree: slice: Slice +indices_and_slices.tree- lower: Constant +indices_and_slices.tree- value: int = 2 +indices_and_slices.tree- kind: NoneType = None +indices_and_slices.tree- upper: Constant +indices_and_slices.tree- value: int = 2 +-- +indices_and_slices.tree- targets: list +indices_and_slices.tree- element: Subscript +indices_and_slices.tree- value: Name +indices_and_slices.tree- id: str = aList +indices_and_slices.tree- ctx: Load +indices_and_slices.tree: slice: Slice +indices_and_slices.tree- lower: Constant +indices_and_slices.tree- value: int = 0 +indices_and_slices.tree- kind: NoneType = None +indices_and_slices.tree- upper: Constant +indices_and_slices.tree- value: int = 0 +-- +indices_and_slices.tree- targets: list +indices_and_slices.tree- element: Subscript +indices_and_slices.tree- value: Name +indices_and_slices.tree- id: str = aList +indices_and_slices.tree- ctx: Load +indices_and_slices.tree: slice: Slice +indices_and_slices.tree- lower: NoneType = None +indices_and_slices.tree- upper: NoneType = None +indices_and_slices.tree- step: Constant +indices_and_slices.tree- value: int = 2 +indices_and_slices.tree- kind: NoneType = None +-- +iterators_and_generators.tree- ctx: Load +iterators_and_generators.tree- attr: str = iterable +iterators_and_generators.tree- ctx: Load +iterators_and_generators.tree- attr: str = aList +iterators_and_generators.tree- ctx: Load +iterators_and_generators.tree: slice: Attribute +iterators_and_generators.tree- value: Name +iterators_and_generators.tree- id: str = self +iterators_and_generators.tree- ctx: Load +iterators_and_generators.tree- attr: str = index +iterators_and_generators.tree- ctx: Load +-- +lambda_functions.tree- left: BinOp +lambda_functions.tree- left: Subscript +lambda_functions.tree- value: Name +lambda_functions.tree- id: str = args +lambda_functions.tree- ctx: Load +lambda_functions.tree: slice: Constant +lambda_functions.tree- value: int = 0 +lambda_functions.tree- kind: NoneType = None +lambda_functions.tree- ctx: Load +lambda_functions.tree- op: Mult +lambda_functions.tree- right: Subscript +lambda_functions.tree- value: Name +lambda_functions.tree- id: str = args +lambda_functions.tree- ctx: Load +lambda_functions.tree: slice: Constant +lambda_functions.tree- value: int = 1 +lambda_functions.tree- kind: NoneType = None +lambda_functions.tree- ctx: Load +lambda_functions.tree- op: Add +lambda_functions.tree- right: BinOp +-- +metaclasses.tree- targets: list +metaclasses.tree- element: Subscript +metaclasses.tree- value: Name +metaclasses.tree- id: str = upperAttribs +metaclasses.tree- ctx: Load +metaclasses.tree: slice: IfExp +metaclasses.tree- test: Call +metaclasses.tree- func: Attribute +metaclasses.tree- value: Name +metaclasses.tree- id: str = attribKey +metaclasses.tree- ctx: Load +-- +metaclasses.tree- ctx: Store +metaclasses.tree- value: Subscript +metaclasses.tree- value: Name +metaclasses.tree- id: str = attribs +metaclasses.tree- ctx: Load +metaclasses.tree: slice: Name +metaclasses.tree- id: str = attribKey +metaclasses.tree- ctx: Load +metaclasses.tree- ctx: Load +metaclasses.tree- type_comment: NoneType = None +metaclasses.tree- orelse: list +-- +method_and_class_decorators.tree- ctx: Store +method_and_class_decorators.tree- value: Subscript +method_and_class_decorators.tree- value: Name +method_and_class_decorators.tree- id: str = args +method_and_class_decorators.tree- ctx: Load +method_and_class_decorators.tree: slice: Constant +method_and_class_decorators.tree- value: int = 0 +method_and_class_decorators.tree- kind: NoneType = None +method_and_class_decorators.tree- ctx: Load +method_and_class_decorators.tree- type_comment: NoneType = None +method_and_class_decorators.tree- element: Assign +-- +method_and_class_decorators.tree- targets: list +method_and_class_decorators.tree- element: Subscript +method_and_class_decorators.tree- value: Name +method_and_class_decorators.tree- id: str = saved +method_and_class_decorators.tree- ctx: Load +method_and_class_decorators.tree: slice: Name +method_and_class_decorators.tree- id: str = k +method_and_class_decorators.tree- ctx: Load +method_and_class_decorators.tree- ctx: Store +method_and_class_decorators.tree- value: Call +method_and_class_decorators.tree- func: Name +-- +module_builtin.tree- args: list +module_builtin.tree- element: Subscript +module_builtin.tree- value: Constant +module_builtin.tree- value: str = e´ +module_builtin.tree- kind: NoneType = None +module_builtin.tree: slice: Constant +module_builtin.tree- value: int = 0 +module_builtin.tree- kind: NoneType = None +module_builtin.tree- ctx: Load +module_builtin.tree- keywords: list +module_builtin.tree- keywords: list +-- +module_cmath.tree- args: list +module_cmath.tree- element: Subscript +module_cmath.tree- value: Name +module_cmath.tree- id: str = aPolar +module_cmath.tree- ctx: Load +module_cmath.tree: slice: Constant +module_cmath.tree- value: int = 0 +module_cmath.tree- kind: NoneType = None +module_cmath.tree- ctx: Load +module_cmath.tree- element: Name +module_cmath.tree- id: str = nDecs +-- +module_cmath.tree- keywords: list +module_cmath.tree- element: Subscript +module_cmath.tree- value: Name +module_cmath.tree- id: str = aPolar +module_cmath.tree- ctx: Load +module_cmath.tree: slice: Constant +module_cmath.tree- value: int = 1 +module_cmath.tree- kind: NoneType = None +module_cmath.tree- ctx: Load +module_cmath.tree- keywords: list +module_cmath.tree- element: Assign +-- +module_itertools.tree- ctx: Load +module_itertools.tree- attr: str = check +module_itertools.tree- ctx: Load +module_itertools.tree- args: list +module_itertools.tree- element: Constant +module_itertools.tree: value: str = islice count +module_itertools.tree- kind: NoneType = None +module_itertools.tree- element: Call +module_itertools.tree- func: Name +module_itertools.tree- id: str = list +module_itertools.tree- ctx: Load +module_itertools.tree- args: list +module_itertools.tree- element: Call +module_itertools.tree- func: Name +module_itertools.tree: id: str = islice +module_itertools.tree- ctx: Load +module_itertools.tree- args: list +module_itertools.tree- element: Call +module_itertools.tree- func: Name +module_itertools.tree- id: str = count +-- +module_itertools.tree- ctx: Load +module_itertools.tree- attr: str = check +module_itertools.tree- ctx: Load +module_itertools.tree- args: list +module_itertools.tree- element: Constant +module_itertools.tree: value: str = islice cycle +module_itertools.tree- kind: NoneType = None +module_itertools.tree- element: Call +module_itertools.tree- func: Name +module_itertools.tree- id: str = list +module_itertools.tree- ctx: Load +module_itertools.tree- args: list +module_itertools.tree- element: Call +module_itertools.tree- func: Name +module_itertools.tree: id: str = islice +module_itertools.tree- ctx: Load +module_itertools.tree- args: list +module_itertools.tree- element: Call +module_itertools.tree- func: Name +module_itertools.tree- id: str = cycle +-- +module_itertools.tree- ctx: Load +module_itertools.tree- attr: str = check +module_itertools.tree- ctx: Load +module_itertools.tree- args: list +module_itertools.tree- element: Constant +module_itertools.tree: value: str = islice repeat +module_itertools.tree- kind: NoneType = None +module_itertools.tree- element: Call +module_itertools.tree- func: Name +module_itertools.tree- id: str = list +module_itertools.tree- ctx: Load +module_itertools.tree- args: list +module_itertools.tree- element: Call +module_itertools.tree- func: Name +module_itertools.tree: id: str = islice +module_itertools.tree- ctx: Load +module_itertools.tree- args: list +module_itertools.tree- element: Call +module_itertools.tree- func: Name +module_itertools.tree- id: str = repeat +-- +module_itertools.tree- defaults: list +module_itertools.tree- body: Subscript +module_itertools.tree- value: Name +module_itertools.tree- id: str = x +module_itertools.tree- ctx: Load +module_itertools.tree: slice: Constant +module_itertools.tree- value: int = 0 +module_itertools.tree- kind: NoneType = None +module_itertools.tree- ctx: Load +module_itertools.tree- keywords: list +module_itertools.tree- body: list +-- +module_itertools.tree- args: list +module_itertools.tree- element: Subscript +module_itertools.tree- value: Name +module_itertools.tree- id: str = thing +module_itertools.tree- ctx: Load +module_itertools.tree: slice: Constant +module_itertools.tree- value: int = 1 +module_itertools.tree- kind: NoneType = None +module_itertools.tree- ctx: Load +module_itertools.tree- element: Name +module_itertools.tree- id: str = key +-- +module_itertools.tree- ctx: Load +module_itertools.tree- attr: str = check +module_itertools.tree- ctx: Load +module_itertools.tree- args: list +module_itertools.tree- element: Constant +module_itertools.tree: value: str = islice +module_itertools.tree- kind: NoneType = None +module_itertools.tree- element: Call +module_itertools.tree- func: Name +module_itertools.tree- id: str = list +module_itertools.tree- ctx: Load +module_itertools.tree- args: list +module_itertools.tree- element: Call +module_itertools.tree- func: Name +module_itertools.tree: id: str = islice +module_itertools.tree- ctx: Load +module_itertools.tree- args: list +module_itertools.tree- element: List +module_itertools.tree- elts: list +module_itertools.tree- element: Constant +-- +module_itertools.tree- id: str = tee +module_itertools.tree- ctx: Load +module_itertools.tree- args: list +module_itertools.tree- element: Call +module_itertools.tree- func: Name +module_itertools.tree: id: str = islice +module_itertools.tree- ctx: Load +module_itertools.tree- args: list +module_itertools.tree- element: Call +module_itertools.tree- func: Name +module_itertools.tree- id: str = count +-- +module_itertools.tree- id: str = combinations +module_itertools.tree- ctx: Load +module_itertools.tree- args: list +module_itertools.tree- element: Call +module_itertools.tree- func: Name +module_itertools.tree: id: str = islice +module_itertools.tree- ctx: Load +module_itertools.tree- args: list +module_itertools.tree- element: Call +module_itertools.tree- func: Name +module_itertools.tree- id: str = count +-- +module_itertools.tree- id: str = combinations_with_replacement +module_itertools.tree- ctx: Load +module_itertools.tree- args: list +module_itertools.tree- element: Call +module_itertools.tree- func: Name +module_itertools.tree: id: str = islice +module_itertools.tree- ctx: Load +module_itertools.tree- args: list +module_itertools.tree- element: Call +module_itertools.tree- func: Name +module_itertools.tree- id: str = count +-- +module_math.tree- args: list +module_math.tree- element: Name +module_math.tree- id: str = nr +module_math.tree- ctx: Load +module_math.tree- keywords: list +module_math.tree: slice: Slice +module_math.tree- lower: NoneType = None +module_math.tree- upper: Constant +module_math.tree- value: int = 15 +module_math.tree- kind: NoneType = None +module_math.tree- step: NoneType = None +-- +operator_overloading.tree- value: Name +operator_overloading.tree- id: str = result +operator_overloading.tree- ctx: Load +operator_overloading.tree- attr: str = _ +operator_overloading.tree- ctx: Load +operator_overloading.tree: slice: Name +operator_overloading.tree- id: str = iTargetRow +operator_overloading.tree- ctx: Load +operator_overloading.tree- ctx: Load +operator_overloading.tree: slice: Name +operator_overloading.tree- id: str = iTargetCol +operator_overloading.tree- ctx: Load +operator_overloading.tree- ctx: Store +operator_overloading.tree- op: Add +operator_overloading.tree- value: BinOp +-- +operator_overloading.tree- value: Name +operator_overloading.tree- id: str = self +operator_overloading.tree- ctx: Load +operator_overloading.tree- attr: str = _ +operator_overloading.tree- ctx: Load +operator_overloading.tree: slice: Name +operator_overloading.tree- id: str = iTargetRow +operator_overloading.tree- ctx: Load +operator_overloading.tree- ctx: Load +operator_overloading.tree: slice: Name +operator_overloading.tree- id: str = iTerm +operator_overloading.tree- ctx: Load +operator_overloading.tree- ctx: Load +operator_overloading.tree- op: Mult +operator_overloading.tree- right: Subscript +-- +operator_overloading.tree- value: Name +operator_overloading.tree- id: str = other +operator_overloading.tree- ctx: Load +operator_overloading.tree- attr: str = _ +operator_overloading.tree- ctx: Load +operator_overloading.tree: slice: Name +operator_overloading.tree- id: str = iTerm +operator_overloading.tree- ctx: Load +operator_overloading.tree- ctx: Load +operator_overloading.tree: slice: Name +operator_overloading.tree- id: str = iTargetCol +operator_overloading.tree- ctx: Load +operator_overloading.tree- ctx: Load +operator_overloading.tree- orelse: list +operator_overloading.tree- type_comment: NoneType = None +-- +operator_overloading.tree- value: Name +operator_overloading.tree- id: str = result +operator_overloading.tree- ctx: Load +operator_overloading.tree- attr: str = _ +operator_overloading.tree- ctx: Load +operator_overloading.tree: slice: Name +operator_overloading.tree- id: str = iRow +operator_overloading.tree- ctx: Load +operator_overloading.tree- ctx: Load +operator_overloading.tree: slice: Name +operator_overloading.tree- id: str = iCol +operator_overloading.tree- ctx: Load +operator_overloading.tree- ctx: Store +operator_overloading.tree- value: BinOp +operator_overloading.tree- left: Subscript +-- +operator_overloading.tree- value: Name +operator_overloading.tree- id: str = self +operator_overloading.tree- ctx: Load +operator_overloading.tree- attr: str = _ +operator_overloading.tree- ctx: Load +operator_overloading.tree: slice: Name +operator_overloading.tree- id: str = iRow +operator_overloading.tree- ctx: Load +operator_overloading.tree- ctx: Load +operator_overloading.tree: slice: Name +operator_overloading.tree- id: str = iCol +operator_overloading.tree- ctx: Load +operator_overloading.tree- ctx: Load +operator_overloading.tree- op: Mult +operator_overloading.tree- right: Subscript +-- +operator_overloading.tree- value: Name +operator_overloading.tree- id: str = other +operator_overloading.tree- ctx: Load +operator_overloading.tree- attr: str = _ +operator_overloading.tree- ctx: Load +operator_overloading.tree: slice: Name +operator_overloading.tree- id: str = iRow +operator_overloading.tree- ctx: Load +operator_overloading.tree- ctx: Load +operator_overloading.tree: slice: Name +operator_overloading.tree- id: str = iCol +operator_overloading.tree- ctx: Load +operator_overloading.tree- ctx: Load +operator_overloading.tree- type_comment: NoneType = None +operator_overloading.tree- orelse: list +-- +operator_overloading.tree- value: Name +operator_overloading.tree- id: str = result +operator_overloading.tree- ctx: Load +operator_overloading.tree- attr: str = _ +operator_overloading.tree- ctx: Load +operator_overloading.tree: slice: Name +operator_overloading.tree- id: str = iRow +operator_overloading.tree- ctx: Load +operator_overloading.tree- ctx: Load +operator_overloading.tree: slice: Name +operator_overloading.tree- id: str = iCol +operator_overloading.tree- ctx: Load +operator_overloading.tree- ctx: Store +operator_overloading.tree- value: BinOp +operator_overloading.tree- left: Name +-- +operator_overloading.tree- value: Name +operator_overloading.tree- id: str = self +operator_overloading.tree- ctx: Load +operator_overloading.tree- attr: str = _ +operator_overloading.tree- ctx: Load +operator_overloading.tree: slice: Name +operator_overloading.tree- id: str = iRow +operator_overloading.tree- ctx: Load +operator_overloading.tree- ctx: Load +operator_overloading.tree: slice: Name +operator_overloading.tree- id: str = iCol +operator_overloading.tree- ctx: Load +operator_overloading.tree- ctx: Load +operator_overloading.tree- type_comment: NoneType = None +operator_overloading.tree- orelse: list +-- +operator_overloading.tree- value: Name +operator_overloading.tree- id: str = result +operator_overloading.tree- ctx: Load +operator_overloading.tree- attr: str = _ +operator_overloading.tree- ctx: Load +operator_overloading.tree: slice: Name +operator_overloading.tree- id: str = iRow +operator_overloading.tree- ctx: Load +operator_overloading.tree- ctx: Load +operator_overloading.tree: slice: Name +operator_overloading.tree- id: str = iCol +operator_overloading.tree- ctx: Load +operator_overloading.tree- ctx: Store +operator_overloading.tree- value: BinOp +operator_overloading.tree- left: Subscript +-- +operator_overloading.tree- value: Name +operator_overloading.tree- id: str = self +operator_overloading.tree- ctx: Load +operator_overloading.tree- attr: str = _ +operator_overloading.tree- ctx: Load +operator_overloading.tree: slice: Name +operator_overloading.tree- id: str = iRow +operator_overloading.tree- ctx: Load +operator_overloading.tree- ctx: Load +operator_overloading.tree: slice: Name +operator_overloading.tree- id: str = iCol +operator_overloading.tree- ctx: Load +operator_overloading.tree- ctx: Load +operator_overloading.tree- op: Add +operator_overloading.tree- right: Subscript +-- +operator_overloading.tree- value: Name +operator_overloading.tree- id: str = other +operator_overloading.tree- ctx: Load +operator_overloading.tree- attr: str = _ +operator_overloading.tree- ctx: Load +operator_overloading.tree: slice: Name +operator_overloading.tree- id: str = iRow +operator_overloading.tree- ctx: Load +operator_overloading.tree- ctx: Load +operator_overloading.tree: slice: Name +operator_overloading.tree- id: str = iCol +operator_overloading.tree- ctx: Load +operator_overloading.tree- ctx: Load +operator_overloading.tree- type_comment: NoneType = None +operator_overloading.tree- orelse: list +-- +operator_overloading.tree- value: Name +operator_overloading.tree- id: str = self +operator_overloading.tree- ctx: Load +operator_overloading.tree- attr: str = _ +operator_overloading.tree- ctx: Load +operator_overloading.tree: slice: Name +operator_overloading.tree- id: str = index +operator_overloading.tree- ctx: Load +operator_overloading.tree- ctx: Load +operator_overloading.tree- decorator_list: list +operator_overloading.tree- returns: NoneType = None +-- +operator_overloading.tree- value: Name +operator_overloading.tree- id: str = self +operator_overloading.tree- ctx: Load +operator_overloading.tree- attr: str = _ +operator_overloading.tree- ctx: Load +operator_overloading.tree: slice: Name +operator_overloading.tree- id: str = index +operator_overloading.tree- ctx: Load +operator_overloading.tree- ctx: Store +operator_overloading.tree- value: Name +operator_overloading.tree- id: str = value +-- +operator_overloading.tree- element: Subscript +operator_overloading.tree- value: Subscript +operator_overloading.tree- value: Name +operator_overloading.tree- id: str = m1 +operator_overloading.tree- ctx: Load +operator_overloading.tree: slice: Constant +operator_overloading.tree- value: int = 1 +operator_overloading.tree- kind: NoneType = None +operator_overloading.tree- ctx: Load +operator_overloading.tree: slice: Constant +operator_overloading.tree- value: int = 2 +operator_overloading.tree- kind: NoneType = None +operator_overloading.tree- ctx: Store +operator_overloading.tree- value: Subscript +operator_overloading.tree- value: Subscript +operator_overloading.tree- value: Name +operator_overloading.tree- id: str = m0 +operator_overloading.tree- ctx: Load +operator_overloading.tree: slice: Constant +operator_overloading.tree- value: int = 1 +operator_overloading.tree- kind: NoneType = None +operator_overloading.tree- ctx: Load +operator_overloading.tree: slice: Constant +operator_overloading.tree- value: int = 2 +operator_overloading.tree- kind: NoneType = None +operator_overloading.tree- ctx: Load +operator_overloading.tree- type_comment: NoneType = None +operator_overloading.tree- element: Assign +-- +operator_overloading.tree- element: Subscript +operator_overloading.tree- value: Subscript +operator_overloading.tree- value: Name +operator_overloading.tree- id: str = m0 +operator_overloading.tree- ctx: Load +operator_overloading.tree: slice: Constant +operator_overloading.tree- value: int = 1 +operator_overloading.tree- kind: NoneType = None +operator_overloading.tree- ctx: Load +operator_overloading.tree: slice: Constant +operator_overloading.tree- value: int = 1 +operator_overloading.tree- kind: NoneType = None +operator_overloading.tree- ctx: Load +operator_overloading.tree- element: Subscript +operator_overloading.tree- value: Subscript +operator_overloading.tree- value: Name +operator_overloading.tree- id: str = m0 +operator_overloading.tree- ctx: Load +operator_overloading.tree: slice: Constant +operator_overloading.tree- value: int = 1 +operator_overloading.tree- kind: NoneType = None +operator_overloading.tree- ctx: Load +operator_overloading.tree: slice: Constant +operator_overloading.tree- value: int = 2 +operator_overloading.tree- kind: NoneType = None +operator_overloading.tree- ctx: Load +operator_overloading.tree- element: Subscript +operator_overloading.tree- value: Subscript +operator_overloading.tree- value: Name +operator_overloading.tree- id: str = m1 +operator_overloading.tree- ctx: Load +operator_overloading.tree: slice: Constant +operator_overloading.tree- value: int = 1 +operator_overloading.tree- kind: NoneType = None +operator_overloading.tree- ctx: Load +operator_overloading.tree: slice: Constant +operator_overloading.tree- value: int = 1 +operator_overloading.tree- kind: NoneType = None +operator_overloading.tree- ctx: Load +operator_overloading.tree- element: Subscript +operator_overloading.tree- value: Subscript +operator_overloading.tree- value: Name +operator_overloading.tree- id: str = m1 +operator_overloading.tree- ctx: Load +operator_overloading.tree: slice: Constant +operator_overloading.tree- value: int = 1 +operator_overloading.tree- kind: NoneType = None +operator_overloading.tree- ctx: Load +operator_overloading.tree: slice: Constant +operator_overloading.tree- value: int = 2 +operator_overloading.tree- kind: NoneType = None +operator_overloading.tree- ctx: Load +operator_overloading.tree- keywords: list +operator_overloading.tree- element: AugAssign +-- +operator_overloading.tree- value: Name +operator_overloading.tree- id: str = a +operator_overloading.tree- ctx: Load +operator_overloading.tree- attr: str = b +operator_overloading.tree- ctx: Load +operator_overloading.tree: slice: Constant +operator_overloading.tree- value: str = c +operator_overloading.tree- kind: NoneType = None +operator_overloading.tree- ctx: Store +operator_overloading.tree- value: Constant +operator_overloading.tree- value: str = d +-- +operator_overloading.tree- value: Name +operator_overloading.tree- id: str = a +operator_overloading.tree- ctx: Load +operator_overloading.tree- attr: str = b +operator_overloading.tree- ctx: Load +operator_overloading.tree: slice: Constant +operator_overloading.tree- value: str = c +operator_overloading.tree- kind: NoneType = None +operator_overloading.tree- ctx: Store +operator_overloading.tree- op: Add +operator_overloading.tree- value: Constant +-- +operator_overloading.tree- value: Name +operator_overloading.tree- id: str = a +operator_overloading.tree- ctx: Load +operator_overloading.tree- attr: str = b +operator_overloading.tree- ctx: Load +operator_overloading.tree: slice: Constant +operator_overloading.tree- value: str = c +operator_overloading.tree- kind: NoneType = None +operator_overloading.tree- ctx: Load +operator_overloading.tree- keywords: list +operator_overloading.tree- decorator_list: list +-- +org.transcrypt.autotester.html.tree- args: list +org.transcrypt.autotester.html.tree- element: Constant +org.transcrypt.autotester.html.tree- value: str = / +org.transcrypt.autotester.html.tree- kind: NoneType = None +org.transcrypt.autotester.html.tree- keywords: list +org.transcrypt.autotester.html.tree: slice: UnaryOp +org.transcrypt.autotester.html.tree- op: USub +org.transcrypt.autotester.html.tree- operand: Constant +org.transcrypt.autotester.html.tree- value: int = 1 +org.transcrypt.autotester.html.tree- kind: NoneType = None +org.transcrypt.autotester.html.tree- ctx: Load +-- +org.transcrypt.autotester.html.tree- element: ListComp +org.transcrypt.autotester.html.tree- elt: Subscript +org.transcrypt.autotester.html.tree- value: Name +org.transcrypt.autotester.html.tree- id: str = x +org.transcrypt.autotester.html.tree- ctx: Load +org.transcrypt.autotester.html.tree: slice: Constant +org.transcrypt.autotester.html.tree- value: int = 1 +org.transcrypt.autotester.html.tree- kind: NoneType = None +org.transcrypt.autotester.html.tree- ctx: Load +org.transcrypt.autotester.html.tree- generators: list +org.transcrypt.autotester.html.tree- element: comprehension +-- +org.transcrypt.autotester.html.tree- ctx: Store +org.transcrypt.autotester.html.tree- iter: Subscript +org.transcrypt.autotester.html.tree- value: Name +org.transcrypt.autotester.html.tree- id: str = refDict +org.transcrypt.autotester.html.tree- ctx: Load +org.transcrypt.autotester.html.tree: slice: Name +org.transcrypt.autotester.html.tree- id: str = key +org.transcrypt.autotester.html.tree- ctx: Load +org.transcrypt.autotester.html.tree- ctx: Load +org.transcrypt.autotester.html.tree- ifs: list +org.transcrypt.autotester.html.tree- is_async: int = 0 +-- +org.transcrypt.autotester.html.tree- element: ListComp +org.transcrypt.autotester.html.tree- elt: Subscript +org.transcrypt.autotester.html.tree- value: Name +org.transcrypt.autotester.html.tree- id: str = x +org.transcrypt.autotester.html.tree- ctx: Load +org.transcrypt.autotester.html.tree: slice: Constant +org.transcrypt.autotester.html.tree- value: int = 0 +org.transcrypt.autotester.html.tree- kind: NoneType = None +org.transcrypt.autotester.html.tree- ctx: Load +org.transcrypt.autotester.html.tree- generators: list +org.transcrypt.autotester.html.tree- element: comprehension +-- +org.transcrypt.autotester.html.tree- ctx: Store +org.transcrypt.autotester.html.tree- iter: Subscript +org.transcrypt.autotester.html.tree- value: Name +org.transcrypt.autotester.html.tree- id: str = refDict +org.transcrypt.autotester.html.tree- ctx: Load +org.transcrypt.autotester.html.tree: slice: Name +org.transcrypt.autotester.html.tree- id: str = key +org.transcrypt.autotester.html.tree- ctx: Load +org.transcrypt.autotester.html.tree- ctx: Load +org.transcrypt.autotester.html.tree- ifs: list +org.transcrypt.autotester.html.tree- is_async: int = 0 +-- +org.transcrypt.autotester.html.tree- targets: list +org.transcrypt.autotester.html.tree- element: Subscript +org.transcrypt.autotester.html.tree- value: Name +org.transcrypt.autotester.html.tree- id: str = refDict +org.transcrypt.autotester.html.tree- ctx: Load +org.transcrypt.autotester.html.tree: slice: Name +org.transcrypt.autotester.html.tree- id: str = keyName +org.transcrypt.autotester.html.tree- ctx: Load +org.transcrypt.autotester.html.tree- ctx: Store +org.transcrypt.autotester.html.tree- value: Call +org.transcrypt.autotester.html.tree- func: Name +-- +org.transcrypt.autotester.tree- ctx: Store +org.transcrypt.autotester.tree- value: Subscript +org.transcrypt.autotester.tree- value: Name +org.transcrypt.autotester.tree- id: str = frames +org.transcrypt.autotester.tree- ctx: Load +org.transcrypt.autotester.tree: slice: BinOp +org.transcrypt.autotester.tree- left: BinOp +org.transcrypt.autotester.tree- left: Name +org.transcrypt.autotester.tree- id: str = ancestor +org.transcrypt.autotester.tree- ctx: Load +org.transcrypt.autotester.tree- op: Mult +-- +org.transcrypt.autotester.tree- ctx: Store +org.transcrypt.autotester.tree- value: Subscript +org.transcrypt.autotester.tree- value: Name +org.transcrypt.autotester.tree- id: str = m +org.transcrypt.autotester.tree- ctx: Load +org.transcrypt.autotester.tree: slice: Constant +org.transcrypt.autotester.tree- value: int = 4 +org.transcrypt.autotester.tree- kind: NoneType = None +org.transcrypt.autotester.tree- ctx: Load +org.transcrypt.autotester.tree- type_comment: NoneType = None +org.transcrypt.autotester.tree- element: Assign +-- +org.transcrypt.autotester.tree- ctx: Store +org.transcrypt.autotester.tree- value: Subscript +org.transcrypt.autotester.tree- value: Name +org.transcrypt.autotester.tree- id: str = pathParts +org.transcrypt.autotester.tree- ctx: Load +org.transcrypt.autotester.tree: slice: BinOp +org.transcrypt.autotester.tree- left: Call +org.transcrypt.autotester.tree- func: Name +org.transcrypt.autotester.tree- id: str = len +org.transcrypt.autotester.tree- ctx: Load +org.transcrypt.autotester.tree- args: list +-- +org.transcrypt.autotester.tree- ctx: Store +org.transcrypt.autotester.tree- value: Subscript +org.transcrypt.autotester.tree- value: Name +org.transcrypt.autotester.tree- id: str = m +org.transcrypt.autotester.tree- ctx: Load +org.transcrypt.autotester.tree: slice: Constant +org.transcrypt.autotester.tree- value: int = 5 +org.transcrypt.autotester.tree- kind: NoneType = None +org.transcrypt.autotester.tree- ctx: Load +org.transcrypt.autotester.tree- type_comment: NoneType = None +org.transcrypt.autotester.tree- element: Return +-- +org.transcrypt.autotester.tree- element: Subscript +org.transcrypt.autotester.tree- value: Subscript +org.transcrypt.autotester.tree- value: Name +org.transcrypt.autotester.tree- id: str = s +org.transcrypt.autotester.tree- ctx: Load +org.transcrypt.autotester.tree: slice: Name +org.transcrypt.autotester.tree- id: str = ancestor +org.transcrypt.autotester.tree- ctx: Load +org.transcrypt.autotester.tree- ctx: Load +org.transcrypt.autotester.tree: slice: Constant +org.transcrypt.autotester.tree- value: int = 0 +org.transcrypt.autotester.tree- kind: NoneType = None +org.transcrypt.autotester.tree- ctx: Load +org.transcrypt.autotester.tree- keywords: list +org.transcrypt.autotester.tree- type_comment: NoneType = None +-- +org.transcrypt.autotester.tree- args: list +org.transcrypt.autotester.tree- element: Subscript +org.transcrypt.autotester.tree- value: Name +org.transcrypt.autotester.tree- id: str = pathParts +org.transcrypt.autotester.tree- ctx: Load +org.transcrypt.autotester.tree: slice: Slice +org.transcrypt.autotester.tree- lower: UnaryOp +org.transcrypt.autotester.tree- op: USub +org.transcrypt.autotester.tree- operand: Constant +org.transcrypt.autotester.tree- value: int = 2 +org.transcrypt.autotester.tree- kind: NoneType = None +-- +org.transcrypt.autotester.tree- args: list +org.transcrypt.autotester.tree- element: Subscript +org.transcrypt.autotester.tree- value: Name +org.transcrypt.autotester.tree- id: str = any +org.transcrypt.autotester.tree- ctx: Load +org.transcrypt.autotester.tree: slice: Name +org.transcrypt.autotester.tree- id: str = key +org.transcrypt.autotester.tree- ctx: Load +org.transcrypt.autotester.tree- ctx: Load +org.transcrypt.autotester.tree- keywords: list +org.transcrypt.autotester.tree- keywords: list +-- +org.transcrypt.autotester.tree- value: Name +org.transcrypt.autotester.tree- id: str = self +org.transcrypt.autotester.tree- ctx: Load +org.transcrypt.autotester.tree- attr: str = testDict +org.transcrypt.autotester.tree- ctx: Load +org.transcrypt.autotester.tree: slice: Attribute +org.transcrypt.autotester.tree- value: Name +org.transcrypt.autotester.tree- id: str = self +org.transcrypt.autotester.tree- ctx: Load +org.transcrypt.autotester.tree- attr: str = _currTestlet +org.transcrypt.autotester.tree- ctx: Load +-- +org.transcrypt.autotester.tree- value: Name +org.transcrypt.autotester.tree- id: str = self +org.transcrypt.autotester.tree- ctx: Load +org.transcrypt.autotester.tree- attr: str = refDict +org.transcrypt.autotester.tree- ctx: Load +org.transcrypt.autotester.tree: slice: Attribute +org.transcrypt.autotester.tree- value: Name +org.transcrypt.autotester.tree- id: str = self +org.transcrypt.autotester.tree- ctx: Load +org.transcrypt.autotester.tree- attr: str = _currTestlet +org.transcrypt.autotester.tree- ctx: Load +-- +org.transcrypt.autotester.tree- ctx: Store +org.transcrypt.autotester.tree- value: Subscript +org.transcrypt.autotester.tree- value: Name +org.transcrypt.autotester.tree- id: str = testData +org.transcrypt.autotester.tree- ctx: Load +org.transcrypt.autotester.tree: slice: Name +org.transcrypt.autotester.tree- id: str = i +org.transcrypt.autotester.tree- ctx: Load +org.transcrypt.autotester.tree- ctx: Load +org.transcrypt.autotester.tree- type_comment: NoneType = None +org.transcrypt.autotester.tree- element: If +-- +org.transcrypt.autotester.tree- value: Name +org.transcrypt.autotester.tree- id: str = self +org.transcrypt.autotester.tree- ctx: Load +org.transcrypt.autotester.tree- attr: str = refDict +org.transcrypt.autotester.tree- ctx: Load +org.transcrypt.autotester.tree: slice: Name +org.transcrypt.autotester.tree- id: str = key +org.transcrypt.autotester.tree- ctx: Load +org.transcrypt.autotester.tree- ctx: Load +org.transcrypt.autotester.tree- type_comment: NoneType = None +org.transcrypt.autotester.tree- element: Try +-- +org.transcrypt.autotester.tree- value: Name +org.transcrypt.autotester.tree- id: str = self +org.transcrypt.autotester.tree- ctx: Load +org.transcrypt.autotester.tree- attr: str = testDict +org.transcrypt.autotester.tree- ctx: Load +org.transcrypt.autotester.tree: slice: Name +org.transcrypt.autotester.tree- id: str = key +org.transcrypt.autotester.tree- ctx: Load +org.transcrypt.autotester.tree- ctx: Load +org.transcrypt.autotester.tree- type_comment: NoneType = None +org.transcrypt.autotester.tree- element: If +-- +org.transcrypt.autotester.tree- ctx: Store +org.transcrypt.autotester.tree- value: Subscript +org.transcrypt.autotester.tree- value: Name +org.transcrypt.autotester.tree- id: str = testData +org.transcrypt.autotester.tree- ctx: Load +org.transcrypt.autotester.tree: slice: Name +org.transcrypt.autotester.tree- id: str = i +org.transcrypt.autotester.tree- ctx: Load +org.transcrypt.autotester.tree- ctx: Load +org.transcrypt.autotester.tree- type_comment: NoneType = None +org.transcrypt.autotester.tree- handlers: list +-- +org.transcrypt.autotester.tree- value: Name +org.transcrypt.autotester.tree- id: str = self +org.transcrypt.autotester.tree- ctx: Load +org.transcrypt.autotester.tree- attr: str = testDict +org.transcrypt.autotester.tree- ctx: Load +org.transcrypt.autotester.tree: slice: Attribute +org.transcrypt.autotester.tree- value: Name +org.transcrypt.autotester.tree- id: str = self +org.transcrypt.autotester.tree- ctx: Load +org.transcrypt.autotester.tree- attr: str = _currTestlet +org.transcrypt.autotester.tree- ctx: Load +-- +org.transcrypt.autotester.tree- value: Name +org.transcrypt.autotester.tree- id: str = self +org.transcrypt.autotester.tree- ctx: Load +org.transcrypt.autotester.tree- attr: str = refDict +org.transcrypt.autotester.tree- ctx: Load +org.transcrypt.autotester.tree: slice: Attribute +org.transcrypt.autotester.tree- value: Name +org.transcrypt.autotester.tree- id: str = self +org.transcrypt.autotester.tree- ctx: Load +org.transcrypt.autotester.tree- attr: str = _currTestlet +org.transcrypt.autotester.tree- ctx: Load +-- +org.transcrypt.__runtime__.tree- value: Name +org.transcrypt.__runtime__.tree- id: str = self +org.transcrypt.__runtime__.tree- ctx: Load +org.transcrypt.__runtime__.tree- attr: str = __args__ +org.transcrypt.__runtime__.tree- ctx: Load +org.transcrypt.__runtime__.tree: slice: Constant +org.transcrypt.__runtime__.tree- value: int = 0 +org.transcrypt.__runtime__.tree- kind: NoneType = None +org.transcrypt.__runtime__.tree- ctx: Load +org.transcrypt.__runtime__.tree- keywords: list +org.transcrypt.__runtime__.tree- keywords: list +-- +org.transcrypt.__runtime__.tree- value: Name +org.transcrypt.__runtime__.tree- id: str = self +org.transcrypt.__runtime__.tree- ctx: Load +org.transcrypt.__runtime__.tree- attr: str = __args__ +org.transcrypt.__runtime__.tree- ctx: Load +org.transcrypt.__runtime__.tree: slice: Constant +org.transcrypt.__runtime__.tree- value: int = 0 +org.transcrypt.__runtime__.tree- kind: NoneType = None +org.transcrypt.__runtime__.tree- ctx: Load +org.transcrypt.__runtime__.tree- keywords: list +org.transcrypt.__runtime__.tree- orelse: list +-- +org.transcrypt.__runtime__.tree- args: list +org.transcrypt.__runtime__.tree- element: Name +org.transcrypt.__runtime__.tree- id: str = self +org.transcrypt.__runtime__.tree- ctx: Load +org.transcrypt.__runtime__.tree- keywords: list +org.transcrypt.__runtime__.tree: slice: Slice +org.transcrypt.__runtime__.tree- lower: Constant +org.transcrypt.__runtime__.tree- value: int = 1 +org.transcrypt.__runtime__.tree- kind: NoneType = None +org.transcrypt.__runtime__.tree- upper: UnaryOp +org.transcrypt.__runtime__.tree- op: USub +-- +org.transcrypt.__runtime__.tree- keywords: list +org.transcrypt.__runtime__.tree- element: Name +org.transcrypt.__runtime__.tree- id: str = end +org.transcrypt.__runtime__.tree- ctx: Load +org.transcrypt.__runtime__.tree- keywords: list +org.transcrypt.__runtime__.tree: slice: Slice +org.transcrypt.__runtime__.tree- lower: UnaryOp +org.transcrypt.__runtime__.tree- op: USub +org.transcrypt.__runtime__.tree- operand: Constant +org.transcrypt.__runtime__.tree- value: int = 4096 +org.transcrypt.__runtime__.tree- kind: NoneType = None +-- +org.transcrypt.__runtime__.tree- element: Constant +org.transcrypt.__runtime__.tree- value: str = +org.transcrypt.__runtime__.tree- +org.transcrypt.__runtime__.tree- kind: NoneType = None +org.transcrypt.__runtime__.tree- keywords: list +org.transcrypt.__runtime__.tree: slice: Slice +org.transcrypt.__runtime__.tree- lower: UnaryOp +org.transcrypt.__runtime__.tree- op: USub +org.transcrypt.__runtime__.tree- operand: Constant +org.transcrypt.__runtime__.tree- value: int = 8 +org.transcrypt.__runtime__.tree- kind: NoneType = None +-- +proxies.tree- value: Name +proxies.tree- id: str = self +proxies.tree- ctx: Load +proxies.tree- attr: str = __dict__ +proxies.tree- ctx: Load +proxies.tree: slice: BinOp +proxies.tree- left: Constant +proxies.tree- value: str = _ +proxies.tree- kind: NoneType = None +proxies.tree- op: Add +proxies.tree- right: Name +-- +proxies.tree- value: Name +proxies.tree- id: str = self +proxies.tree- ctx: Load +proxies.tree- attr: str = __dict__ +proxies.tree- ctx: Load +proxies.tree: slice: BinOp +proxies.tree- left: Constant +proxies.tree- value: str = _ +proxies.tree- kind: NoneType = None +proxies.tree- op: Add +proxies.tree- right: Name +-- +proxies.tree- value: Name +proxies.tree- id: str = self +proxies.tree- ctx: Load +proxies.tree- attr: str = __dict__ +proxies.tree- ctx: Load +proxies.tree: slice: BinOp +proxies.tree- left: Constant +proxies.tree- value: str = _ +proxies.tree- kind: NoneType = None +proxies.tree- op: Add +proxies.tree- right: Name +-- +proxies.tree- value: Name +proxies.tree- id: str = self +proxies.tree- ctx: Load +proxies.tree- attr: str = __dict__ +proxies.tree- ctx: Load +proxies.tree: slice: Name +proxies.tree- id: str = name +proxies.tree- ctx: Load +proxies.tree- ctx: Store +proxies.tree- value: Name +proxies.tree- id: str = value +-- +re.translate.tree- ctx: Store +re.translate.tree- value: Subscript +re.translate.tree- value: Name +re.translate.tree- id: str = namedGroups +re.translate.tree- ctx: Load +re.translate.tree: slice: Name +re.translate.tree- id: str = groupRef +re.translate.tree- ctx: Load +re.translate.tree- ctx: Load +re.translate.tree- type_comment: NoneType = None +re.translate.tree- orelse: list +-- +re.translate.tree- ctx: Store +re.translate.tree- value: Subscript +re.translate.tree- value: Name +re.translate.tree- id: str = tokens +re.translate.tree- ctx: Load +re.translate.tree: slice: Slice +re.translate.tree- lower: NoneType = None +re.translate.tree- upper: NoneType = None +re.translate.tree- step: NoneType = None +re.translate.tree- ctx: Load +re.translate.tree- type_comment: NoneType = None +-- +re.translate.tree- ctx: Store +re.translate.tree- value: Subscript +re.translate.tree- value: Name +re.translate.tree- id: str = tokens +re.translate.tree- ctx: Load +re.translate.tree: slice: Slice +re.translate.tree- lower: NoneType = None +re.translate.tree- upper: NoneType = None +re.translate.tree- step: NoneType = None +re.translate.tree- ctx: Load +re.translate.tree- type_comment: NoneType = None +-- +re.translate.tree- value: Attribute +re.translate.tree- value: Subscript +re.translate.tree- value: Name +re.translate.tree- id: str = tokens +re.translate.tree- ctx: Load +re.translate.tree: slice: BinOp +re.translate.tree- left: Name +re.translate.tree- id: str = conStart +re.translate.tree- ctx: Load +re.translate.tree- op: Add +re.translate.tree- right: Constant +-- +re.translate.tree- ctx: Store +re.translate.tree- value: Subscript +re.translate.tree- value: Name +re.translate.tree- id: str = tokens +re.translate.tree- ctx: Load +re.translate.tree: slice: BinOp +re.translate.tree- left: Attribute +re.translate.tree- value: Name +re.translate.tree- id: str = captureGroup +re.translate.tree- ctx: Load +re.translate.tree- attr: str = end +-- +re.translate.tree- targets: list +re.translate.tree- element: Subscript +re.translate.tree- value: Name +re.translate.tree- id: str = iff +re.translate.tree- ctx: Load +re.translate.tree: slice: BinOp +re.translate.tree- left: Attribute +re.translate.tree- value: Name +re.translate.tree- id: str = captureGroup +re.translate.tree- ctx: Load +re.translate.tree- attr: str = end +-- +re.translate.tree- targets: list +re.translate.tree- element: Subscript +re.translate.tree- value: Name +re.translate.tree- id: str = iff +re.translate.tree- ctx: Load +re.translate.tree: slice: BinOp +re.translate.tree- left: Attribute +re.translate.tree- value: Name +re.translate.tree- id: str = captureGroup +re.translate.tree- ctx: Load +re.translate.tree- attr: str = end +-- +re.translate.tree- value: Attribute +re.translate.tree- value: Subscript +re.translate.tree- value: Name +re.translate.tree- id: str = iff +re.translate.tree- ctx: Load +re.translate.tree: slice: BinOp +re.translate.tree- left: Attribute +re.translate.tree- value: Name +re.translate.tree- id: str = captureGroup +re.translate.tree- ctx: Load +re.translate.tree- attr: str = end +-- +re.translate.tree- value: int = 1 +re.translate.tree- kind: NoneType = None +re.translate.tree- ctx: Load +re.translate.tree- attr: str = name +re.translate.tree- ctx: Load +re.translate.tree: slice: Slice +re.translate.tree- lower: Constant +re.translate.tree- value: int = 0 +re.translate.tree- kind: NoneType = None +re.translate.tree- upper: Constant +re.translate.tree- value: int = 3 +-- +re.translate.tree- targets: list +re.translate.tree- element: Subscript +re.translate.tree- value: Name +re.translate.tree- id: str = els +re.translate.tree- ctx: Load +re.translate.tree: slice: BinOp +re.translate.tree- left: Attribute +re.translate.tree- value: Name +re.translate.tree- id: str = captureGroup +re.translate.tree- ctx: Load +re.translate.tree- attr: str = end +-- +re.translate.tree- left: Attribute +re.translate.tree- value: Subscript +re.translate.tree- value: Name +re.translate.tree- id: str = tokens +re.translate.tree- ctx: Load +re.translate.tree: slice: Name +re.translate.tree- id: str = idx +re.translate.tree- ctx: Load +re.translate.tree- ctx: Load +re.translate.tree- attr: str = name +re.translate.tree- ctx: Load +-- +re.translate.tree- targets: list +re.translate.tree- element: Subscript +re.translate.tree- value: Name +re.translate.tree- id: str = iff +re.translate.tree- ctx: Load +re.translate.tree: slice: Slice +re.translate.tree- lower: Name +re.translate.tree- id: str = idx +re.translate.tree- ctx: Load +re.translate.tree- upper: BinOp +re.translate.tree- left: Name +-- +re.translate.tree- targets: list +re.translate.tree- element: Subscript +re.translate.tree- value: Name +re.translate.tree- id: str = els +re.translate.tree- ctx: Load +re.translate.tree: slice: Slice +re.translate.tree- lower: Name +re.translate.tree- id: str = conStart +re.translate.tree- ctx: Load +re.translate.tree- upper: BinOp +re.translate.tree- left: Name +-- +re.translate.tree- targets: list +re.translate.tree- element: Subscript +re.translate.tree- value: Name +re.translate.tree- id: str = els +re.translate.tree- ctx: Load +re.translate.tree: slice: Slice +re.translate.tree- lower: Name +re.translate.tree- id: str = conStart +re.translate.tree- ctx: Load +re.translate.tree- upper: BinOp +re.translate.tree- left: Name +-- +re.translate.tree- targets: list +re.translate.tree- element: Subscript +re.translate.tree- value: Name +re.translate.tree- id: str = iff +re.translate.tree- ctx: Load +re.translate.tree: slice: Slice +re.translate.tree- lower: Name +re.translate.tree- id: str = conStart +re.translate.tree- ctx: Load +re.translate.tree- upper: BinOp +re.translate.tree- left: Name +-- +re.translate.tree- targets: list +re.translate.tree- element: Subscript +re.translate.tree- value: Name +re.translate.tree- id: str = els +re.translate.tree- ctx: Load +re.translate.tree: slice: Slice +re.translate.tree- lower: Attribute +re.translate.tree- value: Name +re.translate.tree- id: str = captureGroup +re.translate.tree- ctx: Load +re.translate.tree- attr: str = start +-- +re.translate.tree- left: Attribute +re.translate.tree- value: Subscript +re.translate.tree- value: Name +re.translate.tree- id: str = iff +re.translate.tree- ctx: Load +re.translate.tree: slice: Name +re.translate.tree- id: str = idx +re.translate.tree- ctx: Load +re.translate.tree- ctx: Load +re.translate.tree- attr: str = name +re.translate.tree- ctx: Load +-- +re.translate.tree- ctx: Store +re.translate.tree- value: Subscript +re.translate.tree- value: Name +re.translate.tree- id: str = tokens +re.translate.tree- ctx: Load +re.translate.tree: slice: Slice +re.translate.tree- lower: NoneType = None +re.translate.tree- upper: Name +re.translate.tree- id: str = idx +re.translate.tree- ctx: Load +re.translate.tree- step: NoneType = None +-- +re.translate.tree- args: list +re.translate.tree- element: Subscript +re.translate.tree- value: Name +re.translate.tree- id: str = tokens +re.translate.tree- ctx: Load +re.translate.tree: slice: Slice +re.translate.tree- lower: BinOp +re.translate.tree- left: Name +re.translate.tree- id: str = conEnd +re.translate.tree- ctx: Load +re.translate.tree- op: Add +-- +re.translate.tree- targets: list +re.translate.tree- element: Subscript +re.translate.tree- value: Name +re.translate.tree- id: str = iff +re.translate.tree- ctx: Load +re.translate.tree: slice: Slice +re.translate.tree- lower: Name +re.translate.tree- id: str = conStart +re.translate.tree- ctx: Load +re.translate.tree- upper: BinOp +re.translate.tree- left: Name +-- +re.translate.tree- args: list +re.translate.tree- element: Subscript +re.translate.tree- value: Name +re.translate.tree- id: str = queue +re.translate.tree- ctx: Load +re.translate.tree: slice: Constant +re.translate.tree- value: int = 0 +re.translate.tree- kind: NoneType = None +re.translate.tree- ctx: Load +re.translate.tree- element: List +re.translate.tree- elts: list +-- +re.translate.tree- ctx: Store +re.translate.tree- value: Subscript +re.translate.tree- value: Name +re.translate.tree- id: str = queue +re.translate.tree- ctx: Load +re.translate.tree: slice: Slice +re.translate.tree- lower: Constant +re.translate.tree- value: int = 1 +re.translate.tree- kind: NoneType = None +re.translate.tree- upper: NoneType = None +re.translate.tree- step: NoneType = None +-- +re.translate.tree- kind: NoneType = None +re.translate.tree- body: Subscript +re.translate.tree- value: Name +re.translate.tree- id: str = stack +re.translate.tree- ctx: Load +re.translate.tree: slice: Name +re.translate.tree- id: str = high +re.translate.tree- ctx: Load +re.translate.tree- ctx: Load +re.translate.tree- orelse: Call +re.translate.tree- func: Name +-- +re.translate.tree- kind: NoneType = None +re.translate.tree- body: Subscript +re.translate.tree- value: Name +re.translate.tree- id: str = stack +re.translate.tree- ctx: Load +re.translate.tree: slice: BinOp +re.translate.tree- left: Name +re.translate.tree- id: str = high +re.translate.tree- ctx: Load +re.translate.tree- op: Sub +re.translate.tree- right: Constant +-- +re.translate.tree- targets: list +re.translate.tree- element: Subscript +re.translate.tree- value: Name +re.translate.tree- id: str = stack +re.translate.tree- ctx: Load +re.translate.tree: slice: Slice +re.translate.tree- lower: UnaryOp +re.translate.tree- op: USub +re.translate.tree- operand: Constant +re.translate.tree- value: int = 2 +re.translate.tree- kind: NoneType = None +-- +re.translate.tree- targets: list +re.translate.tree- element: Subscript +re.translate.tree- value: Name +re.translate.tree- id: str = stack +re.translate.tree- ctx: Load +re.translate.tree: slice: Slice +re.translate.tree- lower: UnaryOp +re.translate.tree- op: USub +re.translate.tree- operand: Constant +re.translate.tree- value: int = 2 +re.translate.tree- kind: NoneType = None +-- +re.translate.tree- targets: list +re.translate.tree- element: Subscript +re.translate.tree- value: Name +re.translate.tree- id: str = stack +re.translate.tree- ctx: Load +re.translate.tree: slice: Slice +re.translate.tree- lower: UnaryOp +re.translate.tree- op: USub +re.translate.tree- operand: Constant +re.translate.tree- value: int = 2 +re.translate.tree- kind: NoneType = None +-- +re.translate.tree- targets: list +re.translate.tree- element: Subscript +re.translate.tree- value: Name +re.translate.tree- id: str = stack +re.translate.tree- ctx: Load +re.translate.tree: slice: Slice +re.translate.tree- lower: UnaryOp +re.translate.tree- op: USub +re.translate.tree- operand: Constant +re.translate.tree- value: int = 2 +re.translate.tree- kind: NoneType = None +-- +re.translate.tree- ctx: Store +re.translate.tree- value: Subscript +re.translate.tree- value: Name +re.translate.tree- id: str = stack +re.translate.tree- ctx: Load +re.translate.tree: slice: Slice +re.translate.tree- lower: NoneType = None +re.translate.tree- upper: UnaryOp +re.translate.tree- op: USub +re.translate.tree- operand: Constant +re.translate.tree- value: int = 1 +-- +re.translate.tree- targets: list +re.translate.tree- element: Subscript +re.translate.tree- value: Name +re.translate.tree- id: str = stack +re.translate.tree- ctx: Load +re.translate.tree: slice: Slice +re.translate.tree- lower: UnaryOp +re.translate.tree- op: USub +re.translate.tree- operand: Constant +re.translate.tree- value: int = 2 +re.translate.tree- kind: NoneType = None +-- +re.translate.tree- targets: list +re.translate.tree- element: Subscript +re.translate.tree- value: Name +re.translate.tree- id: str = stack +re.translate.tree- ctx: Load +re.translate.tree: slice: Slice +re.translate.tree- lower: UnaryOp +re.translate.tree- op: USub +re.translate.tree- operand: Constant +re.translate.tree- value: int = 2 +re.translate.tree- kind: NoneType = None +-- +re.translate.tree- targets: list +re.translate.tree- element: Subscript +re.translate.tree- value: Name +re.translate.tree- id: str = stack +re.translate.tree- ctx: Load +re.translate.tree: slice: Slice +re.translate.tree- lower: UnaryOp +re.translate.tree- op: USub +re.translate.tree- operand: Constant +re.translate.tree- value: int = 2 +re.translate.tree- kind: NoneType = None +-- +re.translate.tree- ctx: Store +re.translate.tree- value: Subscript +re.translate.tree- value: Name +re.translate.tree- id: str = stack +re.translate.tree- ctx: Load +re.translate.tree: slice: Slice +re.translate.tree- lower: NoneType = None +re.translate.tree- upper: UnaryOp +re.translate.tree- op: USub +re.translate.tree- operand: Constant +re.translate.tree- value: int = 2 +-- +re.translate.tree- targets: list +re.translate.tree- element: Subscript +re.translate.tree- value: Name +re.translate.tree- id: str = stack +re.translate.tree- ctx: Load +re.translate.tree: slice: Slice +re.translate.tree- lower: UnaryOp +re.translate.tree- op: USub +re.translate.tree- operand: Constant +re.translate.tree- value: int = 2 +re.translate.tree- kind: NoneType = None +-- +re.translate.tree- targets: list +re.translate.tree- element: Subscript +re.translate.tree- value: Name +re.translate.tree- id: str = stack +re.translate.tree- ctx: Load +re.translate.tree: slice: Slice +re.translate.tree- lower: UnaryOp +re.translate.tree- op: USub +re.translate.tree- operand: Constant +re.translate.tree- value: int = 1 +re.translate.tree- kind: NoneType = None +-- +re.translate.tree- targets: list +re.translate.tree- element: Subscript +re.translate.tree- value: Name +re.translate.tree- id: str = stack +re.translate.tree- ctx: Load +re.translate.tree: slice: Slice +re.translate.tree- lower: UnaryOp +re.translate.tree- op: USub +re.translate.tree- operand: Constant +re.translate.tree- value: int = 2 +re.translate.tree- kind: NoneType = None +-- +re.translate.tree- targets: list +re.translate.tree- element: Subscript +re.translate.tree- value: Name +re.translate.tree- id: str = namedGroups +re.translate.tree- ctx: Load +re.translate.tree: slice: Call +re.translate.tree- func: Attribute +re.translate.tree- value: Constant +re.translate.tree- value: str = +re.translate.tree- kind: NoneType = None +re.translate.tree- attr: str = join +-- +re.translate.tree- targets: list +re.translate.tree- element: Subscript +re.translate.tree- value: Name +re.translate.tree- id: str = stack +re.translate.tree- ctx: Load +re.translate.tree: slice: Slice +re.translate.tree- lower: UnaryOp +re.translate.tree- op: USub +re.translate.tree- operand: Constant +re.translate.tree- value: int = 2 +re.translate.tree- kind: NoneType = None +-- +re.translate.tree- targets: list +re.translate.tree- element: Subscript +re.translate.tree- value: Name +re.translate.tree- id: str = stack +re.translate.tree- ctx: Load +re.translate.tree: slice: Slice +re.translate.tree- lower: UnaryOp +re.translate.tree- op: USub +re.translate.tree- operand: Constant +re.translate.tree- value: int = 2 +re.translate.tree- kind: NoneType = None +-- +re.translate.tree- args: list +re.translate.tree- element: Subscript +re.translate.tree- value: Name +re.translate.tree- id: str = namedGroups +re.translate.tree- ctx: Load +re.translate.tree: slice: Subscript +re.translate.tree- value: Attribute +re.translate.tree- value: Name +re.translate.tree- id: str = s1 +re.translate.tree- ctx: Load +re.translate.tree- attr: str = paras +re.translate.tree- ctx: Load +re.translate.tree: slice: Constant +re.translate.tree- value: int = 0 +re.translate.tree- kind: NoneType = None +re.translate.tree- ctx: Load +re.translate.tree- ctx: Load +re.translate.tree- keywords: list +-- +re.translate.tree- value: Name +re.translate.tree- id: str = s1 +re.translate.tree- ctx: Load +re.translate.tree- attr: str = paras +re.translate.tree- ctx: Load +re.translate.tree: slice: Constant +re.translate.tree- value: int = 0 +re.translate.tree- kind: NoneType = None +re.translate.tree- ctx: Store +re.translate.tree- op: Add +re.translate.tree- value: Attribute +-- +re.translate.tree- ctx: Store +re.translate.tree- value: Subscript +re.translate.tree- value: Name +re.translate.tree- id: str = stack +re.translate.tree- ctx: Load +re.translate.tree: slice: Slice +re.translate.tree- lower: NoneType = None +re.translate.tree- upper: UnaryOp +re.translate.tree- op: USub +re.translate.tree- operand: Constant +re.translate.tree- value: int = 2 +-- +re.translate.tree- ctx: Store +re.translate.tree- value: Subscript +re.translate.tree- value: Name +re.translate.tree- id: str = stack +re.translate.tree- ctx: Load +re.translate.tree: slice: Slice +re.translate.tree- lower: NoneType = None +re.translate.tree- upper: UnaryOp +re.translate.tree- op: USub +re.translate.tree- operand: Constant +re.translate.tree- value: int = 1 +-- +re.translate.tree- args: list +re.translate.tree- element: Subscript +re.translate.tree- value: Name +re.translate.tree- id: str = variants +re.translate.tree- ctx: Load +re.translate.tree: slice: Name +re.translate.tree- id: str = i +re.translate.tree- ctx: Load +re.translate.tree- ctx: Load +re.translate.tree- keywords: list +re.translate.tree- element: If +-- +re.tree- targets: list +re.tree- element: Subscript +re.tree- value: Name +re.tree- id: str = mObj +re.tree- ctx: Load +re.tree: slice: Name +re.tree- id: str = index +re.tree- ctx: Load +re.tree- ctx: Store +re.tree- value: IfExp +re.tree- test: Compare +re.tree- left: Subscript +re.tree- value: Name +re.tree- id: str = mObj +re.tree- ctx: Load +re.tree: slice: Name +re.tree- id: str = index +re.tree- ctx: Load +re.tree- ctx: Load +re.tree- ops: list +re.tree- element: Eq +-- +re.tree- kind: NoneType = None +re.tree- orelse: Subscript +re.tree- value: Name +re.tree- id: str = mObj +re.tree- ctx: Load +re.tree: slice: Name +re.tree- id: str = index +re.tree- ctx: Load +re.tree- ctx: Load +re.tree- type_comment: NoneType = None +re.tree- orelse: list +-- +re.tree- value: Name +re.tree- id: str = self +re.tree- ctx: Load +re.tree- attr: str = _namedGroups +re.tree- ctx: Load +re.tree: slice: Attribute +re.tree- value: Name +re.tree- id: str = self +re.tree- ctx: Load +re.tree- attr: str = _lastindex +re.tree- ctx: Load +-- +re.tree- value: Name +re.tree- id: str = self +re.tree- ctx: Load +re.tree- attr: str = _obj +re.tree- ctx: Load +re.tree: slice: Name +re.tree- id: str = i +re.tree- ctx: Load +re.tree- ctx: Load +re.tree- ops: list +re.tree- element: IsNot +-- +re.tree- value: Name +re.tree- id: str = self +re.tree- ctx: Load +re.tree- attr: str = _obj +re.tree- ctx: Load +re.tree: slice: Subscript +re.tree- value: Attribute +re.tree- value: Name +re.tree- id: str = self +re.tree- ctx: Load +re.tree- attr: str = _namedGroups +re.tree- ctx: Load +re.tree: slice: Name +re.tree- id: str = index +re.tree- ctx: Load +re.tree- ctx: Load +re.tree- ctx: Load +re.tree- keywords: list +-- +re.tree- value: Name +re.tree- id: str = self +re.tree- ctx: Load +re.tree- attr: str = _obj +re.tree- ctx: Load +re.tree: slice: Name +re.tree- id: str = index +re.tree- ctx: Load +re.tree- ctx: Load +re.tree- keywords: list +re.tree- orelse: list +-- +re.tree- value: Name +re.tree- id: str = self +re.tree- ctx: Load +re.tree- attr: str = _obj +re.tree- ctx: Load +re.tree: slice: Constant +re.tree- value: int = 0 +re.tree- kind: NoneType = None +re.tree- ctx: Load +re.tree- keywords: list +re.tree- element: If +-- +re.tree- element: Return +re.tree- value: Subscript +re.tree- value: Name +re.tree- id: str = ret +re.tree- ctx: Load +re.tree: slice: Constant +re.tree- value: int = 0 +re.tree- kind: NoneType = None +re.tree- ctx: Load +re.tree- orelse: list +re.tree- element: Return +-- +re.tree- value: Name +re.tree- id: str = self +re.tree- ctx: Load +re.tree- attr: str = _obj +re.tree- ctx: Load +re.tree: slice: Slice +re.tree- lower: Constant +re.tree- value: int = 1 +re.tree- kind: NoneType = None +re.tree- upper: NoneType = None +re.tree- step: NoneType = None +-- +re.tree- value: Name +re.tree- id: str = self +re.tree- ctx: Load +re.tree- attr: str = _obj +re.tree- ctx: Load +re.tree: slice: Name +re.tree- id: str = gId +re.tree- ctx: Load +re.tree- ctx: Load +re.tree- type_comment: NoneType = None +re.tree- element: Assign +re.tree- targets: list +re.tree- element: Subscript +re.tree- value: Name +re.tree- id: str = ret +re.tree- ctx: Load +re.tree: slice: Name +re.tree- id: str = gName +re.tree- ctx: Load +re.tree- ctx: Store +re.tree- value: IfExp +re.tree- test: Compare +-- +re.tree- value: Name +re.tree- id: str = self +re.tree- ctx: Load +re.tree- attr: str = _namedGroups +re.tree- ctx: Load +re.tree: slice: Name +re.tree- id: str = group +re.tree- ctx: Load +re.tree- ctx: Load +re.tree- type_comment: NoneType = None +re.tree- orelse: list +-- +re.tree- value: Name +re.tree- id: str = self +re.tree- ctx: Load +re.tree- attr: str = _obj +re.tree- ctx: Load +re.tree: slice: Name +re.tree- id: str = gId +re.tree- ctx: Load +re.tree- ctx: Load +re.tree- ops: list +re.tree- element: IsNot +-- +re.tree- value: Name +re.tree- id: str = self +re.tree- ctx: Load +re.tree- attr: str = _obj +re.tree- ctx: Load +re.tree: slice: Name +re.tree- id: str = gId +re.tree- ctx: Load +re.tree- ctx: Load +re.tree- keywords: list +re.tree- element: Attribute +-- +re.tree- value: Name +re.tree- id: str = self +re.tree- ctx: Load +re.tree- attr: str = _obj +re.tree- ctx: Load +re.tree: slice: Constant +re.tree- value: int = 0 +re.tree- kind: NoneType = None +re.tree- ctx: Load +re.tree- keywords: list +re.tree- type_comment: NoneType = None +-- +re.tree- value: Name +re.tree- id: str = self +re.tree- ctx: Load +re.tree- attr: str = _namedGroups +re.tree- ctx: Load +re.tree: slice: Name +re.tree- id: str = group +re.tree- ctx: Load +re.tree- ctx: Load +re.tree- type_comment: NoneType = None +re.tree- orelse: list +-- +re.tree- value: Name +re.tree- id: str = self +re.tree- ctx: Load +re.tree- attr: str = _obj +re.tree- ctx: Load +re.tree: slice: Constant +re.tree- value: int = 0 +re.tree- kind: NoneType = None +re.tree- ctx: Load +re.tree- keywords: list +re.tree- orelse: list +-- +re.tree- value: Name +re.tree- id: str = self +re.tree- ctx: Load +re.tree- attr: str = _obj +re.tree- ctx: Load +re.tree: slice: Name +re.tree- id: str = gId +re.tree- ctx: Load +re.tree- ctx: Load +re.tree- ops: list +re.tree- element: IsNot +-- +re.tree- value: Name +re.tree- id: str = self +re.tree- ctx: Load +re.tree- attr: str = _obj +re.tree- ctx: Load +re.tree: slice: Name +re.tree- id: str = gId +re.tree- ctx: Load +re.tree- ctx: Load +re.tree- keywords: list +re.tree- element: Attribute +-- +re.tree- value: Name +re.tree- id: str = self +re.tree- ctx: Load +re.tree- attr: str = _obj +re.tree- ctx: Load +re.tree: slice: Constant +re.tree- value: int = 0 +re.tree- kind: NoneType = None +re.tree- ctx: Load +re.tree- keywords: list +re.tree- type_comment: NoneType = None +-- +re.tree- element: ListComp +re.tree- elt: Subscript +re.tree- value: Name +re.tree- id: str = x +re.tree- ctx: Load +re.tree: slice: Constant +re.tree- value: int = 1 +re.tree- kind: NoneType = None +re.tree- ctx: Load +re.tree- generators: list +re.tree- element: comprehension +-- +re.tree- left: BinOp +re.tree- left: Subscript +re.tree- value: Name +re.tree- id: str = x +re.tree- ctx: Load +re.tree: slice: Constant +re.tree- value: int = 0 +re.tree- kind: NoneType = None +re.tree- ctx: Load +re.tree- op: BitAnd +re.tree- right: Name +-- +re.tree- kwarg: NoneType = None +re.tree- defaults: list +re.tree- body: list +re.tree- element: Expr +re.tree- value: Constant +re.tree: value: str = Given an start and endpos, slice out a target string. +re.tree- +re.tree- kind: NoneType = None +re.tree- element: Assign +re.tree- targets: list +re.tree- element: Name +-- +re.tree- ctx: Store +re.tree- value: Subscript +re.tree- value: Name +re.tree- id: str = string +re.tree- ctx: Load +re.tree: slice: Slice +re.tree- lower: Name +re.tree- id: str = pos +re.tree- ctx: Load +re.tree- upper: Name +re.tree- id: str = endPtr +-- +re.tree- ctx: Store +re.tree- value: Subscript +re.tree- value: Name +re.tree- id: str = target +re.tree- ctx: Load +re.tree: slice: Slice +re.tree- lower: NoneType = None +re.tree- upper: Name +re.tree- id: str = endpos +re.tree- ctx: Load +re.tree- step: NoneType = None +-- +re.tree- ctx: Store +re.tree- value: Subscript +re.tree- value: Name +re.tree- id: str = target +re.tree- ctx: Load +re.tree: slice: Slice +re.tree- lower: NoneType = None +re.tree- upper: Name +re.tree- id: str = endpos +re.tree- ctx: Load +re.tree- step: NoneType = None +-- +re.tree- args: list +re.tree- element: Subscript +re.tree- value: Name +re.tree- id: str = m +re.tree- ctx: Load +re.tree: slice: Constant +re.tree- value: int = 0 +re.tree- kind: NoneType = None +re.tree- ctx: Load +re.tree- keywords: list +re.tree- type_comment: NoneType = None +-- +re.tree- args: list +re.tree- element: Subscript +re.tree- value: Name +re.tree- id: str = lastM +re.tree- ctx: Load +re.tree: slice: Constant +re.tree- value: int = 0 +re.tree- kind: NoneType = None +re.tree- ctx: Load +re.tree- keywords: list +re.tree- type_comment: NoneType = None +-- +re.tree- ctx: Store +re.tree- value: Subscript +re.tree- value: Name +re.tree- id: str = string +re.tree- ctx: Load +re.tree: slice: Slice +re.tree- lower: Name +re.tree- id: str = start +re.tree- ctx: Load +re.tree- upper: Attribute +re.tree- value: Name +-- +re.tree- args: list +re.tree- element: Subscript +re.tree- value: Name +re.tree- id: str = m +re.tree- ctx: Load +re.tree: slice: Slice +re.tree- lower: Constant +re.tree- value: int = 1 +re.tree- kind: NoneType = None +re.tree- upper: NoneType = None +re.tree- step: NoneType = None +-- +re.tree- ctx: Store +re.tree- value: Subscript +re.tree- value: Name +re.tree- id: str = string +re.tree- ctx: Load +re.tree: slice: Slice +re.tree- lower: NoneType = None +re.tree- upper: Attribute +re.tree- value: Name +re.tree- id: str = m +re.tree- ctx: Load +-- +re.tree- args: list +re.tree- element: Subscript +re.tree- value: Name +re.tree- id: str = m +re.tree- ctx: Load +re.tree: slice: Slice +re.tree- lower: Constant +re.tree- value: int = 1 +re.tree- kind: NoneType = None +re.tree- upper: NoneType = None +re.tree- step: NoneType = None +-- +re.tree- args: list +re.tree- element: Subscript +re.tree- value: Name +re.tree- id: str = lastM +re.tree- ctx: Load +re.tree: slice: Constant +re.tree- value: int = 0 +re.tree- kind: NoneType = None +re.tree- ctx: Load +re.tree- keywords: list +re.tree- type_comment: NoneType = None +-- +re.tree- ctx: Store +re.tree- value: Subscript +re.tree- value: Name +re.tree- id: str = string +re.tree- ctx: Load +re.tree: slice: Slice +re.tree- lower: Name +re.tree- id: str = endPos +re.tree- ctx: Load +re.tree- upper: NoneType = None +re.tree- step: NoneType = None +-- +re.tree- args: list +re.tree- element: Subscript +re.tree- value: Name +re.tree- id: str = m +re.tree- ctx: Load +re.tree: slice: Slice +re.tree- lower: Constant +re.tree- value: int = 1 +re.tree- kind: NoneType = None +re.tree- upper: NoneType = None +re.tree- step: NoneType = None +-- +re.tree- element: Return +re.tree- value: Subscript +re.tree- value: Name +re.tree- id: str = m +re.tree- ctx: Load +re.tree: slice: Constant +re.tree- value: int = 1 +re.tree- kind: NoneType = None +re.tree- ctx: Load +re.tree- orelse: list +re.tree- element: Return +re.tree- value: Subscript +re.tree- value: Name +re.tree- id: str = m +re.tree- ctx: Load +re.tree: slice: Constant +re.tree- value: int = 0 +re.tree- kind: NoneType = None +re.tree- ctx: Load +re.tree- decorator_list: list +re.tree- returns: NoneType = None +-- +re.tree- op: Add +re.tree- value: Subscript +re.tree- value: Name +re.tree- id: str = string +re.tree- ctx: Load +re.tree: slice: Slice +re.tree- lower: Name +re.tree- id: str = lastEnd +re.tree- ctx: Load +re.tree- upper: Attribute +re.tree- value: Name +-- +re.tree- op: Add +re.tree- value: Subscript +re.tree- value: Name +re.tree- id: str = string +re.tree- ctx: Load +re.tree: slice: Slice +re.tree- lower: NoneType = None +re.tree- upper: Attribute +re.tree- value: Name +re.tree- id: str = m +re.tree- ctx: Load +-- +re.tree- op: Add +re.tree- value: Subscript +re.tree- value: Name +re.tree- id: str = string +re.tree- ctx: Load +re.tree: slice: Slice +re.tree- lower: Name +re.tree- id: str = lastEnd +re.tree- ctx: Load +re.tree- upper: Attribute +re.tree- value: Name +-- +re.tree- args: list +re.tree- element: Subscript +re.tree- value: Name +re.tree- id: str = m +re.tree- ctx: Load +re.tree: slice: Constant +re.tree- value: int = 0 +re.tree- kind: NoneType = None +re.tree- ctx: Load +re.tree- keywords: list +re.tree- type_comment: NoneType = None +-- +re.tree- op: Add +re.tree- value: Subscript +re.tree- value: Name +re.tree- id: str = string +re.tree- ctx: Load +re.tree: slice: Slice +re.tree- lower: Name +re.tree- id: str = lastEnd +re.tree- ctx: Load +re.tree- upper: NoneType = None +re.tree- step: NoneType = None +-- +re.tree- test: Compare +re.tree- left: Subscript +re.tree- value: Name +re.tree- id: str = m +re.tree- ctx: Load +re.tree: slice: Constant +re.tree- value: int = 0 +re.tree- kind: NoneType = None +re.tree- ctx: Load +re.tree- ops: list +re.tree- element: Eq +-- +re.tree- op: Add +re.tree- right: Subscript +re.tree- value: Name +re.tree- id: str = m +re.tree- ctx: Load +re.tree: slice: Constant +re.tree- value: int = 0 +re.tree- kind: NoneType = None +re.tree- ctx: Load +re.tree- decorator_list: list +re.tree- returns: NoneType = None +-- +simple_and_augmented_assignment.tree- targets: list +simple_and_augmented_assignment.tree- element: Subscript +simple_and_augmented_assignment.tree- value: Name +simple_and_augmented_assignment.tree- id: str = l +simple_and_augmented_assignment.tree- ctx: Load +simple_and_augmented_assignment.tree: slice: Constant +simple_and_augmented_assignment.tree- value: int = 1 +simple_and_augmented_assignment.tree- kind: NoneType = None +simple_and_augmented_assignment.tree- ctx: Store +simple_and_augmented_assignment.tree- value: Subscript +simple_and_augmented_assignment.tree- value: Name +simple_and_augmented_assignment.tree- id: str = l +simple_and_augmented_assignment.tree- ctx: Load +simple_and_augmented_assignment.tree: slice: Constant +simple_and_augmented_assignment.tree- value: int = 2 +simple_and_augmented_assignment.tree- kind: NoneType = None +simple_and_augmented_assignment.tree- ctx: Load +simple_and_augmented_assignment.tree- type_comment: NoneType = None +simple_and_augmented_assignment.tree- element: Expr +-- +simple_and_augmented_assignment.tree- element: AugAssign +simple_and_augmented_assignment.tree- target: Subscript +simple_and_augmented_assignment.tree- value: Name +simple_and_augmented_assignment.tree- id: str = l +simple_and_augmented_assignment.tree- ctx: Load +simple_and_augmented_assignment.tree: slice: Constant +simple_and_augmented_assignment.tree- value: int = 1 +simple_and_augmented_assignment.tree- kind: NoneType = None +simple_and_augmented_assignment.tree- ctx: Store +simple_and_augmented_assignment.tree- op: Add +simple_and_augmented_assignment.tree- value: Subscript +simple_and_augmented_assignment.tree- value: Name +simple_and_augmented_assignment.tree- id: str = l +simple_and_augmented_assignment.tree- ctx: Load +simple_and_augmented_assignment.tree: slice: Constant +simple_and_augmented_assignment.tree- value: int = 1 +simple_and_augmented_assignment.tree- kind: NoneType = None +simple_and_augmented_assignment.tree- ctx: Load +simple_and_augmented_assignment.tree- element: Expr +simple_and_augmented_assignment.tree- value: Call +-- +time.tree- value: Name +time.tree- id: str = request +time.tree- ctx: Load +time.tree- attr: str = headers +time.tree- ctx: Load +time.tree: slice: Constant +time.tree- value: str = accept-language +time.tree- kind: NoneType = None +time.tree- ctx: Load +time.tree- attr: str = split +time.tree- ctx: Load +time.tree- args: list +time.tree- element: Constant +time.tree- value: str = , +time.tree- kind: NoneType = None +time.tree- keywords: list +time.tree: slice: Constant +time.tree- value: int = 0 +time.tree- kind: NoneType = None +time.tree- ctx: Load +time.tree- type_comment: NoneType = None +time.tree- decorator_list: list +-- +time.tree- value: Call +time.tree- func: Attribute +time.tree- value: Name +time.tree- id: str = split +time.tree- ctx: Load +time.tree: attr: str = slice +time.tree- ctx: Load +time.tree- args: list +time.tree- element: Constant +time.tree- value: int = 0 +time.tree- kind: NoneType = None +-- +time.tree- args: list +time.tree- element: Subscript +time.tree- value: Name +time.tree- id: str = split +time.tree- ctx: Load +time.tree: slice: Slice +time.tree- lower: Name +time.tree- id: str = maxsplit +time.tree- ctx: Load +time.tree- upper: NoneType = None +time.tree- step: NoneType = None +-- +time.tree- test: Compare +time.tree- left: Subscript +time.tree- value: Name +time.tree- id: str = jj +time.tree- ctx: Load +time.tree: slice: Constant +time.tree- value: int = 0 +time.tree- kind: NoneType = None +time.tree- ctx: Load +time.tree- ops: list +time.tree- element: NotEq +time.tree- comparators: list +time.tree- element: Subscript +time.tree- value: Name +time.tree- id: str = jj +time.tree- ctx: Load +time.tree: slice: Constant +time.tree- value: int = 1 +time.tree- kind: NoneType = None +time.tree- ctx: Load +time.tree- body: list +time.tree- element: Return +-- +time.tree- args: list +time.tree- element: Subscript +time.tree- value: Name +time.tree- id: str = jj +time.tree- ctx: Load +time.tree: slice: Constant +time.tree- value: int = 0 +time.tree- kind: NoneType = None +time.tree- ctx: Load +time.tree- element: Subscript +time.tree- value: Name +time.tree- id: str = jj +time.tree- ctx: Load +time.tree: slice: Constant +time.tree- value: int = 1 +time.tree- kind: NoneType = None +time.tree- ctx: Load +time.tree- keywords: list +time.tree- ops: list +-- +time.tree- args: list +time.tree- element: Subscript +time.tree- value: Name +time.tree- id: str = jj +time.tree- ctx: Load +time.tree: slice: Constant +time.tree- value: int = 0 +time.tree- kind: NoneType = None +time.tree- ctx: Load +time.tree- element: Subscript +time.tree- value: Name +time.tree- id: str = jj +time.tree- ctx: Load +time.tree: slice: Constant +time.tree- value: int = 1 +time.tree- kind: NoneType = None +time.tree- ctx: Load +time.tree- keywords: list +time.tree- decorator_list: list +-- +time.tree- args: list +time.tree- element: Constant +time.tree- value: str = ( +time.tree- kind: NoneType = None +time.tree- keywords: list +time.tree: slice: Constant +time.tree- value: int = 1 +time.tree- kind: NoneType = None +time.tree- ctx: Load +time.tree- attr: str = split +time.tree- ctx: Load +time.tree- args: list +time.tree- element: Constant +time.tree- value: str = ) +time.tree- kind: NoneType = None +time.tree- keywords: list +time.tree: slice: Constant +time.tree- value: int = 0 +time.tree- kind: NoneType = None +time.tree- ctx: Load +time.tree- handlers: list +time.tree- element: ExceptHandler +-- +time.tree- targets: list +time.tree- element: Subscript +time.tree- value: Name +time.tree- id: str = ret +time.tree- ctx: Load +time.tree: slice: Name +time.tree- id: str = ind +time.tree- ctx: Load +time.tree- ctx: Store +time.tree- value: Name +time.tree- id: str = i +-- +time.tree- comparators: list +time.tree- element: Subscript +time.tree- value: Name +time.tree- id: str = _jj +time.tree- ctx: Load +time.tree: slice: Constant +time.tree- value: int = 1 +time.tree- kind: NoneType = None +time.tree- ctx: Load +time.tree- body: Subscript +time.tree- value: Name +time.tree- id: str = _jj +time.tree- ctx: Load +time.tree: slice: Constant +time.tree- value: int = 0 +time.tree- kind: NoneType = None +time.tree- ctx: Load +time.tree- orelse: Subscript +time.tree- value: Name +time.tree- id: str = _jj +time.tree- ctx: Load +time.tree: slice: Constant +time.tree- value: int = 1 +time.tree- kind: NoneType = None +time.tree- ctx: Load +time.tree- type_comment: NoneType = None +time.tree- orelse: list +-- +time.tree- args: list +time.tree- element: Subscript +time.tree- value: Name +time.tree- id: str = t +time.tree- ctx: Load +time.tree: slice: Constant +time.tree- value: int = 0 +time.tree- kind: NoneType = None +time.tree- ctx: Load +time.tree- element: BinOp +time.tree- left: Subscript +time.tree- value: Name +time.tree- id: str = t +time.tree- ctx: Load +time.tree: slice: Constant +time.tree- value: int = 1 +time.tree- kind: NoneType = None +time.tree- ctx: Load +time.tree- op: Sub +time.tree- right: Constant +-- +time.tree- kind: NoneType = None +time.tree- element: Subscript +time.tree- value: Name +time.tree- id: str = t +time.tree- ctx: Load +time.tree: slice: Constant +time.tree- value: int = 2 +time.tree- kind: NoneType = None +time.tree- ctx: Load +time.tree- element: Subscript +time.tree- value: Name +time.tree- id: str = t +time.tree- ctx: Load +time.tree: slice: Constant +time.tree- value: int = 3 +time.tree- kind: NoneType = None +time.tree- ctx: Load +time.tree- element: Subscript +time.tree- value: Name +time.tree- id: str = t +time.tree- ctx: Load +time.tree: slice: Constant +time.tree- value: int = 4 +time.tree- kind: NoneType = None +time.tree- ctx: Load +time.tree- element: Subscript +time.tree- value: Name +time.tree- id: str = t +time.tree- ctx: Load +time.tree: slice: Constant +time.tree- value: int = 5 +time.tree- kind: NoneType = None +time.tree- ctx: Load +time.tree- element: Constant +time.tree- value: int = 0 +-- +time.tree- element: Return +time.tree- value: Subscript +time.tree- value: Name +time.tree- id: str = t +time.tree- ctx: Load +time.tree: slice: Slice +time.tree- lower: NoneType = None +time.tree- upper: Constant +time.tree- value: int = 9 +time.tree- kind: NoneType = None +time.tree- step: NoneType = None +-- +time.tree- ctx: Store +time.tree- value: Subscript +time.tree- value: Name +time.tree- id: str = fmt +time.tree- ctx: Load +time.tree: slice: Name +time.tree- id: str = i +time.tree- ctx: Load +time.tree- ctx: Load +time.tree- type_comment: NoneType = None +time.tree- element: If +-- +time.tree- keywords: list +time.tree- element: Subscript +time.tree- value: Name +time.tree- id: str = fmt +time.tree- ctx: Load +time.tree: slice: Slice +time.tree- lower: Name +time.tree- id: str = i +time.tree- ctx: Load +time.tree- upper: NoneType = None +time.tree- step: NoneType = None +-- +time.tree- test: Compare +time.tree- left: Subscript +time.tree- value: Name +time.tree- id: str = fmt +time.tree- ctx: Load +time.tree: slice: Constant +time.tree- value: int = 0 +time.tree- kind: NoneType = None +time.tree- ctx: Load +time.tree- ops: list +time.tree- element: Eq +-- +time.tree- ctx: Store +time.tree- value: Subscript +time.tree- value: Name +time.tree- id: str = fmt +time.tree- ctx: Load +time.tree: slice: Constant +time.tree- value: int = 1 +time.tree- kind: NoneType = None +time.tree- ctx: Load +time.tree- type_comment: NoneType = None +time.tree- element: Assign +-- +time.tree- args: list +time.tree- element: Subscript +time.tree- value: Name +time.tree- id: str = fmt +time.tree- ctx: Load +time.tree: slice: Slice +time.tree- lower: Constant +time.tree- value: int = 2 +time.tree- kind: NoneType = None +time.tree- upper: NoneType = None +time.tree- step: NoneType = None +-- +time.tree- args: list +time.tree- element: Subscript +time.tree- value: Name +time.tree- id: str = __weekdays +time.tree- ctx: Load +time.tree: slice: Constant +time.tree- value: int = 0 +time.tree- kind: NoneType = None +time.tree- ctx: Load +time.tree- keywords: list +time.tree- type_comment: NoneType = None +-- +time.tree- args: list +time.tree- element: Subscript +time.tree- value: Name +time.tree- id: str = __weekdays_long +time.tree- ctx: Load +time.tree: slice: Constant +time.tree- value: int = 0 +time.tree- kind: NoneType = None +time.tree- ctx: Load +time.tree- keywords: list +time.tree- type_comment: NoneType = None +-- +time.tree- args: list +time.tree- element: Subscript +time.tree- value: Name +time.tree- id: str = __months +time.tree- ctx: Load +time.tree: slice: Constant +time.tree- value: int = 0 +time.tree- kind: NoneType = None +time.tree- ctx: Load +time.tree- keywords: list +time.tree- type_comment: NoneType = None +-- +time.tree- elts: list +time.tree- element: Subscript +time.tree- value: Name +time.tree- id: str = ts +time.tree- ctx: Load +time.tree: slice: Slice +time.tree- lower: NoneType = None +time.tree- upper: Name +time.tree- id: str = l +time.tree- ctx: Load +time.tree- step: NoneType = None +time.tree- ctx: Load +time.tree- element: Subscript +time.tree- value: Name +time.tree- id: str = ts +time.tree- ctx: Load +time.tree: slice: Slice +time.tree- lower: Name +time.tree- id: str = l +time.tree- ctx: Load +time.tree- upper: NoneType = None +time.tree- step: NoneType = None +-- +time.tree- ctx: Store +time.tree- value: Subscript +time.tree- value: Name +time.tree- id: str = lv +time.tree- ctx: Load +time.tree: slice: Constant +time.tree- value: int = 1 +time.tree- kind: NoneType = None +time.tree- ctx: Load +time.tree- type_comment: NoneType = None +time.tree- element: Continue +-- +time.tree- ctx: Store +time.tree- element: Subscript +time.tree- value: Name +time.tree- id: str = dir_val +time.tree- ctx: Load +time.tree: slice: Name +time.tree- id: str = d +time.tree- ctx: Load +time.tree- ctx: Store +time.tree- ctx: Store +time.tree- value: Tuple +time.tree- elts: list +time.tree- element: Subscript +time.tree- value: Name +time.tree- id: str = lv +time.tree- ctx: Load +time.tree: slice: Constant +time.tree- value: int = 1 +time.tree- kind: NoneType = None +time.tree- ctx: Load +time.tree- element: Subscript +time.tree- value: Name +time.tree- id: str = lv +time.tree- ctx: Load +time.tree: slice: Constant +time.tree- value: int = 0 +time.tree- kind: NoneType = None +time.tree- ctx: Load +time.tree- ctx: Load +time.tree- type_comment: NoneType = None +-- +time.tree- targets: list +time.tree- element: Subscript +time.tree- value: Name +time.tree- id: str = t +time.tree- ctx: Load +time.tree: slice: Subscript +time.tree- value: Name +time.tree- id: str = __lu +time.tree- ctx: Load +time.tree: slice: Name +time.tree- id: str = d +time.tree- ctx: Load +time.tree- ctx: Load +time.tree- ctx: Store +time.tree- value: Call +-- +time.tree- targets: list +time.tree- element: Subscript +time.tree- value: Name +time.tree- id: str = t +time.tree- ctx: Load +time.tree: slice: Constant +time.tree- value: int = 6 +time.tree- kind: NoneType = None +time.tree- ctx: Store +time.tree- value: Call +time.tree- func: Attribute +-- +time.tree- targets: list +time.tree- element: Subscript +time.tree- value: Name +time.tree- id: str = t +time.tree- ctx: Load +time.tree: slice: Constant +time.tree- value: int = 6 +time.tree- kind: NoneType = None +time.tree- ctx: Store +time.tree- value: Call +time.tree- func: Attribute +-- +time.tree- targets: list +time.tree- element: Subscript +time.tree- value: Name +time.tree- id: str = t +time.tree- ctx: Load +time.tree: slice: Constant +time.tree- value: int = 1 +time.tree- kind: NoneType = None +time.tree- ctx: Store +time.tree- value: BinOp +time.tree- left: Call +-- +time.tree- targets: list +time.tree- element: Subscript +time.tree- value: Name +time.tree- id: str = t +time.tree- ctx: Load +time.tree: slice: Constant +time.tree- value: int = 1 +time.tree- kind: NoneType = None +time.tree- ctx: Store +time.tree- value: BinOp +time.tree- left: Call +-- +time.tree- values: list +time.tree- element: Subscript +time.tree- value: Name +time.tree- id: str = dir_val +time.tree- ctx: Load +time.tree: slice: Constant +time.tree- value: str = p +time.tree- kind: NoneType = None +time.tree- ctx: Load +time.tree- element: Constant +time.tree- value: str = am +-- +time.tree- targets: list +time.tree- element: Subscript +time.tree- value: Name +time.tree- id: str = t +time.tree- ctx: Load +time.tree: slice: Subscript +time.tree- value: Name +time.tree- id: str = __lu +time.tree- ctx: Load +time.tree: slice: Constant +time.tree- value: str = H +time.tree- kind: NoneType = None +time.tree- ctx: Load +time.tree- ctx: Store +time.tree- value: Name +-- +time.tree- targets: list +time.tree- element: Subscript +time.tree- value: Name +time.tree- id: str = t +time.tree- ctx: Load +time.tree: slice: Constant +time.tree- value: int = 0 +time.tree- kind: NoneType = None +time.tree- ctx: Store +time.tree- value: BinOp +time.tree- left: Constant +-- +time.tree- targets: list +time.tree- element: Subscript +time.tree- value: Name +time.tree- id: str = t +time.tree- ctx: Load +time.tree: slice: UnaryOp +time.tree- op: USub +time.tree- operand: Constant +time.tree- value: int = 1 +time.tree- kind: NoneType = None +time.tree- ctx: Store +-- +time.tree- args: list +time.tree- element: Subscript +time.tree- value: Name +time.tree- id: str = t +time.tree- ctx: Load +time.tree: slice: Constant +time.tree- value: int = 0 +time.tree- kind: NoneType = None +time.tree- ctx: Load +time.tree- keywords: list +time.tree- element: Expr +-- +time.tree- element: BinOp +time.tree- left: Subscript +time.tree- value: Name +time.tree- id: str = t +time.tree- ctx: Load +time.tree: slice: Constant +time.tree- value: int = 1 +time.tree- kind: NoneType = None +time.tree- ctx: Load +time.tree- op: Sub +time.tree- right: Constant +-- +time.tree- args: list +time.tree- element: Subscript +time.tree- value: Name +time.tree- id: str = t +time.tree- ctx: Load +time.tree: slice: Constant +time.tree- value: int = 2 +time.tree- kind: NoneType = None +time.tree- ctx: Load +time.tree- keywords: list +time.tree- element: Expr +-- +time.tree- args: list +time.tree- element: Subscript +time.tree- value: Name +time.tree- id: str = t +time.tree- ctx: Load +time.tree: slice: Constant +time.tree- value: int = 3 +time.tree- kind: NoneType = None +time.tree- ctx: Load +time.tree- keywords: list +time.tree- element: Assign +time.tree- targets: list +time.tree- element: Subscript +time.tree- value: Name +time.tree- id: str = t +time.tree- ctx: Load +time.tree: slice: Constant +time.tree- value: int = 7 +time.tree- kind: NoneType = None +time.tree- ctx: Store +time.tree- value: Call +time.tree- func: Name +-- +time.tree- targets: list +time.tree- element: Subscript +time.tree- value: Name +time.tree- id: str = t +time.tree- ctx: Load +time.tree: slice: Constant +time.tree- value: int = 6 +time.tree- kind: NoneType = None +time.tree- ctx: Store +time.tree- value: BinOp +time.tree- left: Call +-- +time.tree- args: list +time.tree- element: Subscript +time.tree- value: Name +time.tree- id: str = t +time.tree- ctx: Load +time.tree: slice: Subscript +time.tree- value: Name +time.tree- id: str = __lu +time.tree- ctx: Load +time.tree: slice: Name +time.tree- id: str = d +time.tree- ctx: Load +time.tree- ctx: Load +time.tree- ctx: Load +time.tree- keywords: list +-- +time.tree- ctx: Store +time.tree- value: Subscript +time.tree- value: Name +time.tree- id: str = t +time.tree- ctx: Load +time.tree: slice: Name +time.tree- id: str = pos +time.tree- ctx: Load +time.tree- ctx: Load +time.tree- type_comment: NoneType = None +time.tree- element: If +-- +time.tree- func: Attribute +time.tree- value: Subscript +time.tree- value: Name +time.tree- id: str = l +time.tree- ctx: Load +time.tree: slice: Name +time.tree- id: str = p +time.tree- ctx: Load +time.tree- ctx: Load +time.tree- attr: str = capitalize +time.tree- ctx: Load +-- +time.tree- test: Compare +time.tree- left: Subscript +time.tree- value: Name +time.tree- id: str = t +time.tree- ctx: Load +time.tree: slice: Constant +time.tree- value: int = 3 +time.tree- kind: NoneType = None +time.tree- ctx: Load +time.tree- ops: list +time.tree- element: Gt +-- +time.tree- args: list +time.tree- element: Subscript +time.tree- value: Name +time.tree- id: str = t +time.tree- ctx: Load +time.tree: slice: Constant +time.tree- value: int = 0 +time.tree- kind: NoneType = None +time.tree- ctx: Load +time.tree- keywords: list +time.tree: slice: Slice +time.tree- lower: UnaryOp +time.tree- op: USub +time.tree- operand: Constant +time.tree- value: int = 2 +time.tree- kind: NoneType = None +-- +time.tree- ctx: Store +time.tree- value: Subscript +time.tree- value: Name +time.tree- id: str = t +time.tree- ctx: Load +time.tree: slice: Constant +time.tree- value: int = 3 +time.tree- kind: NoneType = None +time.tree- ctx: Load +time.tree- type_comment: NoneType = None +time.tree- element: If diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/indices_and_slices.js b/transcrypt/development/automated_tests/transcrypt/__target__39/indices_and_slices.js new file mode 100644 index 000000000..96add20c2 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/indices_and_slices.js @@ -0,0 +1,30 @@ +// Transcrypt'ed from Python, 2021-05-14 15:01:25 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get run () {return run;}, set run (value) {run = value;}}); +var __name__ = 'indices_and_slices'; +export var run = function (autoTester) { + var all = range (32); + autoTester.check (all); + autoTester.check (all.__getslice__ (8, 24, 1)); + autoTester.check (all.__getslice__ (8, 24, 2)); + var aList = [3, 4, 7, 8]; + autoTester.check (aList); + aList.__setslice__ (4, 4, null, [9, 10]); + autoTester.check (aList); + aList.__setslice__ (2, 2, null, [5, 6]); + autoTester.check (aList); + aList.__setslice__ (0, 0, null, [1, 2]); + autoTester.check (aList); + aList.__setslice__ (0, null, 2, (function () { + var __accu0__ = []; + for (var x = 0; x < 10; x++) { + if (__mod__ (x, 2)) { + __accu0__.append (x + 0.001); + } + } + return __accu0__; + }) ()); + autoTester.check (aList); +}; + +//# sourceMappingURL=indices_and_slices.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/indices_and_slices.tree b/transcrypt/development/automated_tests/transcrypt/__target__39/indices_and_slices.tree new file mode 100644 index 000000000..bbbadfb72 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/indices_and_slices.tree @@ -0,0 +1,305 @@ +file: Module + body: list + element: FunctionDef + name: str = run + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = autoTester + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Name + id: str = all + ctx: Store + value: Call + func: Name + id: str = range + ctx: Load + args: list + element: Constant + value: int = 32 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = all + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Subscript + value: Name + id: str = all + ctx: Load + slice: Slice + lower: Constant + value: int = 8 + kind: NoneType = None + upper: Constant + value: int = 24 + kind: NoneType = None + step: NoneType = None + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Subscript + value: Name + id: str = all + ctx: Load + slice: Slice + lower: Constant + value: int = 8 + kind: NoneType = None + upper: Constant + value: int = 24 + kind: NoneType = None + step: Constant + value: int = 2 + kind: NoneType = None + ctx: Load + keywords: list + element: Assign + targets: list + element: Name + id: str = aList + ctx: Store + value: List + elts: list + element: Constant + value: int = 3 + kind: NoneType = None + element: Constant + value: int = 4 + kind: NoneType = None + element: Constant + value: int = 7 + kind: NoneType = None + element: Constant + value: int = 8 + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = aList + ctx: Load + keywords: list + element: Assign + targets: list + element: Subscript + value: Name + id: str = aList + ctx: Load + slice: Slice + lower: Constant + value: int = 4 + kind: NoneType = None + upper: Constant + value: int = 4 + kind: NoneType = None + step: NoneType = None + ctx: Store + value: List + elts: list + element: Constant + value: int = 9 + kind: NoneType = None + element: Constant + value: int = 10 + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = aList + ctx: Load + keywords: list + element: Assign + targets: list + element: Subscript + value: Name + id: str = aList + ctx: Load + slice: Slice + lower: Constant + value: int = 2 + kind: NoneType = None + upper: Constant + value: int = 2 + kind: NoneType = None + step: NoneType = None + ctx: Store + value: List + elts: list + element: Constant + value: int = 5 + kind: NoneType = None + element: Constant + value: int = 6 + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = aList + ctx: Load + keywords: list + element: Assign + targets: list + element: Subscript + value: Name + id: str = aList + ctx: Load + slice: Slice + lower: Constant + value: int = 0 + kind: NoneType = None + upper: Constant + value: int = 0 + kind: NoneType = None + step: NoneType = None + ctx: Store + value: List + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = aList + ctx: Load + keywords: list + element: Assign + targets: list + element: Subscript + value: Name + id: str = aList + ctx: Load + slice: Slice + lower: NoneType = None + upper: NoneType = None + step: Constant + value: int = 2 + kind: NoneType = None + ctx: Store + value: ListComp + elt: BinOp + left: Name + id: str = x + ctx: Load + op: Add + right: Constant + value: float = 0.001 + kind: NoneType = None + generators: list + element: comprehension + target: Name + id: str = x + ctx: Store + iter: Call + func: Name + id: str = range + ctx: Load + args: list + element: Constant + value: int = 10 + kind: NoneType = None + keywords: list + ifs: list + element: BinOp + left: Name + id: str = x + ctx: Load + op: Mod + right: Constant + value: int = 2 + kind: NoneType = None + is_async: int = 0 + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = aList + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/iterators_and_generators.js b/transcrypt/development/automated_tests/transcrypt/__target__39/iterators_and_generators.js new file mode 100644 index 000000000..725fe618a --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/iterators_and_generators.js @@ -0,0 +1,164 @@ +// Transcrypt'ed from Python, 2021-05-14 15:01:25 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +var __all__ = dict ({get Iterable () {return Iterable;}, set Iterable (value) {Iterable = value;}, get Iterator () {return Iterator;}, set Iterator (value) {Iterator = value;}, get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get exhaustableGenerator () {return exhaustableGenerator;}, set exhaustableGenerator (value) {exhaustableGenerator = value;}, get run () {return run;}, set run (value) {run = value;}}); +var __name__ = 'iterators_and_generators'; +export var Iterable = __class__ ('Iterable', [object], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self, i) { + self.aList = range (0, 50, i); + });}, + get __iter__ () {return __get__ (this, function (self) { + return Iterator (self); + });}, + [Symbol.iterator] () {return this.__iter__ ()} +}); +export var Iterator = __class__ ('Iterator', [object], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self, iterable) { + self.iterable = iterable; + self.index = -(1); + });}, + get __next__ () {return __get__ (this, function (self) { + self.index++; + if (self.index > 5) { + var __except0__ = StopIteration (); + __except0__.__cause__ = null; + throw __except0__; + } + return ; + });}, + next: __jsUsePyNext__, + get __iter__ () {return __get__ (this, function (self) { + return self; + });}, + [Symbol.iterator] () {return this.__iter__ ()} +}); +export var exhaustableGenerator = function* (i) { + for (var i = 0; i < 5; i++) { + yield 2 * i; + } + }; +export var run = function (autoTester) { + var exhaustableGenExp = (function () { + var __accu0__ = []; + for (var a of [10, 20, 30]) { + __accu0__.append ((a * a) * a); + } + return py_iter (__accu0__); + }) (); + var iterables = [Iterable (7), exhaustableGenerator (5), (function () { + var __accu0__ = []; + for (var i = 0; i < 5; i++) { + __accu0__.append (i * 3); + } + return __accu0__; + }) (), exhaustableGenExp]; + for (var iterable of iterables) { + autoTester.check ('[1]'); + var iterator = py_iter (iterable); + try { + while (true) { + autoTester.check (py_next (iterator)); + } + } + catch (__except0__) { + if (isinstance (__except0__, Exception)) { + var exception = __except0__; + autoTester.check (exception.__class__.__name__); + } + else { + throw __except0__; + } + } + autoTester.check ('[2]'); + var iterator = py_iter (iterable); + try { + while (true) { + autoTester.check (py_next (iterator)); + } + } + catch (__except0__) { + if (isinstance (__except0__, Exception)) { + var exception = __except0__; + autoTester.check (exception.__class__.__name__); + } + else { + throw __except0__; + } + } + } + for (var iterable of iterables) { + autoTester.check ('[3]'); + for (var n of iterable) { + autoTester.check (n); + } + autoTester.check ('[4]'); + for (var n of iterable) { + autoTester.check (n); + } + } + var a = 0; + var vals = [1, 2, 3]; + var ret = py_iter (vals); + for (var m of ret) { + a += m; + } + autoTester.check (a); + var test0 = function* () { + var r = 0; + while (true) { + var r = r + (yield r); + } + }; + var gen0 = test0 (); + py_next (gen0); + autoTester.check ((function () {return gen0.next (1).value}) ()); + autoTester.check ((function () {return gen0.next (2).value}) ()); + var test1 = function* () { + var r = 0; + while (true) { + var r = (yield r) + r; + } + }; + var gen1 = test1 (); + py_next (gen1); + autoTester.check ((function () {return gen1.next (3).value}) ()); + autoTester.check ((function () {return gen1.next (4).value}) ()); + var subGenerator = function* () { + yield 27; + yield 37; + yield 47}; + var mainGenerator = function* () { + yield 17; + yield* subGenerator (); + yield 57}; + autoTester.check (...(function () { + var __accu0__ = []; + for (var i of mainGenerator ()) { + __accu0__.append (i); + } + return __accu0__; + }) ()); + var subCoroutine = function* () { + autoTester.check (38); + yield; + autoTester.check (48); + yield; + autoTester.check (58); + yield; + autoTester.check (68)}; + var mainCoroutine = function* () { + autoTester.check (18); + yield; + autoTester.check (28); + yield* subCoroutine (); + autoTester.check (78); + yield; + autoTester.check (88)}; + var m = mainCoroutine (); + for (var i = 0; i < 5; i++) { + (function () {return m.next (null).value}) (); + } +}; + +//# sourceMappingURL=iterators_and_generators.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/iterators_and_generators.tree b/transcrypt/development/automated_tests/transcrypt/__target__39/iterators_and_generators.tree new file mode 100644 index 000000000..406407527 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/iterators_and_generators.tree @@ -0,0 +1,1240 @@ +file: Module + body: list + element: ImportFrom + module: str = org.transcrypt.stubs.browser + names: list + element: alias + name: str = __pragma__ + asname: NoneType = None + level: int = 0 + element: ClassDef + name: str = Iterable + bases: list + keywords: list + body: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = i + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = aList + ctx: Store + value: Call + func: Name + id: str = range + ctx: Load + args: list + element: Constant + value: int = 0 + kind: NoneType = None + element: Constant + value: int = 50 + kind: NoneType = None + element: Name + id: str = i + ctx: Load + keywords: list + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __iter__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Call + func: Name + id: str = Iterator + ctx: Load + args: list + element: Name + id: str = self + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: ClassDef + name: str = Iterator + bases: list + keywords: list + body: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = iterable + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = iterable + ctx: Store + value: Name + id: str = iterable + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = index + ctx: Store + value: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __next__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: AugAssign + target: Attribute + value: Name + id: str = self + ctx: Load + attr: str = index + ctx: Store + op: Add + value: Constant + value: int = 1 + kind: NoneType = None + element: If + test: Compare + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = index + ctx: Load + ops: list + element: Gt + comparators: list + element: Constant + value: int = 5 + kind: NoneType = None + body: list + element: Raise + exc: Call + func: Name + id: str = StopIteration + ctx: Load + args: list + keywords: list + cause: NoneType = None + orelse: list + element: Return + value: Subscript + value: Attribute + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = iterable + ctx: Load + attr: str = aList + ctx: Load + slice: Attribute + value: Name + id: str = self + ctx: Load + attr: str = index + ctx: Load + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __iter__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Name + id: str = self + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: FunctionDef + name: str = exhaustableGenerator + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = i + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: For + target: Name + id: str = i + ctx: Store + iter: Call + func: Name + id: str = range + ctx: Load + args: list + element: Constant + value: int = 5 + kind: NoneType = None + keywords: list + body: list + element: Expr + value: Yield + value: BinOp + left: Constant + value: int = 2 + kind: NoneType = None + op: Mult + right: Name + id: str = i + ctx: Load + orelse: list + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = run + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = autoTester + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Name + id: str = exhaustableGenExp + ctx: Store + value: GeneratorExp + elt: BinOp + left: BinOp + left: Name + id: str = a + ctx: Load + op: Mult + right: Name + id: str = a + ctx: Load + op: Mult + right: Name + id: str = a + ctx: Load + generators: list + element: comprehension + target: Name + id: str = a + ctx: Store + iter: List + elts: list + element: Constant + value: int = 10 + kind: NoneType = None + element: Constant + value: int = 20 + kind: NoneType = None + element: Constant + value: int = 30 + kind: NoneType = None + ctx: Load + ifs: list + is_async: int = 0 + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = iterables + ctx: Store + value: List + elts: list + element: Call + func: Name + id: str = Iterable + ctx: Load + args: list + element: Constant + value: int = 7 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = exhaustableGenerator + ctx: Load + args: list + element: Constant + value: int = 5 + kind: NoneType = None + keywords: list + element: ListComp + elt: BinOp + left: Name + id: str = i + ctx: Load + op: Mult + right: Constant + value: int = 3 + kind: NoneType = None + generators: list + element: comprehension + target: Name + id: str = i + ctx: Store + iter: Call + func: Name + id: str = range + ctx: Load + args: list + element: Constant + value: int = 5 + kind: NoneType = None + keywords: list + ifs: list + is_async: int = 0 + element: Name + id: str = exhaustableGenExp + ctx: Load + ctx: Load + type_comment: NoneType = None + element: For + target: Name + id: str = iterable + ctx: Store + iter: Name + id: str = iterables + ctx: Load + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = [1] + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = iterator + ctx: Store + value: Call + func: Name + id: str = iter + ctx: Load + args: list + element: Name + id: str = iterable + ctx: Load + keywords: list + type_comment: NoneType = None + element: Try + body: list + element: While + test: Constant + value: bool = True + kind: NoneType = None + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = next + ctx: Load + args: list + element: Name + id: str = iterator + ctx: Load + keywords: list + keywords: list + orelse: list + handlers: list + element: ExceptHandler + type: Name + id: str = Exception + ctx: Load + name: str = exception + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Attribute + value: Name + id: str = exception + ctx: Load + attr: str = __class__ + ctx: Load + attr: str = __name__ + ctx: Load + keywords: list + orelse: list + finalbody: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = [2] + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = iterator + ctx: Store + value: Call + func: Name + id: str = iter + ctx: Load + args: list + element: Name + id: str = iterable + ctx: Load + keywords: list + type_comment: NoneType = None + element: Try + body: list + element: While + test: Constant + value: bool = True + kind: NoneType = None + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = next + ctx: Load + args: list + element: Name + id: str = iterator + ctx: Load + keywords: list + keywords: list + orelse: list + handlers: list + element: ExceptHandler + type: Name + id: str = Exception + ctx: Load + name: str = exception + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Attribute + value: Name + id: str = exception + ctx: Load + attr: str = __class__ + ctx: Load + attr: str = __name__ + ctx: Load + keywords: list + orelse: list + finalbody: list + orelse: list + type_comment: NoneType = None + element: For + target: Name + id: str = iterable + ctx: Store + iter: Name + id: str = iterables + ctx: Load + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = [3] + kind: NoneType = None + keywords: list + element: For + target: Name + id: str = n + ctx: Store + iter: Name + id: str = iterable + ctx: Load + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = n + ctx: Load + keywords: list + orelse: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = [4] + kind: NoneType = None + keywords: list + element: For + target: Name + id: str = n + ctx: Store + iter: Name + id: str = iterable + ctx: Load + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = n + ctx: Load + keywords: list + orelse: list + type_comment: NoneType = None + orelse: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = a + ctx: Store + value: Constant + value: int = 0 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = vals + ctx: Store + value: List + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = ret + ctx: Store + value: Call + func: Name + id: str = iter + ctx: Load + args: list + element: Name + id: str = vals + ctx: Load + keywords: list + type_comment: NoneType = None + element: For + target: Name + id: str = m + ctx: Store + iter: Name + id: str = ret + ctx: Load + body: list + element: AugAssign + target: Name + id: str = a + ctx: Store + op: Add + value: Name + id: str = m + ctx: Load + orelse: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = a + ctx: Load + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = gsend + kind: NoneType = None + keywords: list + element: FunctionDef + name: str = test0 + args: arguments + posonlyargs: list + args: list + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Name + id: str = r + ctx: Store + value: Constant + value: int = 0 + kind: NoneType = None + type_comment: NoneType = None + element: While + test: Constant + value: bool = True + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = r + ctx: Store + value: BinOp + left: Name + id: str = r + ctx: Load + op: Add + right: Yield + value: Name + id: str = r + ctx: Load + type_comment: NoneType = None + orelse: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = gen0 + ctx: Store + value: Call + func: Name + id: str = test0 + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = next + ctx: Load + args: list + element: Name + id: str = gen0 + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = gen0 + ctx: Load + attr: str = send + ctx: Load + args: list + element: Constant + value: int = 1 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = gen0 + ctx: Load + attr: str = send + ctx: Load + args: list + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + keywords: list + element: FunctionDef + name: str = test1 + args: arguments + posonlyargs: list + args: list + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Name + id: str = r + ctx: Store + value: Constant + value: int = 0 + kind: NoneType = None + type_comment: NoneType = None + element: While + test: Constant + value: bool = True + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = r + ctx: Store + value: BinOp + left: Yield + value: Name + id: str = r + ctx: Load + op: Add + right: Name + id: str = r + ctx: Load + type_comment: NoneType = None + orelse: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = gen1 + ctx: Store + value: Call + func: Name + id: str = test1 + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = next + ctx: Load + args: list + element: Name + id: str = gen1 + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = gen1 + ctx: Load + attr: str = send + ctx: Load + args: list + element: Constant + value: int = 3 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = gen1 + ctx: Load + attr: str = send + ctx: Load + args: list + element: Constant + value: int = 4 + kind: NoneType = None + keywords: list + keywords: list + element: FunctionDef + name: str = subGenerator + args: arguments + posonlyargs: list + args: list + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Yield + value: Constant + value: int = 27 + kind: NoneType = None + element: Expr + value: Yield + value: Constant + value: int = 37 + kind: NoneType = None + element: Expr + value: Yield + value: Constant + value: int = 47 + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = mainGenerator + args: arguments + posonlyargs: list + args: list + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Yield + value: Constant + value: int = 17 + kind: NoneType = None + element: Expr + value: YieldFrom + value: Call + func: Name + id: str = subGenerator + ctx: Load + args: list + keywords: list + element: Expr + value: Yield + value: Constant + value: int = 57 + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Starred + value: ListComp + elt: Name + id: str = i + ctx: Load + generators: list + element: comprehension + target: Name + id: str = i + ctx: Store + iter: Call + func: Name + id: str = mainGenerator + ctx: Load + args: list + keywords: list + ifs: list + is_async: int = 0 + ctx: Load + keywords: list + element: FunctionDef + name: str = subCoroutine + args: arguments + posonlyargs: list + args: list + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: int = 38 + kind: NoneType = None + keywords: list + element: Expr + value: Yield + value: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: int = 48 + kind: NoneType = None + keywords: list + element: Expr + value: Yield + value: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: int = 58 + kind: NoneType = None + keywords: list + element: Expr + value: Yield + value: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: int = 68 + kind: NoneType = None + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = mainCoroutine + args: arguments + posonlyargs: list + args: list + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: int = 18 + kind: NoneType = None + keywords: list + element: Expr + value: Yield + value: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: int = 28 + kind: NoneType = None + keywords: list + element: Expr + value: YieldFrom + value: Call + func: Name + id: str = subCoroutine + ctx: Load + args: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: int = 78 + kind: NoneType = None + keywords: list + element: Expr + value: Yield + value: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: int = 88 + kind: NoneType = None + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = m + ctx: Store + value: Call + func: Name + id: str = mainCoroutine + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: For + target: Name + id: str = i + ctx: Store + iter: Call + func: Name + id: str = range + ctx: Load + args: list + element: Constant + value: int = 5 + kind: NoneType = None + keywords: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = m + ctx: Load + attr: str = send + ctx: Load + args: list + element: Constant + value: NoneType = None + kind: NoneType = None + keywords: list + orelse: list + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/itertools.js b/transcrypt/development/automated_tests/transcrypt/__target__39/itertools.js new file mode 100644 index 000000000..74de8daeb --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/itertools.js @@ -0,0 +1,298 @@ +import {list, tuple, len, __kwargtrans__, set} from './org.transcrypt.__runtime__.js'; + +var __name__ = 'itertools'; + +export var count = function* (start, step) { + if (start == undefined) { + start = 0; + } + if (step == undefined) { + step = 1; + } + while (true) { + yield start; + start += step; + } +} +export var cycle = function* (iterable) { + let buffer = Array.from (iterable); // Can't reset, Chrome can't obtain iter from gener + while (true) { + for (let item of buffer) { + yield item; + } + } +} +export var repeat = function* (item, n) { + if (typeof n == 'undefined') { + while (true) { + yield item; + } + } + else { + for (let index = 0; index < n; index++) { + yield item; + } + } +} +export var accumulate = function* (iterable, func) { + let sum; + let first = true; + if (func) { + for (let item of iterable) { + if (first) { + sum = item; + first = false; + } + else { + sum = func (sum, item); + } + yield sum; + } + } + else { + for (let item of iterable) { + if (first) { + sum = item; + first = false; + } + else { + sum = sum + item; + } + yield sum; + } + } +} +export var chain = function* () { + let args = [] .slice.apply (arguments); + for (let arg of args) { + for (let item of arg) { + yield item; + } + } +} +chain.from_iterable = function* (iterable) { + for (let item of iterable) { + for (let subItem of item) { + yield subItem; + } + } +} +export var compress = function* (data, selectors) { + let dataIterator = data [Symbol.iterator] .call (data); + let selectorsIterator = selectors [Symbol.iterator] (); + while (true) { + let dataItem = dataIterator.next (); + let selectorsItem = selectorsIterator.next (); + if (dataItem.done || selectorsItem.done) { + break; + } + else { + if (selectorsItem.value) { + yield dataItem.value; + } + } + } +} +export var dropwhile = function* (pred, seq) { + let started = false; + for (let item of seq) { + if (started) { + yield item; + } + else if (!pred (item)) { + started = true; + yield item; + } + } +} +export var filterfalse = function* (pred, seq) { + for (let item of seq) { + if (!pred (item)) { + yield item; + } + } +} +export var groupby = function* (iterable, keyfunc) { + let anIterator = iterable [Symbol.iterator] (); + let item = anIterator.next (); + + if (item.done) { + return; + } + + let groupKey = keyfunc (item.value); + let more = true; + + function* group () { + while (true) { + yield (item.value); + item = anIterator.next (); + + if (item.done) { + more = false; + return; + } + + let key = keyfunc (item.value); + + if (key != groupKey) { + groupKey = key; + return; + } + } + } + + while (more) { + yield tuple ([groupKey, group ()]); + } +} +export var islice = function* () { + let start; // Have to be defined at function level, or Closure compiler will loose them after a yield + let stop; // + let step; // + + let args = [] .slice.apply (arguments); + let anIterator = args [0][Symbol.iterator] (); + if (args.length == 2) { + stop = args [1]; + start = 0; + step = 1; + } + else { + start = args [1]; + stop = args [2]; + if (args.length == 4) { + step = args [3]; + } + else { + step = 1; + } + } + for (let index = 0; index < start; index++) { + if (anIterator.next (). done) { + return; + } + } + for (let index = 0; index < stop - start; index++) { + let next = anIterator.next (); + if (next.done) { + return; + } + if (index % step == 0) { + yield next.value; + } + } +} +export var starmap = function* (func, seq) { + let anIterator = seq [Symbol.iterator] (); + while (true) { + let next = anIterator.next () + if (next.done) { + return; + } + else { + yield func (...next.value); + } + } +} +export var takewhile = function* (pred, seq) { + for (let item of seq) { + if (pred (item)) { + yield item; + } + else { + return; + } + } +} +export var tee = function (iterable, n) { + if (n == undefined) { + n = 2; + } + let all = []; // Don't return iterator since destructuring assignment cannot yet deal with that + let one = list (iterable); + for (let i = 0; i < n; i++) { + all.append (one [Symbol.iterator] ()); // Iterator rather than list, exhaustable for semantic equivalence + } + return list (all); +} + +export var product = function () { + let args = [] .slice.apply (arguments); + if (args.length && args [args.length - 1] .hasOwnProperty ('__kwargtrans__')) { + var repeat = args.pop () ['repeat']; + } + else { + var repeat = 1; + } + + let oldMolecules = [tuple ([])]; + for (let i = 0; i < repeat; i++) { + for (let arg of args) { + let newMolecules = []; + for (let oldMolecule of oldMolecules) { + for (let atom of arg) { + newMolecules.append (tuple (oldMolecule.concat (atom))); + } + } + oldMolecules = newMolecules; + } + } + return list (oldMolecules); // Also works if args is emptpy +} +export var permutations = function (iterable, r) { + if (r == undefined) { + try { + r = len (iterable); + } + catch (exception) { + r = len (list (iterable)); + } + } + let aProduct = product (iterable, __kwargtrans__ ({repeat: r})); + let result = []; + for (let molecule of aProduct) { + if (len (set (molecule)) == r) { // Weed out doubles + result.append (molecule); + } + } + return list (result); +} +export var combinations = function (iterable, r) { + let tail = list (iterable); + function recurse (tail, molecule, rNext) { + for (let index = 0; index < len (tail) - rNext; index++) { + let newMolecule = molecule.concat (tail.slice (index, index + 1)); + + if (rNext) { + recurse (tail.slice (index + 1), newMolecule, rNext - 1); + } + else { + result.append (tuple (newMolecule)); + } + } + } + let result = []; + recurse (tail, tail.slice (0, 0), r - 1); + return list (result); +} +export var combinations_with_replacement = function (iterable, r) { + let tail = list (iterable); + function recurse (tail, molecule, rNext) { + for (let index = 0; index < len (tail); index++) { + let newMolecule = molecule.concat (tail.slice (index, index + 1)); + + if (rNext) { + recurse (tail.slice (index), newMolecule, rNext - 1); + } + else { + result.append (tuple (newMolecule)); + } + } + } + let result = []; + recurse (tail, tail.slice (0, 0), r - 1); + return list (result); +} + +//# sourceMappingURL=itertools.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/lambda_functions.js b/transcrypt/development/automated_tests/transcrypt/__target__39/lambda_functions.js new file mode 100644 index 000000000..7a2cce0bb --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/lambda_functions.js @@ -0,0 +1,32 @@ +// Transcrypt'ed from Python, 2021-05-14 15:01:25 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get run () {return run;}, set run (value) {run = value;}}); +var __name__ = 'lambda_functions'; +export var run = function (autoTester) { + var z = 1000; + autoTester.check ((function __lambda__ (x, y) { + return (x + y) + z; + }) (111, 222)); + var f = function (list0, list1, aFunc) { + return (function () { + var __accu0__ = []; + for (var elem of zip (list0, list1)) { + __accu0__.append (aFunc (...elem)); + } + return __accu0__; + }) (); + }; + var x = f (range (10), range (0, 100, 10), (function __lambda__ (x, y) { + return (x + y) + z; + })); + autoTester.check (x); + autoTester.check (f (range (10, 20), range (100, 200, 10), (function __lambda__ (x, y) { + return x * y + 100 * z; + }))); + autoTester.check (f (range (10, 20), range (100, 200, 10), (function __lambda__ () { + var args = tuple ([].slice.apply (arguments).slice (0)); + return * + 100 * z; + }))); +}; + +//# sourceMappingURL=lambda_functions.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/lambda_functions.tree b/transcrypt/development/automated_tests/transcrypt/__target__39/lambda_functions.tree new file mode 100644 index 000000000..f0c0f4df7 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/lambda_functions.tree @@ -0,0 +1,377 @@ +file: Module + body: list + element: FunctionDef + name: str = run + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = autoTester + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Name + id: str = z + ctx: Store + value: Constant + value: int = 1000 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Lambda + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = y + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: BinOp + left: BinOp + left: Name + id: str = x + ctx: Load + op: Add + right: Name + id: str = y + ctx: Load + op: Add + right: Name + id: str = z + ctx: Load + args: list + element: Constant + value: int = 111 + kind: NoneType = None + element: Constant + value: int = 222 + kind: NoneType = None + keywords: list + keywords: list + element: FunctionDef + name: str = f + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = list0 + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = list1 + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = aFunc + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: ListComp + elt: Call + func: Name + id: str = aFunc + ctx: Load + args: list + element: Starred + value: Name + id: str = elem + ctx: Load + ctx: Load + keywords: list + generators: list + element: comprehension + target: Name + id: str = elem + ctx: Store + iter: Call + func: Name + id: str = zip + ctx: Load + args: list + element: Name + id: str = list0 + ctx: Load + element: Name + id: str = list1 + ctx: Load + keywords: list + ifs: list + is_async: int = 0 + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = x + ctx: Store + value: Call + func: Name + id: str = f + ctx: Load + args: list + element: Call + func: Name + id: str = range + ctx: Load + args: list + element: Constant + value: int = 10 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = range + ctx: Load + args: list + element: Constant + value: int = 0 + kind: NoneType = None + element: Constant + value: int = 100 + kind: NoneType = None + element: Constant + value: int = 10 + kind: NoneType = None + keywords: list + element: Lambda + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = y + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: BinOp + left: BinOp + left: Name + id: str = x + ctx: Load + op: Add + right: Name + id: str = y + ctx: Load + op: Add + right: Name + id: str = z + ctx: Load + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = x + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = f + ctx: Load + args: list + element: Call + func: Name + id: str = range + ctx: Load + args: list + element: Constant + value: int = 10 + kind: NoneType = None + element: Constant + value: int = 20 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = range + ctx: Load + args: list + element: Constant + value: int = 100 + kind: NoneType = None + element: Constant + value: int = 200 + kind: NoneType = None + element: Constant + value: int = 10 + kind: NoneType = None + keywords: list + element: Lambda + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = y + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: BinOp + left: BinOp + left: Name + id: str = x + ctx: Load + op: Mult + right: Name + id: str = y + ctx: Load + op: Add + right: BinOp + left: Constant + value: int = 100 + kind: NoneType = None + op: Mult + right: Name + id: str = z + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = f + ctx: Load + args: list + element: Call + func: Name + id: str = range + ctx: Load + args: list + element: Constant + value: int = 10 + kind: NoneType = None + element: Constant + value: int = 20 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = range + ctx: Load + args: list + element: Constant + value: int = 100 + kind: NoneType = None + element: Constant + value: int = 200 + kind: NoneType = None + element: Constant + value: int = 10 + kind: NoneType = None + keywords: list + element: Lambda + args: arguments + posonlyargs: list + args: list + vararg: arg + arg: str = args + annotation: NoneType = None + type_comment: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: BinOp + left: BinOp + left: Subscript + value: Name + id: str = args + ctx: Load + slice: Constant + value: int = 0 + kind: NoneType = None + ctx: Load + op: Mult + right: Subscript + value: Name + id: str = args + ctx: Load + slice: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + op: Add + right: BinOp + left: Constant + value: int = 100 + kind: NoneType = None + op: Mult + right: Name + id: str = z + ctx: Load + keywords: list + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/list_comprehensions.js b/transcrypt/development/automated_tests/transcrypt/__target__39/list_comprehensions.js new file mode 100644 index 000000000..2a9c38d48 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/list_comprehensions.js @@ -0,0 +1,69 @@ +// Transcrypt'ed from Python, 2021-05-14 15:01:25 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get run () {return run;}, set run (value) {run = value;}}); +var __name__ = 'list_comprehensions'; +export var run = function (autoTester) { + var squares = (function () { + var __accu0__ = []; + for (var i = 0; i < 10; i++) { + if (__mod__ (i, 2)) { + __accu0__.append (i * i); + } + } + return __accu0__; + }) (); + autoTester.check (squares); + var tuples = (function () { + var __accu0__ = []; + for (var x of tuple ([100, 200, 300, 400, 500, 600, 700])) { + for (var y of tuple ([10, 20, 30, 40, 50, 60, 70])) { + if ((20 < y && y < 60)) { + for (var z of tuple ([1, 2, 3, 4, 5, 6, 7])) { + if ((200 < x && x < 600)) { + if ((2 < z && z < 6)) { + __accu0__.append (tuple ([x, y, z])); + } + } + } + } + } + } + return __accu0__; + }) (); + autoTester.check (tuples); + var tricky = (function () { + var __accu0__ = []; + for (var [x, y] of tuple ([tuple ([10, 11]), tuple ([20, 21])])) { + __accu0__.append (tuple ([2 * x, 3 * y])); + } + return __accu0__; + }) (); + autoTester.check (tricky); + var nested = (function () { + var __accu0__ = []; + for (var x of (function () { + var __accu1__ = []; + for (var x = 0; x < 3; x++) { + __accu1__.append (x * x); + } + return __accu1__; + }) ()) { + __accu0__.append (2 * x); + } + return __accu0__; + }) (); + autoTester.check (nested); + var a = 100; + var x = 5; + var scopeTest = (function () { + var __accu0__ = []; + for (var x = 0; x < 5; x++) { + __accu0__.append (x + a); + } + return __accu0__; + }) (); + autoTester.check (x); + autoTester.check (scopeTest); +}; + +//# sourceMappingURL=list_comprehensions.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/list_comprehensions.tree b/transcrypt/development/automated_tests/transcrypt/__target__39/list_comprehensions.tree new file mode 100644 index 000000000..b96b05d4c --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/list_comprehensions.tree @@ -0,0 +1,446 @@ +file: Module + body: list + element: FunctionDef + name: str = run + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = autoTester + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Name + id: str = squares + ctx: Store + value: ListComp + elt: BinOp + left: Name + id: str = i + ctx: Load + op: Mult + right: Name + id: str = i + ctx: Load + generators: list + element: comprehension + target: Name + id: str = i + ctx: Store + iter: Call + func: Name + id: str = range + ctx: Load + args: list + element: Constant + value: int = 10 + kind: NoneType = None + keywords: list + ifs: list + element: BinOp + left: Name + id: str = i + ctx: Load + op: Mod + right: Constant + value: int = 2 + kind: NoneType = None + is_async: int = 0 + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = squares + ctx: Load + keywords: list + element: Assign + targets: list + element: Name + id: str = tuples + ctx: Store + value: ListComp + elt: Tuple + elts: list + element: Name + id: str = x + ctx: Load + element: Name + id: str = y + ctx: Load + element: Name + id: str = z + ctx: Load + ctx: Load + generators: list + element: comprehension + target: Name + id: str = x + ctx: Store + iter: Tuple + elts: list + element: Constant + value: int = 100 + kind: NoneType = None + element: Constant + value: int = 200 + kind: NoneType = None + element: Constant + value: int = 300 + kind: NoneType = None + element: Constant + value: int = 400 + kind: NoneType = None + element: Constant + value: int = 500 + kind: NoneType = None + element: Constant + value: int = 600 + kind: NoneType = None + element: Constant + value: int = 700 + kind: NoneType = None + ctx: Load + ifs: list + is_async: int = 0 + element: comprehension + target: Name + id: str = y + ctx: Store + iter: Tuple + elts: list + element: Constant + value: int = 10 + kind: NoneType = None + element: Constant + value: int = 20 + kind: NoneType = None + element: Constant + value: int = 30 + kind: NoneType = None + element: Constant + value: int = 40 + kind: NoneType = None + element: Constant + value: int = 50 + kind: NoneType = None + element: Constant + value: int = 60 + kind: NoneType = None + element: Constant + value: int = 70 + kind: NoneType = None + ctx: Load + ifs: list + element: Compare + left: Constant + value: int = 20 + kind: NoneType = None + ops: list + element: Lt + element: Lt + comparators: list + element: Name + id: str = y + ctx: Load + element: Constant + value: int = 60 + kind: NoneType = None + is_async: int = 0 + element: comprehension + target: Name + id: str = z + ctx: Store + iter: Tuple + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + element: Constant + value: int = 4 + kind: NoneType = None + element: Constant + value: int = 5 + kind: NoneType = None + element: Constant + value: int = 6 + kind: NoneType = None + element: Constant + value: int = 7 + kind: NoneType = None + ctx: Load + ifs: list + element: Compare + left: Constant + value: int = 200 + kind: NoneType = None + ops: list + element: Lt + element: Lt + comparators: list + element: Name + id: str = x + ctx: Load + element: Constant + value: int = 600 + kind: NoneType = None + element: Compare + left: Constant + value: int = 2 + kind: NoneType = None + ops: list + element: Lt + element: Lt + comparators: list + element: Name + id: str = z + ctx: Load + element: Constant + value: int = 6 + kind: NoneType = None + is_async: int = 0 + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = tuples + ctx: Load + keywords: list + element: Assign + targets: list + element: Name + id: str = tricky + ctx: Store + value: ListComp + elt: Tuple + elts: list + element: BinOp + left: Constant + value: int = 2 + kind: NoneType = None + op: Mult + right: Name + id: str = x + ctx: Load + element: BinOp + left: Constant + value: int = 3 + kind: NoneType = None + op: Mult + right: Name + id: str = y + ctx: Load + ctx: Load + generators: list + element: comprehension + target: Tuple + elts: list + element: Name + id: str = x + ctx: Store + element: Name + id: str = y + ctx: Store + ctx: Store + iter: Tuple + elts: list + element: Tuple + elts: list + element: Constant + value: int = 10 + kind: NoneType = None + element: Constant + value: int = 11 + kind: NoneType = None + ctx: Load + element: Tuple + elts: list + element: Constant + value: int = 20 + kind: NoneType = None + element: Constant + value: int = 21 + kind: NoneType = None + ctx: Load + ctx: Load + ifs: list + is_async: int = 0 + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = tricky + ctx: Load + keywords: list + element: Assign + targets: list + element: Name + id: str = nested + ctx: Store + value: ListComp + elt: BinOp + left: Constant + value: int = 2 + kind: NoneType = None + op: Mult + right: Name + id: str = x + ctx: Load + generators: list + element: comprehension + target: Name + id: str = x + ctx: Store + iter: ListComp + elt: BinOp + left: Name + id: str = x + ctx: Load + op: Mult + right: Name + id: str = x + ctx: Load + generators: list + element: comprehension + target: Name + id: str = x + ctx: Store + iter: Call + func: Name + id: str = range + ctx: Load + args: list + element: Constant + value: int = 3 + kind: NoneType = None + keywords: list + ifs: list + is_async: int = 0 + ifs: list + is_async: int = 0 + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = nested + ctx: Load + keywords: list + element: Assign + targets: list + element: Name + id: str = a + ctx: Store + value: Constant + value: int = 100 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = x + ctx: Store + value: Constant + value: int = 5 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = scopeTest + ctx: Store + value: ListComp + elt: BinOp + left: Name + id: str = x + ctx: Load + op: Add + right: Name + id: str = a + ctx: Load + generators: list + element: comprehension + target: Name + id: str = x + ctx: Store + iter: Call + func: Name + id: str = range + ctx: Load + args: list + element: Constant + value: int = 5 + kind: NoneType = None + keywords: list + ifs: list + is_async: int = 0 + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = x + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = scopeTest + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/local_classes.js b/transcrypt/development/automated_tests/transcrypt/__target__39/local_classes.js new file mode 100644 index 000000000..8f2e14c60 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/local_classes.js @@ -0,0 +1,85 @@ +// Transcrypt'ed from Python, 2021-05-14 15:01:25 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get run () {return run;}, set run (value) {run = value;}}); +var __name__ = 'local_classes'; +export var run = function (autoTester) { + var A = __class__ ('A', [object], { + __module__: __name__, + B: __class__ ('B', [object], { + __module__: __name__, + C: __class__ ('C', [object], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self, x) { + self.x = x; + });}, + get tell () {return __get__ (this, function (self) { + autoTester.check (self.x); + autoTester.check (self.e); + });}, + e: 3 + }), + get __init__ () {return __get__ (this, function (self, x) { + self.x = x; + });}, + get tell () {return __get__ (this, function (self) { + autoTester.check (self.x); + autoTester.check (self.d); + });}, + d: 2 + }), + c: 1, + get __init__ () {return __get__ (this, function (self, x) { + self.x = x; + });}, + get tell () {return __get__ (this, function (self) { + autoTester.check (self.x); + autoTester.check (self.c); + });} + }); + var f = function (x) { + var G = __class__ ('G', [object], { + __module__: __name__, + H: __class__ ('H', [object], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self, x) { + self.x = x; + });}, + get tell () {return __get__ (this, function (self) { + autoTester.check (self.x); + autoTester.check (self.i); + });}, + i: 5 + }), + get __init__ () {return __get__ (this, function (self, x) { + self.x = x; + });}, + get tell () {return __get__ (this, function (self) { + autoTester.check (self.x); + });}, + k: 4 + }); + var g = G (6); + g.tell (); + autoTester.check (g.k); + var h = G.H (7); + h.tell (); + autoTester.check (h.i); + var P = __class__ ('P', [A.B], { + __module__: __name__, + }); + var p = P (7); + p.tell (); + autoTester.check (p.d); + }; + var a = A (8); + var b = a.B (9); + var c = b.C (10); + a.tell (); + b.tell (); + c.tell (); + autoTester.check (a.c); + autoTester.check (b.d); + f (7); +}; + +//# sourceMappingURL=local_classes.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/local_classes.tree b/transcrypt/development/automated_tests/transcrypt/__target__39/local_classes.tree new file mode 100644 index 000000000..71702d0b7 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/local_classes.tree @@ -0,0 +1,780 @@ +file: Module + body: list + element: FunctionDef + name: str = run + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = autoTester + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: ClassDef + name: str = A + bases: list + keywords: list + body: list + element: ClassDef + name: str = B + bases: list + keywords: list + body: list + element: ClassDef + name: str = C + bases: list + keywords: list + body: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = x + ctx: Store + value: Name + id: str = x + ctx: Load + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = tell + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = x + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = e + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = e + ctx: Store + value: Constant + value: int = 3 + kind: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = x + ctx: Store + value: Name + id: str = x + ctx: Load + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = tell + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = x + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = d + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = d + ctx: Store + value: Constant + value: int = 2 + kind: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: Assign + targets: list + element: Name + id: str = c + ctx: Store + value: Constant + value: int = 1 + kind: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = x + ctx: Store + value: Name + id: str = x + ctx: Load + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = tell + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = x + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = c + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: FunctionDef + name: str = f + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: ClassDef + name: str = G + bases: list + keywords: list + body: list + element: ClassDef + name: str = H + bases: list + keywords: list + body: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = x + ctx: Store + value: Name + id: str = x + ctx: Load + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = tell + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = x + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = i + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = i + ctx: Store + value: Constant + value: int = 5 + kind: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = x + ctx: Store + value: Name + id: str = x + ctx: Load + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = tell + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = x + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = k + ctx: Store + value: Constant + value: int = 4 + kind: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: Assign + targets: list + element: Name + id: str = g + ctx: Store + value: Call + func: Name + id: str = G + ctx: Load + args: list + element: Constant + value: int = 6 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = g + ctx: Load + attr: str = tell + ctx: Load + args: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = g + ctx: Load + attr: str = k + ctx: Load + keywords: list + element: Assign + targets: list + element: Name + id: str = h + ctx: Store + value: Call + func: Attribute + value: Name + id: str = G + ctx: Load + attr: str = H + ctx: Load + args: list + element: Constant + value: int = 7 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = h + ctx: Load + attr: str = tell + ctx: Load + args: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = h + ctx: Load + attr: str = i + ctx: Load + keywords: list + element: ClassDef + name: str = P + bases: list + element: Attribute + value: Name + id: str = A + ctx: Load + attr: str = B + ctx: Load + keywords: list + body: list + element: Pass + decorator_list: list + element: Assign + targets: list + element: Name + id: str = p + ctx: Store + value: Call + func: Name + id: str = P + ctx: Load + args: list + element: Constant + value: int = 7 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = p + ctx: Load + attr: str = tell + ctx: Load + args: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = p + ctx: Load + attr: str = d + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = a + ctx: Store + value: Call + func: Name + id: str = A + ctx: Load + args: list + element: Constant + value: int = 8 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = b + ctx: Store + value: Call + func: Attribute + value: Name + id: str = a + ctx: Load + attr: str = B + ctx: Load + args: list + element: Constant + value: int = 9 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = c + ctx: Store + value: Call + func: Attribute + value: Name + id: str = b + ctx: Load + attr: str = C + ctx: Load + args: list + element: Constant + value: int = 10 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = a + ctx: Load + attr: str = tell + ctx: Load + args: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = b + ctx: Load + attr: str = tell + ctx: Load + args: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = c + ctx: Load + attr: str = tell + ctx: Load + args: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = a + ctx: Load + attr: str = c + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = b + ctx: Load + attr: str = d + ctx: Load + keywords: list + element: Expr + value: Call + func: Name + id: str = f + ctx: Load + args: list + element: Constant + value: int = 7 + kind: NoneType = None + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/math.js b/transcrypt/development/automated_tests/transcrypt/__target__39/math.js new file mode 100644 index 000000000..80f211d81 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/math.js @@ -0,0 +1,59 @@ +// Transcrypt'ed from Python, 2021-05-14 15:01:24 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get acos () {return acos;}, set acos (value) {acos = value;}, get acosh () {return acosh;}, set acosh (value) {acosh = value;}, get asin () {return asin;}, set asin (value) {asin = value;}, get asinh () {return asinh;}, set asinh (value) {asinh = value;}, get atan () {return atan;}, set atan (value) {atan = value;}, get atan2 () {return atan2;}, set atan2 (value) {atan2 = value;}, get atanh () {return atanh;}, set atanh (value) {atanh = value;}, get ceil () {return ceil;}, set ceil (value) {ceil = value;}, get cos () {return cos;}, set cos (value) {cos = value;}, get cosh () {return cosh;}, set cosh (value) {cosh = value;}, get degrees () {return degrees;}, set degrees (value) {degrees = value;}, get e () {return e;}, set e (value) {e = value;}, get exp () {return exp;}, set exp (value) {exp = value;}, get expm1 () {return expm1;}, set expm1 (value) {expm1 = value;}, get floor () {return floor;}, set floor (value) {floor = value;}, get hypot () {return hypot;}, set hypot (value) {hypot = value;}, get inf () {return inf;}, set inf (value) {inf = value;}, get isnan () {return isnan;}, set isnan (value) {isnan = value;}, get log () {return log;}, set log (value) {log = value;}, get log10 () {return log10;}, set log10 (value) {log10 = value;}, get log1p () {return log1p;}, set log1p (value) {log1p = value;}, get log2 () {return log2;}, set log2 (value) {log2 = value;}, get modf () {return modf;}, set modf (value) {modf = value;}, get nan () {return nan;}, set nan (value) {nan = value;}, get pi () {return pi;}, set pi (value) {pi = value;}, get pow () {return pow;}, set pow (value) {pow = value;}, get radians () {return radians;}, set radians (value) {radians = value;}, get sin () {return sin;}, set sin (value) {sin = value;}, get sinh () {return sinh;}, set sinh (value) {sinh = value;}, get sqrt () {return sqrt;}, set sqrt (value) {sqrt = value;}, get tan () {return tan;}, set tan (value) {tan = value;}, get tanh () {return tanh;}, set tanh (value) {tanh = value;}, get trunc () {return trunc;}, set trunc (value) {trunc = value;}}); +var __name__ = 'math'; +export var pi = Math.PI; +export var e = Math.E; +export var exp = Math.exp; +export var expm1 = function (x) { + return Math.exp (x) - 1; +}; +export var log = function (x, base) { + return (base === undefined ? Math.log (x) : Math.log (x) / Math.log (base)); +}; +export var log1p = function (x) { + return Math.log (x + 1); +}; +export var log2 = function (x) { + return Math.log (x) / Math.LN2; +}; +export var log10 = function (x) { + return Math.log (x) / Math.LN10; +}; +export var pow = Math.pow; +export var sqrt = Math.sqrt; +export var sin = Math.sin; +export var cos = Math.cos; +export var tan = Math.tan; +export var asin = Math.asin; +export var acos = Math.acos; +export var atan = Math.atan; +export var atan2 = Math.atan2; +export var hypot = Math.hypot; +export var degrees = function (x) { + return (x * 180) / Math.PI; +}; +export var radians = function (x) { + return (x * Math.PI) / 180; +}; +export var sinh = Math.sinh; +export var cosh = Math.cosh; +export var tanh = Math.tanh; +export var asinh = Math.asinh; +export var acosh = Math.acosh; +export var atanh = Math.atanh; +export var floor = Math.floor; +export var ceil = Math.ceil; +export var trunc = Math.trunc; +export var isnan = isNaN; +export var inf = Infinity; +export var nan = NaN; +export var modf = function (n) { + var sign = (n >= 0 ? 1 : -(1)); + var __left0__ = divmod (abs (n), 1); + var f = __left0__ [0]; + var mod = __left0__ [1]; + return tuple ([mod * sign, f * sign]); +}; + +//# sourceMappingURL=math.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/math.tree b/transcrypt/development/automated_tests/transcrypt/__target__39/math.tree new file mode 100644 index 000000000..9792aede6 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/math.tree @@ -0,0 +1,679 @@ +file: Module + body: list + element: Assign + targets: list + element: Name + id: str = pi + ctx: Store + value: Attribute + value: Name + id: str = Math + ctx: Load + attr: str = PI + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = e + ctx: Store + value: Attribute + value: Name + id: str = Math + ctx: Load + attr: str = E + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = exp + ctx: Store + value: Attribute + value: Name + id: str = Math + ctx: Load + attr: str = exp + ctx: Load + type_comment: NoneType = None + element: FunctionDef + name: str = expm1 + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: BinOp + left: Call + func: Attribute + value: Name + id: str = Math + ctx: Load + attr: str = exp + ctx: Load + args: list + element: Name + id: str = x + ctx: Load + keywords: list + op: Sub + right: Constant + value: int = 1 + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = log + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = base + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: IfExp + test: Compare + left: Name + id: str = base + ctx: Load + ops: list + element: Is + comparators: list + element: Name + id: str = js_undefined + ctx: Load + body: Call + func: Attribute + value: Name + id: str = Math + ctx: Load + attr: str = log + ctx: Load + args: list + element: Name + id: str = x + ctx: Load + keywords: list + orelse: BinOp + left: Call + func: Attribute + value: Name + id: str = Math + ctx: Load + attr: str = log + ctx: Load + args: list + element: Name + id: str = x + ctx: Load + keywords: list + op: Div + right: Call + func: Attribute + value: Name + id: str = Math + ctx: Load + attr: str = log + ctx: Load + args: list + element: Name + id: str = base + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = log1p + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Call + func: Attribute + value: Name + id: str = Math + ctx: Load + attr: str = log + ctx: Load + args: list + element: BinOp + left: Name + id: str = x + ctx: Load + op: Add + right: Constant + value: int = 1 + kind: NoneType = None + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = log2 + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: BinOp + left: Call + func: Attribute + value: Name + id: str = Math + ctx: Load + attr: str = log + ctx: Load + args: list + element: Name + id: str = x + ctx: Load + keywords: list + op: Div + right: Attribute + value: Name + id: str = Math + ctx: Load + attr: str = LN2 + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = log10 + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: BinOp + left: Call + func: Attribute + value: Name + id: str = Math + ctx: Load + attr: str = log + ctx: Load + args: list + element: Name + id: str = x + ctx: Load + keywords: list + op: Div + right: Attribute + value: Name + id: str = Math + ctx: Load + attr: str = LN10 + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = pow + ctx: Store + value: Attribute + value: Name + id: str = Math + ctx: Load + attr: str = pow + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = sqrt + ctx: Store + value: Attribute + value: Name + id: str = Math + ctx: Load + attr: str = sqrt + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = sin + ctx: Store + value: Attribute + value: Name + id: str = Math + ctx: Load + attr: str = sin + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = cos + ctx: Store + value: Attribute + value: Name + id: str = Math + ctx: Load + attr: str = cos + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = tan + ctx: Store + value: Attribute + value: Name + id: str = Math + ctx: Load + attr: str = tan + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = asin + ctx: Store + value: Attribute + value: Name + id: str = Math + ctx: Load + attr: str = asin + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = acos + ctx: Store + value: Attribute + value: Name + id: str = Math + ctx: Load + attr: str = acos + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = atan + ctx: Store + value: Attribute + value: Name + id: str = Math + ctx: Load + attr: str = atan + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = atan2 + ctx: Store + value: Attribute + value: Name + id: str = Math + ctx: Load + attr: str = atan2 + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = hypot + ctx: Store + value: Attribute + value: Name + id: str = Math + ctx: Load + attr: str = hypot + ctx: Load + type_comment: NoneType = None + element: FunctionDef + name: str = degrees + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: BinOp + left: BinOp + left: Name + id: str = x + ctx: Load + op: Mult + right: Constant + value: int = 180 + kind: NoneType = None + op: Div + right: Attribute + value: Name + id: str = Math + ctx: Load + attr: str = PI + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = radians + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: BinOp + left: BinOp + left: Name + id: str = x + ctx: Load + op: Mult + right: Attribute + value: Name + id: str = Math + ctx: Load + attr: str = PI + ctx: Load + op: Div + right: Constant + value: int = 180 + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = sinh + ctx: Store + value: Attribute + value: Name + id: str = Math + ctx: Load + attr: str = sinh + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = cosh + ctx: Store + value: Attribute + value: Name + id: str = Math + ctx: Load + attr: str = cosh + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = tanh + ctx: Store + value: Attribute + value: Name + id: str = Math + ctx: Load + attr: str = tanh + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = asinh + ctx: Store + value: Attribute + value: Name + id: str = Math + ctx: Load + attr: str = asinh + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = acosh + ctx: Store + value: Attribute + value: Name + id: str = Math + ctx: Load + attr: str = acosh + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = atanh + ctx: Store + value: Attribute + value: Name + id: str = Math + ctx: Load + attr: str = atanh + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = floor + ctx: Store + value: Attribute + value: Name + id: str = Math + ctx: Load + attr: str = floor + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = ceil + ctx: Store + value: Attribute + value: Name + id: str = Math + ctx: Load + attr: str = ceil + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = trunc + ctx: Store + value: Attribute + value: Name + id: str = Math + ctx: Load + attr: str = trunc + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = isnan + ctx: Store + value: Name + id: str = js_isNaN + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = inf + ctx: Store + value: Name + id: str = js_Infinity + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = nan + ctx: Store + value: Name + id: str = js_NaN + ctx: Load + type_comment: NoneType = None + element: FunctionDef + name: str = modf + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = n + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Name + id: str = sign + ctx: Store + value: IfExp + test: Compare + left: Name + id: str = n + ctx: Load + ops: list + element: GtE + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + body: Constant + value: int = 1 + kind: NoneType = None + orelse: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = f + ctx: Store + element: Name + id: str = mod + ctx: Store + ctx: Store + value: Call + func: Name + id: str = divmod + ctx: Load + args: list + element: Call + func: Name + id: str = abs + ctx: Load + args: list + element: Name + id: str = n + ctx: Load + keywords: list + element: Constant + value: int = 1 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Return + value: Tuple + elts: list + element: BinOp + left: Name + id: str = mod + ctx: Load + op: Mult + right: Name + id: str = sign + ctx: Load + element: BinOp + left: Name + id: str = f + ctx: Load + op: Mult + right: Name + id: str = sign + ctx: Load + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/metaclasses.js b/transcrypt/development/automated_tests/transcrypt/__target__39/metaclasses.js new file mode 100644 index 000000000..1d1500195 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/metaclasses.js @@ -0,0 +1,61 @@ +// Transcrypt'ed from Python, 2021-05-14 15:01:25 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +var __all__ = dict ({get Animal () {return Animal;}, set Animal (value) {Animal = value;}, get Plant () {return Plant;}, set Plant (value) {Plant = value;}, get Stone () {return Stone;}, set Stone (value) {Stone = value;}, get Uppercaser () {return Uppercaser;}, set Uppercaser (value) {Uppercaser = value;}, get UppercaserMeta () {return UppercaserMeta;}, set UppercaserMeta (value) {UppercaserMeta = value;}, get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get run () {return run;}, set run (value) {run = value;}}); +var __name__ = 'metaclasses'; +export var UppercaserMeta = __class__ ('UppercaserMeta', [py_metatype], { + __module__: __name__, + get __new__ () {return __get__ (this, function (meta, py_name, bases, attribs) { + var upperAttribs = {}; + for (var attribKey in attribs) { + } + return py_metatype.__new__ (meta, py_name, bases, upperAttribs); + });} +}); +export var Uppercaser = __class__ ('Uppercaser', [object], { + __module__: __name__, +}, UppercaserMeta); +export var Animal = __class__ ('Animal', [Uppercaser], { + __module__: __name__, + Thoughts: __class__ ('Thoughts', [object], { + __module__: __name__, + quantity: 7 + }), + color: 'Brown', + state: 'Moving', + get move () {return __get__ (this, function (self) { + return 'Move'; + });} +}); +export var Plant = __class__ ('Plant', [Uppercaser], { + __module__: __name__, + Thoughts: __class__ ('Thoughts', [object], { + __module__: __name__, + quantity: 6 + }), + color: 'Green', + state: 'Growing', + get grow () {return __get__ (this, function (self) { + return 'Grow'; + });} +}); +export var Stone = __class__ ('Stone', [object], { + __module__: __name__, + Thoughts: __class__ ('Thoughts', [object], { + __module__: __name__, + quantity: 5 + }), + color: 'Gray', + get be () {return __get__ (this, function (self) { + return 'Being'; + });} +}); +export var run = function (autoTester) { + var animal = Animal (); + autoTester.check (animal.THOUGHTS.quantity, Animal.COLOR, animal.COLOR, animal.MOVE ()); + var plant = Plant (); + autoTester.check (plant.THOUGHTS.quantity, Plant.COLOR, plant.COLOR, plant.GROW ()); + var stone = Stone (); + autoTester.check (stone.Thoughts.quantity, Stone.color, stone.color, stone.be ()); +}; + +//# sourceMappingURL=metaclasses.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/metaclasses.tree b/transcrypt/development/automated_tests/transcrypt/__target__39/metaclasses.tree new file mode 100644 index 000000000..6b7b0fd0a --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/metaclasses.tree @@ -0,0 +1,517 @@ +file: Module + body: list + element: ImportFrom + module: str = org.transcrypt.stubs.browser + names: list + element: alias + name: str = __pragma__ + asname: NoneType = None + level: int = 0 + element: ClassDef + name: str = UppercaserMeta + bases: list + element: Name + id: str = type + ctx: Load + keywords: list + body: list + element: FunctionDef + name: str = __new__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = meta + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = name + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = bases + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = attribs + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = jsiter + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = upperAttribs + ctx: Store + value: Dict + keys: list + values: list + type_comment: NoneType = None + element: For + target: Name + id: str = attribKey + ctx: Store + iter: Name + id: str = attribs + ctx: Load + body: list + element: Assign + targets: list + element: Subscript + value: Name + id: str = upperAttribs + ctx: Load + slice: IfExp + test: Call + func: Attribute + value: Name + id: str = attribKey + ctx: Load + attr: str = startswith + ctx: Load + args: list + element: Constant + value: str = __ + kind: NoneType = None + keywords: list + body: Name + id: str = attribKey + ctx: Load + orelse: Call + func: Attribute + value: Name + id: str = attribKey + ctx: Load + attr: str = upper + ctx: Load + args: list + keywords: list + ctx: Store + value: Subscript + value: Name + id: str = attribs + ctx: Load + slice: Name + id: str = attribKey + ctx: Load + ctx: Load + type_comment: NoneType = None + orelse: list + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = nojsiter + kind: NoneType = None + keywords: list + element: Return + value: Call + func: Attribute + value: Name + id: str = type + ctx: Load + attr: str = __new__ + ctx: Load + args: list + element: Name + id: str = meta + ctx: Load + element: Name + id: str = name + ctx: Load + element: Name + id: str = bases + ctx: Load + element: Name + id: str = upperAttribs + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: ClassDef + name: str = Uppercaser + bases: list + keywords: list + element: keyword + arg: str = metaclass + value: Name + id: str = UppercaserMeta + ctx: Load + body: list + element: Pass + decorator_list: list + element: ClassDef + name: str = Animal + bases: list + element: Name + id: str = Uppercaser + ctx: Load + keywords: list + body: list + element: ClassDef + name: str = Thoughts + bases: list + keywords: list + body: list + element: Assign + targets: list + element: Name + id: str = quantity + ctx: Store + value: Constant + value: int = 7 + kind: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: Assign + targets: list + element: Name + id: str = color + ctx: Store + value: Constant + value: str = Brown + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = state + ctx: Store + value: Constant + value: str = Moving + kind: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = move + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Constant + value: str = Move + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: ClassDef + name: str = Plant + bases: list + element: Name + id: str = Uppercaser + ctx: Load + keywords: list + body: list + element: ClassDef + name: str = Thoughts + bases: list + keywords: list + body: list + element: Assign + targets: list + element: Name + id: str = quantity + ctx: Store + value: Constant + value: int = 6 + kind: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: Assign + targets: list + element: Name + id: str = color + ctx: Store + value: Constant + value: str = Green + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = state + ctx: Store + value: Constant + value: str = Growing + kind: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = grow + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Constant + value: str = Grow + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: ClassDef + name: str = Stone + bases: list + keywords: list + body: list + element: ClassDef + name: str = Thoughts + bases: list + keywords: list + body: list + element: Assign + targets: list + element: Name + id: str = quantity + ctx: Store + value: Constant + value: int = 5 + kind: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: Assign + targets: list + element: Name + id: str = color + ctx: Store + value: Constant + value: str = Gray + kind: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = be + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Constant + value: str = Being + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: FunctionDef + name: str = run + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = autoTester + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Name + id: str = animal + ctx: Store + value: Call + func: Name + id: str = Animal + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Attribute + value: Name + id: str = animal + ctx: Load + attr: str = THOUGHTS + ctx: Load + attr: str = quantity + ctx: Load + element: Attribute + value: Name + id: str = Animal + ctx: Load + attr: str = COLOR + ctx: Load + element: Attribute + value: Name + id: str = animal + ctx: Load + attr: str = COLOR + ctx: Load + element: Call + func: Attribute + value: Name + id: str = animal + ctx: Load + attr: str = MOVE + ctx: Load + args: list + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = plant + ctx: Store + value: Call + func: Name + id: str = Plant + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Attribute + value: Name + id: str = plant + ctx: Load + attr: str = THOUGHTS + ctx: Load + attr: str = quantity + ctx: Load + element: Attribute + value: Name + id: str = Plant + ctx: Load + attr: str = COLOR + ctx: Load + element: Attribute + value: Name + id: str = plant + ctx: Load + attr: str = COLOR + ctx: Load + element: Call + func: Attribute + value: Name + id: str = plant + ctx: Load + attr: str = GROW + ctx: Load + args: list + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = stone + ctx: Store + value: Call + func: Name + id: str = Stone + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Attribute + value: Name + id: str = stone + ctx: Load + attr: str = Thoughts + ctx: Load + attr: str = quantity + ctx: Load + element: Attribute + value: Name + id: str = Stone + ctx: Load + attr: str = color + ctx: Load + element: Attribute + value: Name + id: str = stone + ctx: Load + attr: str = color + ctx: Load + element: Call + func: Attribute + value: Name + id: str = stone + ctx: Load + attr: str = be + ctx: Load + args: list + keywords: list + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/method_and_class_decorators.js b/transcrypt/development/automated_tests/transcrypt/__target__39/method_and_class_decorators.js new file mode 100644 index 000000000..8bb10d495 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/method_and_class_decorators.js @@ -0,0 +1,187 @@ +// Transcrypt'ed from Python, 2021-05-14 15:01:25 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get run () {return run;}, set run (value) {run = value;}}); +var __name__ = 'method_and_class_decorators'; +export var run = function (autoTester) { + var adecorator = __class__ ('adecorator', [object], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self) { + var kwargs = dict (); + if (arguments.length) { + var __ilastarg0__ = arguments.length - 1; + if (arguments [__ilastarg0__] && arguments [__ilastarg0__].hasOwnProperty ("__kwargtrans__")) { + var __allkwargs0__ = arguments [__ilastarg0__--]; + for (var __attrib0__ in __allkwargs0__) { + switch (__attrib0__) { + case 'self': var self = __allkwargs0__ [__attrib0__]; break; + default: kwargs [__attrib0__] = __allkwargs0__ [__attrib0__]; + } + } + delete kwargs.__kwargtrans__; + } + var args = tuple ([].slice.apply (arguments).slice (1, __ilastarg0__ + 1)); + } + else { + var args = tuple (); + } + self.args = args; + self.kwargs = kwargs; + });}, + get __call__ () {return __get__ (this, function (self, func) { + var wrapper = function () { + var kwargs = dict (); + if (arguments.length) { + var __ilastarg0__ = arguments.length - 1; + if (arguments [__ilastarg0__] && arguments [__ilastarg0__].hasOwnProperty ("__kwargtrans__")) { + var __allkwargs0__ = arguments [__ilastarg0__--]; + for (var __attrib0__ in __allkwargs0__) { + switch (__attrib0__) { + default: kwargs [__attrib0__] = __allkwargs0__ [__attrib0__]; + } + } + delete kwargs.__kwargtrans__; + } + var args = tuple ([].slice.apply (arguments).slice (0, __ilastarg0__ + 1)); + } + else { + var args = tuple (); + } + var slf = ; + var saved = dict ({}); + for (var [k, v] of self.kwargs.py_items ()) { + if (hasattr (slf, k)) { + setattr (slf, k, v); + } + } + var ret = func (...args, __kwargtrans__ (kwargs)); + for (var [k, v] of saved.py_items ()) { + setattr (slf, k, v); + } + return ret; + }; + return wrapper; + });} + }); + var method_decorator = function (prefix) { + var inner_decorator = function (method) { + var wrapper = function (self, py_name) { + autoTester.check (py_name); + return method (self, prefix + py_name); + }; + return wrapper; + }; + return inner_decorator; + }; + var method_decorator2 = function (prefix) { + var inner_decorator = function (method) { + var wrapper = function (self, py_name) { + autoTester.check (py_name); + return method (self, prefix + py_name); + }; + return wrapper; + }; + return inner_decorator; + }; + var multiplier = function (m) { + var inner_decorator = function (method) { + var wrapper = function (self, num) { + autoTester.check (num); + var n = method (self, num); + return n * m; + }; + return wrapper; + }; + return inner_decorator; + }; + var classmethod_decorator = function (method) { + var wrapper = function (cls, a, b) { + autoTester.check (cls.__name__, a, b); + return method (cls, b, a); + }; + return wrapper; + }; + var class_decorator = function (prefix) { + var wrapper = function (cls) { + autoTester.check (prefix + cls.__name__); + return cls; + }; + return wrapper; + }; + var MyClass = class_decorator ('outer_') ( __class__ ('MyClass', [object], { + __module__: __name__, + InnerClass: class_decorator ('inner_') ( __class__ ('InnerClass', [object], { + __module__: __name__, + get mymethod () {return __get__ (this, method_decorator ('inner_first_') (method_decorator2 ('inner_second_') (function (self, py_name) { + autoTester.check (py_name); + })));}, + get myclassmethod () {return __getcm__ (this, classmethod_decorator (function (cls, a, b) { + autoTester.check (cls.__name__, a, b); + return a + b; + }));}, + get mystaticmethod () {return function (a, b) { + autoTester.check (a, b); + return a + b; + };}, + get _get_inner_property () {return __get__ (this, function (self) { + return 'I am a property'; + });} + })), + get __init__ () {return __get__ (this, function (self) { + self.greetings = 'Hello'; + });}, + get get_greetings () {return __get__ (this, __call__ (__call__ (adecorator, null, __kwargtrans__ ({greetings: 'Goodbye'})), null, function (self) { + return self.greetings; + }));}, + get mymethod () {return __get__ (this, method_decorator ('first_') (method_decorator2 ('second_') (function (self, py_name) { + autoTester.check (py_name); + })));}, + get number () {return __get__ (this, multiplier (5) (function (self, num) { + return num; + }));}, + get myclassmethod () {return __getcm__ (this, function (cls, a, b) { + autoTester.check (cls.__name__, a, b); + return a + b; + });}, + get mystaticmethod () {return function (a, b) { + autoTester.check (a + b); + return a + b; + };}, + get _get_simple_property () {return __get__ (this, function (self) { + return self.greetings; + });}, + get _set_simple_property () {return __get__ (this, function (self, value) { + self.greetings = value; + });}, + get run () {return __get__ (this, function (self) { + var inner_obj = self.InnerClass (); + inner_obj.mymethod ('Dog'); + var result1 = inner_obj.myclassmethod ('param1', 'param2'); + var result2 = self.InnerClass.myclassmethod ('param1', 'param2'); + autoTester.check (result1 == result2); + var result1 = inner_obj.mystaticmethod ('param1', 'param2'); + var result2 = self.InnerClass.mystaticmethod ('param1', 'param2'); + autoTester.check (result1 == result2); + autoTester.check (inner_obj.inner_property); + });} + })); + Object.defineProperty (MyClass, 'simple_property', property.call (MyClass, MyClass._get_simple_property, MyClass._set_simple_property)); + Object.defineProperty (MyClass.InnerClass, 'inner_property', property.call (MyClass.InnerClass, MyClass.InnerClass._get_inner_property));; + var myobj = MyClass (); + myobj.mymethod ('Cat'); + autoTester.check (myobj.greetings); + autoTester.check (myobj.get_greetings ()); + var result1 = myobj.myclassmethod ('param1', 'param2'); + var result2 = MyClass.myclassmethod ('param1', 'param2'); + autoTester.check (result1 == result2); + var result1 = myobj.mystaticmethod ('param1', 'param2'); + var result2 = MyClass.mystaticmethod ('param1', 'param2'); + autoTester.check (result1 == result2); + autoTester.check (myobj.number (3)); + autoTester.check (myobj.simple_property); + myobj.simple_property = 'New value'; + autoTester.check (myobj.simple_property); + autoTester.check (myobj.greetings == myobj.simple_property); + myobj.run (); +}; + +//# sourceMappingURL=method_and_class_decorators.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/method_and_class_decorators.tree b/transcrypt/development/automated_tests/transcrypt/__target__39/method_and_class_decorators.tree new file mode 100644 index 000000000..898a5cfdf --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/method_and_class_decorators.tree @@ -0,0 +1,1838 @@ +file: Module + body: list + element: ImportFrom + module: str = org.transcrypt.stubs.browser + names: list + element: alias + name: str = __pragma__ + asname: NoneType = None + level: int = 0 + element: FunctionDef + name: str = run + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = autoTester + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: ClassDef + name: str = adecorator + bases: list + keywords: list + body: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = kwargs + kind: NoneType = None + keywords: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: arg + arg: str = args + annotation: NoneType = None + type_comment: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: arg + arg: str = kwargs + annotation: NoneType = None + type_comment: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = args + ctx: Store + value: Name + id: str = args + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = kwargs + ctx: Store + value: Name + id: str = kwargs + ctx: Load + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = nokwargs + kind: NoneType = None + keywords: list + element: FunctionDef + name: str = __call__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = func + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = kwargs + kind: NoneType = None + keywords: list + element: FunctionDef + name: str = wrapper + args: arguments + posonlyargs: list + args: list + vararg: arg + arg: str = args + annotation: NoneType = None + type_comment: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: arg + arg: str = kwargs + annotation: NoneType = None + type_comment: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Name + id: str = slf + ctx: Store + value: Subscript + value: Name + id: str = args + ctx: Load + slice: Constant + value: int = 0 + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = saved + ctx: Store + value: Dict + keys: list + values: list + type_comment: NoneType = None + element: For + target: Tuple + elts: list + element: Name + id: str = k + ctx: Store + element: Name + id: str = v + ctx: Store + ctx: Store + iter: Call + func: Attribute + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = kwargs + ctx: Load + attr: str = items + ctx: Load + args: list + keywords: list + body: list + element: If + test: Call + func: Name + id: str = hasattr + ctx: Load + args: list + element: Name + id: str = slf + ctx: Load + element: Name + id: str = k + ctx: Load + keywords: list + body: list + element: Assign + targets: list + element: Subscript + value: Name + id: str = saved + ctx: Load + slice: Name + id: str = k + ctx: Load + ctx: Store + value: Call + func: Name + id: str = getattr + ctx: Load + args: list + element: Name + id: str = slf + ctx: Load + element: Name + id: str = k + ctx: Load + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = setattr + ctx: Load + args: list + element: Name + id: str = slf + ctx: Load + element: Name + id: str = k + ctx: Load + element: Name + id: str = v + ctx: Load + keywords: list + orelse: list + orelse: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = ret + ctx: Store + value: Call + func: Name + id: str = func + ctx: Load + args: list + element: Starred + value: Name + id: str = args + ctx: Load + ctx: Load + keywords: list + element: keyword + arg: NoneType = None + value: Name + id: str = kwargs + ctx: Load + type_comment: NoneType = None + element: For + target: Tuple + elts: list + element: Name + id: str = k + ctx: Store + element: Name + id: str = v + ctx: Store + ctx: Store + iter: Call + func: Attribute + value: Name + id: str = saved + ctx: Load + attr: str = items + ctx: Load + args: list + keywords: list + body: list + element: Expr + value: Call + func: Name + id: str = setattr + ctx: Load + args: list + element: Name + id: str = slf + ctx: Load + element: Name + id: str = k + ctx: Load + element: Name + id: str = v + ctx: Load + keywords: list + orelse: list + type_comment: NoneType = None + element: Return + value: Name + id: str = ret + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = nokwargs + kind: NoneType = None + keywords: list + element: Return + value: Name + id: str = wrapper + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: FunctionDef + name: str = method_decorator + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = prefix + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: FunctionDef + name: str = inner_decorator + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = method + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: FunctionDef + name: str = wrapper + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = name + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = name + ctx: Load + keywords: list + element: Return + value: Call + func: Name + id: str = method + ctx: Load + args: list + element: Name + id: str = self + ctx: Load + element: BinOp + left: Name + id: str = prefix + ctx: Load + op: Add + right: Name + id: str = name + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Return + value: Name + id: str = wrapper + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Return + value: Name + id: str = inner_decorator + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = method_decorator2 + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = prefix + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: FunctionDef + name: str = inner_decorator + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = method + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: FunctionDef + name: str = wrapper + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = name + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = name + ctx: Load + keywords: list + element: Return + value: Call + func: Name + id: str = method + ctx: Load + args: list + element: Name + id: str = self + ctx: Load + element: BinOp + left: Name + id: str = prefix + ctx: Load + op: Add + right: Name + id: str = name + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Return + value: Name + id: str = wrapper + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Return + value: Name + id: str = inner_decorator + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = multiplier + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = m + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: FunctionDef + name: str = inner_decorator + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = method + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: FunctionDef + name: str = wrapper + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = num + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = num + ctx: Load + keywords: list + element: Assign + targets: list + element: Name + id: str = n + ctx: Store + value: Call + func: Name + id: str = method + ctx: Load + args: list + element: Name + id: str = self + ctx: Load + element: Name + id: str = num + ctx: Load + keywords: list + type_comment: NoneType = None + element: Return + value: BinOp + left: Name + id: str = n + ctx: Load + op: Mult + right: Name + id: str = m + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Return + value: Name + id: str = wrapper + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Return + value: Name + id: str = inner_decorator + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = classmethod_decorator + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = method + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: FunctionDef + name: str = wrapper + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = cls + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = a + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = b + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = cls + ctx: Load + attr: str = __name__ + ctx: Load + element: Name + id: str = a + ctx: Load + element: Name + id: str = b + ctx: Load + keywords: list + element: Return + value: Call + func: Name + id: str = method + ctx: Load + args: list + element: Name + id: str = cls + ctx: Load + element: Name + id: str = b + ctx: Load + element: Name + id: str = a + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Return + value: Name + id: str = wrapper + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = class_decorator + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = prefix + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: FunctionDef + name: str = wrapper + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = cls + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BinOp + left: Name + id: str = prefix + ctx: Load + op: Add + right: Attribute + value: Name + id: str = cls + ctx: Load + attr: str = __name__ + ctx: Load + keywords: list + element: Return + value: Name + id: str = cls + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Return + value: Name + id: str = wrapper + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: ClassDef + name: str = MyClass + bases: list + keywords: list + body: list + element: ClassDef + name: str = InnerClass + bases: list + keywords: list + body: list + element: FunctionDef + name: str = mymethod + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = name + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = name + ctx: Load + keywords: list + decorator_list: list + element: Call + func: Name + id: str = method_decorator + ctx: Load + args: list + element: Constant + value: str = inner_first_ + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = method_decorator2 + ctx: Load + args: list + element: Constant + value: str = inner_second_ + kind: NoneType = None + keywords: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = myclassmethod + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = cls + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = a + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = b + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = cls + ctx: Load + attr: str = __name__ + ctx: Load + element: Name + id: str = a + ctx: Load + element: Name + id: str = b + ctx: Load + keywords: list + element: Return + value: BinOp + left: Name + id: str = a + ctx: Load + op: Add + right: Name + id: str = b + ctx: Load + decorator_list: list + element: Name + id: str = classmethod + ctx: Load + element: Name + id: str = classmethod_decorator + ctx: Load + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = mystaticmethod + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = a + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = b + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = a + ctx: Load + element: Name + id: str = b + ctx: Load + keywords: list + element: Return + value: BinOp + left: Name + id: str = a + ctx: Load + op: Add + right: Name + id: str = b + ctx: Load + decorator_list: list + element: Name + id: str = staticmethod + ctx: Load + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = inner_property + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Constant + value: str = I am a property + kind: NoneType = None + decorator_list: list + element: Name + id: str = property + ctx: Load + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: Call + func: Name + id: str = class_decorator + ctx: Load + args: list + element: Constant + value: str = inner_ + kind: NoneType = None + keywords: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = greetings + ctx: Store + value: Constant + value: str = Hello + kind: NoneType = None + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = opov + kind: NoneType = None + keywords: list + element: FunctionDef + name: str = get_greetings + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = greetings + ctx: Load + decorator_list: list + element: Call + func: Name + id: str = adecorator + ctx: Load + args: list + keywords: list + element: keyword + arg: str = greetings + value: Constant + value: str = Goodbye + kind: NoneType = None + returns: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = noopov + kind: NoneType = None + keywords: list + element: FunctionDef + name: str = mymethod + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = name + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = name + ctx: Load + keywords: list + decorator_list: list + element: Call + func: Name + id: str = method_decorator + ctx: Load + args: list + element: Constant + value: str = first_ + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = method_decorator2 + ctx: Load + args: list + element: Constant + value: str = second_ + kind: NoneType = None + keywords: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = number + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = num + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Name + id: str = num + ctx: Load + decorator_list: list + element: Call + func: Name + id: str = multiplier + ctx: Load + args: list + element: Constant + value: int = 5 + kind: NoneType = None + keywords: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = myclassmethod + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = cls + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = a + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = b + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = cls + ctx: Load + attr: str = __name__ + ctx: Load + element: Name + id: str = a + ctx: Load + element: Name + id: str = b + ctx: Load + keywords: list + element: Return + value: BinOp + left: Name + id: str = a + ctx: Load + op: Add + right: Name + id: str = b + ctx: Load + decorator_list: list + element: Name + id: str = classmethod + ctx: Load + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = mystaticmethod + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = a + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = b + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BinOp + left: Name + id: str = a + ctx: Load + op: Add + right: Name + id: str = b + ctx: Load + keywords: list + element: Return + value: BinOp + left: Name + id: str = a + ctx: Load + op: Add + right: Name + id: str = b + ctx: Load + decorator_list: list + element: Name + id: str = staticmethod + ctx: Load + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = simple_property + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = greetings + ctx: Load + decorator_list: list + element: Name + id: str = property + ctx: Load + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = simple_property + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = value + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = greetings + ctx: Store + value: Name + id: str = value + ctx: Load + type_comment: NoneType = None + decorator_list: list + element: Attribute + value: Name + id: str = simple_property + ctx: Load + attr: str = setter + ctx: Load + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = run + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Name + id: str = inner_obj + ctx: Store + value: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = InnerClass + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = inner_obj + ctx: Load + attr: str = mymethod + ctx: Load + args: list + element: Constant + value: str = Dog + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = result1 + ctx: Store + value: Call + func: Attribute + value: Name + id: str = inner_obj + ctx: Load + attr: str = myclassmethod + ctx: Load + args: list + element: Constant + value: str = param1 + kind: NoneType = None + element: Constant + value: str = param2 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = result2 + ctx: Store + value: Call + func: Attribute + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = InnerClass + ctx: Load + attr: str = myclassmethod + ctx: Load + args: list + element: Constant + value: str = param1 + kind: NoneType = None + element: Constant + value: str = param2 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Name + id: str = result1 + ctx: Load + ops: list + element: Eq + comparators: list + element: Name + id: str = result2 + ctx: Load + keywords: list + element: Assign + targets: list + element: Name + id: str = result1 + ctx: Store + value: Call + func: Attribute + value: Name + id: str = inner_obj + ctx: Load + attr: str = mystaticmethod + ctx: Load + args: list + element: Constant + value: str = param1 + kind: NoneType = None + element: Constant + value: str = param2 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = result2 + ctx: Store + value: Call + func: Attribute + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = InnerClass + ctx: Load + attr: str = mystaticmethod + ctx: Load + args: list + element: Constant + value: str = param1 + kind: NoneType = None + element: Constant + value: str = param2 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Name + id: str = result1 + ctx: Load + ops: list + element: Eq + comparators: list + element: Name + id: str = result2 + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = inner_obj + ctx: Load + attr: str = inner_property + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: Call + func: Name + id: str = class_decorator + ctx: Load + args: list + element: Constant + value: str = outer_ + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = myobj + ctx: Store + value: Call + func: Name + id: str = MyClass + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = myobj + ctx: Load + attr: str = mymethod + ctx: Load + args: list + element: Constant + value: str = Cat + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = myobj + ctx: Load + attr: str = greetings + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = myobj + ctx: Load + attr: str = get_greetings + ctx: Load + args: list + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = result1 + ctx: Store + value: Call + func: Attribute + value: Name + id: str = myobj + ctx: Load + attr: str = myclassmethod + ctx: Load + args: list + element: Constant + value: str = param1 + kind: NoneType = None + element: Constant + value: str = param2 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = result2 + ctx: Store + value: Call + func: Attribute + value: Name + id: str = MyClass + ctx: Load + attr: str = myclassmethod + ctx: Load + args: list + element: Constant + value: str = param1 + kind: NoneType = None + element: Constant + value: str = param2 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Name + id: str = result1 + ctx: Load + ops: list + element: Eq + comparators: list + element: Name + id: str = result2 + ctx: Load + keywords: list + element: Assign + targets: list + element: Name + id: str = result1 + ctx: Store + value: Call + func: Attribute + value: Name + id: str = myobj + ctx: Load + attr: str = mystaticmethod + ctx: Load + args: list + element: Constant + value: str = param1 + kind: NoneType = None + element: Constant + value: str = param2 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = result2 + ctx: Store + value: Call + func: Attribute + value: Name + id: str = MyClass + ctx: Load + attr: str = mystaticmethod + ctx: Load + args: list + element: Constant + value: str = param1 + kind: NoneType = None + element: Constant + value: str = param2 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Name + id: str = result1 + ctx: Load + ops: list + element: Eq + comparators: list + element: Name + id: str = result2 + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = myobj + ctx: Load + attr: str = number + ctx: Load + args: list + element: Constant + value: int = 3 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = myobj + ctx: Load + attr: str = simple_property + ctx: Load + keywords: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = myobj + ctx: Load + attr: str = simple_property + ctx: Store + value: Constant + value: str = New value + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = myobj + ctx: Load + attr: str = simple_property + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Attribute + value: Name + id: str = myobj + ctx: Load + attr: str = greetings + ctx: Load + ops: list + element: Eq + comparators: list + element: Attribute + value: Name + id: str = myobj + ctx: Load + attr: str = simple_property + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = myobj + ctx: Load + attr: str = run + ctx: Load + args: list + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/module_builtin.js b/transcrypt/development/automated_tests/transcrypt/__target__39/module_builtin.js new file mode 100644 index 000000000..75daae40f --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/module_builtin.js @@ -0,0 +1,43 @@ +// Transcrypt'ed from Python, 2021-05-14 15:01:25 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get canonizeString () {return canonizeString;}, set canonizeString (value) {canonizeString = value;}, get canonizeStringList () {return canonizeStringList;}, set canonizeStringList (value) {canonizeStringList = value;}, get run () {return run;}, set run (value) {run = value;}}); +var __name__ = 'module_builtin'; +export var canonizeString = function (aString) { + if (__envir__.executor_name == 'transcrypt') { + return aString.py_replace ('\t', '\\t').py_replace ('\n', '\\n'); + } + else { + return aString; + } +}; +export var canonizeStringList = function (stringList) { + return (function () { + var __accu0__ = []; + for (var aString of stringList) { + __accu0__.append (canonizeString (aString)); + } + return __accu0__; + }) (); +}; +export var run = function (autoTester) { + autoTester.check ('min', min (-(1.1), -(1), -(3))); + autoTester.check ('max', max (-(1.1), -(1), -(3))); + autoTester.check ('abs', abs (-(1)), abs (1), abs (0), abs (-(0.1)), abs (0.1)); + autoTester.check ('ord', ord ('a'), ord ()); + autoTester.check ('round', round (4.006), round (4.006, 2), round (4060, -(2)), round (-(4.006)), round (-(4.006), 2), round (-(4060), -(2)), round (1 / 2.0), round (1 / 2.0, 1), round (1 / 2, 1), round (1 / 3.0, 2), round (-(1) / 2.0), round (-(1) / 2.0, 1), round (-(1) / 2, 1), round (-(1) / 3.0, 2), round (0.5), round (0.51), round (1.5), round (1.51), round (1.51), round (2.5), round (2.59), round (3.5), round (3.59), round (-(0.5)), round (-(0.51)), round (-(1.5)), round (-(1.51)), round (-(1.51)), round (-(2.5)), round (-(2.59)), round (-(3.5)), round (-(3.59))); + var strings = ['der des dem den die der den die das des dem das', 'an auf hinter ueber neben vor zwischen', '\n durch\n fuer\n ohne\n um\n bis\n gegen\n entlang\n ', 'eins,zwei,drie,vier,fuenf,sechs,sieben']; + autoTester.check ('

split'); + for (var aString of strings) { + autoTester.check (canonizeString (aString), canonizeStringList (aString.py_split ()), canonizeStringList (aString.py_split (' ')), canonizeStringList (aString.py_split (' ', 4)), canonizeStringList (aString.py_split ('\t')), canonizeStringList (aString.py_split ('\t', 4)), canonizeStringList (aString.py_split ('\n')), canonizeStringList (aString.py_split ('\n', 4)), canonizeStringList (aString.py_split (',')), canonizeStringList (aString.py_split (',', 4)), '
'); + } + autoTester.check ('
rsplit'); + for (var aString of strings) { + autoTester.check (canonizeString (aString), canonizeStringList (aString.rsplit ()), canonizeStringList (aString.rsplit (' ')), canonizeStringList (aString.rsplit (' ', 4)), canonizeStringList (aString.rsplit ('\t')), canonizeStringList (aString.rsplit ('\t', 4)), canonizeStringList (aString.rsplit ('\n')), canonizeStringList (aString.rsplit ('\n', 4)), canonizeStringList (aString.rsplit (',')), canonizeStringList (aString.rsplit (',', 4)), '
'); + } + autoTester.check (''.isalpha ()); + autoTester.check ('123'.isalpha ()); + autoTester.check ('abc'.isalpha ()); + autoTester.check ('abc123'.isalpha ()); +}; + +//# sourceMappingURL=module_builtin.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/module_builtin.tree b/transcrypt/development/automated_tests/transcrypt/__target__39/module_builtin.tree new file mode 100644 index 000000000..375017c5c --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/module_builtin.tree @@ -0,0 +1,1248 @@ +file: Module + body: list + element: ImportFrom + module: str = org.transcrypt.stubs.browser + names: list + element: alias + name: str = __envir__ + asname: NoneType = None + level: int = 0 + element: FunctionDef + name: str = canonizeString + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = aString + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: Compare + left: Attribute + value: Name + id: str = __envir__ + ctx: Load + attr: str = executor_name + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = transcrypt + kind: NoneType = None + body: list + element: Return + value: Call + func: Attribute + value: Call + func: Attribute + value: Name + id: str = aString + ctx: Load + attr: str = replace + ctx: Load + args: list + element: Constant + value: str = + kind: NoneType = None + element: Constant + value: str = \t + kind: NoneType = None + keywords: list + attr: str = replace + ctx: Load + args: list + element: Constant + value: str = + + kind: NoneType = None + element: Constant + value: str = \n + kind: NoneType = None + keywords: list + orelse: list + element: Return + value: Name + id: str = aString + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = canonizeStringList + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = stringList + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: ListComp + elt: Call + func: Name + id: str = canonizeString + ctx: Load + args: list + element: Name + id: str = aString + ctx: Load + keywords: list + generators: list + element: comprehension + target: Name + id: str = aString + ctx: Store + iter: Name + id: str = stringList + ctx: Load + ifs: list + is_async: int = 0 + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = run + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = autoTester + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = min + kind: NoneType = None + element: Call + func: Name + id: str = min + ctx: Load + args: list + element: UnaryOp + op: USub + operand: Constant + value: float = 1.1 + kind: NoneType = None + element: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + element: UnaryOp + op: USub + operand: Constant + value: int = 3 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = max + kind: NoneType = None + element: Call + func: Name + id: str = max + ctx: Load + args: list + element: UnaryOp + op: USub + operand: Constant + value: float = 1.1 + kind: NoneType = None + element: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + element: UnaryOp + op: USub + operand: Constant + value: int = 3 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = abs + kind: NoneType = None + element: Call + func: Name + id: str = abs + ctx: Load + args: list + element: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = abs + ctx: Load + args: list + element: Constant + value: int = 1 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = abs + ctx: Load + args: list + element: Constant + value: int = 0 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = abs + ctx: Load + args: list + element: UnaryOp + op: USub + operand: Constant + value: float = 0.1 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = abs + ctx: Load + args: list + element: Constant + value: float = 0.1 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = ord + kind: NoneType = None + element: Call + func: Name + id: str = ord + ctx: Load + args: list + element: Constant + value: str = a + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = ord + ctx: Load + args: list + element: Subscript + value: Constant + value: str = e´ + kind: NoneType = None + slice: Constant + value: int = 0 + kind: NoneType = None + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = round + kind: NoneType = None + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: Constant + value: float = 4.006 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: Constant + value: float = 4.006 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: Constant + value: int = 4060 + kind: NoneType = None + element: UnaryOp + op: USub + operand: Constant + value: int = 2 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: UnaryOp + op: USub + operand: Constant + value: float = 4.006 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: UnaryOp + op: USub + operand: Constant + value: float = 4.006 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: UnaryOp + op: USub + operand: Constant + value: int = 4060 + kind: NoneType = None + element: UnaryOp + op: USub + operand: Constant + value: int = 2 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: BinOp + left: Constant + value: int = 1 + kind: NoneType = None + op: Div + right: Constant + value: float = 2.0 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: BinOp + left: Constant + value: int = 1 + kind: NoneType = None + op: Div + right: Constant + value: float = 2.0 + kind: NoneType = None + element: Constant + value: int = 1 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: BinOp + left: Constant + value: int = 1 + kind: NoneType = None + op: Div + right: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 1 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: BinOp + left: Constant + value: int = 1 + kind: NoneType = None + op: Div + right: Constant + value: float = 3.0 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: BinOp + left: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + op: Div + right: Constant + value: float = 2.0 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: BinOp + left: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + op: Div + right: Constant + value: float = 2.0 + kind: NoneType = None + element: Constant + value: int = 1 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: BinOp + left: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + op: Div + right: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 1 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: BinOp + left: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + op: Div + right: Constant + value: float = 3.0 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: Constant + value: float = 0.5 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: Constant + value: float = 0.51 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: Constant + value: float = 1.5 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: Constant + value: float = 1.51 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: Constant + value: float = 1.51 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: Constant + value: float = 2.5 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: Constant + value: float = 2.59 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: Constant + value: float = 3.5 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: Constant + value: float = 3.59 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: UnaryOp + op: USub + operand: Constant + value: float = 0.5 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: UnaryOp + op: USub + operand: Constant + value: float = 0.51 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: UnaryOp + op: USub + operand: Constant + value: float = 1.5 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: UnaryOp + op: USub + operand: Constant + value: float = 1.51 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: UnaryOp + op: USub + operand: Constant + value: float = 1.51 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: UnaryOp + op: USub + operand: Constant + value: float = 2.5 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: UnaryOp + op: USub + operand: Constant + value: float = 2.59 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: UnaryOp + op: USub + operand: Constant + value: float = 3.5 + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: UnaryOp + op: USub + operand: Constant + value: float = 3.59 + kind: NoneType = None + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = strings + ctx: Store + value: List + elts: list + element: Constant + value: str = der des dem den die der den die das des dem das + kind: NoneType = None + element: Constant + value: str = an auf hinter ueber neben vor zwischen + kind: NoneType = None + element: Constant + value: str = + durch + fuer + ohne + um + bis + gegen + entlang + + kind: NoneType = None + element: Constant + value: str = eins,zwei,drie,vier,fuenf,sechs,sieben + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str =

split + kind: NoneType = None + keywords: list + element: For + target: Name + id: str = aString + ctx: Store + iter: Name + id: str = strings + ctx: Load + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = canonizeString + ctx: Load + args: list + element: Name + id: str = aString + ctx: Load + keywords: list + element: Call + func: Name + id: str = canonizeStringList + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = aString + ctx: Load + attr: str = split + ctx: Load + args: list + keywords: list + keywords: list + element: Call + func: Name + id: str = canonizeStringList + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = aString + ctx: Load + attr: str = split + ctx: Load + args: list + element: Constant + value: str = + kind: NoneType = None + keywords: list + keywords: list + element: Call + func: Name + id: str = canonizeStringList + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = aString + ctx: Load + attr: str = split + ctx: Load + args: list + element: Constant + value: str = + kind: NoneType = None + element: Constant + value: int = 4 + kind: NoneType = None + keywords: list + keywords: list + element: Call + func: Name + id: str = canonizeStringList + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = aString + ctx: Load + attr: str = split + ctx: Load + args: list + element: Constant + value: str = + kind: NoneType = None + keywords: list + keywords: list + element: Call + func: Name + id: str = canonizeStringList + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = aString + ctx: Load + attr: str = split + ctx: Load + args: list + element: Constant + value: str = + kind: NoneType = None + element: Constant + value: int = 4 + kind: NoneType = None + keywords: list + keywords: list + element: Call + func: Name + id: str = canonizeStringList + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = aString + ctx: Load + attr: str = split + ctx: Load + args: list + element: Constant + value: str = + + kind: NoneType = None + keywords: list + keywords: list + element: Call + func: Name + id: str = canonizeStringList + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = aString + ctx: Load + attr: str = split + ctx: Load + args: list + element: Constant + value: str = + + kind: NoneType = None + element: Constant + value: int = 4 + kind: NoneType = None + keywords: list + keywords: list + element: Call + func: Name + id: str = canonizeStringList + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = aString + ctx: Load + attr: str = split + ctx: Load + args: list + element: Constant + value: str = , + kind: NoneType = None + keywords: list + keywords: list + element: Call + func: Name + id: str = canonizeStringList + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = aString + ctx: Load + attr: str = split + ctx: Load + args: list + element: Constant + value: str = , + kind: NoneType = None + element: Constant + value: int = 4 + kind: NoneType = None + keywords: list + keywords: list + element: Constant + value: str =
+ kind: NoneType = None + keywords: list + orelse: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str =
rsplit + kind: NoneType = None + keywords: list + element: For + target: Name + id: str = aString + ctx: Store + iter: Name + id: str = strings + ctx: Load + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = canonizeString + ctx: Load + args: list + element: Name + id: str = aString + ctx: Load + keywords: list + element: Call + func: Name + id: str = canonizeStringList + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = aString + ctx: Load + attr: str = rsplit + ctx: Load + args: list + keywords: list + keywords: list + element: Call + func: Name + id: str = canonizeStringList + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = aString + ctx: Load + attr: str = rsplit + ctx: Load + args: list + element: Constant + value: str = + kind: NoneType = None + keywords: list + keywords: list + element: Call + func: Name + id: str = canonizeStringList + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = aString + ctx: Load + attr: str = rsplit + ctx: Load + args: list + element: Constant + value: str = + kind: NoneType = None + element: Constant + value: int = 4 + kind: NoneType = None + keywords: list + keywords: list + element: Call + func: Name + id: str = canonizeStringList + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = aString + ctx: Load + attr: str = rsplit + ctx: Load + args: list + element: Constant + value: str = + kind: NoneType = None + keywords: list + keywords: list + element: Call + func: Name + id: str = canonizeStringList + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = aString + ctx: Load + attr: str = rsplit + ctx: Load + args: list + element: Constant + value: str = + kind: NoneType = None + element: Constant + value: int = 4 + kind: NoneType = None + keywords: list + keywords: list + element: Call + func: Name + id: str = canonizeStringList + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = aString + ctx: Load + attr: str = rsplit + ctx: Load + args: list + element: Constant + value: str = + + kind: NoneType = None + keywords: list + keywords: list + element: Call + func: Name + id: str = canonizeStringList + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = aString + ctx: Load + attr: str = rsplit + ctx: Load + args: list + element: Constant + value: str = + + kind: NoneType = None + element: Constant + value: int = 4 + kind: NoneType = None + keywords: list + keywords: list + element: Call + func: Name + id: str = canonizeStringList + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = aString + ctx: Load + attr: str = rsplit + ctx: Load + args: list + element: Constant + value: str = , + kind: NoneType = None + keywords: list + keywords: list + element: Call + func: Name + id: str = canonizeStringList + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = aString + ctx: Load + attr: str = rsplit + ctx: Load + args: list + element: Constant + value: str = , + kind: NoneType = None + element: Constant + value: int = 4 + kind: NoneType = None + keywords: list + keywords: list + element: Constant + value: str =
+ kind: NoneType = None + keywords: list + orelse: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = + kind: NoneType = None + attr: str = isalpha + ctx: Load + args: list + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = 123 + kind: NoneType = None + attr: str = isalpha + ctx: Load + args: list + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = abc + kind: NoneType = None + attr: str = isalpha + ctx: Load + args: list + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = abc123 + kind: NoneType = None + attr: str = isalpha + ctx: Load + args: list + keywords: list + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/module_cmath.js b/transcrypt/development/automated_tests/transcrypt/__target__39/module_cmath.js new file mode 100644 index 000000000..83c232ff2 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/module_cmath.js @@ -0,0 +1,130 @@ +// Transcrypt'ed from Python, 2021-05-14 15:01:25 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +import {acos, acosh, asin, asinh, atan, atanh, cos, cosh, e, exp, isfinite, isinf, isnan, log, log10, phase, pi, polar, rect, sin, sinh, sqrt, tan, tanh} from './cmath.js'; +export {asinh, isfinite, sinh, polar, acosh, pi, asin, atan, cosh, isnan, rect, log, phase, sqrt, sin, cos, exp, e, isinf, atanh, tan, tanh, acos, log10}; +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get nDecs () {return nDecs;}, set nDecs (value) {nDecs = value;}, get run () {return run;}, set run (value) {run = value;}, get twoPi () {return twoPi;}, set twoPi (value) {twoPi = value;}}); +var __name__ = 'module_cmath'; +export var twoPi = 2 * pi; +export var nDecs = 5; +export var run = function (autoTester) { + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __call__ (phase, null, __add__ (1, complex (0, 1.0)))); + }) (); + var aPolar = __call__ (polar, null, __add__ (3, complex (0, 5.0))); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __call__ (round, null, , nDecs), ); + }) (); + var aRect = __call__ (rect, null, ...aPolar); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __call__ (round, null, aRect.real), __call__ (round, null, aRect.imag)); + }) (); + var anExp = __call__ (exp, null, __sub__ (__neg__ (2.2), complex (0, 3.3))); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __call__ (round, null, anExp.real, nDecs), __call__ (round, null, anExp.imag, nDecs)); + }) (); + var aLog = __call__ (log, null, anExp); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __call__ (round, null, aLog.real, nDecs), __call__ (round, null, aLog.imag, nDecs)); + }) (); + var anExp10 = __pow__ (aLog, 10); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __call__ (round, null, anExp10.real, nDecs), __call__ (round, null, anExp10.imag, nDecs)); + }) (); + var aLog10 = __call__ (log10, null, anExp10); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __call__ (round, null, aLog10.real, nDecs), __call__ (round, null, aLog10.imag, nDecs)); + }) (); + var anExpRect = __pow__ (aLog, aRect); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __call__ (round, null, anExpRect.real, nDecs), __call__ (round, null, anExpRect.imag, nDecs)); + }) (); + var aLogRect = __call__ (log, null, anExpRect, aRect); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __call__ (round, null, aLogRect.real, nDecs), __call__ (round, null, aLogRect.imag, nDecs)); + }) (); + var aSqrt = __call__ (sqrt, null, complex (0, 1.0)); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __call__ (round, null, aSqrt.real, nDecs), __call__ (round, null, aSqrt.imag, nDecs)); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __call__ (sqrt, null, 4)); + }) (); + var anotherSqrt = __call__ (sqrt, null, __neg__ (4)); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __call__ (round, null, anotherSqrt.real), __call__ (round, null, anotherSqrt.imag)); + }) (); + var anAsin = __call__ (asin, null, __add__ (1, complex (0, 2.0))); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __call__ (round, null, anAsin.real, nDecs), __call__ (round, null, anAsin.imag, nDecs)); + }) (); + var anAcos = __call__ (acos, null, __add__ (__neg__ (2), complex (0, 3.0))); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __call__ (round, null, anAcos.real, nDecs), __call__ (round, null, anAcos.imag, nDecs)); + }) (); + var anAtan = __call__ (atan, null, __sub__ (3, complex (0, 4.0))); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __call__ (round, null, anAtan.real, nDecs), __call__ (round, null, anAtan.imag, nDecs)); + }) (); + var aSin = __call__ (sin, null, anAsin); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __call__ (round, null, aSin.real), __call__ (round, null, aSin.imag)); + }) (); + var aCos = __call__ (cos, null, anAcos); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __call__ (round, null, aCos.real), __call__ (round, null, aCos.imag)); + }) (); + var aTan = __call__ (tan, null, anAtan); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __call__ (round, null, aTan.real), __call__ (round, null, aTan.imag)); + }) (); + var anAsinh = __call__ (asinh, null, aCos); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __call__ (round, null, anAsinh.real, nDecs), __call__ (round, null, anAsinh.imag, nDecs)); + }) (); + var anAcosh = __call__ (acosh, null, aSin); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __call__ (round, null, anAcosh.real, nDecs), __call__ (round, null, anAcosh.imag, nDecs)); + }) (); + var anAtanh = __call__ (atanh, null, aTan); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __call__ (round, null, anAtanh.real, nDecs), __call__ (round, null, anAtanh.imag, nDecs)); + }) (); + var aSinh = __call__ (sinh, null, anAsinh); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __call__ (round, null, aSinh.real), __call__ (round, null, aSinh.imag)); + }) (); + var aCosh = __call__ (cosh, null, anAcosh); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __call__ (round, null, aCosh.real), __call__ (round, null, aCosh.imag)); + }) (); + var aTanh = __call__ (tanh, null, anAtanh); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __call__ (round, null, aTanh.real), __call__ (round, null, aTanh.imag)); + }) (); +}; + +//# sourceMappingURL=module_cmath.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/module_cmath.tree b/transcrypt/development/automated_tests/transcrypt/__target__39/module_cmath.tree new file mode 100644 index 000000000..eef4cfa7c --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/module_cmath.tree @@ -0,0 +1,1302 @@ +file: Module + body: list + element: ImportFrom + module: str = org.transcrypt.stubs.browser + names: list + element: alias + name: str = __pragma__ + asname: NoneType = None + level: int = 0 + element: ImportFrom + module: str = cmath + names: list + element: alias + name: str = * + asname: NoneType = None + level: int = 0 + element: Assign + targets: list + element: Name + id: str = twoPi + ctx: Store + value: BinOp + left: Constant + value: int = 2 + kind: NoneType = None + op: Mult + right: Name + id: str = pi + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = nDecs + ctx: Store + value: Constant + value: int = 5 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = opov + kind: NoneType = None + keywords: list + element: FunctionDef + name: str = run + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = autoTester + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = phase + ctx: Load + args: list + element: BinOp + left: Constant + value: int = 1 + kind: NoneType = None + op: Add + right: Constant + value: complex = 1j + kind: NoneType = None + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = aPolar + ctx: Store + value: Call + func: Name + id: str = polar + ctx: Load + args: list + element: BinOp + left: Constant + value: int = 3 + kind: NoneType = None + op: Add + right: Constant + value: complex = 5j + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: Subscript + value: Name + id: str = aPolar + ctx: Load + slice: Constant + value: int = 0 + kind: NoneType = None + ctx: Load + element: Name + id: str = nDecs + ctx: Load + keywords: list + element: Subscript + value: Name + id: str = aPolar + ctx: Load + slice: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + keywords: list + element: Assign + targets: list + element: Name + id: str = aRect + ctx: Store + value: Call + func: Name + id: str = rect + ctx: Load + args: list + element: Starred + value: Name + id: str = aPolar + ctx: Load + ctx: Load + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: Attribute + value: Name + id: str = aRect + ctx: Load + attr: str = real + ctx: Load + keywords: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: Attribute + value: Name + id: str = aRect + ctx: Load + attr: str = imag + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = anExp + ctx: Store + value: Call + func: Name + id: str = exp + ctx: Load + args: list + element: BinOp + left: UnaryOp + op: USub + operand: Constant + value: float = 2.2 + kind: NoneType = None + op: Sub + right: Constant + value: complex = 3.3j + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: Attribute + value: Name + id: str = anExp + ctx: Load + attr: str = real + ctx: Load + element: Name + id: str = nDecs + ctx: Load + keywords: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: Attribute + value: Name + id: str = anExp + ctx: Load + attr: str = imag + ctx: Load + element: Name + id: str = nDecs + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = aLog + ctx: Store + value: Call + func: Name + id: str = log + ctx: Load + args: list + element: Name + id: str = anExp + ctx: Load + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: Attribute + value: Name + id: str = aLog + ctx: Load + attr: str = real + ctx: Load + element: Name + id: str = nDecs + ctx: Load + keywords: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: Attribute + value: Name + id: str = aLog + ctx: Load + attr: str = imag + ctx: Load + element: Name + id: str = nDecs + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = anExp10 + ctx: Store + value: BinOp + left: Name + id: str = aLog + ctx: Load + op: Pow + right: Constant + value: int = 10 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: Attribute + value: Name + id: str = anExp10 + ctx: Load + attr: str = real + ctx: Load + element: Name + id: str = nDecs + ctx: Load + keywords: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: Attribute + value: Name + id: str = anExp10 + ctx: Load + attr: str = imag + ctx: Load + element: Name + id: str = nDecs + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = aLog10 + ctx: Store + value: Call + func: Name + id: str = log10 + ctx: Load + args: list + element: Name + id: str = anExp10 + ctx: Load + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: Attribute + value: Name + id: str = aLog10 + ctx: Load + attr: str = real + ctx: Load + element: Name + id: str = nDecs + ctx: Load + keywords: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: Attribute + value: Name + id: str = aLog10 + ctx: Load + attr: str = imag + ctx: Load + element: Name + id: str = nDecs + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = anExpRect + ctx: Store + value: BinOp + left: Name + id: str = aLog + ctx: Load + op: Pow + right: Name + id: str = aRect + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: Attribute + value: Name + id: str = anExpRect + ctx: Load + attr: str = real + ctx: Load + element: Name + id: str = nDecs + ctx: Load + keywords: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: Attribute + value: Name + id: str = anExpRect + ctx: Load + attr: str = imag + ctx: Load + element: Name + id: str = nDecs + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = aLogRect + ctx: Store + value: Call + func: Name + id: str = log + ctx: Load + args: list + element: Name + id: str = anExpRect + ctx: Load + element: Name + id: str = aRect + ctx: Load + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: Attribute + value: Name + id: str = aLogRect + ctx: Load + attr: str = real + ctx: Load + element: Name + id: str = nDecs + ctx: Load + keywords: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: Attribute + value: Name + id: str = aLogRect + ctx: Load + attr: str = imag + ctx: Load + element: Name + id: str = nDecs + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = aSqrt + ctx: Store + value: Call + func: Name + id: str = sqrt + ctx: Load + args: list + element: Constant + value: complex = 1j + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: Attribute + value: Name + id: str = aSqrt + ctx: Load + attr: str = real + ctx: Load + element: Name + id: str = nDecs + ctx: Load + keywords: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: Attribute + value: Name + id: str = aSqrt + ctx: Load + attr: str = imag + ctx: Load + element: Name + id: str = nDecs + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = sqrt + ctx: Load + args: list + element: Constant + value: int = 4 + kind: NoneType = None + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = anotherSqrt + ctx: Store + value: Call + func: Name + id: str = sqrt + ctx: Load + args: list + element: UnaryOp + op: USub + operand: Constant + value: int = 4 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: Attribute + value: Name + id: str = anotherSqrt + ctx: Load + attr: str = real + ctx: Load + keywords: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: Attribute + value: Name + id: str = anotherSqrt + ctx: Load + attr: str = imag + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = anAsin + ctx: Store + value: Call + func: Name + id: str = asin + ctx: Load + args: list + element: BinOp + left: Constant + value: int = 1 + kind: NoneType = None + op: Add + right: Constant + value: complex = 2j + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: Attribute + value: Name + id: str = anAsin + ctx: Load + attr: str = real + ctx: Load + element: Name + id: str = nDecs + ctx: Load + keywords: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: Attribute + value: Name + id: str = anAsin + ctx: Load + attr: str = imag + ctx: Load + element: Name + id: str = nDecs + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = anAcos + ctx: Store + value: Call + func: Name + id: str = acos + ctx: Load + args: list + element: BinOp + left: UnaryOp + op: USub + operand: Constant + value: int = 2 + kind: NoneType = None + op: Add + right: Constant + value: complex = 3j + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: Attribute + value: Name + id: str = anAcos + ctx: Load + attr: str = real + ctx: Load + element: Name + id: str = nDecs + ctx: Load + keywords: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: Attribute + value: Name + id: str = anAcos + ctx: Load + attr: str = imag + ctx: Load + element: Name + id: str = nDecs + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = anAtan + ctx: Store + value: Call + func: Name + id: str = atan + ctx: Load + args: list + element: BinOp + left: Constant + value: int = 3 + kind: NoneType = None + op: Sub + right: Constant + value: complex = 4j + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: Attribute + value: Name + id: str = anAtan + ctx: Load + attr: str = real + ctx: Load + element: Name + id: str = nDecs + ctx: Load + keywords: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: Attribute + value: Name + id: str = anAtan + ctx: Load + attr: str = imag + ctx: Load + element: Name + id: str = nDecs + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = aSin + ctx: Store + value: Call + func: Name + id: str = sin + ctx: Load + args: list + element: Name + id: str = anAsin + ctx: Load + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: Attribute + value: Name + id: str = aSin + ctx: Load + attr: str = real + ctx: Load + keywords: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: Attribute + value: Name + id: str = aSin + ctx: Load + attr: str = imag + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = aCos + ctx: Store + value: Call + func: Name + id: str = cos + ctx: Load + args: list + element: Name + id: str = anAcos + ctx: Load + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: Attribute + value: Name + id: str = aCos + ctx: Load + attr: str = real + ctx: Load + keywords: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: Attribute + value: Name + id: str = aCos + ctx: Load + attr: str = imag + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = aTan + ctx: Store + value: Call + func: Name + id: str = tan + ctx: Load + args: list + element: Name + id: str = anAtan + ctx: Load + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: Attribute + value: Name + id: str = aTan + ctx: Load + attr: str = real + ctx: Load + keywords: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: Attribute + value: Name + id: str = aTan + ctx: Load + attr: str = imag + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = anAsinh + ctx: Store + value: Call + func: Name + id: str = asinh + ctx: Load + args: list + element: Name + id: str = aCos + ctx: Load + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: Attribute + value: Name + id: str = anAsinh + ctx: Load + attr: str = real + ctx: Load + element: Name + id: str = nDecs + ctx: Load + keywords: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: Attribute + value: Name + id: str = anAsinh + ctx: Load + attr: str = imag + ctx: Load + element: Name + id: str = nDecs + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = anAcosh + ctx: Store + value: Call + func: Name + id: str = acosh + ctx: Load + args: list + element: Name + id: str = aSin + ctx: Load + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: Attribute + value: Name + id: str = anAcosh + ctx: Load + attr: str = real + ctx: Load + element: Name + id: str = nDecs + ctx: Load + keywords: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: Attribute + value: Name + id: str = anAcosh + ctx: Load + attr: str = imag + ctx: Load + element: Name + id: str = nDecs + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = anAtanh + ctx: Store + value: Call + func: Name + id: str = atanh + ctx: Load + args: list + element: Name + id: str = aTan + ctx: Load + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: Attribute + value: Name + id: str = anAtanh + ctx: Load + attr: str = real + ctx: Load + element: Name + id: str = nDecs + ctx: Load + keywords: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: Attribute + value: Name + id: str = anAtanh + ctx: Load + attr: str = imag + ctx: Load + element: Name + id: str = nDecs + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = aSinh + ctx: Store + value: Call + func: Name + id: str = sinh + ctx: Load + args: list + element: Name + id: str = anAsinh + ctx: Load + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: Attribute + value: Name + id: str = aSinh + ctx: Load + attr: str = real + ctx: Load + keywords: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: Attribute + value: Name + id: str = aSinh + ctx: Load + attr: str = imag + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = aCosh + ctx: Store + value: Call + func: Name + id: str = cosh + ctx: Load + args: list + element: Name + id: str = anAcosh + ctx: Load + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: Attribute + value: Name + id: str = aCosh + ctx: Load + attr: str = real + ctx: Load + keywords: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: Attribute + value: Name + id: str = aCosh + ctx: Load + attr: str = imag + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = aTanh + ctx: Store + value: Call + func: Name + id: str = tanh + ctx: Load + args: list + element: Name + id: str = anAtanh + ctx: Load + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: Attribute + value: Name + id: str = aTanh + ctx: Load + attr: str = real + ctx: Load + keywords: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: Attribute + value: Name + id: str = aTanh + ctx: Load + attr: str = imag + ctx: Load + keywords: list + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/module_datetime.js b/transcrypt/development/automated_tests/transcrypt/__target__39/module_datetime.js new file mode 100644 index 000000000..e1634db00 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/module_datetime.js @@ -0,0 +1,326 @@ +// Transcrypt'ed from Python, 2021-05-14 15:01:24 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +import {date, datetime, timedelta, timezone} from './datetime.js'; +export {timezone, date, timedelta, datetime}; +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get fix_time () {return fix_time;}, set fix_time (value) {fix_time = value;}, get run () {return run;}, set run (value) {run = value;}}); +var __name__ = 'module_datetime'; +export var fix_time = function (dt) { + if (__gt__ (dt.hour, 23)) { + var dt = __sub__ (dt, __call__ (timedelta, null, __kwargtrans__ ({minutes: 60}))); + } + if (__gt__ (dt.minute, 50)) { + var dt = __sub__ (dt, __call__ (timedelta, null, __kwargtrans__ ({minutes: 10}))); + } + return dt; +}; +export var run = function (autoTester) { + var tz = timezone.utc; + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __call__ (repr, null, tz)); + }) (); + var tz2 = __call__ (timezone, null, __call__ (timedelta, null, __kwargtrans__ ({hours: __neg__ (5)})), 'EST'); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __call__ (repr, null, tz2)); + }) (); + var now = __call__ (fix_time, null, (function () { + var __accu0__ = datetime; + return __call__ (__accu0__.utcnow, __accu0__); + }) ()); + var now2 = __call__ (fix_time, null, (function () { + var __accu0__ = datetime; + return __call__ (__accu0__.now, __accu0__, timezone.utc); + }) ()); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __eq__ (now.day, now2.day)); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __eq__ (now.hour, now2.hour)); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, (function () { + var __accu1__ = (function () { + var __accu2__ = now; + return __call__ (__accu2__.py_replace, __accu2__, __kwargtrans__ ({tzinfo: timezone.utc})); + }) (); + return __call__ (__accu1__.astimezone, __accu1__, __kwargtrans__ ({tz: null})); + }) ().hour); + }) (); + var delta = __call__ (timedelta, null, __kwargtrans__ ({days: 8, minutes: 15, microseconds: 685})); + var delta2 = __call__ (timedelta, null, __kwargtrans__ ({days: 8, minutes: 15, microseconds: 684})); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, delta); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, delta2); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __eq__ (delta, delta2)); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __gt__ (delta, delta2)); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __lt__ (delta, delta2)); + }) (); + var d = __call__ (date, null, 2017, 5, 5); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, d.day); + }) (); + var d = (function () { + var __accu0__ = date; + return __call__ (__accu0__.today, __accu0__); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, d); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, d.day); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, (function () { + var __accu1__ = d; + return __call__ (__accu1__.weekday, __accu1__); + }) ()); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, (function () { + var __accu1__ = d; + return __call__ (__accu1__.isoweekday, __accu1__); + }) ()); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, (function () { + var __accu1__ = d; + return __call__ (__accu1__.isocalendar, __accu1__); + }) ()); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, (function () { + var __accu1__ = d; + return __call__ (__accu1__.ctime, __accu1__); + }) ()); + }) (); + var d = (function () { + var __accu0__ = d; + return __call__ (__accu0__.py_replace, __accu0__, __kwargtrans__ ({day: 28})); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, d.day); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, (function () { + var __accu1__ = d; + return __call__ (__accu1__.strftime, __accu1__, '%Y.%m.%d'); + }) ()); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, (function () { + var __accu1__ = d; + return __call__ (__accu1__.ctime, __accu1__); + }) ()); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, (function () { + var __accu1__ = d; + return __call__ (__accu1__.isoformat, __accu1__); + }) ()); + }) (); + var d2 = __add__ (d, delta); + var d3 = __sub__ (d2, delta); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, d); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, d2); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, d3); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __eq__ (d, d3)); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __gt__ (d, d3)); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __lt__ (d, d3)); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __eq__ (d, d2)); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __gt__ (d, d2)); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __lt__ (d, d2)); + }) (); + var now = __call__ (fix_time, null, (function () { + var __accu0__ = datetime; + return __call__ (__accu0__.now, __accu0__); + }) ()); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, now.day); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, now.hour); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, (__add__ (now, __call__ (timedelta, null, __kwargtrans__ ({days: 2})))).day); + }) (); + var d = __call__ (datetime, null, 2010, 1, 1, __kwargtrans__ ({tzinfo: timezone.utc})); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, d); + }) (); + var d = __call__ (datetime, null, 2017, 9, 19, 15, 43, 8, 142); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, d); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __sub__ (d, __call__ (timedelta, null, __kwargtrans__ ({minutes: 150})))); + }) (); + var d = (function () { + var __accu0__ = datetime; + return __call__ (__accu0__.strptime, __accu0__, '2017-03-14 15:28:14', '%Y-%m-%d %H:%M:%S'); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, d); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, (function () { + var __accu1__ = d; + return __call__ (__accu1__.strftime, __accu1__, '%Y.%m.%d %H:%M:%S'); + }) ()); + }) (); + var d = __add__ (d, __call__ (timedelta, null, __kwargtrans__ ({hours: 5, minutes: 18, seconds: 25}))); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, (function () { + var __accu1__ = d; + return __call__ (__accu1__.strftime, __accu1__, '%Y-%m-%d %H:%M:%S'); + }) ()); + }) (); + var d = (function () { + var __accu0__ = d; + return __call__ (__accu0__.py_replace, __accu0__, __kwargtrans__ ({year: 2016, month: 1})); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, (function () { + var __accu1__ = d; + return __call__ (__accu1__.ctime, __accu1__); + }) ()); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, (function () { + var __accu1__ = d; + return __call__ (__accu1__.isoformat, __accu1__); + }) ()); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, (function () { + var __accu1__ = d; + return __call__ (__accu1__.date, __accu1__); + }) ()); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, (function () { + var __accu1__ = d; + return __call__ (__accu1__.time, __accu1__); + }) ()); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __call__ (tuple, null, (function () { + var __accu1__ = d; + return __call__ (__accu1__.timetuple, __accu1__); + }) ())); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __call__ (tuple, null, (function () { + var __accu1__ = d; + return __call__ (__accu1__.utctimetuple, __accu1__); + }) ())); + }) (); + var d2 = __add__ (d, delta); + var d3 = __sub__ (d2, delta); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, d); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, d2); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, d3); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __eq__ (d, d3)); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __gt__ (d, d3)); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __lt__ (d, d3)); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __eq__ (d, d2)); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __gt__ (d, d2)); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __lt__ (d, d2)); + }) (); +}; + +//# sourceMappingURL=module_datetime.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/module_datetime.tree b/transcrypt/development/automated_tests/transcrypt/__target__39/module_datetime.tree new file mode 100644 index 000000000..b004d79fc --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/module_datetime.tree @@ -0,0 +1,1588 @@ +file: Module + body: list + element: ImportFrom + module: str = datetime + names: list + element: alias + name: str = date + asname: NoneType = None + element: alias + name: str = timedelta + asname: NoneType = None + element: alias + name: str = datetime + asname: NoneType = None + element: alias + name: str = timezone + asname: NoneType = None + level: int = 0 + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = opov + kind: NoneType = None + keywords: list + element: FunctionDef + name: str = fix_time + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = dt + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: Compare + left: Attribute + value: Name + id: str = dt + ctx: Load + attr: str = hour + ctx: Load + ops: list + element: Gt + comparators: list + element: Constant + value: int = 23 + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = dt + ctx: Store + value: BinOp + left: Name + id: str = dt + ctx: Load + op: Sub + right: Call + func: Name + id: str = timedelta + ctx: Load + args: list + keywords: list + element: keyword + arg: str = minutes + value: Constant + value: int = 60 + kind: NoneType = None + type_comment: NoneType = None + orelse: list + element: If + test: Compare + left: Attribute + value: Name + id: str = dt + ctx: Load + attr: str = minute + ctx: Load + ops: list + element: Gt + comparators: list + element: Constant + value: int = 50 + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = dt + ctx: Store + value: BinOp + left: Name + id: str = dt + ctx: Load + op: Sub + right: Call + func: Name + id: str = timedelta + ctx: Load + args: list + keywords: list + element: keyword + arg: str = minutes + value: Constant + value: int = 10 + kind: NoneType = None + type_comment: NoneType = None + orelse: list + element: Return + value: Name + id: str = dt + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = run + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = autoTester + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Name + id: str = tz + ctx: Store + value: Attribute + value: Name + id: str = timezone + ctx: Load + attr: str = utc + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Name + id: str = tz + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = tz2 + ctx: Store + value: Call + func: Name + id: str = timezone + ctx: Load + args: list + element: Call + func: Name + id: str = timedelta + ctx: Load + args: list + keywords: list + element: keyword + arg: str = hours + value: UnaryOp + op: USub + operand: Constant + value: int = 5 + kind: NoneType = None + element: Constant + value: str = EST + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Name + id: str = tz2 + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = now + ctx: Store + value: Call + func: Name + id: str = fix_time + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = datetime + ctx: Load + attr: str = utcnow + ctx: Load + args: list + keywords: list + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = now2 + ctx: Store + value: Call + func: Name + id: str = fix_time + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = datetime + ctx: Load + attr: str = now + ctx: Load + args: list + element: Attribute + value: Name + id: str = timezone + ctx: Load + attr: str = utc + ctx: Load + keywords: list + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Attribute + value: Name + id: str = now + ctx: Load + attr: str = day + ctx: Load + ops: list + element: Eq + comparators: list + element: Attribute + value: Name + id: str = now2 + ctx: Load + attr: str = day + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Attribute + value: Name + id: str = now + ctx: Load + attr: str = hour + ctx: Load + ops: list + element: Eq + comparators: list + element: Attribute + value: Name + id: str = now2 + ctx: Load + attr: str = hour + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Call + func: Attribute + value: Call + func: Attribute + value: Name + id: str = now + ctx: Load + attr: str = replace + ctx: Load + args: list + keywords: list + element: keyword + arg: str = tzinfo + value: Attribute + value: Name + id: str = timezone + ctx: Load + attr: str = utc + ctx: Load + attr: str = astimezone + ctx: Load + args: list + keywords: list + element: keyword + arg: str = tz + value: Constant + value: NoneType = None + kind: NoneType = None + attr: str = hour + ctx: Load + keywords: list + element: Assign + targets: list + element: Name + id: str = delta + ctx: Store + value: Call + func: Name + id: str = timedelta + ctx: Load + args: list + keywords: list + element: keyword + arg: str = days + value: Constant + value: int = 8 + kind: NoneType = None + element: keyword + arg: str = minutes + value: Constant + value: int = 15 + kind: NoneType = None + element: keyword + arg: str = microseconds + value: Constant + value: int = 685 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = delta2 + ctx: Store + value: Call + func: Name + id: str = timedelta + ctx: Load + args: list + keywords: list + element: keyword + arg: str = days + value: Constant + value: int = 8 + kind: NoneType = None + element: keyword + arg: str = minutes + value: Constant + value: int = 15 + kind: NoneType = None + element: keyword + arg: str = microseconds + value: Constant + value: int = 684 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = delta + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = delta2 + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Name + id: str = delta + ctx: Load + ops: list + element: Eq + comparators: list + element: Name + id: str = delta2 + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Name + id: str = delta + ctx: Load + ops: list + element: Gt + comparators: list + element: Name + id: str = delta2 + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Name + id: str = delta + ctx: Load + ops: list + element: Lt + comparators: list + element: Name + id: str = delta2 + ctx: Load + keywords: list + element: Assign + targets: list + element: Name + id: str = d + ctx: Store + value: Call + func: Name + id: str = date + ctx: Load + args: list + element: Constant + value: int = 2017 + kind: NoneType = None + element: Constant + value: int = 5 + kind: NoneType = None + element: Constant + value: int = 5 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = d + ctx: Load + attr: str = day + ctx: Load + keywords: list + element: Assign + targets: list + element: Name + id: str = d + ctx: Store + value: Call + func: Attribute + value: Name + id: str = date + ctx: Load + attr: str = today + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = d + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = d + ctx: Load + attr: str = day + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = d + ctx: Load + attr: str = weekday + ctx: Load + args: list + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = d + ctx: Load + attr: str = isoweekday + ctx: Load + args: list + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = d + ctx: Load + attr: str = isocalendar + ctx: Load + args: list + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = d + ctx: Load + attr: str = ctime + ctx: Load + args: list + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = d + ctx: Store + value: Call + func: Attribute + value: Name + id: str = d + ctx: Load + attr: str = replace + ctx: Load + args: list + keywords: list + element: keyword + arg: str = day + value: Constant + value: int = 28 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = d + ctx: Load + attr: str = day + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = d + ctx: Load + attr: str = strftime + ctx: Load + args: list + element: Constant + value: str = %Y.%m.%d + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = d + ctx: Load + attr: str = ctime + ctx: Load + args: list + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = d + ctx: Load + attr: str = isoformat + ctx: Load + args: list + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = d2 + ctx: Store + value: BinOp + left: Name + id: str = d + ctx: Load + op: Add + right: Name + id: str = delta + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = d3 + ctx: Store + value: BinOp + left: Name + id: str = d2 + ctx: Load + op: Sub + right: Name + id: str = delta + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = d + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = d2 + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = d3 + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Name + id: str = d + ctx: Load + ops: list + element: Eq + comparators: list + element: Name + id: str = d3 + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Name + id: str = d + ctx: Load + ops: list + element: Gt + comparators: list + element: Name + id: str = d3 + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Name + id: str = d + ctx: Load + ops: list + element: Lt + comparators: list + element: Name + id: str = d3 + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Name + id: str = d + ctx: Load + ops: list + element: Eq + comparators: list + element: Name + id: str = d2 + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Name + id: str = d + ctx: Load + ops: list + element: Gt + comparators: list + element: Name + id: str = d2 + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Name + id: str = d + ctx: Load + ops: list + element: Lt + comparators: list + element: Name + id: str = d2 + ctx: Load + keywords: list + element: Assign + targets: list + element: Name + id: str = now + ctx: Store + value: Call + func: Name + id: str = fix_time + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = datetime + ctx: Load + attr: str = now + ctx: Load + args: list + keywords: list + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = now + ctx: Load + attr: str = day + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = now + ctx: Load + attr: str = hour + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: BinOp + left: Name + id: str = now + ctx: Load + op: Add + right: Call + func: Name + id: str = timedelta + ctx: Load + args: list + keywords: list + element: keyword + arg: str = days + value: Constant + value: int = 2 + kind: NoneType = None + attr: str = day + ctx: Load + keywords: list + element: Assign + targets: list + element: Name + id: str = d + ctx: Store + value: Call + func: Name + id: str = datetime + ctx: Load + args: list + element: Constant + value: int = 2010 + kind: NoneType = None + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 1 + kind: NoneType = None + keywords: list + element: keyword + arg: str = tzinfo + value: Attribute + value: Name + id: str = timezone + ctx: Load + attr: str = utc + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = d + ctx: Load + keywords: list + element: Assign + targets: list + element: Name + id: str = d + ctx: Store + value: Call + func: Name + id: str = datetime + ctx: Load + args: list + element: Constant + value: int = 2017 + kind: NoneType = None + element: Constant + value: int = 9 + kind: NoneType = None + element: Constant + value: int = 19 + kind: NoneType = None + element: Constant + value: int = 15 + kind: NoneType = None + element: Constant + value: int = 43 + kind: NoneType = None + element: Constant + value: int = 8 + kind: NoneType = None + element: Constant + value: int = 142 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = d + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BinOp + left: Name + id: str = d + ctx: Load + op: Sub + right: Call + func: Name + id: str = timedelta + ctx: Load + args: list + keywords: list + element: keyword + arg: str = minutes + value: Constant + value: int = 150 + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = d + ctx: Store + value: Call + func: Attribute + value: Name + id: str = datetime + ctx: Load + attr: str = strptime + ctx: Load + args: list + element: Constant + value: str = 2017-03-14 15:28:14 + kind: NoneType = None + element: Constant + value: str = %Y-%m-%d %H:%M:%S + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = d + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = d + ctx: Load + attr: str = strftime + ctx: Load + args: list + element: Constant + value: str = %Y.%m.%d %H:%M:%S + kind: NoneType = None + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = d + ctx: Store + value: BinOp + left: Name + id: str = d + ctx: Load + op: Add + right: Call + func: Name + id: str = timedelta + ctx: Load + args: list + keywords: list + element: keyword + arg: str = hours + value: Constant + value: int = 5 + kind: NoneType = None + element: keyword + arg: str = minutes + value: Constant + value: int = 18 + kind: NoneType = None + element: keyword + arg: str = seconds + value: Constant + value: int = 25 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = d + ctx: Load + attr: str = strftime + ctx: Load + args: list + element: Constant + value: str = %Y-%m-%d %H:%M:%S + kind: NoneType = None + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = d + ctx: Store + value: Call + func: Attribute + value: Name + id: str = d + ctx: Load + attr: str = replace + ctx: Load + args: list + keywords: list + element: keyword + arg: str = year + value: Constant + value: int = 2016 + kind: NoneType = None + element: keyword + arg: str = month + value: Constant + value: int = 1 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = d + ctx: Load + attr: str = ctime + ctx: Load + args: list + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = d + ctx: Load + attr: str = isoformat + ctx: Load + args: list + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = d + ctx: Load + attr: str = date + ctx: Load + args: list + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = d + ctx: Load + attr: str = time + ctx: Load + args: list + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = tuple + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = d + ctx: Load + attr: str = timetuple + ctx: Load + args: list + keywords: list + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = tuple + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = d + ctx: Load + attr: str = utctimetuple + ctx: Load + args: list + keywords: list + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = d2 + ctx: Store + value: BinOp + left: Name + id: str = d + ctx: Load + op: Add + right: Name + id: str = delta + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = d3 + ctx: Store + value: BinOp + left: Name + id: str = d2 + ctx: Load + op: Sub + right: Name + id: str = delta + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = d + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = d2 + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = d3 + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Name + id: str = d + ctx: Load + ops: list + element: Eq + comparators: list + element: Name + id: str = d3 + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Name + id: str = d + ctx: Load + ops: list + element: Gt + comparators: list + element: Name + id: str = d3 + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Name + id: str = d + ctx: Load + ops: list + element: Lt + comparators: list + element: Name + id: str = d3 + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Name + id: str = d + ctx: Load + ops: list + element: Eq + comparators: list + element: Name + id: str = d2 + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Name + id: str = d + ctx: Load + ops: list + element: Gt + comparators: list + element: Name + id: str = d2 + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Name + id: str = d + ctx: Load + ops: list + element: Lt + comparators: list + element: Name + id: str = d2 + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/module_itertools.js b/transcrypt/development/automated_tests/transcrypt/__target__39/module_itertools.js new file mode 100644 index 000000000..832701ffd --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/module_itertools.js @@ -0,0 +1,83 @@ +// Transcrypt'ed from Python, 2021-05-14 15:01:24 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +import {pow} from './math.js'; +import {accumulate, chain, combinations, combinations_with_replacement, compress, count, cycle, dropwhile, filterfalse, groupby, islice, permutations, product, repeat, starmap, takewhile, tee} from './itertools.js'; +export {dropwhile, combinations_with_replacement, groupby, product, takewhile, cycle, repeat, permutations, tee, combinations, filterfalse, islice, count, chain, accumulate, pow, starmap, compress}; +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get chars () {return chars;}, set chars (value) {chars = value;}, get fibonacci () {return fibonacci;}, set fibonacci (value) {fibonacci = value;}, get run () {return run;}, set run (value) {run = value;}, get squares () {return squares;}, set squares (value) {squares = value;}}); +var __name__ = 'module_itertools'; +export var fibonacci = function* () { + var __left0__ = tuple ([0, 1]); + var a = __left0__ [0]; + var b = __left0__ [1]; + for (var i = 0; i < 10; i++) { + yield a; + var __left0__ = tuple ([b, a + b]); + var a = __left0__ [0]; + var b = __left0__ [1]; + } + }; +export var squares = (function () { + var __accu0__ = []; + for (var i = 0; i < 10; i++) { + __accu0__.append (i * i); + } + return __accu0__; +}) (); +export var chars = 'thequickbrownfoxjumpsoverthelazydog'; +export var run = function (autoTester) { + autoTester.check ('islice count', list (islice (count (10, 2), 4, 40, 3))); + autoTester.check ('islice cycle', list (islice (cycle (fibonacci ()), 15))); + autoTester.check ('repeat', list (repeat (3.14, 15))); + autoTester.check ('islice repeat', list (islice (repeat (2.74), 15))); + autoTester.check ('accumulate', list (accumulate (range (5)))); + var add = function (total, element) { + return total + element; + }; + autoTester.check ('accumulate', list (accumulate (['alamak', 'mirach', 'sirrah'], add))); + autoTester.check ('chain', list (chain (fibonacci (), squares, chars))); + autoTester.check ('chain.from_iterable', list (chain.from_iterable (['ape', 'node', 'mice', 'vim', 'sus', 'jet']))); + var selectors = [true, true, false, true, false, false, true, true, false, true]; + autoTester.check ('compress', list (compress ((function () { + var __accu0__ = []; + for (var [index, py_selector] of enumerate (selectors)) { + __accu0__.append ('{}{}'.format ((py_selector ? 'take' : 'leave'), index)); + } + return __accu0__; + }) (), selectors))); + autoTester.check ('dropwhile', list (dropwhile ((function __lambda__ (x) { + return x < 5; + }), [1, 4, 6, 4, 1]))); + autoTester.check ('filterfalse', list (filterfalse ((function __lambda__ (x) { + return __mod__ (x, 2); + }), range (10)))); + var things = [tuple (['animal', 'bear']), tuple (['animal', 'duck']), tuple (['plant', 'cactus']), tuple (['vehicle', 'speed boat']), tuple (['vehicle', 'school bus'])]; + for (var [key, group] of groupby (things, (function __lambda__ (x) { + return ; + }))) { + for (var thing of group) { + autoTester.check ('A {} is a {}.'.format (, key)); + } + autoTester.check (' '); + } + autoTester.check ('islice', list (islice ([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 2, 9, 2))); + autoTester.check ('starmap', (function () { + var __accu0__ = []; + for (var x of starmap (pow, [tuple ([2, 5]), tuple ([3, 2]), tuple ([10, 3])])) { + __accu0__.append (int (x)); + } + return __accu0__; + }) ()); + autoTester.check ('takewhile', list (takewhile ((function __lambda__ (x) { + return x < 5; + }), [1, 4, 6, 4, 1]))); + var __left0__ = tee (islice (count (), 5)); + var i1 = __left0__ [0]; + var i2 = __left0__ [1]; + autoTester.check ('tee', list (i1), list (i1), list (i2)); + autoTester.check ('product', list (product ('ABCD', 'xy')), list (product (range (2), __kwargtrans__ ({repeat: 3})))); + autoTester.check ('permutations', list (permutations ('ABCD')), list (permutations ('ABCD', 2))); + autoTester.check ('combinations', list (combinations ('ABCD', 2)), list (combinations ([1, 2, 3, 4, 5], 3)), list (combinations (islice (count (), 6), 4))); + autoTester.check ('combinations_with_replacement', list (combinations_with_replacement ('ABCD', 2)), list (combinations_with_replacement ([1, 2, 3, 4, 5], 3)), list (combinations_with_replacement (islice (count (), 6), 4))); +}; + +//# sourceMappingURL=module_itertools.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/module_itertools.tree b/transcrypt/development/automated_tests/transcrypt/__target__39/module_itertools.tree new file mode 100644 index 000000000..5099466a2 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/module_itertools.tree @@ -0,0 +1,1451 @@ +file: Module + body: list + element: ImportFrom + module: str = itertools + names: list + element: alias + name: str = * + asname: NoneType = None + level: int = 0 + element: ImportFrom + module: str = math + names: list + element: alias + name: str = pow + asname: NoneType = None + level: int = 0 + element: FunctionDef + name: str = fibonacci + args: arguments + posonlyargs: list + args: list + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = a + ctx: Store + element: Name + id: str = b + ctx: Store + ctx: Store + value: Tuple + elts: list + element: Constant + value: int = 0 + kind: NoneType = None + element: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: For + target: Name + id: str = i + ctx: Store + iter: Call + func: Name + id: str = range + ctx: Load + args: list + element: Constant + value: int = 10 + kind: NoneType = None + keywords: list + body: list + element: Expr + value: Yield + value: Name + id: str = a + ctx: Load + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = a + ctx: Store + element: Name + id: str = b + ctx: Store + ctx: Store + value: Tuple + elts: list + element: Name + id: str = b + ctx: Load + element: BinOp + left: Name + id: str = a + ctx: Load + op: Add + right: Name + id: str = b + ctx: Load + ctx: Load + type_comment: NoneType = None + orelse: list + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = squares + ctx: Store + value: ListComp + elt: BinOp + left: Name + id: str = i + ctx: Load + op: Mult + right: Name + id: str = i + ctx: Load + generators: list + element: comprehension + target: Name + id: str = i + ctx: Store + iter: Call + func: Name + id: str = range + ctx: Load + args: list + element: Constant + value: int = 10 + kind: NoneType = None + keywords: list + ifs: list + is_async: int = 0 + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = chars + ctx: Store + value: Constant + value: str = thequickbrownfoxjumpsoverthelazydog + kind: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = run + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = autoTester + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = islice count + kind: NoneType = None + element: Call + func: Name + id: str = list + ctx: Load + args: list + element: Call + func: Name + id: str = islice + ctx: Load + args: list + element: Call + func: Name + id: str = count + ctx: Load + args: list + element: Constant + value: int = 10 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + element: Constant + value: int = 4 + kind: NoneType = None + element: Constant + value: int = 40 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + keywords: list + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = islice cycle + kind: NoneType = None + element: Call + func: Name + id: str = list + ctx: Load + args: list + element: Call + func: Name + id: str = islice + ctx: Load + args: list + element: Call + func: Name + id: str = cycle + ctx: Load + args: list + element: Call + func: Name + id: str = fibonacci + ctx: Load + args: list + keywords: list + keywords: list + element: Constant + value: int = 15 + kind: NoneType = None + keywords: list + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = repeat + kind: NoneType = None + element: Call + func: Name + id: str = list + ctx: Load + args: list + element: Call + func: Name + id: str = repeat + ctx: Load + args: list + element: Constant + value: float = 3.14 + kind: NoneType = None + element: Constant + value: int = 15 + kind: NoneType = None + keywords: list + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = islice repeat + kind: NoneType = None + element: Call + func: Name + id: str = list + ctx: Load + args: list + element: Call + func: Name + id: str = islice + ctx: Load + args: list + element: Call + func: Name + id: str = repeat + ctx: Load + args: list + element: Constant + value: float = 2.74 + kind: NoneType = None + keywords: list + element: Constant + value: int = 15 + kind: NoneType = None + keywords: list + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = accumulate + kind: NoneType = None + element: Call + func: Name + id: str = list + ctx: Load + args: list + element: Call + func: Name + id: str = accumulate + ctx: Load + args: list + element: Call + func: Name + id: str = range + ctx: Load + args: list + element: Constant + value: int = 5 + kind: NoneType = None + keywords: list + keywords: list + keywords: list + keywords: list + element: FunctionDef + name: str = add + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = total + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = element + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: BinOp + left: Name + id: str = total + ctx: Load + op: Add + right: Name + id: str = element + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = accumulate + kind: NoneType = None + element: Call + func: Name + id: str = list + ctx: Load + args: list + element: Call + func: Name + id: str = accumulate + ctx: Load + args: list + element: List + elts: list + element: Constant + value: str = alamak + kind: NoneType = None + element: Constant + value: str = mirach + kind: NoneType = None + element: Constant + value: str = sirrah + kind: NoneType = None + ctx: Load + element: Name + id: str = add + ctx: Load + keywords: list + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = chain + kind: NoneType = None + element: Call + func: Name + id: str = list + ctx: Load + args: list + element: Call + func: Name + id: str = chain + ctx: Load + args: list + element: Call + func: Name + id: str = fibonacci + ctx: Load + args: list + keywords: list + element: Name + id: str = squares + ctx: Load + element: Name + id: str = chars + ctx: Load + keywords: list + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = chain.from_iterable + kind: NoneType = None + element: Call + func: Name + id: str = list + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = chain + ctx: Load + attr: str = from_iterable + ctx: Load + args: list + element: List + elts: list + element: Constant + value: str = ape + kind: NoneType = None + element: Constant + value: str = node + kind: NoneType = None + element: Constant + value: str = mice + kind: NoneType = None + element: Constant + value: str = vim + kind: NoneType = None + element: Constant + value: str = sus + kind: NoneType = None + element: Constant + value: str = jet + kind: NoneType = None + ctx: Load + keywords: list + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = selectors + ctx: Store + value: List + elts: list + element: Constant + value: bool = True + kind: NoneType = None + element: Constant + value: bool = True + kind: NoneType = None + element: Constant + value: bool = False + kind: NoneType = None + element: Constant + value: bool = True + kind: NoneType = None + element: Constant + value: bool = False + kind: NoneType = None + element: Constant + value: bool = False + kind: NoneType = None + element: Constant + value: bool = True + kind: NoneType = None + element: Constant + value: bool = True + kind: NoneType = None + element: Constant + value: bool = False + kind: NoneType = None + element: Constant + value: bool = True + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = compress + kind: NoneType = None + element: Call + func: Name + id: str = list + ctx: Load + args: list + element: Call + func: Name + id: str = compress + ctx: Load + args: list + element: ListComp + elt: Call + func: Attribute + value: Constant + value: str = {}{} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: IfExp + test: Name + id: str = selector + ctx: Load + body: Constant + value: str = take + kind: NoneType = None + orelse: Constant + value: str = leave + kind: NoneType = None + element: Name + id: str = index + ctx: Load + keywords: list + generators: list + element: comprehension + target: Tuple + elts: list + element: Name + id: str = index + ctx: Store + element: Name + id: str = selector + ctx: Store + ctx: Store + iter: Call + func: Name + id: str = enumerate + ctx: Load + args: list + element: Name + id: str = selectors + ctx: Load + keywords: list + ifs: list + is_async: int = 0 + element: Name + id: str = selectors + ctx: Load + keywords: list + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = dropwhile + kind: NoneType = None + element: Call + func: Name + id: str = list + ctx: Load + args: list + element: Call + func: Name + id: str = dropwhile + ctx: Load + args: list + element: Lambda + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: Compare + left: Name + id: str = x + ctx: Load + ops: list + element: Lt + comparators: list + element: Constant + value: int = 5 + kind: NoneType = None + element: List + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 4 + kind: NoneType = None + element: Constant + value: int = 6 + kind: NoneType = None + element: Constant + value: int = 4 + kind: NoneType = None + element: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + keywords: list + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = filterfalse + kind: NoneType = None + element: Call + func: Name + id: str = list + ctx: Load + args: list + element: Call + func: Name + id: str = filterfalse + ctx: Load + args: list + element: Lambda + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: BinOp + left: Name + id: str = x + ctx: Load + op: Mod + right: Constant + value: int = 2 + kind: NoneType = None + element: Call + func: Name + id: str = range + ctx: Load + args: list + element: Constant + value: int = 10 + kind: NoneType = None + keywords: list + keywords: list + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = things + ctx: Store + value: List + elts: list + element: Tuple + elts: list + element: Constant + value: str = animal + kind: NoneType = None + element: Constant + value: str = bear + kind: NoneType = None + ctx: Load + element: Tuple + elts: list + element: Constant + value: str = animal + kind: NoneType = None + element: Constant + value: str = duck + kind: NoneType = None + ctx: Load + element: Tuple + elts: list + element: Constant + value: str = plant + kind: NoneType = None + element: Constant + value: str = cactus + kind: NoneType = None + ctx: Load + element: Tuple + elts: list + element: Constant + value: str = vehicle + kind: NoneType = None + element: Constant + value: str = speed boat + kind: NoneType = None + ctx: Load + element: Tuple + elts: list + element: Constant + value: str = vehicle + kind: NoneType = None + element: Constant + value: str = school bus + kind: NoneType = None + ctx: Load + ctx: Load + type_comment: NoneType = None + element: For + target: Tuple + elts: list + element: Name + id: str = key + ctx: Store + element: Name + id: str = group + ctx: Store + ctx: Store + iter: Call + func: Name + id: str = groupby + ctx: Load + args: list + element: Name + id: str = things + ctx: Load + element: Lambda + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: Subscript + value: Name + id: str = x + ctx: Load + slice: Constant + value: int = 0 + kind: NoneType = None + ctx: Load + keywords: list + body: list + element: For + target: Name + id: str = thing + ctx: Store + iter: Name + id: str = group + ctx: Load + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = A {} is a {}. + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Subscript + value: Name + id: str = thing + ctx: Load + slice: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + element: Name + id: str = key + ctx: Load + keywords: list + keywords: list + orelse: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = + kind: NoneType = None + keywords: list + orelse: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = islice + kind: NoneType = None + element: Call + func: Name + id: str = list + ctx: Load + args: list + element: Call + func: Name + id: str = islice + ctx: Load + args: list + element: List + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + element: Constant + value: int = 4 + kind: NoneType = None + element: Constant + value: int = 5 + kind: NoneType = None + element: Constant + value: int = 6 + kind: NoneType = None + element: Constant + value: int = 7 + kind: NoneType = None + element: Constant + value: int = 8 + kind: NoneType = None + element: Constant + value: int = 9 + kind: NoneType = None + element: Constant + value: int = 10 + kind: NoneType = None + ctx: Load + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 9 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = starmap + kind: NoneType = None + element: ListComp + elt: Call + func: Name + id: str = int + ctx: Load + args: list + element: Name + id: str = x + ctx: Load + keywords: list + generators: list + element: comprehension + target: Name + id: str = x + ctx: Store + iter: Call + func: Name + id: str = starmap + ctx: Load + args: list + element: Name + id: str = pow + ctx: Load + element: List + elts: list + element: Tuple + elts: list + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 5 + kind: NoneType = None + ctx: Load + element: Tuple + elts: list + element: Constant + value: int = 3 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + ctx: Load + element: Tuple + elts: list + element: Constant + value: int = 10 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + ctx: Load + keywords: list + ifs: list + is_async: int = 0 + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = takewhile + kind: NoneType = None + element: Call + func: Name + id: str = list + ctx: Load + args: list + element: Call + func: Name + id: str = takewhile + ctx: Load + args: list + element: Lambda + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: Compare + left: Name + id: str = x + ctx: Load + ops: list + element: Lt + comparators: list + element: Constant + value: int = 5 + kind: NoneType = None + element: List + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 4 + kind: NoneType = None + element: Constant + value: int = 6 + kind: NoneType = None + element: Constant + value: int = 4 + kind: NoneType = None + element: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + keywords: list + keywords: list + keywords: list + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = i1 + ctx: Store + element: Name + id: str = i2 + ctx: Store + ctx: Store + value: Call + func: Name + id: str = tee + ctx: Load + args: list + element: Call + func: Name + id: str = islice + ctx: Load + args: list + element: Call + func: Name + id: str = count + ctx: Load + args: list + keywords: list + element: Constant + value: int = 5 + kind: NoneType = None + keywords: list + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = tee + kind: NoneType = None + element: Call + func: Name + id: str = list + ctx: Load + args: list + element: Name + id: str = i1 + ctx: Load + keywords: list + element: Call + func: Name + id: str = list + ctx: Load + args: list + element: Name + id: str = i1 + ctx: Load + keywords: list + element: Call + func: Name + id: str = list + ctx: Load + args: list + element: Name + id: str = i2 + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = product + kind: NoneType = None + element: Call + func: Name + id: str = list + ctx: Load + args: list + element: Call + func: Name + id: str = product + ctx: Load + args: list + element: Constant + value: str = ABCD + kind: NoneType = None + element: Constant + value: str = xy + kind: NoneType = None + keywords: list + keywords: list + element: Call + func: Name + id: str = list + ctx: Load + args: list + element: Call + func: Name + id: str = product + ctx: Load + args: list + element: Call + func: Name + id: str = range + ctx: Load + args: list + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + keywords: list + element: keyword + arg: str = repeat + value: Constant + value: int = 3 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = permutations + kind: NoneType = None + element: Call + func: Name + id: str = list + ctx: Load + args: list + element: Call + func: Name + id: str = permutations + ctx: Load + args: list + element: Constant + value: str = ABCD + kind: NoneType = None + keywords: list + keywords: list + element: Call + func: Name + id: str = list + ctx: Load + args: list + element: Call + func: Name + id: str = permutations + ctx: Load + args: list + element: Constant + value: str = ABCD + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = combinations + kind: NoneType = None + element: Call + func: Name + id: str = list + ctx: Load + args: list + element: Call + func: Name + id: str = combinations + ctx: Load + args: list + element: Constant + value: str = ABCD + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + keywords: list + element: Call + func: Name + id: str = list + ctx: Load + args: list + element: Call + func: Name + id: str = combinations + ctx: Load + args: list + element: List + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + element: Constant + value: int = 4 + kind: NoneType = None + element: Constant + value: int = 5 + kind: NoneType = None + ctx: Load + element: Constant + value: int = 3 + kind: NoneType = None + keywords: list + keywords: list + element: Call + func: Name + id: str = list + ctx: Load + args: list + element: Call + func: Name + id: str = combinations + ctx: Load + args: list + element: Call + func: Name + id: str = islice + ctx: Load + args: list + element: Call + func: Name + id: str = count + ctx: Load + args: list + keywords: list + element: Constant + value: int = 6 + kind: NoneType = None + keywords: list + element: Constant + value: int = 4 + kind: NoneType = None + keywords: list + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = combinations_with_replacement + kind: NoneType = None + element: Call + func: Name + id: str = list + ctx: Load + args: list + element: Call + func: Name + id: str = combinations_with_replacement + ctx: Load + args: list + element: Constant + value: str = ABCD + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + keywords: list + element: Call + func: Name + id: str = list + ctx: Load + args: list + element: Call + func: Name + id: str = combinations_with_replacement + ctx: Load + args: list + element: List + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + element: Constant + value: int = 4 + kind: NoneType = None + element: Constant + value: int = 5 + kind: NoneType = None + ctx: Load + element: Constant + value: int = 3 + kind: NoneType = None + keywords: list + keywords: list + element: Call + func: Name + id: str = list + ctx: Load + args: list + element: Call + func: Name + id: str = combinations_with_replacement + ctx: Load + args: list + element: Call + func: Name + id: str = islice + ctx: Load + args: list + element: Call + func: Name + id: str = count + ctx: Load + args: list + keywords: list + element: Constant + value: int = 6 + kind: NoneType = None + keywords: list + element: Constant + value: int = 4 + kind: NoneType = None + keywords: list + keywords: list + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/module_math.js b/transcrypt/development/automated_tests/transcrypt/__target__39/module_math.js new file mode 100644 index 000000000..596cc0ff3 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/module_math.js @@ -0,0 +1,51 @@ +// Transcrypt'ed from Python, 2021-05-14 15:01:24 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +import {acos, acosh, asin, asinh, atan, atan2, atanh, ceil, cos, cosh, degrees, e, exp, expm1, floor, hypot, inf, isnan, log, log10, log1p, log2, modf, nan, pi, pow, radians, sin, sinh, sqrt, tan, tanh, trunc} from './math.js'; +export {degrees, radians, asinh, trunc, nan, atan2, sinh, acosh, pi, asin, atan, cosh, isnan, log1p, log2, log, modf, floor, sqrt, sin, hypot, cos, exp, e, log10, pow, expm1, atanh, tan, tanh, inf, acos, ceil}; +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get _check () {return _check;}, set _check (value) {_check = value;}, get run () {return run;}, set run (value) {run = value;}}); +var __name__ = 'module_math'; +export var _check = function (nr, autoTester) { + if (isinstance (nr, float)) { + var nr = str (nr).__getslice__ (0, 15, 1); + } + autoTester.check (nr); +}; +export var run = function (autoTester) { + var check = (function __lambda__ (nr) { + return _check (nr, autoTester); + }); + check (pi); + check (e); + check (exp (3)); + check (int (expm1 (5))); + check (log (0.2)); + check (round (log (1024, 2))); + check (log1p (5)); + check (int (log2 (257))); + check (int (log10 (1001))); + check (pow (3, 4.5)); + check (sqrt (25.1)); + check (sin (10)); + check (cos (10)); + check (tan (10)); + check (asin (0.5)); + check (acos (0.5)); + check (atan (0.5)); + check (atan2 (1, 2)); + check (int (hypot (3, 4.1))); + check (degrees (pi / 2.1)); + check (radians (90)); + check (sinh (1)); + check (cosh (1)); + check (tan (1)); + check (asinh (70)); + check (acosh (70)); + check (atan (70)); + check (floor (3.5)); + check (ceil (3.5)); + check (trunc (3.5)); + check (isnan (3)); + check (isnan (nan)); +}; + +//# sourceMappingURL=module_math.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/module_math.tree b/transcrypt/development/automated_tests/transcrypt/__target__39/module_math.tree new file mode 100644 index 000000000..f695acf52 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/module_math.tree @@ -0,0 +1,679 @@ +file: Module + body: list + element: ImportFrom + module: str = math + names: list + element: alias + name: str = * + asname: NoneType = None + level: int = 0 + element: FunctionDef + name: str = _check + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = nr + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = autoTester + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = nr + ctx: Load + element: Name + id: str = float + ctx: Load + keywords: list + body: list + element: Assign + targets: list + element: Name + id: str = nr + ctx: Store + value: Subscript + value: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = nr + ctx: Load + keywords: list + slice: Slice + lower: NoneType = None + upper: Constant + value: int = 15 + kind: NoneType = None + step: NoneType = None + ctx: Load + type_comment: NoneType = None + orelse: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = nr + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = run + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = autoTester + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Name + id: str = check + ctx: Store + value: Lambda + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = nr + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: Call + func: Name + id: str = _check + ctx: Load + args: list + element: Name + id: str = nr + ctx: Load + element: Name + id: str = autoTester + ctx: Load + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = check + ctx: Load + args: list + element: Name + id: str = pi + ctx: Load + keywords: list + element: Expr + value: Call + func: Name + id: str = check + ctx: Load + args: list + element: Name + id: str = e + ctx: Load + keywords: list + element: Expr + value: Call + func: Name + id: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = exp + ctx: Load + args: list + element: Constant + value: int = 3 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Name + id: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = int + ctx: Load + args: list + element: Call + func: Name + id: str = expm1 + ctx: Load + args: list + element: Constant + value: int = 5 + kind: NoneType = None + keywords: list + keywords: list + keywords: list + element: Expr + value: Call + func: Name + id: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = log + ctx: Load + args: list + element: Constant + value: float = 0.2 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Name + id: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = round + ctx: Load + args: list + element: Call + func: Name + id: str = log + ctx: Load + args: list + element: Constant + value: int = 1024 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + keywords: list + keywords: list + element: Expr + value: Call + func: Name + id: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = log1p + ctx: Load + args: list + element: Constant + value: int = 5 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Name + id: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = int + ctx: Load + args: list + element: Call + func: Name + id: str = log2 + ctx: Load + args: list + element: Constant + value: int = 257 + kind: NoneType = None + keywords: list + keywords: list + keywords: list + element: Expr + value: Call + func: Name + id: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = int + ctx: Load + args: list + element: Call + func: Name + id: str = log10 + ctx: Load + args: list + element: Constant + value: int = 1001 + kind: NoneType = None + keywords: list + keywords: list + keywords: list + element: Expr + value: Call + func: Name + id: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = pow + ctx: Load + args: list + element: Constant + value: int = 3 + kind: NoneType = None + element: Constant + value: float = 4.5 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Name + id: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = sqrt + ctx: Load + args: list + element: Constant + value: float = 25.1 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Name + id: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = sin + ctx: Load + args: list + element: Constant + value: int = 10 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Name + id: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = cos + ctx: Load + args: list + element: Constant + value: int = 10 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Name + id: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = tan + ctx: Load + args: list + element: Constant + value: int = 10 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Name + id: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = asin + ctx: Load + args: list + element: Constant + value: float = 0.5 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Name + id: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = acos + ctx: Load + args: list + element: Constant + value: float = 0.5 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Name + id: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = atan + ctx: Load + args: list + element: Constant + value: float = 0.5 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Name + id: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = atan2 + ctx: Load + args: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Name + id: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = int + ctx: Load + args: list + element: Call + func: Name + id: str = hypot + ctx: Load + args: list + element: Constant + value: int = 3 + kind: NoneType = None + element: Constant + value: float = 4.1 + kind: NoneType = None + keywords: list + keywords: list + keywords: list + element: Expr + value: Call + func: Name + id: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = degrees + ctx: Load + args: list + element: BinOp + left: Name + id: str = pi + ctx: Load + op: Div + right: Constant + value: float = 2.1 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Name + id: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = radians + ctx: Load + args: list + element: Constant + value: int = 90 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Name + id: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = sinh + ctx: Load + args: list + element: Constant + value: int = 1 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Name + id: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = cosh + ctx: Load + args: list + element: Constant + value: int = 1 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Name + id: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = tan + ctx: Load + args: list + element: Constant + value: int = 1 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Name + id: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = asinh + ctx: Load + args: list + element: Constant + value: int = 70 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Name + id: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = acosh + ctx: Load + args: list + element: Constant + value: int = 70 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Name + id: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = atan + ctx: Load + args: list + element: Constant + value: int = 70 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Name + id: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = floor + ctx: Load + args: list + element: Constant + value: float = 3.5 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Name + id: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = ceil + ctx: Load + args: list + element: Constant + value: float = 3.5 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Name + id: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = trunc + ctx: Load + args: list + element: Constant + value: float = 3.5 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Name + id: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = isnan + ctx: Load + args: list + element: Constant + value: int = 3 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Name + id: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = isnan + ctx: Load + args: list + element: Name + id: str = nan + ctx: Load + keywords: list + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/module_unicodedata.js b/transcrypt/development/automated_tests/transcrypt/__target__39/module_unicodedata.js new file mode 100644 index 000000000..8dd76eda1 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/module_unicodedata.js @@ -0,0 +1,32 @@ +// Transcrypt'ed from Python, 2021-05-14 15:01:24 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +import {normalize} from './unicodedata.js'; +export {normalize}; +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get run () {return run;}, set run (value) {run = value;}}); +var __name__ = 'module_unicodedata'; +export var run = function (autoTester) { + autoTester.check ('NFC:'); + autoTester.check (normalize ('NFC', 'c' + '̧')); + autoTester.check (normalize ('NFC', 'ç')); + autoTester.check ((normalize ('NFC', 'c' + '̧') == normalize ('NFC', 'ç')) == true); + autoTester.check (normalize ('NFC', 'q̣̇')); + autoTester.check (normalize ('NFC', 'q̣̇')); + autoTester.check ((normalize ('NFC', 'q̣̇') == normalize ('NFC', 'q̣̇')) == true); + autoTester.check (normalize ('NFC', '가')); + autoTester.check (normalize ('NFC', 'ᄀ' + 'ᅡ')); + autoTester.check ((normalize ('NFC', '가') == normalize ('NFC', 'ᄀ' + 'ᅡ')) == true); + autoTester.check (normalize ('NFC', 'Ω')); + autoTester.check ('NFD:'); + autoTester.check (normalize ('NFD', 'c' + '̧')); + autoTester.check (normalize ('NFD', 'ç')); + autoTester.check ((normalize ('NFD', 'c' + '̧') == normalize ('NFD', 'ç')) == true); + autoTester.check (normalize ('NFD', 'q̣̇')); + autoTester.check (normalize ('NFD', 'q̣̇')); + autoTester.check ((normalize ('NFD', 'q̣̇') == normalize ('NFD', 'q̣̇')) == true); + autoTester.check (normalize ('NFD', '가')); + autoTester.check (normalize ('NFD', 'ᄀ' + 'ᅡ')); + autoTester.check ((normalize ('NFD', '가') == normalize ('NFD', 'ᄀ' + 'ᅡ')) == true); + autoTester.check (normalize ('NFD', 'Ω')); +}; + +//# sourceMappingURL=module_unicodedata.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/module_unicodedata.tree b/transcrypt/development/automated_tests/transcrypt/__target__39/module_unicodedata.tree new file mode 100644 index 000000000..965344668 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/module_unicodedata.tree @@ -0,0 +1,672 @@ +file: Module + body: list + element: ImportFrom + module: str = unicodedata + names: list + element: alias + name: str = normalize + asname: NoneType = None + level: int = 0 + element: FunctionDef + name: str = run + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = autoTester + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = NFC: + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = normalize + ctx: Load + args: list + element: Constant + value: str = NFC + kind: NoneType = None + element: BinOp + left: Constant + value: str = c + kind: NoneType = None + op: Add + right: Constant + value: str = ̧ + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = normalize + ctx: Load + args: list + element: Constant + value: str = NFC + kind: NoneType = None + element: Constant + value: str = ç + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Compare + left: Call + func: Name + id: str = normalize + ctx: Load + args: list + element: Constant + value: str = NFC + kind: NoneType = None + element: BinOp + left: Constant + value: str = c + kind: NoneType = None + op: Add + right: Constant + value: str = ̧ + kind: NoneType = None + keywords: list + ops: list + element: Eq + comparators: list + element: Call + func: Name + id: str = normalize + ctx: Load + args: list + element: Constant + value: str = NFC + kind: NoneType = None + element: Constant + value: str = ç + kind: NoneType = None + keywords: list + ops: list + element: Eq + comparators: list + element: Constant + value: bool = True + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = normalize + ctx: Load + args: list + element: Constant + value: str = NFC + kind: NoneType = None + element: Constant + value: str = q̣̇ + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = normalize + ctx: Load + args: list + element: Constant + value: str = NFC + kind: NoneType = None + element: Constant + value: str = q̣̇ + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Compare + left: Call + func: Name + id: str = normalize + ctx: Load + args: list + element: Constant + value: str = NFC + kind: NoneType = None + element: Constant + value: str = q̣̇ + kind: NoneType = None + keywords: list + ops: list + element: Eq + comparators: list + element: Call + func: Name + id: str = normalize + ctx: Load + args: list + element: Constant + value: str = NFC + kind: NoneType = None + element: Constant + value: str = q̣̇ + kind: NoneType = None + keywords: list + ops: list + element: Eq + comparators: list + element: Constant + value: bool = True + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = normalize + ctx: Load + args: list + element: Constant + value: str = NFC + kind: NoneType = None + element: Constant + value: str = 가 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = normalize + ctx: Load + args: list + element: Constant + value: str = NFC + kind: NoneType = None + element: BinOp + left: Constant + value: str = ᄀ + kind: NoneType = None + op: Add + right: Constant + value: str = ᅡ + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Compare + left: Call + func: Name + id: str = normalize + ctx: Load + args: list + element: Constant + value: str = NFC + kind: NoneType = None + element: Constant + value: str = 가 + kind: NoneType = None + keywords: list + ops: list + element: Eq + comparators: list + element: Call + func: Name + id: str = normalize + ctx: Load + args: list + element: Constant + value: str = NFC + kind: NoneType = None + element: BinOp + left: Constant + value: str = ᄀ + kind: NoneType = None + op: Add + right: Constant + value: str = ᅡ + kind: NoneType = None + keywords: list + ops: list + element: Eq + comparators: list + element: Constant + value: bool = True + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = normalize + ctx: Load + args: list + element: Constant + value: str = NFC + kind: NoneType = None + element: Constant + value: str = Ω + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = NFD: + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = normalize + ctx: Load + args: list + element: Constant + value: str = NFD + kind: NoneType = None + element: BinOp + left: Constant + value: str = c + kind: NoneType = None + op: Add + right: Constant + value: str = ̧ + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = normalize + ctx: Load + args: list + element: Constant + value: str = NFD + kind: NoneType = None + element: Constant + value: str = ç + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Compare + left: Call + func: Name + id: str = normalize + ctx: Load + args: list + element: Constant + value: str = NFD + kind: NoneType = None + element: BinOp + left: Constant + value: str = c + kind: NoneType = None + op: Add + right: Constant + value: str = ̧ + kind: NoneType = None + keywords: list + ops: list + element: Eq + comparators: list + element: Call + func: Name + id: str = normalize + ctx: Load + args: list + element: Constant + value: str = NFD + kind: NoneType = None + element: Constant + value: str = ç + kind: NoneType = None + keywords: list + ops: list + element: Eq + comparators: list + element: Constant + value: bool = True + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = normalize + ctx: Load + args: list + element: Constant + value: str = NFD + kind: NoneType = None + element: Constant + value: str = q̣̇ + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = normalize + ctx: Load + args: list + element: Constant + value: str = NFD + kind: NoneType = None + element: Constant + value: str = q̣̇ + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Compare + left: Call + func: Name + id: str = normalize + ctx: Load + args: list + element: Constant + value: str = NFD + kind: NoneType = None + element: Constant + value: str = q̣̇ + kind: NoneType = None + keywords: list + ops: list + element: Eq + comparators: list + element: Call + func: Name + id: str = normalize + ctx: Load + args: list + element: Constant + value: str = NFD + kind: NoneType = None + element: Constant + value: str = q̣̇ + kind: NoneType = None + keywords: list + ops: list + element: Eq + comparators: list + element: Constant + value: bool = True + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = normalize + ctx: Load + args: list + element: Constant + value: str = NFD + kind: NoneType = None + element: Constant + value: str = 가 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = normalize + ctx: Load + args: list + element: Constant + value: str = NFD + kind: NoneType = None + element: BinOp + left: Constant + value: str = ᄀ + kind: NoneType = None + op: Add + right: Constant + value: str = ᅡ + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Compare + left: Call + func: Name + id: str = normalize + ctx: Load + args: list + element: Constant + value: str = NFD + kind: NoneType = None + element: Constant + value: str = 가 + kind: NoneType = None + keywords: list + ops: list + element: Eq + comparators: list + element: Call + func: Name + id: str = normalize + ctx: Load + args: list + element: Constant + value: str = NFD + kind: NoneType = None + element: BinOp + left: Constant + value: str = ᄀ + kind: NoneType = None + op: Add + right: Constant + value: str = ᅡ + kind: NoneType = None + keywords: list + ops: list + element: Eq + comparators: list + element: Constant + value: bool = True + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = normalize + ctx: Load + args: list + element: Constant + value: str = NFD + kind: NoneType = None + element: Constant + value: str = Ω + kind: NoneType = None + keywords: list + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/modules.js b/transcrypt/development/automated_tests/transcrypt/__target__39/modules.js new file mode 100644 index 000000000..768d56659 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/modules.js @@ -0,0 +1,61 @@ +// Transcrypt'ed from Python, 2021-05-14 15:01:24 +var modules = {}; +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +import * as mod4 from './modules.mod4.js'; +import {A} from './modules.mod1.mod11.mod111.js'; +import {mod3GetTwoHundred, mod3Hundred, x} from './modules.mod3.js'; +import * as aMod21 from './modules.mod2.mod21.js'; +import * as aMod22 from './modules.mod2.mod22.js'; +import * as mod111 from './modules.mod1.mod11.mod111.js'; +import * as mod112 from './modules.mod1.mod11.mod112.js'; +import * as aMod1 from './modules.mod1.js'; +import * as aliasMod111 from './modules.mod1.mod11.mod111.js'; +import * as __module_modules_mod2_mod22__ from './modules.mod2.mod22.js'; +__nest__ (modules, 'mod2.mod22', __module_modules_mod2_mod22__); +import * as __module_modules_mod2_mod21__ from './modules.mod2.mod21.js'; +__nest__ (modules, 'mod2.mod21', __module_modules_mod2_mod21__); +import * as __module_modules_mod2__ from './modules.mod2.js'; +__nest__ (modules, 'mod2', __module_modules_mod2__); +import * as __module_modules_mod1_mod11__ from './modules.mod1.mod11.js'; +__nest__ (modules, 'mod1.mod11', __module_modules_mod1_mod11__); +import * as __module_modules_mod1__ from './modules.mod1.js'; +__nest__ (modules, 'mod1', __module_modules_mod1__); +import * as __module_modules_mod1_mod11_mod112__ from './modules.mod1.mod11.mod112.js'; +__nest__ (modules, 'mod1.mod11.mod112', __module_modules_mod1_mod11_mod112__); +import * as __module_modules_mod3__ from './modules.mod3.js'; +__nest__ (modules, 'mod3', __module_modules_mod3__); +import * as __module_modules_mod1_mod11_mod111__ from './modules.mod1.mod11.mod111.js'; +__nest__ (modules, 'mod1.mod11.mod111', __module_modules_mod1_mod11_mod111__); +export {mod4, mod111, aMod22, A, aMod21, mod3Hundred, mod112, x, mod3GetTwoHundred, aMod1, aliasMod111}; +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get a () {return a;}, set a (value) {a = value;}, get f () {return f;}, set f (value) {f = value;}, get pi () {return pi;}, set pi (value) {pi = value;}, get run () {return run;}, set run (value) {run = value;}}); +var __name__ = 'modules'; +export var a = modules.mod1.mod11.mod111.A (12345); +export var pi = modules.mod1.pi; +export var f = modules.mod2.f; +export var run = function (autoTester) { + autoTester.check ('modules'); + autoTester.check (a.f ()); + autoTester.check (modules.mod1.mod11.mod112.f ()); + autoTester.check (modules.mod1.mod11.e); + autoTester.check (pi); + autoTester.check (f (102030)); + autoTester.check (modules.mod2.mod21.f ()); + var B = modules.mod2.mod22.B; + var b = B (); + autoTester.check (b.x); + autoTester.check (modules.mod3.x); + var a2 = aliasMod111.A (6789101112); + autoTester.check (a2.f ()); + autoTester.check (aMod1.pi); + var a3 = mod111.A (100.001); + autoTester.check (a3.f ()); + autoTester.check (mod112.f ()); + autoTester.check (aMod21.f ()); + autoTester.check (aMod22.B ().x); + autoTester.check (mod3Hundred); + autoTester.check (mod3GetTwoHundred ()); + autoTester.check (A (123.321).f ()); + autoTester.check (mod4.mod4Add2FromMod5 (449)); +}; + +//# sourceMappingURL=modules.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/modules.mod1.js b/transcrypt/development/automated_tests/transcrypt/__target__39/modules.mod1.js new file mode 100644 index 000000000..87accd316 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/modules.mod1.js @@ -0,0 +1,7 @@ +// Transcrypt'ed from Python, 2021-05-14 15:01:24 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get pi () {return pi;}, set pi (value) {pi = value;}}); +var __name__ = 'modules.mod1'; +export var pi = 3.1415693588; + +//# sourceMappingURL=modules.mod1.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/modules.mod1.mod11.js b/transcrypt/development/automated_tests/transcrypt/__target__39/modules.mod1.mod11.js new file mode 100644 index 000000000..613aa7d5c --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/modules.mod1.mod11.js @@ -0,0 +1,7 @@ +// Transcrypt'ed from Python, 2021-05-14 15:01:24 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get e () {return e;}, set e (value) {e = value;}}); +var __name__ = 'modules.mod1.mod11'; +export var e = 2.74; + +//# sourceMappingURL=modules.mod1.mod11.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/modules.mod1.mod11.mod111.js b/transcrypt/development/automated_tests/transcrypt/__target__39/modules.mod1.mod11.mod111.js new file mode 100644 index 000000000..c5d67d276 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/modules.mod1.mod11.mod111.js @@ -0,0 +1,15 @@ +// Transcrypt'ed from Python, 2021-05-14 15:01:24 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +var __all__ = dict ({get A () {return A;}, set A (value) {A = value;}, get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}}); +var __name__ = 'modules.mod1.mod11.mod111'; +export var A = __class__ ('A', [object], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self, x) { + self.x = x; + });}, + get f () {return __get__ (this, function (self) { + return self.x; + });} +}); + +//# sourceMappingURL=modules.mod1.mod11.mod111.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/modules.mod1.mod11.mod111.tree b/transcrypt/development/automated_tests/transcrypt/__target__39/modules.mod1.mod11.mod111.tree new file mode 100644 index 000000000..21d2ca9d3 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/modules.mod1.mod11.mod111.tree @@ -0,0 +1,68 @@ +file: Module + body: list + element: ClassDef + name: str = A + bases: list + keywords: list + body: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = x + ctx: Store + value: Name + id: str = x + ctx: Load + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = f + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = x + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/modules.mod1.mod11.mod112.js b/transcrypt/development/automated_tests/transcrypt/__target__39/modules.mod1.mod11.mod112.js new file mode 100644 index 000000000..bb1f376bb --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/modules.mod1.mod11.mod112.js @@ -0,0 +1,9 @@ +// Transcrypt'ed from Python, 2021-05-14 15:01:24 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get f () {return f;}, set f (value) {f = value;}}); +var __name__ = 'modules.mod1.mod11.mod112'; +export var f = function () { + return "Paris, c'est la vie\n"; +}; + +//# sourceMappingURL=modules.mod1.mod11.mod112.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/modules.mod1.mod11.mod112.tree b/transcrypt/development/automated_tests/transcrypt/__target__39/modules.mod1.mod11.mod112.tree new file mode 100644 index 000000000..3322e1b2a --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/modules.mod1.mod11.mod112.tree @@ -0,0 +1,22 @@ +file: Module + body: list + element: FunctionDef + name: str = f + args: arguments + posonlyargs: list + args: list + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Constant + value: str = Paris, c'est la vie + + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/modules.mod1.mod11.tree b/transcrypt/development/automated_tests/transcrypt/__target__39/modules.mod1.mod11.tree new file mode 100644 index 000000000..6fcb6c8e4 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/modules.mod1.mod11.tree @@ -0,0 +1,12 @@ +file: Module + body: list + element: Assign + targets: list + element: Name + id: str = e + ctx: Store + value: Constant + value: float = 2.74 + kind: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/modules.mod1.tree b/transcrypt/development/automated_tests/transcrypt/__target__39/modules.mod1.tree new file mode 100644 index 000000000..7f1e7023c --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/modules.mod1.tree @@ -0,0 +1,12 @@ +file: Module + body: list + element: Assign + targets: list + element: Name + id: str = pi + ctx: Store + value: Constant + value: float = 3.1415693588 + kind: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/modules.mod2.js b/transcrypt/development/automated_tests/transcrypt/__target__39/modules.mod2.js new file mode 100644 index 000000000..1db345cda --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/modules.mod2.js @@ -0,0 +1,9 @@ +// Transcrypt'ed from Python, 2021-05-14 15:01:24 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get f () {return f;}, set f (value) {f = value;}}); +var __name__ = 'modules.mod2'; +export var f = function (p) { + return 2 * p; +}; + +//# sourceMappingURL=modules.mod2.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/modules.mod2.mod21.js b/transcrypt/development/automated_tests/transcrypt/__target__39/modules.mod2.mod21.js new file mode 100644 index 000000000..d04c12821 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/modules.mod2.mod21.js @@ -0,0 +1,9 @@ +// Transcrypt'ed from Python, 2021-05-14 15:01:24 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get f () {return f;}, set f (value) {f = value;}}); +var __name__ = 'modules.mod2.mod21'; +export var f = function () { + return 'London is the town for me\n'; +}; + +//# sourceMappingURL=modules.mod2.mod21.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/modules.mod2.mod21.tree b/transcrypt/development/automated_tests/transcrypt/__target__39/modules.mod2.mod21.tree new file mode 100644 index 000000000..17ed56b38 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/modules.mod2.mod21.tree @@ -0,0 +1,22 @@ +file: Module + body: list + element: FunctionDef + name: str = f + args: arguments + posonlyargs: list + args: list + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Constant + value: str = London is the town for me + + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/modules.mod2.mod22.js b/transcrypt/development/automated_tests/transcrypt/__target__39/modules.mod2.mod22.js new file mode 100644 index 000000000..1ecb6de18 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/modules.mod2.mod22.js @@ -0,0 +1,12 @@ +// Transcrypt'ed from Python, 2021-05-14 15:01:24 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +var __all__ = dict ({get B () {return B;}, set B (value) {B = value;}, get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}}); +var __name__ = 'modules.mod2.mod22'; +export var B = __class__ ('B', [object], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self) { + self.x = 'Geef mij maar Amsterdam\n'; + });} +}); + +//# sourceMappingURL=modules.mod2.mod22.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/modules.mod2.mod22.tree b/transcrypt/development/automated_tests/transcrypt/__target__39/modules.mod2.mod22.tree new file mode 100644 index 000000000..9e85fdf25 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/modules.mod2.mod22.tree @@ -0,0 +1,40 @@ +file: Module + body: list + element: ClassDef + name: str = B + bases: list + keywords: list + body: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = x + ctx: Store + value: Constant + value: str = Geef mij maar Amsterdam + + kind: NoneType = None + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/modules.mod2.tree b/transcrypt/development/automated_tests/transcrypt/__target__39/modules.mod2.tree new file mode 100644 index 000000000..3e9e9e93c --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/modules.mod2.tree @@ -0,0 +1,30 @@ +file: Module + body: list + element: FunctionDef + name: str = f + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = p + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: BinOp + left: Constant + value: int = 2 + kind: NoneType = None + op: Mult + right: Name + id: str = p + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/modules.mod3.js b/transcrypt/development/automated_tests/transcrypt/__target__39/modules.mod3.js new file mode 100644 index 000000000..5e79e1c3c --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/modules.mod3.js @@ -0,0 +1,11 @@ +// Transcrypt'ed from Python, 2021-05-14 15:01:24 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get mod3GetTwoHundred () {return mod3GetTwoHundred;}, set mod3GetTwoHundred (value) {mod3GetTwoHundred = value;}, get mod3Hundred () {return mod3Hundred;}, set mod3Hundred (value) {mod3Hundred = value;}, get x () {return x;}, set x (value) {x = value;}}); +var __name__ = 'modules.mod3'; +export var x = 'Toen wij uit Rotterdam vertrokken, vertrokken wij uit Rotterdam\n'; +export var mod3Hundred = 100; +export var mod3GetTwoHundred = function () { + return 200; +}; + +//# sourceMappingURL=modules.mod3.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/modules.mod3.tree b/transcrypt/development/automated_tests/transcrypt/__target__39/modules.mod3.tree new file mode 100644 index 000000000..6a48170c7 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/modules.mod3.tree @@ -0,0 +1,40 @@ +file: Module + body: list + element: Assign + targets: list + element: Name + id: str = x + ctx: Store + value: Constant + value: str = Toen wij uit Rotterdam vertrokken, vertrokken wij uit Rotterdam + + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = mod3Hundred + ctx: Store + value: Constant + value: int = 100 + kind: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = mod3GetTwoHundred + args: arguments + posonlyargs: list + args: list + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Constant + value: int = 200 + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/modules.mod4.js b/transcrypt/development/automated_tests/transcrypt/__target__39/modules.mod4.js new file mode 100644 index 000000000..9561a9967 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/modules.mod4.js @@ -0,0 +1,14 @@ +// Transcrypt'ed from Python, 2021-05-14 15:01:24 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +import {mod5Add2} from './modules.mod5.js'; +export {mod5Add2}; +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get mod4Add1 () {return mod4Add1;}, set mod4Add1 (value) {mod4Add1 = value;}, get mod4Add2FromMod5 () {return mod4Add2FromMod5;}, set mod4Add2FromMod5 (value) {mod4Add2FromMod5 = value;}}); +var __name__ = 'modules.mod4'; +export var mod4Add2FromMod5 = function (variable) { + return mod5Add2 (variable); +}; +export var mod4Add1 = function (variable) { + return variable + 1; +}; + +//# sourceMappingURL=modules.mod4.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/modules.mod4.tree b/transcrypt/development/automated_tests/transcrypt/__target__39/modules.mod4.tree new file mode 100644 index 000000000..8d316e1f6 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/modules.mod4.tree @@ -0,0 +1,65 @@ +file: Module + body: list + element: ImportFrom + module: str = modules.mod5 + names: list + element: alias + name: str = mod5Add2 + asname: NoneType = None + level: int = 0 + element: FunctionDef + name: str = mod4Add2FromMod5 + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = variable + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Call + func: Name + id: str = mod5Add2 + ctx: Load + args: list + element: Name + id: str = variable + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = mod4Add1 + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = variable + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: BinOp + left: Name + id: str = variable + ctx: Load + op: Add + right: Constant + value: int = 1 + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/modules.mod5.js b/transcrypt/development/automated_tests/transcrypt/__target__39/modules.mod5.js new file mode 100644 index 000000000..87d3716ca --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/modules.mod5.js @@ -0,0 +1,12 @@ +// Transcrypt'ed from Python, 2021-05-14 15:01:24 +var modules = {}; +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +import * as __module_modules_mod4__ from './modules.mod4.js'; +__nest__ (modules, 'mod4', __module_modules_mod4__); +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get mod5Add2 () {return mod5Add2;}, set mod5Add2 (value) {mod5Add2 = value;}}); +var __name__ = 'modules.mod5'; +export var mod5Add2 = function (variable) { + return modules.mod4.mod4Add1 (variable + 1); +}; + +//# sourceMappingURL=modules.mod5.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/modules.mod5.tree b/transcrypt/development/automated_tests/transcrypt/__target__39/modules.mod5.tree new file mode 100644 index 000000000..e88e351f6 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/modules.mod5.tree @@ -0,0 +1,47 @@ +file: Module + body: list + element: Import + names: list + element: alias + name: str = modules.mod4 + asname: NoneType = None + element: FunctionDef + name: str = mod5Add2 + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = variable + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Call + func: Attribute + value: Attribute + value: Name + id: str = modules + ctx: Load + attr: str = mod4 + ctx: Load + attr: str = mod4Add1 + ctx: Load + args: list + element: BinOp + left: Name + id: str = variable + ctx: Load + op: Add + right: Constant + value: int = 1 + kind: NoneType = None + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/modules.tree b/transcrypt/development/automated_tests/transcrypt/__target__39/modules.tree new file mode 100644 index 000000000..bd270099b --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/modules.tree @@ -0,0 +1,599 @@ +file: Module + body: list + element: Import + names: list + element: alias + name: str = modules.mod1.mod11.mod111 + asname: NoneType = None + element: Import + names: list + element: alias + name: str = modules.mod3 + asname: NoneType = None + element: Import + names: list + element: alias + name: str = modules.mod1.mod11.mod112 + asname: NoneType = None + element: Import + names: list + element: alias + name: str = modules.mod1 + asname: NoneType = None + element: Import + names: list + element: alias + name: str = modules.mod1.mod11 + asname: NoneType = None + element: Import + names: list + element: alias + name: str = modules.mod2 + asname: NoneType = None + element: Import + names: list + element: alias + name: str = modules.mod2.mod21 + asname: NoneType = None + element: Import + names: list + element: alias + name: str = modules.mod2.mod22 + asname: NoneType = None + element: Import + names: list + element: alias + name: str = modules.mod1.mod11.mod111 + asname: str = aliasMod111 + element: Import + names: list + element: alias + name: str = modules.mod1 + asname: str = aMod1 + element: ImportFrom + module: str = modules.mod1.mod11 + names: list + element: alias + name: str = mod111 + asname: NoneType = None + element: alias + name: str = mod112 + asname: NoneType = None + level: int = 0 + element: ImportFrom + module: str = modules.mod2 + names: list + element: alias + name: str = mod21 + asname: str = aMod21 + element: alias + name: str = mod22 + asname: str = aMod22 + level: int = 0 + element: ImportFrom + module: str = modules.mod3 + names: list + element: alias + name: str = * + asname: NoneType = None + level: int = 0 + element: ImportFrom + module: str = modules.mod1.mod11.mod111 + names: list + element: alias + name: str = A + asname: NoneType = None + level: int = 0 + element: ImportFrom + module: str = modules + names: list + element: alias + name: str = mod4 + asname: NoneType = None + level: int = 0 + element: Assign + targets: list + element: Name + id: str = a + ctx: Store + value: Call + func: Attribute + value: Attribute + value: Attribute + value: Attribute + value: Name + id: str = modules + ctx: Load + attr: str = mod1 + ctx: Load + attr: str = mod11 + ctx: Load + attr: str = mod111 + ctx: Load + attr: str = A + ctx: Load + args: list + element: Constant + value: int = 12345 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = pi + ctx: Store + value: Attribute + value: Attribute + value: Name + id: str = modules + ctx: Load + attr: str = mod1 + ctx: Load + attr: str = pi + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = f + ctx: Store + value: Attribute + value: Attribute + value: Name + id: str = modules + ctx: Load + attr: str = mod2 + ctx: Load + attr: str = f + ctx: Load + type_comment: NoneType = None + element: FunctionDef + name: str = run + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = autoTester + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = modules + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = a + ctx: Load + attr: str = f + ctx: Load + args: list + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Attribute + value: Attribute + value: Attribute + value: Name + id: str = modules + ctx: Load + attr: str = mod1 + ctx: Load + attr: str = mod11 + ctx: Load + attr: str = mod112 + ctx: Load + attr: str = f + ctx: Load + args: list + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Attribute + value: Attribute + value: Name + id: str = modules + ctx: Load + attr: str = mod1 + ctx: Load + attr: str = mod11 + ctx: Load + attr: str = e + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = pi + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = f + ctx: Load + args: list + element: Constant + value: int = 102030 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Attribute + value: Attribute + value: Name + id: str = modules + ctx: Load + attr: str = mod2 + ctx: Load + attr: str = mod21 + ctx: Load + attr: str = f + ctx: Load + args: list + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = B + ctx: Store + value: Attribute + value: Attribute + value: Attribute + value: Name + id: str = modules + ctx: Load + attr: str = mod2 + ctx: Load + attr: str = mod22 + ctx: Load + attr: str = B + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = b + ctx: Store + value: Call + func: Name + id: str = B + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = b + ctx: Load + attr: str = x + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Attribute + value: Name + id: str = modules + ctx: Load + attr: str = mod3 + ctx: Load + attr: str = x + ctx: Load + keywords: list + element: Assign + targets: list + element: Name + id: str = a2 + ctx: Store + value: Call + func: Attribute + value: Name + id: str = aliasMod111 + ctx: Load + attr: str = A + ctx: Load + args: list + element: Constant + value: int = 6789101112 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = a2 + ctx: Load + attr: str = f + ctx: Load + args: list + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = aMod1 + ctx: Load + attr: str = pi + ctx: Load + keywords: list + element: Assign + targets: list + element: Name + id: str = a3 + ctx: Store + value: Call + func: Attribute + value: Name + id: str = mod111 + ctx: Load + attr: str = A + ctx: Load + args: list + element: Constant + value: float = 100.001 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = a3 + ctx: Load + attr: str = f + ctx: Load + args: list + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = mod112 + ctx: Load + attr: str = f + ctx: Load + args: list + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = aMod21 + ctx: Load + attr: str = f + ctx: Load + args: list + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Call + func: Attribute + value: Name + id: str = aMod22 + ctx: Load + attr: str = B + ctx: Load + args: list + keywords: list + attr: str = x + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = mod3Hundred + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = mod3GetTwoHundred + ctx: Load + args: list + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Call + func: Name + id: str = A + ctx: Load + args: list + element: Constant + value: float = 123.321 + kind: NoneType = None + keywords: list + attr: str = f + ctx: Load + args: list + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = mod4 + ctx: Load + attr: str = mod4Add2FromMod5 + ctx: Load + args: list + element: Constant + value: int = 449 + kind: NoneType = None + keywords: list + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/nonlocals.js b/transcrypt/development/automated_tests/transcrypt/__target__39/nonlocals.js new file mode 100644 index 000000000..93f98e52d --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/nonlocals.js @@ -0,0 +1,17 @@ +// Transcrypt'ed from Python, 2021-05-14 15:01:24 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get run () {return run;}, set run (value) {run = value;}}); +var __name__ = 'nonlocals'; +export var run = function (autoTester) { + var test1 = 1; + var test2 = 2; + var f = function () { + var test1 = 10; + test2 = 20; + autoTester.check (test1, test2); + }; + f (); + autoTester.check (test1, test2); +}; + +//# sourceMappingURL=nonlocals.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/nonlocals.tree b/transcrypt/development/automated_tests/transcrypt/__target__39/nonlocals.tree new file mode 100644 index 000000000..f3ef15d09 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/nonlocals.tree @@ -0,0 +1,113 @@ +file: Module + body: list + element: FunctionDef + name: str = run + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = autoTester + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Name + id: str = test1 + ctx: Store + value: Constant + value: int = 1 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = test2 + ctx: Store + value: Constant + value: int = 2 + kind: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = f + args: arguments + posonlyargs: list + args: list + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Name + id: str = test1 + ctx: Store + value: Constant + value: int = 10 + kind: NoneType = None + type_comment: NoneType = None + element: Nonlocal + names: list + element: str = test2 + element: Assign + targets: list + element: Name + id: str = test2 + ctx: Store + value: Constant + value: int = 20 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = test1 + ctx: Load + element: Name + id: str = test2 + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = f + ctx: Load + args: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = test1 + ctx: Load + element: Name + id: str = test2 + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/operator_overloading.js b/transcrypt/development/automated_tests/transcrypt/__target__39/operator_overloading.js new file mode 100644 index 000000000..c319e25e8 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/operator_overloading.js @@ -0,0 +1,360 @@ +// Transcrypt'ed from Python, 2021-05-14 15:01:24 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +var __all__ = dict ({get Functor () {return Functor;}, set Functor (value) {Functor = value;}, get Matrix () {return Matrix;}, set Matrix (value) {Matrix = value;}, get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get f () {return f;}, set f (value) {f = value;}, get g () {return g;}, set g (value) {g = value;}, get run () {return run;}, set run (value) {run = value;}}); +var __name__ = 'operator_overloading'; +export var Matrix = __class__ ('Matrix', [object], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self, nRows, nCols, elements) { + if (typeof elements == 'undefined' || (elements != null && elements.hasOwnProperty ("__kwargtrans__"))) {; + var elements = []; + }; + self.nRows = nRows; + self.nCols = nCols; + if (len (elements)) { + self._ = elements; + } + else { + self._ = (function () { + var __accu0__ = []; + for (var row = 0; row < nRows; row++) { + __accu0__.append ((function () { + var __accu1__ = []; + for (var col = 0; col < nCols; col++) { + __accu1__.append (0); + } + return __accu1__; + }) ()); + } + return __accu0__; + }) (); + } + });}, + get __matmul__ () {return __get__ (this, function (self, other) { + var result = Matrix (self.nRows, other.nCols); + for (var iTargetRow = 0; iTargetRow < result.nRows; iTargetRow++) { + for (var iTargetCol = 0; iTargetCol < result.nCols; iTargetCol++) { + for (var iTerm = 0; iTerm < self.nCols; iTerm++) { + } + } + } + return result; + });}, + get __imatmul__ () {return __get__ (this, function (self, other) { + return self.__matmul__ (other); + });}, + get __mul__ () {return __get__ (this, function (self, other) { + if (py_typeof (other) == Matrix) { + var result = Matrix (self.nRows, self.nCols); + for (var iRow = 0; iRow < self.nRows; iRow++) { + for (var iCol = 0; iCol < self.nCols; iCol++) { + } + } + return result; + } + else { + return self.__rmul__ (other); + } + });}, + get __rmul__ () {return __get__ (this, function (self, scalar) { + var result = Matrix (self.nRows, self.nCols); + for (var iRow = 0; iRow < self.nRows; iRow++) { + for (var iCol = 0; iCol < self.nCols; iCol++) { + } + } + return result; + });}, + get __imul__ () {return __get__ (this, function (self, other) { + return self.__mul__ (other); + });}, + get __add__ () {return __get__ (this, function (self, other) { + var result = Matrix (self.nRows, self.nCols); + for (var iRow = 0; iRow < self.nRows; iRow++) { + for (var iCol = 0; iCol < self.nCols; iCol++) { + } + } + return result; + });}, + get __getitem__ () {return __get__ (this, function (self, index) { + return ; + });}, + get __setitem__ () {return __get__ (this, function (self, index, value) { + });}, + get __repr__ () {return __get__ (this, function (self) { + return repr (self._); + });}, + get __floordiv__ () {return __get__ (this, function (self, other) { + return 'Overloading __floordiv__ has no meaning for matrices'; + });}, + get __truediv__ () {return __get__ (this, function (self, other) { + return 'Overloading __truediv__ has no meaning for matrices'; + });} +}); +export var Functor = __class__ ('Functor', [object], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self, factor) { + self.factor = factor; + });}, + get __call__ () {return __get__ (this, function (self, x, y) { + if (typeof y == 'undefined' || (y != null && y.hasOwnProperty ("__kwargtrans__"))) {; + var y = -(1); + }; + var m = -(2); + var kwargs = dict (); + if (arguments.length) { + var __ilastarg0__ = arguments.length - 1; + if (arguments [__ilastarg0__] && arguments [__ilastarg0__].hasOwnProperty ("__kwargtrans__")) { + var __allkwargs0__ = arguments [__ilastarg0__--]; + for (var __attrib0__ in __allkwargs0__) { + switch (__attrib0__) { + case 'self': var self = __allkwargs0__ [__attrib0__]; break; + case 'x': var x = __allkwargs0__ [__attrib0__]; break; + case 'y': var y = __allkwargs0__ [__attrib0__]; break; + case 'm': var m = __allkwargs0__ [__attrib0__]; break; + case 'n': var n = __allkwargs0__ [__attrib0__]; break; + default: kwargs [__attrib0__] = __allkwargs0__ [__attrib0__]; + } + } + delete kwargs.__kwargtrans__; + } + var args = tuple ([].slice.apply (arguments).slice (3, __ilastarg0__ + 1)); + } + else { + var args = tuple (); + } + return tuple ([self.factor * x, self.factor * y, (function () { + var __accu0__ = []; + for (var arg of args) { + __accu0__.append (self.factor * arg); + } + return __accu0__; + }) (), self.factor * m, self.factor * n]); + });} +}); +export var f = Functor (10); +export var g = function (x, y) { + if (typeof y == 'undefined' || (y != null && y.hasOwnProperty ("__kwargtrans__"))) {; + var y = -(1); + }; + var m = -(2); + var kwargs = dict (); + if (arguments.length) { + var __ilastarg0__ = arguments.length - 1; + if (arguments [__ilastarg0__] && arguments [__ilastarg0__].hasOwnProperty ("__kwargtrans__")) { + var __allkwargs0__ = arguments [__ilastarg0__--]; + for (var __attrib0__ in __allkwargs0__) { + switch (__attrib0__) { + case 'x': var x = __allkwargs0__ [__attrib0__]; break; + case 'y': var y = __allkwargs0__ [__attrib0__]; break; + case 'm': var m = __allkwargs0__ [__attrib0__]; break; + case 'n': var n = __allkwargs0__ [__attrib0__]; break; + default: kwargs [__attrib0__] = __allkwargs0__ [__attrib0__]; + } + } + delete kwargs.__kwargtrans__; + } + var args = tuple ([].slice.apply (arguments).slice (2, __ilastarg0__ + 1)); + } + else { + var args = tuple (); + } + return tuple ([x, y, args, m, n]); +}; +export var run = function (autoTester) { + var m0 = Matrix (3, 3, [[1, 2, 3], [4, 5, 6], [7, 8, 10]]); + var m1 = Matrix (3, 3, [[10, 20, 30], [40, 50, 60], [70, 80, 90]]); + var m4 = Matrix (3, 3, [[1, 1, 2], [2, 2, 3], [3, 3, -(5)]]); + var m5 = Matrix (3, 3, [[1, 1, 2], [2, 2, 3], [3, 3, -(5)]]); + var x = 3; + var y = (x * 4) * x; + var fast = 2 * 3; + fast++; + var slow = __add__ (2, 3); + var m2 = __add__ (__mul__ (m0, m1), __mul__ (m1, __add__ (m0, m1))); + var m3 = __mul__ (__mul__ (2, __add__ (__mul__ (__mul__ (__mul__ (2, m0), 3), m1), __mul__ (m2, 4))), 2); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, , , , ); + }) (); + var m1 = __call__ (__iadd__, null, m1, m0); + var m2 = __call__ (__imul__, null, m2, m1); + var m5 = __call__ (__imatmul__, null, m5, m4); + var m6 = __matmul__ (m0, m1); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __truediv__ (m0, m1)); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __floordiv__ (m0, m1)); + }) (); + var fast2 = 16 * y + 1; + fast *= 2; + autoTester.check (m0, m1); + autoTester.check (x, y); + autoTester.check (m2); + autoTester.check (m3); + autoTester.check (m5); + autoTester.check (m6); + autoTester.check (fast, slow, fast2); + var x = 'marker'; + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __call__ (f, null, 3, 4, 30, 40, __kwargtrans__ ({m: 300, n: 400, p: 3000, q: 4000}))); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __call__ (g, null, 3, 4, 30, 40, __kwargtrans__ ({m: 300, n: 400, p: 3000, q: 4000}))); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __eq__ (__call__ (set, null, tuple ([1, 2, 3])), __call__ (set, null, tuple ([3, 2, 1])))); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __ne__ (__call__ (set, null, tuple ([1, 2, 3])), __call__ (set, null, tuple ([3, 2, 1])))); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __eq__ (__call__ (set, null, tuple ([1, 3])), __call__ (set, null, tuple ([3, 2, 1])))); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __ne__ (__call__ (set, null, tuple ([1, 3])), __call__ (set, null, tuple ([3, 2, 1])))); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __lt__ (__call__ (set, null, tuple ([1, 2])), __call__ (set, null, tuple ([3, 2, 1])))); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __le__ (__call__ (set, null, tuple ([1, 2, 3])), __call__ (set, null, tuple ([3, 2, 1])))); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __gt__ (__call__ (set, null, tuple ([1, 2, 3])), __call__ (set, null, tuple ([2, 1])))); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __ge__ (__call__ (set, null, tuple ([1, 2, 3])), __call__ (set, null, tuple ([3, 2, 1])))); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __eq__ (tuple ([1, 2, 3]), tuple ([1, 2, 3]))); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __eq__ ([1, 2, 3], [1, 2, 3])); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __ne__ (tuple ([1, 2, 3]), tuple ([1, 2, 3]))); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __ne__ ([1, 2, 3], [1, 2, 3])); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __eq__ (tuple ([2, 1, 3]), tuple ([1, 2, 3]))); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __eq__ ([2, 1, 3], [1, 2, 3])); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __ne__ (tuple ([2, 1, 3]), tuple ([1, 2, 3]))); + }) (); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __ne__ ([2, 1, 3], [1, 2, 3])); + }) (); + var Bitwise = __class__ ('Bitwise', [object], { + __module__: __name__, + get __lshift__ () {return __get__ (this, function (self, other) { + autoTester.check ('lshift'); + });}, + get __rlshift__ () {return __get__ (this, function (self, other) { + autoTester.check ('rlshift'); + });}, + get __rshift__ () {return __get__ (this, function (self, other) { + autoTester.check ('rshift'); + });}, + get __rrshift__ () {return __get__ (this, function (self, other) { + autoTester.check ('rrshift'); + });}, + get __or__ () {return __get__ (this, function (self, other) { + autoTester.check ('or'); + });}, + get __ror__ () {return __get__ (this, function (self, other) { + autoTester.check ('ror'); + });}, + get __xor__ () {return __get__ (this, function (self, other) { + autoTester.check ('xor'); + });}, + get __rxor__ () {return __get__ (this, function (self, other) { + autoTester.check ('rxor'); + });}, + get __and__ () {return __get__ (this, function (self, other) { + autoTester.check ('and'); + });}, + get __rand__ () {return __get__ (this, function (self, other) { + autoTester.check ('rand'); + });} + }); + var bitwise = Bitwise (); + __lshift__ (bitwise, []); + __lshift__ ([], bitwise); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __lshift__ (32, 2)); + }) (); + __rshift__ (bitwise, []); + __rshift__ ([], bitwise); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __rshift__ (32, 2)); + }) (); + __or__ (bitwise, []); + __or__ ([], bitwise); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __or__ (1, 4)); + }) (); + __xor__ (bitwise, []); + __xor__ ([], bitwise); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __xor__ (11, 13)); + }) (); + __and__ (bitwise, []); + __and__ ([], bitwise); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, __and__ (12, 20)); + }) (); + var a = 32; + var a = __call__ (__ilshift__, null, a, 2); + (function () { + var __accu0__ = autoTester; + return __call__ (__accu0__.check, __accu0__, a); + }) (); + autoTester.check (32 << 2); + autoTester.check (32 >> 2); + autoTester.check (1 | 4); + autoTester.check (11 ^ 13); + autoTester.check (12 & 20); + var a = 32; + a <<= 2; + autoTester.check (a); + var A = __class__ ('A', [object], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self) { + self.b = dict ({}); + });} + }); + var a = A (); + autoTester.check (); +}; + +//# sourceMappingURL=operator_overloading.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/operator_overloading.tree b/transcrypt/development/automated_tests/transcrypt/__target__39/operator_overloading.tree new file mode 100644 index 000000000..ff65d6fc1 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/operator_overloading.tree @@ -0,0 +1,3615 @@ +file: Module + body: list + element: ImportFrom + module: str = org.transcrypt.stubs.browser + names: list + element: alias + name: str = __pragma__ + asname: NoneType = None + level: int = 0 + element: ClassDef + name: str = Matrix + bases: list + keywords: list + body: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = nRows + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = nCols + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = elements + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + element: List + elts: list + ctx: Load + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = nRows + ctx: Store + value: Name + id: str = nRows + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = nCols + ctx: Store + value: Name + id: str = nCols + ctx: Load + type_comment: NoneType = None + element: If + test: Call + func: Name + id: str = len + ctx: Load + args: list + element: Name + id: str = elements + ctx: Load + keywords: list + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _ + ctx: Store + value: Name + id: str = elements + ctx: Load + type_comment: NoneType = None + orelse: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _ + ctx: Store + value: ListComp + elt: ListComp + elt: Constant + value: int = 0 + kind: NoneType = None + generators: list + element: comprehension + target: Name + id: str = col + ctx: Store + iter: Call + func: Name + id: str = range + ctx: Load + args: list + element: Name + id: str = nCols + ctx: Load + keywords: list + ifs: list + is_async: int = 0 + generators: list + element: comprehension + target: Name + id: str = row + ctx: Store + iter: Call + func: Name + id: str = range + ctx: Load + args: list + element: Name + id: str = nRows + ctx: Load + keywords: list + ifs: list + is_async: int = 0 + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __matmul__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Name + id: str = result + ctx: Store + value: Call + func: Name + id: str = Matrix + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = nRows + ctx: Load + element: Attribute + value: Name + id: str = other + ctx: Load + attr: str = nCols + ctx: Load + keywords: list + type_comment: NoneType = None + element: For + target: Name + id: str = iTargetRow + ctx: Store + iter: Call + func: Name + id: str = range + ctx: Load + args: list + element: Attribute + value: Name + id: str = result + ctx: Load + attr: str = nRows + ctx: Load + keywords: list + body: list + element: For + target: Name + id: str = iTargetCol + ctx: Store + iter: Call + func: Name + id: str = range + ctx: Load + args: list + element: Attribute + value: Name + id: str = result + ctx: Load + attr: str = nCols + ctx: Load + keywords: list + body: list + element: For + target: Name + id: str = iTerm + ctx: Store + iter: Call + func: Name + id: str = range + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = nCols + ctx: Load + keywords: list + body: list + element: AugAssign + target: Subscript + value: Subscript + value: Attribute + value: Name + id: str = result + ctx: Load + attr: str = _ + ctx: Load + slice: Name + id: str = iTargetRow + ctx: Load + ctx: Load + slice: Name + id: str = iTargetCol + ctx: Load + ctx: Store + op: Add + value: BinOp + left: Subscript + value: Subscript + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _ + ctx: Load + slice: Name + id: str = iTargetRow + ctx: Load + ctx: Load + slice: Name + id: str = iTerm + ctx: Load + ctx: Load + op: Mult + right: Subscript + value: Subscript + value: Attribute + value: Name + id: str = other + ctx: Load + attr: str = _ + ctx: Load + slice: Name + id: str = iTerm + ctx: Load + ctx: Load + slice: Name + id: str = iTargetCol + ctx: Load + ctx: Load + orelse: list + type_comment: NoneType = None + orelse: list + type_comment: NoneType = None + orelse: list + type_comment: NoneType = None + element: Return + value: Name + id: str = result + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __imatmul__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = __matmul__ + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __mul__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: Compare + left: Call + func: Name + id: str = type + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + keywords: list + ops: list + element: Eq + comparators: list + element: Name + id: str = Matrix + ctx: Load + body: list + element: Assign + targets: list + element: Name + id: str = result + ctx: Store + value: Call + func: Name + id: str = Matrix + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = nRows + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = nCols + ctx: Load + keywords: list + type_comment: NoneType = None + element: For + target: Name + id: str = iRow + ctx: Store + iter: Call + func: Name + id: str = range + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = nRows + ctx: Load + keywords: list + body: list + element: For + target: Name + id: str = iCol + ctx: Store + iter: Call + func: Name + id: str = range + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = nCols + ctx: Load + keywords: list + body: list + element: Assign + targets: list + element: Subscript + value: Subscript + value: Attribute + value: Name + id: str = result + ctx: Load + attr: str = _ + ctx: Load + slice: Name + id: str = iRow + ctx: Load + ctx: Load + slice: Name + id: str = iCol + ctx: Load + ctx: Store + value: BinOp + left: Subscript + value: Subscript + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _ + ctx: Load + slice: Name + id: str = iRow + ctx: Load + ctx: Load + slice: Name + id: str = iCol + ctx: Load + ctx: Load + op: Mult + right: Subscript + value: Subscript + value: Attribute + value: Name + id: str = other + ctx: Load + attr: str = _ + ctx: Load + slice: Name + id: str = iRow + ctx: Load + ctx: Load + slice: Name + id: str = iCol + ctx: Load + ctx: Load + type_comment: NoneType = None + orelse: list + type_comment: NoneType = None + orelse: list + type_comment: NoneType = None + element: Return + value: Name + id: str = result + ctx: Load + orelse: list + element: Return + value: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = __rmul__ + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __rmul__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = scalar + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Name + id: str = result + ctx: Store + value: Call + func: Name + id: str = Matrix + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = nRows + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = nCols + ctx: Load + keywords: list + type_comment: NoneType = None + element: For + target: Name + id: str = iRow + ctx: Store + iter: Call + func: Name + id: str = range + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = nRows + ctx: Load + keywords: list + body: list + element: For + target: Name + id: str = iCol + ctx: Store + iter: Call + func: Name + id: str = range + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = nCols + ctx: Load + keywords: list + body: list + element: Assign + targets: list + element: Subscript + value: Subscript + value: Attribute + value: Name + id: str = result + ctx: Load + attr: str = _ + ctx: Load + slice: Name + id: str = iRow + ctx: Load + ctx: Load + slice: Name + id: str = iCol + ctx: Load + ctx: Store + value: BinOp + left: Name + id: str = scalar + ctx: Load + op: Mult + right: Subscript + value: Subscript + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _ + ctx: Load + slice: Name + id: str = iRow + ctx: Load + ctx: Load + slice: Name + id: str = iCol + ctx: Load + ctx: Load + type_comment: NoneType = None + orelse: list + type_comment: NoneType = None + orelse: list + type_comment: NoneType = None + element: Return + value: Name + id: str = result + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __imul__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = __mul__ + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __add__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Name + id: str = result + ctx: Store + value: Call + func: Name + id: str = Matrix + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = nRows + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = nCols + ctx: Load + keywords: list + type_comment: NoneType = None + element: For + target: Name + id: str = iRow + ctx: Store + iter: Call + func: Name + id: str = range + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = nRows + ctx: Load + keywords: list + body: list + element: For + target: Name + id: str = iCol + ctx: Store + iter: Call + func: Name + id: str = range + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = nCols + ctx: Load + keywords: list + body: list + element: Assign + targets: list + element: Subscript + value: Subscript + value: Attribute + value: Name + id: str = result + ctx: Load + attr: str = _ + ctx: Load + slice: Name + id: str = iRow + ctx: Load + ctx: Load + slice: Name + id: str = iCol + ctx: Load + ctx: Store + value: BinOp + left: Subscript + value: Subscript + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _ + ctx: Load + slice: Name + id: str = iRow + ctx: Load + ctx: Load + slice: Name + id: str = iCol + ctx: Load + ctx: Load + op: Add + right: Subscript + value: Subscript + value: Attribute + value: Name + id: str = other + ctx: Load + attr: str = _ + ctx: Load + slice: Name + id: str = iRow + ctx: Load + ctx: Load + slice: Name + id: str = iCol + ctx: Load + ctx: Load + type_comment: NoneType = None + orelse: list + type_comment: NoneType = None + orelse: list + type_comment: NoneType = None + element: Return + value: Name + id: str = result + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __getitem__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = index + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Subscript + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _ + ctx: Load + slice: Name + id: str = index + ctx: Load + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __setitem__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = index + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = value + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Subscript + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _ + ctx: Load + slice: Name + id: str = index + ctx: Load + ctx: Store + value: Name + id: str = value + ctx: Load + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __repr__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _ + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __floordiv__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Constant + value: str = Overloading __floordiv__ has no meaning for matrices + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __truediv__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Constant + value: str = Overloading __truediv__ has no meaning for matrices + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: ClassDef + name: str = Functor + bases: list + keywords: list + body: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = factor + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = factor + ctx: Store + value: Name + id: str = factor + ctx: Load + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = kwargs + kind: NoneType = None + keywords: list + element: FunctionDef + name: str = __call__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = y + annotation: NoneType = None + type_comment: NoneType = None + vararg: arg + arg: str = args + annotation: NoneType = None + type_comment: NoneType = None + kwonlyargs: list + element: arg + arg: str = m + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = n + annotation: NoneType = None + type_comment: NoneType = None + kw_defaults: list + element: UnaryOp + op: USub + operand: Constant + value: int = 2 + kind: NoneType = None + element: NoneType = None + kwarg: arg + arg: str = kwargs + annotation: NoneType = None + type_comment: NoneType = None + defaults: list + element: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + body: list + element: Return + value: Tuple + elts: list + element: BinOp + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = factor + ctx: Load + op: Mult + right: Name + id: str = x + ctx: Load + element: BinOp + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = factor + ctx: Load + op: Mult + right: Name + id: str = y + ctx: Load + element: ListComp + elt: BinOp + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = factor + ctx: Load + op: Mult + right: Name + id: str = arg + ctx: Load + generators: list + element: comprehension + target: Name + id: str = arg + ctx: Store + iter: Name + id: str = args + ctx: Load + ifs: list + is_async: int = 0 + element: BinOp + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = factor + ctx: Load + op: Mult + right: Name + id: str = m + ctx: Load + element: BinOp + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = factor + ctx: Load + op: Mult + right: Name + id: str = n + ctx: Load + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = nokwargs + kind: NoneType = None + keywords: list + decorator_list: list + element: Assign + targets: list + element: Name + id: str = f + ctx: Store + value: Call + func: Name + id: str = Functor + ctx: Load + args: list + element: Constant + value: int = 10 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = kwargs + kind: NoneType = None + keywords: list + element: FunctionDef + name: str = g + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = y + annotation: NoneType = None + type_comment: NoneType = None + vararg: arg + arg: str = args + annotation: NoneType = None + type_comment: NoneType = None + kwonlyargs: list + element: arg + arg: str = m + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = n + annotation: NoneType = None + type_comment: NoneType = None + kw_defaults: list + element: UnaryOp + op: USub + operand: Constant + value: int = 2 + kind: NoneType = None + element: NoneType = None + kwarg: arg + arg: str = kwargs + annotation: NoneType = None + type_comment: NoneType = None + defaults: list + element: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + body: list + element: Return + value: Tuple + elts: list + element: Name + id: str = x + ctx: Load + element: Name + id: str = y + ctx: Load + element: Name + id: str = args + ctx: Load + element: Name + id: str = m + ctx: Load + element: Name + id: str = n + ctx: Load + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = nokwargs + kind: NoneType = None + keywords: list + element: FunctionDef + name: str = run + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = autoTester + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Name + id: str = m0 + ctx: Store + value: Call + func: Name + id: str = Matrix + ctx: Load + args: list + element: Constant + value: int = 3 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + element: List + elts: list + element: List + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + element: List + elts: list + element: Constant + value: int = 4 + kind: NoneType = None + element: Constant + value: int = 5 + kind: NoneType = None + element: Constant + value: int = 6 + kind: NoneType = None + ctx: Load + element: List + elts: list + element: Constant + value: int = 7 + kind: NoneType = None + element: Constant + value: int = 8 + kind: NoneType = None + element: Constant + value: int = 10 + kind: NoneType = None + ctx: Load + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = m1 + ctx: Store + value: Call + func: Name + id: str = Matrix + ctx: Load + args: list + element: Constant + value: int = 3 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + element: List + elts: list + element: List + elts: list + element: Constant + value: int = 10 + kind: NoneType = None + element: Constant + value: int = 20 + kind: NoneType = None + element: Constant + value: int = 30 + kind: NoneType = None + ctx: Load + element: List + elts: list + element: Constant + value: int = 40 + kind: NoneType = None + element: Constant + value: int = 50 + kind: NoneType = None + element: Constant + value: int = 60 + kind: NoneType = None + ctx: Load + element: List + elts: list + element: Constant + value: int = 70 + kind: NoneType = None + element: Constant + value: int = 80 + kind: NoneType = None + element: Constant + value: int = 90 + kind: NoneType = None + ctx: Load + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = m4 + ctx: Store + value: Call + func: Name + id: str = Matrix + ctx: Load + args: list + element: Constant + value: int = 3 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + element: List + elts: list + element: List + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + ctx: Load + element: List + elts: list + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + element: List + elts: list + element: Constant + value: int = 3 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + element: UnaryOp + op: USub + operand: Constant + value: int = 5 + kind: NoneType = None + ctx: Load + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = m5 + ctx: Store + value: Call + func: Name + id: str = Matrix + ctx: Load + args: list + element: Constant + value: int = 3 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + element: List + elts: list + element: List + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + ctx: Load + element: List + elts: list + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + element: List + elts: list + element: Constant + value: int = 3 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + element: UnaryOp + op: USub + operand: Constant + value: int = 5 + kind: NoneType = None + ctx: Load + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = x + ctx: Store + value: Constant + value: int = 3 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = y + ctx: Store + value: BinOp + left: BinOp + left: Name + id: str = x + ctx: Load + op: Mult + right: Constant + value: int = 4 + kind: NoneType = None + op: Mult + right: Name + id: str = x + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = fast + ctx: Store + value: BinOp + left: Constant + value: int = 2 + kind: NoneType = None + op: Mult + right: Constant + value: int = 3 + kind: NoneType = None + type_comment: NoneType = None + element: AugAssign + target: Name + id: str = fast + ctx: Store + op: Add + value: Constant + value: int = 1 + kind: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = opov + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Subscript + value: Subscript + value: Name + id: str = m1 + ctx: Load + slice: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + slice: Constant + value: int = 2 + kind: NoneType = None + ctx: Store + value: Subscript + value: Subscript + value: Name + id: str = m0 + ctx: Load + slice: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + slice: Constant + value: int = 2 + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = slow + ctx: Store + value: BinOp + left: Constant + value: int = 2 + kind: NoneType = None + op: Add + right: Constant + value: int = 3 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = m2 + ctx: Store + value: BinOp + left: BinOp + left: Name + id: str = m0 + ctx: Load + op: Mult + right: Name + id: str = m1 + ctx: Load + op: Add + right: BinOp + left: Name + id: str = m1 + ctx: Load + op: Mult + right: BinOp + left: Name + id: str = m0 + ctx: Load + op: Add + right: Name + id: str = m1 + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = m3 + ctx: Store + value: BinOp + left: BinOp + left: Constant + value: int = 2 + kind: NoneType = None + op: Mult + right: BinOp + left: BinOp + left: BinOp + left: BinOp + left: Constant + value: int = 2 + kind: NoneType = None + op: Mult + right: Name + id: str = m0 + ctx: Load + op: Mult + right: Constant + value: int = 3 + kind: NoneType = None + op: Mult + right: Name + id: str = m1 + ctx: Load + op: Add + right: BinOp + left: Name + id: str = m2 + ctx: Load + op: Mult + right: Constant + value: int = 4 + kind: NoneType = None + op: Mult + right: Constant + value: int = 2 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Subscript + value: Subscript + value: Name + id: str = m0 + ctx: Load + slice: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + slice: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + element: Subscript + value: Subscript + value: Name + id: str = m0 + ctx: Load + slice: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + slice: Constant + value: int = 2 + kind: NoneType = None + ctx: Load + element: Subscript + value: Subscript + value: Name + id: str = m1 + ctx: Load + slice: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + slice: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + element: Subscript + value: Subscript + value: Name + id: str = m1 + ctx: Load + slice: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + slice: Constant + value: int = 2 + kind: NoneType = None + ctx: Load + keywords: list + element: AugAssign + target: Name + id: str = m1 + ctx: Store + op: Add + value: Name + id: str = m0 + ctx: Load + element: AugAssign + target: Name + id: str = m2 + ctx: Store + op: Mult + value: Name + id: str = m1 + ctx: Load + element: AugAssign + target: Name + id: str = m5 + ctx: Store + op: MatMult + value: Name + id: str = m4 + ctx: Load + element: Assign + targets: list + element: Name + id: str = m6 + ctx: Store + value: BinOp + left: Name + id: str = m0 + ctx: Load + op: MatMult + right: Name + id: str = m1 + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BinOp + left: Name + id: str = m0 + ctx: Load + op: Div + right: Name + id: str = m1 + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BinOp + left: Name + id: str = m0 + ctx: Load + op: FloorDiv + right: Name + id: str = m1 + ctx: Load + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = noopov + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = fast2 + ctx: Store + value: BinOp + left: BinOp + left: Constant + value: int = 16 + kind: NoneType = None + op: Mult + right: Name + id: str = y + ctx: Load + op: Add + right: Constant + value: int = 1 + kind: NoneType = None + type_comment: NoneType = None + element: AugAssign + target: Name + id: str = fast + ctx: Store + op: Mult + value: Constant + value: int = 2 + kind: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = m0 + ctx: Load + element: Name + id: str = m1 + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = x + ctx: Load + element: Name + id: str = y + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = m2 + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = m3 + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = m5 + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = m6 + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = fast + ctx: Load + element: Name + id: str = slow + ctx: Load + element: Name + id: str = fast2 + ctx: Load + keywords: list + element: Assign + targets: list + element: Name + id: str = x + ctx: Store + value: Constant + value: str = marker + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = opov + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = f + ctx: Load + args: list + element: Constant + value: int = 3 + kind: NoneType = None + element: Constant + value: int = 4 + kind: NoneType = None + element: Constant + value: int = 30 + kind: NoneType = None + element: Constant + value: int = 40 + kind: NoneType = None + keywords: list + element: keyword + arg: str = m + value: Constant + value: int = 300 + kind: NoneType = None + element: keyword + arg: str = n + value: Constant + value: int = 400 + kind: NoneType = None + element: keyword + arg: str = p + value: Constant + value: int = 3000 + kind: NoneType = None + element: keyword + arg: str = q + value: Constant + value: int = 4000 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = g + ctx: Load + args: list + element: Constant + value: int = 3 + kind: NoneType = None + element: Constant + value: int = 4 + kind: NoneType = None + element: Constant + value: int = 30 + kind: NoneType = None + element: Constant + value: int = 40 + kind: NoneType = None + keywords: list + element: keyword + arg: str = m + value: Constant + value: int = 300 + kind: NoneType = None + element: keyword + arg: str = n + value: Constant + value: int = 400 + kind: NoneType = None + element: keyword + arg: str = p + value: Constant + value: int = 3000 + kind: NoneType = None + element: keyword + arg: str = q + value: Constant + value: int = 4000 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Call + func: Name + id: str = set + ctx: Load + args: list + element: Tuple + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + keywords: list + ops: list + element: Eq + comparators: list + element: Call + func: Name + id: str = set + ctx: Load + args: list + element: Tuple + elts: list + element: Constant + value: int = 3 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Call + func: Name + id: str = set + ctx: Load + args: list + element: Tuple + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + keywords: list + ops: list + element: NotEq + comparators: list + element: Call + func: Name + id: str = set + ctx: Load + args: list + element: Tuple + elts: list + element: Constant + value: int = 3 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Call + func: Name + id: str = set + ctx: Load + args: list + element: Tuple + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + keywords: list + ops: list + element: Eq + comparators: list + element: Call + func: Name + id: str = set + ctx: Load + args: list + element: Tuple + elts: list + element: Constant + value: int = 3 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Call + func: Name + id: str = set + ctx: Load + args: list + element: Tuple + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + keywords: list + ops: list + element: NotEq + comparators: list + element: Call + func: Name + id: str = set + ctx: Load + args: list + element: Tuple + elts: list + element: Constant + value: int = 3 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Call + func: Name + id: str = set + ctx: Load + args: list + element: Tuple + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + ctx: Load + keywords: list + ops: list + element: Lt + comparators: list + element: Call + func: Name + id: str = set + ctx: Load + args: list + element: Tuple + elts: list + element: Constant + value: int = 3 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Call + func: Name + id: str = set + ctx: Load + args: list + element: Tuple + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + keywords: list + ops: list + element: LtE + comparators: list + element: Call + func: Name + id: str = set + ctx: Load + args: list + element: Tuple + elts: list + element: Constant + value: int = 3 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Call + func: Name + id: str = set + ctx: Load + args: list + element: Tuple + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + keywords: list + ops: list + element: Gt + comparators: list + element: Call + func: Name + id: str = set + ctx: Load + args: list + element: Tuple + elts: list + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Call + func: Name + id: str = set + ctx: Load + args: list + element: Tuple + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + keywords: list + ops: list + element: GtE + comparators: list + element: Call + func: Name + id: str = set + ctx: Load + args: list + element: Tuple + elts: list + element: Constant + value: int = 3 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Tuple + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + ops: list + element: Eq + comparators: list + element: Tuple + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: List + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + ops: list + element: Eq + comparators: list + element: List + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Tuple + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + ops: list + element: NotEq + comparators: list + element: Tuple + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: List + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + ops: list + element: NotEq + comparators: list + element: List + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Tuple + elts: list + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + ops: list + element: Eq + comparators: list + element: Tuple + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: List + elts: list + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + ops: list + element: Eq + comparators: list + element: List + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: Tuple + elts: list + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + ops: list + element: NotEq + comparators: list + element: Tuple + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Compare + left: List + elts: list + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + ops: list + element: NotEq + comparators: list + element: List + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = noopov + kind: NoneType = None + keywords: list + element: ClassDef + name: str = Bitwise + bases: list + keywords: list + body: list + element: FunctionDef + name: str = __lshift__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = lshift + kind: NoneType = None + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __rlshift__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = rlshift + kind: NoneType = None + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __rshift__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = rshift + kind: NoneType = None + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __rrshift__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = rrshift + kind: NoneType = None + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __or__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = or + kind: NoneType = None + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __ror__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = ror + kind: NoneType = None + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __xor__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = xor + kind: NoneType = None + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __rxor__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = rxor + kind: NoneType = None + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __and__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = and + kind: NoneType = None + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __rand__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = rand + kind: NoneType = None + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: Assign + targets: list + element: Name + id: str = bitwise + ctx: Store + value: Call + func: Name + id: str = Bitwise + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = opov + kind: NoneType = None + keywords: list + element: Expr + value: BinOp + left: Name + id: str = bitwise + ctx: Load + op: LShift + right: List + elts: list + ctx: Load + element: Expr + value: BinOp + left: List + elts: list + ctx: Load + op: LShift + right: Name + id: str = bitwise + ctx: Load + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BinOp + left: Constant + value: int = 32 + kind: NoneType = None + op: LShift + right: Constant + value: int = 2 + kind: NoneType = None + keywords: list + element: Expr + value: BinOp + left: Name + id: str = bitwise + ctx: Load + op: RShift + right: List + elts: list + ctx: Load + element: Expr + value: BinOp + left: List + elts: list + ctx: Load + op: RShift + right: Name + id: str = bitwise + ctx: Load + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BinOp + left: Constant + value: int = 32 + kind: NoneType = None + op: RShift + right: Constant + value: int = 2 + kind: NoneType = None + keywords: list + element: Expr + value: BinOp + left: Name + id: str = bitwise + ctx: Load + op: BitOr + right: List + elts: list + ctx: Load + element: Expr + value: BinOp + left: List + elts: list + ctx: Load + op: BitOr + right: Name + id: str = bitwise + ctx: Load + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BinOp + left: Constant + value: int = 1 + kind: NoneType = None + op: BitOr + right: Constant + value: int = 4 + kind: NoneType = None + keywords: list + element: Expr + value: BinOp + left: Name + id: str = bitwise + ctx: Load + op: BitXor + right: List + elts: list + ctx: Load + element: Expr + value: BinOp + left: List + elts: list + ctx: Load + op: BitXor + right: Name + id: str = bitwise + ctx: Load + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BinOp + left: Constant + value: int = 11 + kind: NoneType = None + op: BitXor + right: Constant + value: int = 13 + kind: NoneType = None + keywords: list + element: Expr + value: BinOp + left: Name + id: str = bitwise + ctx: Load + op: BitAnd + right: List + elts: list + ctx: Load + element: Expr + value: BinOp + left: List + elts: list + ctx: Load + op: BitAnd + right: Name + id: str = bitwise + ctx: Load + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BinOp + left: Constant + value: int = 12 + kind: NoneType = None + op: BitAnd + right: Constant + value: int = 20 + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = a + ctx: Store + value: Constant + value: int = 32 + kind: NoneType = None + type_comment: NoneType = None + element: AugAssign + target: Name + id: str = a + ctx: Store + op: LShift + value: Constant + value: int = 2 + kind: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = a + ctx: Load + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = noopov + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BinOp + left: Constant + value: int = 32 + kind: NoneType = None + op: LShift + right: Constant + value: int = 2 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BinOp + left: Constant + value: int = 32 + kind: NoneType = None + op: RShift + right: Constant + value: int = 2 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BinOp + left: Constant + value: int = 1 + kind: NoneType = None + op: BitOr + right: Constant + value: int = 4 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BinOp + left: Constant + value: int = 11 + kind: NoneType = None + op: BitXor + right: Constant + value: int = 13 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BinOp + left: Constant + value: int = 12 + kind: NoneType = None + op: BitAnd + right: Constant + value: int = 20 + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = a + ctx: Store + value: Constant + value: int = 32 + kind: NoneType = None + type_comment: NoneType = None + element: AugAssign + target: Name + id: str = a + ctx: Store + op: LShift + value: Constant + value: int = 2 + kind: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = a + ctx: Load + keywords: list + element: ClassDef + name: str = A + bases: list + keywords: list + body: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = b + ctx: Store + value: Dict + keys: list + values: list + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: Assign + targets: list + element: Name + id: str = a + ctx: Store + value: Call + func: Name + id: str = A + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Subscript + value: Attribute + value: Name + id: str = a + ctx: Load + attr: str = b + ctx: Load + slice: Constant + value: str = c + kind: NoneType = None + ctx: Store + value: Constant + value: str = d + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = opov + kind: NoneType = None + keywords: list + element: AugAssign + target: Subscript + value: Attribute + value: Name + id: str = a + ctx: Load + attr: str = b + ctx: Load + slice: Constant + value: str = c + kind: NoneType = None + ctx: Store + op: Add + value: Constant + value: str = e + kind: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = noopov + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Subscript + value: Attribute + value: Name + id: str = a + ctx: Load + attr: str = b + ctx: Load + slice: Constant + value: str = c + kind: NoneType = None + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/org.transcrypt.__runtime__.js b/transcrypt/development/automated_tests/transcrypt/__target__39/org.transcrypt.__runtime__.js new file mode 100644 index 000000000..02d184a22 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/org.transcrypt.__runtime__.js @@ -0,0 +1,2602 @@ +// Transcrypt'ed from Python, 2021-05-14 15:01:24 +var __all__ = dict ({get AssertionError () {return AssertionError;}, set AssertionError (value) {AssertionError = value;}, get AttributeError () {return AttributeError;}, set AttributeError (value) {AttributeError = value;}, get BaseException () {return BaseException;}, set BaseException (value) {BaseException = value;}, get DeprecationWarning () {return DeprecationWarning;}, set DeprecationWarning (value) {DeprecationWarning = value;}, get Exception () {return Exception;}, set Exception (value) {Exception = value;}, get IndexError () {return IndexError;}, set IndexError (value) {IndexError = value;}, get IterableError () {return IterableError;}, set IterableError (value) {IterableError = value;}, get KeyError () {return KeyError;}, set KeyError (value) {KeyError = value;}, get NotImplementedError () {return NotImplementedError;}, set NotImplementedError (value) {NotImplementedError = value;}, get RuntimeWarning () {return RuntimeWarning;}, set RuntimeWarning (value) {RuntimeWarning = value;}, get StopIteration () {return StopIteration;}, set StopIteration (value) {StopIteration = value;}, get TypeError () {return TypeError;}, set TypeError (value) {TypeError = value;}, get UserWarning () {return UserWarning;}, set UserWarning (value) {UserWarning = value;}, get ValueError () {return ValueError;}, set ValueError (value) {ValueError = value;}, get Warning () {return Warning;}, set Warning (value) {Warning = value;}, get __Terminal__ () {return __Terminal__;}, set __Terminal__ (value) {__Terminal__ = value;}, get __conj__ () {return __conj__;}, set __conj__ (value) {__conj__ = value;}, get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get __sort__ () {return __sort__;}, set __sort__ (value) {__sort__ = value;}, get __terminal__ () {return __terminal__;}, set __terminal__ (value) {__terminal__ = value;}, get complex () {return complex;}, set complex (value) {complex = value;}, get divmod () {return divmod;}, set divmod (value) {divmod = value;}, get filter () {return filter;}, set filter (value) {filter = value;}, get input () {return input;}, set input (value) {input = value;}, get map () {return map;}, set map (value) {map = value;}, get print () {return print;}, set print (value) {print = value;}, get sorted () {return sorted;}, set sorted (value) {sorted = value;}}); +var __name__ = 'org.transcrypt.__runtime__'; +export var __envir__ = {}; +__envir__.interpreter_name = 'python'; +__envir__.transpiler_name = 'transcrypt'; +__envir__.executor_name = __envir__.transpiler_name; +__envir__.transpiler_version = '3.8.0'; + +export function __nest__ (headObject, tailNames, value) { + var current = headObject; + if (tailNames != '') { + var tailChain = tailNames.split ('.'); + var firstNewIndex = tailChain.length; + for (var index = 0; index < tailChain.length; index++) { + if (!current.hasOwnProperty (tailChain [index])) { + firstNewIndex = index; + break; + } + current = current [tailChain [index]]; + } + for (var index = firstNewIndex; index < tailChain.length; index++) { + current [tailChain [index]] = {}; + current = current [tailChain [index]]; + } + } + for (let attrib of Object.getOwnPropertyNames (value)) { + Object.defineProperty (current, attrib, { + get () {return value [attrib];}, + enumerable: true, + configurable: true + }); + } +}; +export function __init__ (module) { + if (!module.__inited__) { + module.__all__.__init__ (module.__all__); + module.__inited__ = true; + } + return module.__all__; +}; +export function __get__ (aThis, func, quotedFuncName) { + if (aThis) { + if (aThis.hasOwnProperty ('__class__') || typeof aThis == 'string' || aThis instanceof String) { + if (quotedFuncName) { + Object.defineProperty (aThis, quotedFuncName, { + value: function () { + var args = [] .slice.apply (arguments); + return func.apply (null, [aThis] .concat (args)); + }, + writable: true, + enumerable: true, + configurable: true + }); + } + return function () { + var args = [] .slice.apply (arguments); + return func.apply (null, [aThis.__proxy__ ? aThis.__proxy__ : aThis] .concat (args)); + }; + } + else { + return func; + } + } + else { + return func; + } +}; +export function __getcm__ (aThis, func, quotedFuncName) { + if (aThis.hasOwnProperty ('__class__')) { + return function () { + var args = [] .slice.apply (arguments); + return func.apply (null, [aThis.__class__] .concat (args)); + }; + } + else { + return function () { + var args = [] .slice.apply (arguments); + return func.apply (null, [aThis] .concat (args)); + }; + } +}; +export function __getsm__ (aThis, func, quotedFuncName) { + return func; +}; +export var py_metatype = { + __name__: 'type', + __bases__: [], + __new__: function (meta, name, bases, attribs) { + var cls = function () { + var args = [] .slice.apply (arguments); + return cls.__new__ (args); + }; + for (var index = bases.length - 1; index >= 0; index--) { + var base = bases [index]; + for (var attrib in base) { + var descrip = Object.getOwnPropertyDescriptor (base, attrib); + if (descrip == null) { + continue; + } + Object.defineProperty (cls, attrib, descrip); + } + for (let symbol of Object.getOwnPropertySymbols (base)) { + let descrip = Object.getOwnPropertyDescriptor (base, symbol); + Object.defineProperty (cls, symbol, descrip); + } + } + cls.__metaclass__ = meta; + cls.__name__ = name.startsWith ('py_') ? name.slice (3) : name; + cls.__bases__ = bases; + for (var attrib in attribs) { + var descrip = Object.getOwnPropertyDescriptor (attribs, attrib); + Object.defineProperty (cls, attrib, descrip); + } + for (let symbol of Object.getOwnPropertySymbols (attribs)) { + let descrip = Object.getOwnPropertyDescriptor (attribs, symbol); + Object.defineProperty (cls, symbol, descrip); + } + return cls; + } +}; +py_metatype.__metaclass__ = py_metatype; +export var object = { + __init__: function (self) {}, + __metaclass__: py_metatype, + __name__: 'object', + __bases__: [], + __new__: function (args) { + var instance = Object.create (this, {__class__: {value: this, enumerable: true}}); + if ('__getattr__' in this || '__setattr__' in this) { + instance.__proxy__ = new Proxy (instance, { + get: function (target, name) { + let result = target [name]; + if (result == undefined) { + return target.__getattr__ (name); + } + else { + return result; + } + }, + set: function (target, name, value) { + try { + target.__setattr__ (name, value); + } + catch (exception) { + target [name] = value; + } + return true; + } + }) + instance = instance.__proxy__ + } + this.__init__.apply (null, [instance] .concat (args)); + return instance; + } +}; +export function __class__ (name, bases, attribs, meta) { + if (meta === undefined) { + meta = bases [0] .__metaclass__; + } + return meta.__new__ (meta, name, bases, attribs); +}; +export function __pragma__ () {}; +export function __call__ (/* , , * */) { + var args = [] .slice.apply (arguments); + if (typeof args [0] == 'object' && '__call__' in args [0]) { + return args [0] .__call__ .apply (args [1], args.slice (2)); + } + else { + return args [0] .apply (args [1], args.slice (2)); + } +}; +__envir__.executor_name = __envir__.transpiler_name; +var __main__ = {__file__: ''}; +var __except__ = null; +export function __kwargtrans__ (anObject) { + anObject.__kwargtrans__ = null; + anObject.constructor = Object; + return anObject; +} +export function __super__ (aClass, methodName) { + for (let base of aClass.__bases__) { + if (methodName in base) { + return base [methodName]; + } + } + throw new Exception ('Superclass method not found'); +} +export function property (getter, setter) { + if (!setter) { + setter = function () {}; + } + return {get: function () {return getter (this)}, set: function (value) {setter (this, value)}, enumerable: true}; +} +export function __setproperty__ (anObject, name, descriptor) { + if (!anObject.hasOwnProperty (name)) { + Object.defineProperty (anObject, name, descriptor); + } +} +export function assert (condition, message) { + if (!condition) { + throw AssertionError (message, new Error ()); + } +} +export function __mergekwargtrans__ (object0, object1) { + var result = {}; + for (var attrib in object0) { + result [attrib] = object0 [attrib]; + } + for (var attrib in object1) { + result [attrib] = object1 [attrib]; + } + return result; +}; +export function __mergefields__ (targetClass, sourceClass) { + let fieldNames = ['__reprfields__', '__comparefields__', '__initfields__'] + if (sourceClass [fieldNames [0]]) { + if (targetClass [fieldNames [0]]) { + for (let fieldName of fieldNames) { + targetClass [fieldName] = new Set ([...targetClass [fieldName], ...sourceClass [fieldName]]); + } + } + else { + for (let fieldName of fieldNames) { + targetClass [fieldName] = new Set (sourceClass [fieldName]); + } + } + } +} +export function __withblock__ (manager, statements) { + if (hasattr (manager, '__enter__')) { + try { + manager.__enter__ (); + statements (); + manager.__exit__ (); + } + catch (exception) { + if (! (manager.__exit__ (exception.name, exception, exception.stack))) { + throw exception; + } + } + } + else { + statements (); + manager.close (); + } +}; +export function dir (obj) { + var aList = []; + for (var aKey in obj) { + aList.push (aKey.startsWith ('py_') ? aKey.slice (3) : aKey); + } + aList.sort (); + return aList; +}; +export function setattr (obj, name, value) { + obj [name] = value; +}; +export function getattr (obj, name) { + return name in obj ? obj [name] : obj ['py_' + name]; +}; +export function hasattr (obj, name) { + try { + return name in obj || 'py_' + name in obj; + } + catch (exception) { + return false; + } +}; +export function delattr (obj, name) { + if (name in obj) { + delete obj [name]; + } + else { + delete obj ['py_' + name]; + } +}; +export function __in__ (element, container) { + if (container === undefined || container === null) { + return false; + } + if (container.__contains__ instanceof Function) { + return container.__contains__ (element); + } + else { + return ( + container.indexOf ? + container.indexOf (element) > -1 : + container.hasOwnProperty (element) + ); + } +}; +export function __specialattrib__ (attrib) { + return (attrib.startswith ('__') && attrib.endswith ('__')) || attrib == 'constructor' || attrib.startswith ('py_'); +}; +export function len (anObject) { + if (anObject === undefined || anObject === null) { + return 0; + } + if (anObject.__len__ instanceof Function) { + return anObject.__len__ (); + } + if (anObject.length !== undefined) { + return anObject.length; + } + var length = 0; + for (var attr in anObject) { + if (!__specialattrib__ (attr)) { + length++; + } + } + return length; +}; +export function __i__ (any) { + return py_typeof (any) == dict ? any.py_keys () : any; +} +export function __k__ (keyed, key) { + var result = keyed [key]; + if (typeof result == 'undefined') { + if (keyed instanceof Array) + if (key == +key && key >= 0 && keyed.length > key) + return result; + else + throw IndexError (key, new Error()); + else + throw KeyError (key, new Error()); + } + return result; +} +export function __t__ (target) { + return ( + target === undefined || target === null ? false : + ['boolean', 'number'] .indexOf (typeof target) >= 0 ? target : + target.__bool__ instanceof Function ? (target.__bool__ () ? target : false) : + target.__len__ instanceof Function ? (target.__len__ () !== 0 ? target : false) : + target instanceof Function ? target : + len (target) !== 0 ? target : + false + ); +} +export function float (any) { + if (any == 'inf') { + return Infinity; + } + else if (any == '-inf') { + return -Infinity; + } + else if (any == 'nan') { + return NaN; + } + else if (isNaN (parseFloat (any))) { + if (any === false) { + return 0; + } + else if (any === true) { + return 1; + } + else { + throw ValueError ("could not convert string to float: '" + str(any) + "'", new Error ()); + } + } + else { + return +any; + } +}; +float.__name__ = 'float'; +float.__bases__ = [object]; +export function int (any) { + return float (any) | 0 +}; +int.__name__ = 'int'; +int.__bases__ = [object]; +Number.prototype.__format__ = function (fmt_spec) { + if (fmt_spec == undefined || fmt_spec.strip ().length == 0) { + return this.toString (); + } + var thousand_sep = false; + var g_default = false; + var width = 0; + var zero = false; + var alternate = false; + var sign = '-'; + var align = '>'; + var fill = ' '; + var precision = undefined; + var ftype = undefined; + var val = this.valueOf (); + var is_negative = val < 0; + val = Math.abs (val); + function pad (s, width, fill, align) { + if (fill == undefined) { + fill = ' '; + } + if (align == undefined) { + align = '>'; + } + var alt = ''; + var sign = ''; + if (s.startswith (['+', '-'])) { + sign = s [0]; + s = s.substr (1); + } + if (alternate && s.startswith (['0b', '0o', '0x'])) { + alt = s.slice (0, 2); + s = s.substr (2); + } + var len = s.length + sign.length + alt.length; + var c = width - len; + switch (align) { + case '=': + return sign + alt + __mul__ (fill, c) + s; + case '>': + return __mul__ (fill, c) + sign + alt + s; + case '<': + return sign + alt + s + __mul__ (fill, c); + case '^': + var m = ((c % 2) + 2) % 2; + var c = Math.floor (c / 2); + return __mul__ (fill, c) + sign + alt + s + __mul__ (fill, c + m); + default: + throw ValueError ("Invalid align type: '" + align + "'", new Error ()); + } + }; + function format_float (val) { + if (val.indexOf ('e+') == -1 && (ftype == 'g' || ftype == 'G')) { + var parts = val.py_split ('.'); + var d = parts [0]; + var t = parts [1]; + while (t [t.length - 1] == '0') { + t = t.slice (0, -1); + } + val = t != '' ? '.'.join ([d, t]) : d; + } + if (alternate && val.indexOf ('.') == -1) { + val = val + '.'; + } + return val; + }; + if (fmt_spec.endswith (['b', 'c', 'd', 'e', 'E', 'f', 'F', 'g', 'G', 'n', 'o', 'x', 'X', '%'])) { + ftype = fmt_spec [fmt_spec.length - 1]; + fmt_spec = fmt_spec.slice (0, -1); + if (ftype == 'n') { + ftype = Number.isInteger (val) ? 'd' : 'f'; + } + } + else { + ftype = Number.isInteger (val) ? 'd' : 'g'; + g_default = true; + } + var parts = fmt_spec.split ('.'); + fmt_spec = parts [0]; + precision = parts [1]; + if (precision != undefined) { + precision = parseInt (precision); + } + if (fmt_spec.length > 0 && fmt_spec [fmt_spec.length - 1] == ',') { + thousand_sep = true; + fmt_spec = fmt_spec.slice (0, -1); + } + if (fmt_spec.length > 0) { + var _width = ''; + while (fmt_spec && fmt_spec [fmt_spec.length - 1].isnumeric ()) { + _width = fmt_spec [fmt_spec.length - 1] + _width; + fmt_spec = fmt_spec.slice (0, -1); + } + if (_width.length > 0) { + if (_width [0] == '0') { + width = parseInt (_width.substr (1)); + zero = true; + } + else { + width = parseInt (_width); + } + } + if (fmt_spec.length > 0 && fmt_spec [fmt_spec.length - 1] == '#') { + alternate = true; + fmt_spec = fmt_spec.slice (0, -1); + } + if (fmt_spec.length > 0 && fmt_spec.endswith (['+', '-', ' '])) { + sign = fmt_spec [fmt_spec.length - 1]; + fmt_spec = fmt_spec.slice (0, -1); + } + if (fmt_spec.length > 0 && fmt_spec.endswith (['<', '>', '=', '^'])) { + align = fmt_spec [fmt_spec.length - 1]; + fmt_spec = fmt_spec.slice (0, -1); + } + if (fmt_spec.length > 0) { + fill = fmt_spec [0]; + } + } + if (isNaN (val)) { + val = 'nan'; + } + else if (val == Infinity) { + val = 'inf'; + } + else { + switch (ftype) { + case 'b': + val = Math.floor (val).toString (2); + if (alternate) { + val = '0b' + val; + } + break; + case 'c': + val = String.fromCharCode (Math.floor (val)); + break; + case 'd': + val = Math.floor (val).toString (); + if (thousand_sep) { + val = val.replace (/\B(?=(\d{3})+(?!\d))/g, ','); + } + break; + case 'o': + val = Math.floor (val).toString (8); + if (alternate) { + val = '0o' + val; + } + break; + case 'x': + case 'X': + val = Math.floor (val).toString (16); + if (alternate) { + val = '0x' + val; + } + break; + case 'e': + case 'E': + if (precision == undefined) { + precision = 6; + } + var num_exp = val.toExponential (precision).split ('e+'); + var num = num_exp [0]; + var exp = num_exp [1]; + val = num.toString () + 'e+' + pad (exp.toString(), 2, '0'); + val = format_float (val); + break; + case 'f': + case 'F': + case '%': + if (precision == undefined) { + precision = 6; + } + if (ftype == '%') { + val *= 100; + } + val = val.toFixed (precision); + val = format_float (val); + if (ftype == '%') { + val += '%'; + } + break; + case 'g': + case 'G': + if (precision == undefined) { + precision = g_default ? 1 : 6; + } + if (precision == 0) { + precision = 1; + } + var convert_to_exponent = false; + if (g_default) { + var parts = val.toString ().split ('.'); + var digit_count = parts [0].length + parts [1].length; + if (digit_count >= precision) { + convert_to_exponent = true; + } + } + var num_exp = val.toExponential (precision - 1).split ('e+'); + var num = num_exp [0]; + var exp = num_exp [1]; + convert_to_exponent |= !((-4 <= exp && exp < precision)); + if (convert_to_exponent) { + val = num.toString() + 'e+' + pad (exp.toString(), 2, '0'); + } + else { + val = val.toFixed (precision - 1 - exp); + } + val = format_float (val); + break; + default: + throw ValueError ("Invalid format type: '" + ftype + "'", new Error ()); + } + } + if (ftype === ftype.toUpperCase ()) { + val = val.toUpperCase () + } + if (ftype != 'c') { + if (sign == '-') { + if (is_negative) { + val = '-' + val; + } + } + else { + val = is_negative ? '-' + val : sign + val; + } + } + if (zero) { + fill = '0'; + align = '='; + } + if (width > 0) { + val = pad (val, width, fill, align); + } + return val; +}; +export function bool (any) { + return !!__t__ (any); +}; +bool.__name__ = 'bool'; +bool.__bases__ = [int]; +export function py_typeof (anObject) { + var aType = typeof anObject; + if (aType == 'object') { + try { + return '__class__' in anObject ? anObject.__class__ : object; + } + catch (exception) { + return aType; + } + } + else { + return ( + aType == 'boolean' ? bool : + aType == 'string' ? str : + aType == 'number' ? (anObject % 1 == 0 ? int : float) : + null + ); + } +}; +export function issubclass (aClass, classinfo) { + if (classinfo instanceof Array) { + for (let aClass2 of classinfo) { + if (issubclass (aClass, aClass2)) { + return true; + } + } + return false; + } + try { + var aClass2 = aClass; + if (aClass2 == classinfo) { + return true; + } + else { + var bases = [].slice.call (aClass2.__bases__); + while (bases.length) { + aClass2 = bases.shift (); + if (aClass2 == classinfo) { + return true; + } + if (aClass2.__bases__.length) { + bases = [].slice.call (aClass2.__bases__).concat (bases); + } + } + return false; + } + } + catch (exception) { + return aClass == classinfo || classinfo == object; + } +}; +export function isinstance (anObject, classinfo) { + try { + return '__class__' in anObject ? issubclass (anObject.__class__, classinfo) : issubclass (py_typeof (anObject), classinfo); + } + catch (exception) { + return issubclass (py_typeof (anObject), classinfo); + } +}; +export function callable (anObject) { + return anObject && typeof anObject == 'object' && '__call__' in anObject ? true : typeof anObject === 'function'; +}; +export function repr (anObject) { + try { + return anObject.__repr__ (); + } + catch (exception) { + try { + return anObject.__str__ (); + } + catch (exception) { + try { + if (anObject == null) { + return 'None'; + } + else if (anObject.constructor == Object) { + var result = '{'; + var comma = false; + for (var attrib in anObject) { + if (!__specialattrib__ (attrib)) { + if (attrib.isnumeric ()) { + var attribRepr = attrib; + } + else { + var attribRepr = '\'' + attrib + '\''; + } + if (comma) { + result += ', '; + } + else { + comma = true; + } + result += attribRepr + ': ' + repr (anObject [attrib]); + } + } + result += '}'; + return result; + } + else { + return typeof anObject == 'boolean' ? anObject.toString () .capitalize () : anObject.toString (); + } + } + catch (exception) { + return ''; + } + } + } +}; +export function chr (charCode) { + return String.fromCharCode (charCode); +}; +export function ord (aChar) { + return aChar.charCodeAt (0); +}; +export function max (nrOrSeq) { + return arguments.length == 1 ? Math.max (...nrOrSeq) : Math.max (...arguments); +}; +export function min (nrOrSeq) { + return arguments.length == 1 ? Math.min (...nrOrSeq) : Math.min (...arguments); +}; +export function abs (x) { + try { + return Math.abs (x); + } + catch (exception) { + return Math.sqrt (x.real * x.real + x.imag * x.imag); + } +}; +export function round (number, ndigits) { + if (ndigits) { + var scale = Math.pow (10, ndigits); + number *= scale; + } + var rounded = Math.round (number); + if (rounded - number == 0.5 && rounded % 2) { + rounded -= 1; + } + if (ndigits) { + rounded /= scale; + } + return rounded; +}; +export function format (value, fmt_spec) { + if (value == undefined) { + return 'None'; + } + fmt_spec = fmt_spec || ''; + var tval = typeof value; + switch (tval) { + case 'number': + case 'string': + return value.__format__(fmt_spec); + case 'boolean': + return fmt_spec ? (value ? 1 : 0).__format__(fmt_spec) : str (value); + case 'object': + if ('__format__' in value) { + return value.__format__ (fmt_spec); + } + else { + return str (value).__format__ (fmt_spec); + } + default: + return str (value).__format__ (fmt_spec); + } +} +export function __jsUsePyNext__ () { + try { + var result = this.__next__ (); + return {value: result, done: false}; + } + catch (exception) { + return {value: undefined, done: true}; + } +} +export function __pyUseJsNext__ () { + var result = this.next (); + if (result.done) { + throw StopIteration (new Error ()); + } + else { + return result.value; + } +} +export function py_iter (iterable) { + if (typeof iterable == 'string' || '__iter__' in iterable) { + var result = iterable.__iter__ (); + result.next = __jsUsePyNext__; + } + else if ('selector' in iterable) { + var result = list (iterable) .__iter__ (); + result.next = __jsUsePyNext__; + } + else if ('next' in iterable) { + var result = iterable + if (! ('__next__' in result)) { + result.__next__ = __pyUseJsNext__; + } + } + else if (Symbol.iterator in iterable) { + var result = iterable [Symbol.iterator] (); + result.__next__ = __pyUseJsNext__; + } + else { + throw IterableError (new Error ()); + } + result [Symbol.iterator] = function () {return result;}; + return result; +} +export function py_next (iterator) { + try { + var result = iterator.__next__ (); + } + catch (exception) { + var result = iterator.next (); + if (result.done) { + throw StopIteration (new Error ()); + } + else { + return result.value; + } + } + if (result == undefined) { + throw StopIteration (new Error ()); + } + else { + return result; + } +} +export function __PyIterator__ (iterable) { + this.iterable = iterable; + this.index = 0; +} +__PyIterator__.prototype.__next__ = function() { + if (this.index < this.iterable.length) { + return this.iterable [this.index++]; + } + else { + throw StopIteration (new Error ()); + } +}; +export function __JsIterator__ (iterable) { + this.iterable = iterable; + this.index = 0; +} +__JsIterator__.prototype.next = function () { + if (this.index < this.iterable.py_keys.length) { + return {value: this.index++, done: false}; + } + else { + return {value: undefined, done: true}; + } +}; +export function py_reversed (iterable) { + iterable = iterable.slice (); + iterable.reverse (); + return iterable; +}; +export function zip () { + var args = [] .slice.call (arguments); + for (var i = 0; i < args.length; i++) { + if (typeof args [i] == 'string') { + args [i] = args [i] .split (''); + } + else if (!Array.isArray (args [i])) { + args [i] = Array.from (args [i]); + } + } + var shortest = args.length == 0 ? [] : args.reduce ( + function (array0, array1) { + return array0.length < array1.length ? array0 : array1; + } + ); + return shortest.map ( + function (current, index) { + return args.map ( + function (current) { + return current [index]; + } + ); + } + ); +}; +export function range (start, stop, step) { + if (stop == undefined) { + stop = start; + start = 0; + } + if (step == undefined) { + step = 1; + } + if ((step > 0 && start >= stop) || (step < 0 && start <= stop)) { + return []; + } + var result = []; + for (var i = start; step > 0 ? i < stop : i > stop; i += step) { + result.push(i); + } + return result; +}; +export function any (iterable) { + for (let item of iterable) { + if (bool (item)) { + return true; + } + } + return false; +} +export function all (iterable) { + for (let item of iterable) { + if (! bool (item)) { + return false; + } + } + return true; +} +export function sum (iterable) { + let result = 0; + for (let item of iterable) { + result += item; + } + return result; +} +export function enumerate (iterable) { + return zip (range (len (iterable)), iterable); +} +export function copy (anObject) { + if (anObject == null || typeof anObject == "object") { + return anObject; + } + else { + var result = {}; + for (var attrib in obj) { + if (anObject.hasOwnProperty (attrib)) { + result [attrib] = anObject [attrib]; + } + } + return result; + } +} +export function deepcopy (anObject) { + if (anObject == null || typeof anObject == "object") { + return anObject; + } + else { + var result = {}; + for (var attrib in obj) { + if (anObject.hasOwnProperty (attrib)) { + result [attrib] = deepcopy (anObject [attrib]); + } + } + return result; + } +} +export function list (iterable) { + let instance = iterable ? Array.from (iterable) : []; + return instance; +} +Array.prototype.__class__ = list; +list.__name__ = 'list'; +list.__bases__ = [object]; +Array.prototype.__iter__ = function () {return new __PyIterator__ (this);}; +Array.prototype.__getslice__ = function (start, stop, step) { + if (start < 0) { + start = this.length + start; + } + if (stop == null) { + stop = this.length; + } + else if (stop < 0) { + stop = this.length + stop; + } + else if (stop > this.length) { + stop = this.length; + } + if (step == 1) { + return Array.prototype.slice.call(this, start, stop); + } + let result = list ([]); + for (let index = start; index < stop; index += step) { + result.push (this [index]); + } + return result; +}; +Array.prototype.__setslice__ = function (start, stop, step, source) { + if (start < 0) { + start = this.length + start; + } + if (stop == null) { + stop = this.length; + } + else if (stop < 0) { + stop = this.length + stop; + } + if (step == null) { + Array.prototype.splice.apply (this, [start, stop - start] .concat (source)); + } + else { + let sourceIndex = 0; + for (let targetIndex = start; targetIndex < stop; targetIndex += step) { + this [targetIndex] = source [sourceIndex++]; + } + } +}; +Array.prototype.__repr__ = function () { + if (this.__class__ == set && !this.length) { + return 'set()'; + } + let result = !this.__class__ || this.__class__ == list ? '[' : this.__class__ == tuple ? '(' : '{'; + for (let index = 0; index < this.length; index++) { + if (index) { + result += ', '; + } + result += repr (this [index]); + } + if (this.__class__ == tuple && this.length == 1) { + result += ','; + } + result += !this.__class__ || this.__class__ == list ? ']' : this.__class__ == tuple ? ')' : '}';; + return result; +}; +Array.prototype.__str__ = Array.prototype.__repr__; +Array.prototype.append = function (element) { + this.push (element); +}; +Array.prototype.py_clear = function () { + this.length = 0; +}; +Array.prototype.extend = function (aList) { + this.push.apply (this, aList); +}; +Array.prototype.insert = function (index, element) { + this.splice (index, 0, element); +}; +Array.prototype.remove = function (element) { + let index = this.indexOf (element); + if (index == -1) { + throw ValueError ("list.remove(x): x not in list", new Error ()); + } + this.splice (index, 1); +}; +Array.prototype.index = function (element) { + return this.indexOf (element); +}; +Array.prototype.py_pop = function (index) { + if (index == undefined) { + return this.pop (); + } + else { + return this.splice (index, 1) [0]; + } +}; +Array.prototype.py_sort = function () { + __sort__.apply (null, [this].concat ([] .slice.apply (arguments))); +}; +Array.prototype.__add__ = function (aList) { + return list (this.concat (aList)); +}; +Array.prototype.__mul__ = function (scalar) { + let result = this; + for (let i = 1; i < scalar; i++) { + result = result.concat (this); + } + return result; +}; +Array.prototype.__rmul__ = Array.prototype.__mul__; +export function tuple (iterable) { + let instance = iterable ? [] .slice.apply (iterable) : []; + instance.__class__ = tuple; + return instance; +} +tuple.__name__ = 'tuple'; +tuple.__bases__ = [object]; +export function set (iterable) { + let instance = []; + if (iterable) { + for (let index = 0; index < iterable.length; index++) { + instance.add (iterable [index]); + } + } + instance.__class__ = set; + return instance; +} +set.__name__ = 'set'; +set.__bases__ = [object]; +Array.prototype.__bindexOf__ = function (element) { + element += ''; + let mindex = 0; + let maxdex = this.length - 1; + while (mindex <= maxdex) { + let index = (mindex + maxdex) / 2 | 0; + let middle = this [index] + ''; + if (middle < element) { + mindex = index + 1; + } + else if (middle > element) { + maxdex = index - 1; + } + else { + return index; + } + } + return -1; +}; +Array.prototype.add = function (element) { + if (this.indexOf (element) == -1) { + this.push (element); + } +}; +Array.prototype.discard = function (element) { + var index = this.indexOf (element); + if (index != -1) { + this.splice (index, 1); + } +}; +Array.prototype.isdisjoint = function (other) { + this.sort (); + for (let i = 0; i < other.length; i++) { + if (this.__bindexOf__ (other [i]) != -1) { + return false; + } + } + return true; +}; +Array.prototype.issuperset = function (other) { + this.sort (); + for (let i = 0; i < other.length; i++) { + if (this.__bindexOf__ (other [i]) == -1) { + return false; + } + } + return true; +}; +Array.prototype.issubset = function (other) { + return set (other.slice ()) .issuperset (this); +}; +Array.prototype.union = function (other) { + let result = set (this.slice () .sort ()); + for (let i = 0; i < other.length; i++) { + if (result.__bindexOf__ (other [i]) == -1) { + result.push (other [i]); + } + } + return result; +}; +Array.prototype.intersection = function (other) { + this.sort (); + let result = set (); + for (let i = 0; i < other.length; i++) { + if (this.__bindexOf__ (other [i]) != -1) { + result.push (other [i]); + } + } + return result; +}; +Array.prototype.difference = function (other) { + let sother = set (other.slice () .sort ()); + let result = set (); + for (let i = 0; i < this.length; i++) { + if (sother.__bindexOf__ (this [i]) == -1) { + result.push (this [i]); + } + } + return result; +}; +Array.prototype.symmetric_difference = function (other) { + return this.union (other) .difference (this.intersection (other)); +}; +Array.prototype.py_update = function () { + let updated = [] .concat.apply (this.slice (), arguments) .sort (); + this.py_clear (); + for (let i = 0; i < updated.length; i++) { + if (updated [i] != updated [i - 1]) { + this.push (updated [i]); + } + } +}; +Array.prototype.__eq__ = function (other) { + if (this.length != other.length) { + return false; + } + if (this.__class__ == set) { + this.sort (); + other.sort (); + } + for (let i = 0; i < this.length; i++) { + if (this [i] != other [i]) { + return false; + } + } + return true; +}; +Array.prototype.__ne__ = function (other) { + return !this.__eq__ (other); +}; +Array.prototype.__le__ = function (other) { + if (this.__class__ == set) { + return this.issubset (other); + } + else { + for (let i = 0; i < this.length; i++) { + if (this [i] > other [i]) { + return false; + } + else if (this [i] < other [i]) { + return true; + } + } + return true; + } +}; +Array.prototype.__ge__ = function (other) { + if (this.__class__ == set) { + return this.issuperset (other); + } + else { + for (let i = 0; i < this.length; i++) { + if (this [i] < other [i]) { + return false; + } + else if (this [i] > other [i]) { + return true; + } + } + return true; + } +}; +Array.prototype.__lt__ = function (other) { + return ( + this.__class__ == set ? + this.issubset (other) && !this.issuperset (other) : + !this.__ge__ (other) + ); +}; +Array.prototype.__gt__ = function (other) { + return ( + this.__class__ == set ? + this.issuperset (other) && !this.issubset (other) : + !this.__le__ (other) + ); +}; +export function bytearray (bytable, encoding) { + if (bytable == undefined) { + return new Uint8Array (0); + } + else { + let aType = py_typeof (bytable); + if (aType == int) { + return new Uint8Array (bytable); + } + else if (aType == str) { + let aBytes = new Uint8Array (len (bytable)); + for (let i = 0; i < len (bytable); i++) { + aBytes [i] = bytable.charCodeAt (i); + } + return aBytes; + } + else if (aType == list || aType == tuple) { + return new Uint8Array (bytable); + } + else { + throw py_TypeError; + } + } +} +export var bytes = bytearray; +Uint8Array.prototype.__add__ = function (aBytes) { + let result = new Uint8Array (this.length + aBytes.length); + result.set (this); + result.set (aBytes, this.length); + return result; +}; +Uint8Array.prototype.__mul__ = function (scalar) { + let result = new Uint8Array (scalar * this.length); + for (let i = 0; i < scalar; i++) { + result.set (this, i * this.length); + } + return result; +}; +Uint8Array.prototype.__rmul__ = Uint8Array.prototype.__mul__; +export function str (stringable) { + if (typeof stringable === 'number') + return stringable.toString(); + else { + try { + return stringable.__str__ (); + } + catch (exception) { + try { + return repr (stringable); + } + catch (exception) { + return String (stringable); + } + } + } +}; +String.prototype.__class__ = str; +str.__name__ = 'str'; +str.__bases__ = [object]; +String.prototype.__iter__ = function () {new __PyIterator__ (this);}; +String.prototype.__repr__ = function () { + return (this.indexOf ('\'') == -1 ? '\'' + this + '\'' : '"' + this + '"') .py_replace ('\t', '\\t') .py_replace ('\n', '\\n'); +}; +String.prototype.__str__ = function () { + return this; +}; +String.prototype.capitalize = function () { + return this.charAt (0).toUpperCase () + this.slice (1); +}; +String.prototype.endswith = function (suffix) { + if (suffix instanceof Array) { + for (var i=0;i': + return __mul__ (fill, c) + s; + case '<': + return s + __mul__ (fill, c); + case '^': + var m = ((c % 2) + 2) % 2; + var c = Math.floor (c / 2); + return __mul__ (fill, c) + s + __mul__ (fill, c + m); + default: + return s; + } + }; + if (fmt_spec [fmt_spec.length - 1] == 's') { + fmt_spec = fmt_spec.slice (0, -1); + } + if (fmt_spec.length > 0) { + var _width = ''; + while (fmt_spec && fmt_spec [fmt_spec.length - 1].isnumeric ()) { + _width = fmt_spec [fmt_spec.length - 1] + _width; + fmt_spec = fmt_spec.slice (0, -1); + } + if (_width.length > 0) { + width = parseInt (_width); + } + if (fmt_spec.length > 0 && fmt_spec.endswith (['<', '>', '^'])) { + align = fmt_spec [fmt_spec.length - 1]; + fmt_spec = fmt_spec.slice (0, -1); + } + if (fmt_spec.length > 0) { + fill = fmt_spec [0]; + } + } + if (width > 0) { + val = pad (val, width, fill, align); + } + return val; +}; +__setproperty__ (String.prototype, 'format', { + get: function () {return __get__ (this, function (self) { + var args = tuple ([] .slice.apply (arguments).slice (1)); + var autoIndex = 0; + return self.replace (/\{([^\{]*)\}/g, function (match, key) { + var parts = key.split (':'); + key = parts [0]; + var fmt_spec = parts [1]; + parts = key.split ('!') + key = parts [0]; + var conversion = parts [1]; + var value = undefined; + if (key == '') { + key = autoIndex++; + } + if (key == +key && args [key] !== undefined) { + value = args [key]; + } + else { + var attr = undefined; + var idx = ("" + key) .indexOf ('.'); + if (idx != -1) { + attr = key.substring (idx + 1); + key = key.substring (0, idx); + } + else { + idx = ("" + key) .indexOf ('['); + if (idx != -1) { + attr = key.substring (idx + 1).slice (0, -1); + key = key.substring (0, idx); + } + } + if ((key == +key) && attr && args [key] !== undefined) { + value = args [key][attr]; + } + else { + for (var index = 0; index < args.length; index++) { + if (typeof args [index] == 'object' && args [index] != null && args [index][key] !== undefined) { + if (attr) { + value = args [index][key][attr]; + } + else { + value = args [index][key]; + } + break; + } + } + } + } + if (value === undefined) { + return match; + } + if (conversion == 'r') { + value = repr (value); + } + else if (conversion == 's') { + value = str (value); + } + else if (conversion == 'a') { + throw ValueError ("Conversion to ascii not yet supported: '" + match + "'", new Error ()); + } + return format (value, fmt_spec); + }); + });}, + enumerable: true +}); +String.prototype.isalnum = function () { + return /^[0-9a-zA-Z]{1,}$/.test(this) +} +String.prototype.isalpha = function () { + return /^[a-zA-Z]{1,}$/.test(this) +} +String.prototype.isdecimal = function () { + return /^[0-9]{1,}$/.test(this) +} +String.prototype.isdigit = function () { + return this.isdecimal() +} +String.prototype.islower = function () { + return /^[a-z]{1,}$/.test(this) +} +String.prototype.isupper = function () { + return /^[A-Z]{1,}$/.test(this) +} +String.prototype.isspace = function () { + return /^[\s]{1,}$/.test(this) +} +String.prototype.isnumeric = function () { + return !isNaN (parseFloat (this)) && isFinite (this); +}; +String.prototype.join = function (strings) { + strings = Array.from (strings); + return strings.join (this); +}; +String.prototype.lower = function () { + return this.toLowerCase (); +}; +String.prototype.py_replace = function (old, aNew, maxreplace) { + return this.split (old, maxreplace) .join (aNew); +}; +String.prototype.lstrip = function () { + return this.replace (/^\s*/g, ''); +}; +String.prototype.rfind = function (sub, start) { + return this.lastIndexOf (sub, start); +}; +String.prototype.rsplit = function (sep, maxsplit) { + if (sep == undefined || sep == null) { + sep = /\s+/; + var stripped = this.strip (); + } + else { + var stripped = this; + } + if (maxsplit == undefined || maxsplit == -1) { + return stripped.split (sep); + } + else { + var result = stripped.split (sep); + if (maxsplit < result.length) { + var maxrsplit = result.length - maxsplit; + return [result.slice (0, maxrsplit) .join (sep)] .concat (result.slice (maxrsplit)); + } + else { + return result; + } + } +}; +String.prototype.rstrip = function () { + return this.replace (/\s*$/g, ''); +}; +String.prototype.py_split = function (sep, maxsplit) { + if (sep == undefined || sep == null) { + sep = /\s+/; + var stripped = this.strip (); + } + else { + var stripped = this; + } + if (maxsplit == undefined || maxsplit == -1) { + return stripped.split (sep); + } + else { + var result = stripped.split (sep); + if (maxsplit < result.length) { + return result.slice (0, maxsplit).concat ([result.slice (maxsplit).join (sep)]); + } + else { + return result; + } + } +}; +String.prototype.startswith = function (prefix) { + if (prefix instanceof Array) { + for (var i=0;i> b; + } +}; +export function __or__ (a, b) { + if (typeof a == 'object' && '__or__' in a) { + return a.__or__ (b); + } + else if (typeof b == 'object' && '__ror__' in b) { + return b.__ror__ (a); + } + else { + return a | b; + } +}; +export function __xor__ (a, b) { + if (typeof a == 'object' && '__xor__' in a) { + return a.__xor__ (b); + } + else if (typeof b == 'object' && '__rxor__' in b) { + return b.__rxor__ (a); + } + else { + return a ^ b; + } +}; +export function __and__ (a, b) { + if (typeof a == 'object' && '__and__' in a) { + return a.__and__ (b); + } + else if (typeof b == 'object' && '__rand__' in b) { + return b.__rand__ (a); + } + else { + return a & b; + } +}; +export function __eq__ (a, b) { + if (typeof a == 'object' && '__eq__' in a) { + return a.__eq__ (b); + } + else { + return a == b; + } +}; +export function __ne__ (a, b) { + if (typeof a == 'object' && '__ne__' in a) { + return a.__ne__ (b); + } + else { + return a != b + } +}; +export function __lt__ (a, b) { + if (typeof a == 'object' && '__lt__' in a) { + return a.__lt__ (b); + } + else { + return a < b; + } +}; +export function __le__ (a, b) { + if (typeof a == 'object' && '__le__' in a) { + return a.__le__ (b); + } + else { + return a <= b; + } +}; +export function __gt__ (a, b) { + if (typeof a == 'object' && '__gt__' in a) { + return a.__gt__ (b); + } + else { + return a > b; + } +}; +export function __ge__ (a, b) { + if (typeof a == 'object' && '__ge__' in a) { + return a.__ge__ (b); + } + else { + return a >= b; + } +}; +export function __imatmul__ (a, b) { + if ('__imatmul__' in a) { + return a.__imatmul__ (b); + } + else { + return a.__matmul__ (b); + } +}; +export function __ipow__ (a, b) { + if (typeof a == 'object' && '__pow__' in a) { + return a.__ipow__ (b); + } + else if (typeof a == 'object' && '__ipow__' in a) { + return a.__pow__ (b); + } + else if (typeof b == 'object' && '__rpow__' in b) { + return b.__rpow__ (a); + } + else { + return Math.pow (a, b); + } +}; +export function __ijsmod__ (a, b) { + if (typeof a == 'object' && '__imod__' in a) { + return a.__ismod__ (b); + } + else if (typeof a == 'object' && '__mod__' in a) { + return a.__mod__ (b); + } + else if (typeof b == 'object' && '__rpow__' in b) { + return b.__rmod__ (a); + } + else { + return a % b; + } +}; +export function __imod__ (a, b) { + if (typeof a == 'object' && '__imod__' in a) { + return a.__imod__ (b); + } + else if (typeof a == 'object' && '__mod__' in a) { + return a.__mod__ (b); + } + else if (typeof b == 'object' && '__rmod__' in b) { + return b.__rmod__ (a); + } + else { + return ((a % b) + b) % b; + } +}; +export function __imul__ (a, b) { + if (typeof a == 'object' && '__imul__' in a) { + return a.__imul__ (b); + } + else if (typeof a == 'object' && '__mul__' in a) { + return a = a.__mul__ (b); + } + else if (typeof b == 'object' && '__rmul__' in b) { + return a = b.__rmul__ (a); + } + else if (typeof a == 'string') { + return a = a.__mul__ (b); + } + else if (typeof b == 'string') { + return a = b.__rmul__ (a); + } + else { + return a *= b; + } +}; +export function __idiv__ (a, b) { + if (typeof a == 'object' && '__idiv__' in a) { + return a.__idiv__ (b); + } + else if (typeof a == 'object' && '__div__' in a) { + return a = a.__div__ (b); + } + else if (typeof b == 'object' && '__rdiv__' in b) { + return a = b.__rdiv__ (a); + } + else { + return a /= b; + } +}; +export function __iadd__ (a, b) { + if (typeof a == 'object' && '__iadd__' in a) { + return a.__iadd__ (b); + } + else if (typeof a == 'object' && '__add__' in a) { + return a = a.__add__ (b); + } + else if (typeof b == 'object' && '__radd__' in b) { + return a = b.__radd__ (a); + } + else { + return a += b; + } +}; +export function __isub__ (a, b) { + if (typeof a == 'object' && '__isub__' in a) { + return a.__isub__ (b); + } + else if (typeof a == 'object' && '__sub__' in a) { + return a = a.__sub__ (b); + } + else if (typeof b == 'object' && '__rsub__' in b) { + return a = b.__rsub__ (a); + } + else { + return a -= b; + } +}; +export function __ilshift__ (a, b) { + if (typeof a == 'object' && '__ilshift__' in a) { + return a.__ilshift__ (b); + } + else if (typeof a == 'object' && '__lshift__' in a) { + return a = a.__lshift__ (b); + } + else if (typeof b == 'object' && '__rlshift__' in b) { + return a = b.__rlshift__ (a); + } + else { + return a <<= b; + } +}; +export function __irshift__ (a, b) { + if (typeof a == 'object' && '__irshift__' in a) { + return a.__irshift__ (b); + } + else if (typeof a == 'object' && '__rshift__' in a) { + return a = a.__rshift__ (b); + } + else if (typeof b == 'object' && '__rrshift__' in b) { + return a = b.__rrshift__ (a); + } + else { + return a >>= b; + } +}; +export function __ior__ (a, b) { + if (typeof a == 'object' && '__ior__' in a) { + return a.__ior__ (b); + } + else if (typeof a == 'object' && '__or__' in a) { + return a = a.__or__ (b); + } + else if (typeof b == 'object' && '__ror__' in b) { + return a = b.__ror__ (a); + } + else { + return a |= b; + } +}; +export function __ixor__ (a, b) { + if (typeof a == 'object' && '__ixor__' in a) { + return a.__ixor__ (b); + } + else if (typeof a == 'object' && '__xor__' in a) { + return a = a.__xor__ (b); + } + else if (typeof b == 'object' && '__rxor__' in b) { + return a = b.__rxor__ (a); + } + else { + return a ^= b; + } +}; +export function __iand__ (a, b) { + if (typeof a == 'object' && '__iand__' in a) { + return a.__iand__ (b); + } + else if (typeof a == 'object' && '__and__' in a) { + return a = a.__and__ (b); + } + else if (typeof b == 'object' && '__rand__' in b) { + return a = b.__rand__ (a); + } + else { + return a &= b; + } +}; +export function __getitem__ (container, key) { + if (typeof container == 'object' && '__getitem__' in container) { + return container.__getitem__ (key); + } + else if ((typeof container == 'string' || container instanceof Array) && key < 0) { + return container [container.length + key]; + } + else { + return container [key]; + } +}; +export function __setitem__ (container, key, value) { + if (typeof container == 'object' && '__setitem__' in container) { + container.__setitem__ (key, value); + } + else if ((typeof container == 'string' || container instanceof Array) && key < 0) { + container [container.length + key] = value; + } + else { + container [key] = value; + } +}; +export function __getslice__ (container, lower, upper, step) { + if (typeof container == 'object' && '__getitem__' in container) { + return container.__getitem__ ([lower, upper, step]); + } + else { + return container.__getslice__ (lower, upper, step); + } +}; +export function __setslice__ (container, lower, upper, step, value) { + if (typeof container == 'object' && '__setitem__' in container) { + container.__setitem__ ([lower, upper, step], value); + } + else { + container.__setslice__ (lower, upper, step, value); + } +}; +export var BaseException = __class__ ('BaseException', [object], { + __module__: __name__, +}); +export var Exception = __class__ ('Exception', [BaseException], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self) { + var kwargs = dict (); + if (arguments.length) { + var __ilastarg0__ = arguments.length - 1; + if (arguments [__ilastarg0__] && arguments [__ilastarg0__].hasOwnProperty ("__kwargtrans__")) { + var __allkwargs0__ = arguments [__ilastarg0__--]; + for (var __attrib0__ in __allkwargs0__) { + switch (__attrib0__) { + case 'self': var self = __allkwargs0__ [__attrib0__]; break; + default: kwargs [__attrib0__] = __allkwargs0__ [__attrib0__]; + } + } + delete kwargs.__kwargtrans__; + } + var args = tuple ([].slice.apply (arguments).slice (1, __ilastarg0__ + 1)); + } + else { + var args = tuple (); + } + self.__args__ = args; + if (kwargs.error != null) { + self.stack = kwargs.error.stack; + } + else if (Error) { + self.stack = new Error ().stack; + } + else { + self.stack = 'No stack trace available'; + } + });}, + get __repr__ () {return __get__ (this, function (self) { + if (len (self.__args__) > 1) { + return '{}{}'.format (self.__class__.__name__, repr (tuple (self.__args__))); + } + else if (len (self.__args__)) { + return '{}({})'.format (self.__class__.__name__, repr ()); + } + else { + return '{}()'.format (self.__class__.__name__); + } + });}, + get __str__ () {return __get__ (this, function (self) { + if (len (self.__args__) > 1) { + return str (tuple (self.__args__)); + } + else if (len (self.__args__)) { + return str (); + } + else { + return ''; + } + });} +}); +export var IterableError = __class__ ('IterableError', [Exception], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self, error) { + Exception.__init__ (self, "Can't iterate over non-iterable", __kwargtrans__ ({error: error})); + });} +}); +export var StopIteration = __class__ ('StopIteration', [Exception], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self, error) { + Exception.__init__ (self, 'Iterator exhausted', __kwargtrans__ ({error: error})); + });} +}); +export var ValueError = __class__ ('ValueError', [Exception], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self, message, error) { + Exception.__init__ (self, message, __kwargtrans__ ({error: error})); + });} +}); +export var KeyError = __class__ ('KeyError', [Exception], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self, message, error) { + Exception.__init__ (self, message, __kwargtrans__ ({error: error})); + });} +}); +export var AssertionError = __class__ ('AssertionError', [Exception], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self, message, error) { + if (message) { + Exception.__init__ (self, message, __kwargtrans__ ({error: error})); + } + else { + Exception.__init__ (self, __kwargtrans__ ({error: error})); + } + });} +}); +export var NotImplementedError = __class__ ('NotImplementedError', [Exception], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self, message, error) { + Exception.__init__ (self, message, __kwargtrans__ ({error: error})); + });} +}); +export var IndexError = __class__ ('IndexError', [Exception], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self, message, error) { + Exception.__init__ (self, message, __kwargtrans__ ({error: error})); + });} +}); +export var AttributeError = __class__ ('AttributeError', [Exception], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self, message, error) { + Exception.__init__ (self, message, __kwargtrans__ ({error: error})); + });} +}); +export var py_TypeError = __class__ ('py_TypeError', [Exception], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self, message, error) { + Exception.__init__ (self, message, __kwargtrans__ ({error: error})); + });} +}); +export var Warning = __class__ ('Warning', [Exception], { + __module__: __name__, +}); +export var UserWarning = __class__ ('UserWarning', [Warning], { + __module__: __name__, +}); +export var DeprecationWarning = __class__ ('DeprecationWarning', [Warning], { + __module__: __name__, +}); +export var RuntimeWarning = __class__ ('RuntimeWarning', [Warning], { + __module__: __name__, +}); +export var __sort__ = function (iterable, key, reverse) { + if (typeof key == 'undefined' || (key != null && key.hasOwnProperty ("__kwargtrans__"))) {; + var key = null; + }; + if (typeof reverse == 'undefined' || (reverse != null && reverse.hasOwnProperty ("__kwargtrans__"))) {; + var reverse = false; + }; + if (arguments.length) { + var __ilastarg0__ = arguments.length - 1; + if (arguments [__ilastarg0__] && arguments [__ilastarg0__].hasOwnProperty ("__kwargtrans__")) { + var __allkwargs0__ = arguments [__ilastarg0__--]; + for (var __attrib0__ in __allkwargs0__) { + switch (__attrib0__) { + case 'iterable': var iterable = __allkwargs0__ [__attrib0__]; break; + case 'key': var key = __allkwargs0__ [__attrib0__]; break; + case 'reverse': var reverse = __allkwargs0__ [__attrib0__]; break; + } + } + } + } + else { + } + if (key) { + iterable.sort ((function __lambda__ (a, b) { + if (arguments.length) { + var __ilastarg0__ = arguments.length - 1; + if (arguments [__ilastarg0__] && arguments [__ilastarg0__].hasOwnProperty ("__kwargtrans__")) { + var __allkwargs0__ = arguments [__ilastarg0__--]; + for (var __attrib0__ in __allkwargs0__) { + switch (__attrib0__) { + case 'a': var a = __allkwargs0__ [__attrib0__]; break; + case 'b': var b = __allkwargs0__ [__attrib0__]; break; + } + } + } + } + else { + } + return (key (a) > key (b) ? 1 : -(1)); + })); + } + else { + iterable.sort (); + } + if (reverse) { + iterable.reverse (); + } +}; +export var sorted = function (iterable, key, reverse) { + if (typeof key == 'undefined' || (key != null && key.hasOwnProperty ("__kwargtrans__"))) {; + var key = null; + }; + if (typeof reverse == 'undefined' || (reverse != null && reverse.hasOwnProperty ("__kwargtrans__"))) {; + var reverse = false; + }; + if (arguments.length) { + var __ilastarg0__ = arguments.length - 1; + if (arguments [__ilastarg0__] && arguments [__ilastarg0__].hasOwnProperty ("__kwargtrans__")) { + var __allkwargs0__ = arguments [__ilastarg0__--]; + for (var __attrib0__ in __allkwargs0__) { + switch (__attrib0__) { + case 'iterable': var iterable = __allkwargs0__ [__attrib0__]; break; + case 'key': var key = __allkwargs0__ [__attrib0__]; break; + case 'reverse': var reverse = __allkwargs0__ [__attrib0__]; break; + } + } + } + } + else { + } + if (py_typeof (iterable) == dict) { + var result = copy (iterable.py_keys ()); + } + else { + var result = copy (iterable); + } + __sort__ (result, key, reverse); + return result; +}; +export var map = function (func, iterable) { + return (function () { + var __accu0__ = []; + for (var item of iterable) { + __accu0__.append (func (item)); + } + return __accu0__; + }) (); +}; +export var filter = function (func, iterable) { + if (func == null) { + var func = bool; + } + return (function () { + var __accu0__ = []; + for (var item of iterable) { + if (func (item)) { + __accu0__.append (item); + } + } + return __accu0__; + }) (); +}; +export var divmod = function (n, d) { + return tuple ([Math.floor (n / d), __mod__ (n, d)]); +}; +export var complex = __class__ ('complex', [object], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self, real, imag) { + if (typeof imag == 'undefined' || (imag != null && imag.hasOwnProperty ("__kwargtrans__"))) {; + var imag = null; + }; + if (imag == null) { + if (py_typeof (real) == complex) { + self.real = real.real; + self.imag = real.imag; + } + else { + self.real = real; + self.imag = 0; + } + } + else { + self.real = real; + self.imag = imag; + } + });}, + get __neg__ () {return __get__ (this, function (self) { + return complex (-(self.real), -(self.imag)); + });}, + get __exp__ () {return __get__ (this, function (self) { + var modulus = Math.exp (self.real); + return complex (modulus * Math.cos (self.imag), modulus * Math.sin (self.imag)); + });}, + get __log__ () {return __get__ (this, function (self) { + return complex (Math.log (Math.sqrt (self.real * self.real + self.imag * self.imag)), Math.atan2 (self.imag, self.real)); + });}, + get __pow__ () {return __get__ (this, function (self, other) { + return self.__log__ ().__mul__ (other).__exp__ (); + });}, + get __rpow__ () {return __get__ (this, function (self, real) { + return self.__mul__ (Math.log (real)).__exp__ (); + });}, + get __mul__ () {return __get__ (this, function (self, other) { + if (typeof other === 'number') { + return complex (self.real * other, self.imag * other); + } + else { + return complex (self.real * other.real - self.imag * other.imag, self.real * other.imag + self.imag * other.real); + } + });}, + get __rmul__ () {return __get__ (this, function (self, real) { + return complex (self.real * real, self.imag * real); + });}, + get __div__ () {return __get__ (this, function (self, other) { + if (typeof other === 'number') { + return complex (self.real / other, self.imag / other); + } + else { + var denom = other.real * other.real + other.imag * other.imag; + return complex ((self.real * other.real + self.imag * other.imag) / denom, (self.imag * other.real - self.real * other.imag) / denom); + } + });}, + get __rdiv__ () {return __get__ (this, function (self, real) { + var denom = self.real * self.real; + return complex ((real * self.real) / denom, (real * self.imag) / denom); + });}, + get __add__ () {return __get__ (this, function (self, other) { + if (typeof other === 'number') { + return complex (self.real + other, self.imag); + } + else { + return complex (self.real + other.real, self.imag + other.imag); + } + });}, + get __radd__ () {return __get__ (this, function (self, real) { + return complex (self.real + real, self.imag); + });}, + get __sub__ () {return __get__ (this, function (self, other) { + if (typeof other === 'number') { + return complex (self.real - other, self.imag); + } + else { + return complex (self.real - other.real, self.imag - other.imag); + } + });}, + get __rsub__ () {return __get__ (this, function (self, real) { + return complex (real - self.real, -(self.imag)); + });}, + get __repr__ () {return __get__ (this, function (self) { + return '({}{}{}j)'.format (self.real, (self.imag >= 0 ? '+' : ''), self.imag); + });}, + get __str__ () {return __get__ (this, function (self) { + return __repr__ (self).__getslice__ (1, -(1), 1); + });}, + get __eq__ () {return __get__ (this, function (self, other) { + if (typeof other === 'number') { + return self.real == other; + } + else { + return self.real == other.real && self.imag == other.imag; + } + });}, + get __ne__ () {return __get__ (this, function (self, other) { + if (typeof other === 'number') { + return self.real != other; + } + else { + return self.real != other.real || self.imag != other.imag; + } + });}, + get conjugate () {return __get__ (this, function (self) { + return complex (self.real, -(self.imag)); + });} +}); +export var __conj__ = function (aNumber) { + if (isinstance (aNumber, complex)) { + return complex (aNumber.real, -(aNumber.imag)); + } + else { + return complex (aNumber, 0); + } +}; +export var __Terminal__ = __class__ ('__Terminal__', [object], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self) { + self.buffer = ''; + try { + self.element = document.getElementById ('__terminal__'); + } + catch (__except0__) { + self.element = null; + } + if (self.element) { + self.element.style.overflowX = 'auto'; + self.element.style.boxSizing = 'border-box'; + self.element.style.padding = '5px'; + self.element.innerHTML = '_'; + } + });}, + get print () {return __get__ (this, function (self) { + var sep = ' '; + var end = '\n'; + if (arguments.length) { + var __ilastarg0__ = arguments.length - 1; + if (arguments [__ilastarg0__] && arguments [__ilastarg0__].hasOwnProperty ("__kwargtrans__")) { + var __allkwargs0__ = arguments [__ilastarg0__--]; + for (var __attrib0__ in __allkwargs0__) { + switch (__attrib0__) { + case 'self': var self = __allkwargs0__ [__attrib0__]; break; + case 'sep': var sep = __allkwargs0__ [__attrib0__]; break; + case 'end': var end = __allkwargs0__ [__attrib0__]; break; + } + } + } + var args = tuple ([].slice.apply (arguments).slice (1, __ilastarg0__ + 1)); + } + else { + var args = tuple (); + } + self.buffer = '{}{}{}'.format (self.buffer, sep.join ((function () { + var __accu0__ = []; + for (var arg of args) { + __accu0__.append (str (arg)); + } + return __accu0__; + }) ()), end).__getslice__ (-(4096), null, 1); + if (self.element) { + self.element.innerHTML = self.buffer.py_replace ('\n', '
').py_replace (' ', ' '); + self.element.scrollTop = self.element.scrollHeight; + } + else { + console.log (sep.join ((function () { + var __accu0__ = []; + for (var arg of args) { + __accu0__.append (str (arg)); + } + return __accu0__; + }) ())); + } + });}, + get input () {return __get__ (this, function (self, question) { + if (arguments.length) { + var __ilastarg0__ = arguments.length - 1; + if (arguments [__ilastarg0__] && arguments [__ilastarg0__].hasOwnProperty ("__kwargtrans__")) { + var __allkwargs0__ = arguments [__ilastarg0__--]; + for (var __attrib0__ in __allkwargs0__) { + switch (__attrib0__) { + case 'self': var self = __allkwargs0__ [__attrib0__]; break; + case 'question': var question = __allkwargs0__ [__attrib0__]; break; + } + } + } + } + else { + } + self.print ('{}'.format (question), __kwargtrans__ ({end: ''})); + var answer = window.prompt ('\n'.join (self.buffer.py_split ('\n').__getslice__ (-(8), null, 1))); + self.print (answer); + return answer; + });} +}); +export var __terminal__ = __Terminal__ (); +export var print = __terminal__.print; +export var input = __terminal__.input; + +//# sourceMappingURL=org.transcrypt.__runtime__.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/org.transcrypt.__runtime__.tree b/transcrypt/development/automated_tests/transcrypt/__target__39/org.transcrypt.__runtime__.tree new file mode 100644 index 000000000..7eba8a797 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/org.transcrypt.__runtime__.tree @@ -0,0 +1,3682 @@ +file: Module + body: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = js + kind: NoneType = None + element: Constant + value: str = export var __envir__ = {{}}; +{} + kind: NoneType = None + element: Call + func: Name + id: str = __include__ + ctx: Load + args: list + element: Constant + value: str = org/transcrypt/__envir__.js + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = js + kind: NoneType = None + element: Constant + value: str = {} + kind: NoneType = None + element: Call + func: Name + id: str = __include__ + ctx: Load + args: list + element: Constant + value: str = org/transcrypt/__core__.js + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = js + kind: NoneType = None + element: Constant + value: str = {} + kind: NoneType = None + element: Call + func: Name + id: str = __include__ + ctx: Load + args: list + element: Constant + value: str = org/transcrypt/__builtin__.js + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = skip + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = copy + ctx: Store + element: Name + id: str = Math + ctx: Store + element: Name + id: str = __typeof__ + ctx: Store + element: Name + id: str = __repr__ + ctx: Store + element: Name + id: str = document + ctx: Store + element: Name + id: str = console + ctx: Store + element: Name + id: str = window + ctx: Store + value: Constant + value: int = 0 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = noskip + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = notconv + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = nokwargs + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = noalias + kind: NoneType = None + element: Constant + value: str = sort + kind: NoneType = None + keywords: list + element: ClassDef + name: str = BaseException + bases: list + keywords: list + body: list + element: Pass + decorator_list: list + element: ClassDef + name: str = Exception + bases: list + element: Name + id: str = BaseException + ctx: Load + keywords: list + body: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = kwargs + kind: NoneType = None + keywords: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: arg + arg: str = args + annotation: NoneType = None + type_comment: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: arg + arg: str = kwargs + annotation: NoneType = None + type_comment: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = __args__ + ctx: Store + value: Name + id: str = args + ctx: Load + type_comment: NoneType = None + element: If + test: Compare + left: Attribute + value: Name + id: str = kwargs + ctx: Load + attr: str = error + ctx: Load + ops: list + element: NotEq + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = stack + ctx: Store + value: Attribute + value: Attribute + value: Name + id: str = kwargs + ctx: Load + attr: str = error + ctx: Load + attr: str = stack + ctx: Load + type_comment: NoneType = None + orelse: list + element: If + test: Name + id: str = Error + ctx: Load + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = stack + ctx: Store + value: Attribute + value: Call + func: Name + id: str = __new__ + ctx: Load + args: list + element: Call + func: Name + id: str = Error + ctx: Load + args: list + keywords: list + keywords: list + attr: str = stack + ctx: Load + type_comment: NoneType = None + orelse: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = stack + ctx: Store + value: Constant + value: str = No stack trace available + kind: NoneType = None + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = nokwargs + kind: NoneType = None + keywords: list + element: FunctionDef + name: str = __repr__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: Compare + left: Call + func: Name + id: str = len + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = __args__ + ctx: Load + keywords: list + ops: list + element: Gt + comparators: list + element: Constant + value: int = 1 + kind: NoneType = None + body: list + element: Return + value: Call + func: Attribute + value: Constant + value: str = {}{} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Attribute + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = __class__ + ctx: Load + attr: str = __name__ + ctx: Load + element: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Call + func: Name + id: str = tuple + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = __args__ + ctx: Load + keywords: list + keywords: list + keywords: list + orelse: list + element: If + test: Call + func: Name + id: str = len + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = __args__ + ctx: Load + keywords: list + body: list + element: Return + value: Call + func: Attribute + value: Constant + value: str = {}({}) + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Attribute + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = __class__ + ctx: Load + attr: str = __name__ + ctx: Load + element: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Subscript + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = __args__ + ctx: Load + slice: Constant + value: int = 0 + kind: NoneType = None + ctx: Load + keywords: list + keywords: list + orelse: list + element: Return + value: Call + func: Attribute + value: Constant + value: str = {}() + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Attribute + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = __class__ + ctx: Load + attr: str = __name__ + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __str__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: Compare + left: Call + func: Name + id: str = len + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = __args__ + ctx: Load + keywords: list + ops: list + element: Gt + comparators: list + element: Constant + value: int = 1 + kind: NoneType = None + body: list + element: Return + value: Call + func: Name + id: str = str + ctx: Load + args: list + element: Call + func: Name + id: str = tuple + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = __args__ + ctx: Load + keywords: list + keywords: list + orelse: list + element: If + test: Call + func: Name + id: str = len + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = __args__ + ctx: Load + keywords: list + body: list + element: Return + value: Call + func: Name + id: str = str + ctx: Load + args: list + element: Subscript + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = __args__ + ctx: Load + slice: Constant + value: int = 0 + kind: NoneType = None + ctx: Load + keywords: list + orelse: list + element: Return + value: Constant + value: str = + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: ClassDef + name: str = IterableError + bases: list + element: Name + id: str = Exception + ctx: Load + keywords: list + body: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = error + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = Exception + ctx: Load + attr: str = __init__ + ctx: Load + args: list + element: Name + id: str = self + ctx: Load + element: Constant + value: str = Can't iterate over non-iterable + kind: NoneType = None + keywords: list + element: keyword + arg: str = error + value: Name + id: str = error + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: ClassDef + name: str = StopIteration + bases: list + element: Name + id: str = Exception + ctx: Load + keywords: list + body: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = error + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = Exception + ctx: Load + attr: str = __init__ + ctx: Load + args: list + element: Name + id: str = self + ctx: Load + element: Constant + value: str = Iterator exhausted + kind: NoneType = None + keywords: list + element: keyword + arg: str = error + value: Name + id: str = error + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: ClassDef + name: str = ValueError + bases: list + element: Name + id: str = Exception + ctx: Load + keywords: list + body: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = message + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = error + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = Exception + ctx: Load + attr: str = __init__ + ctx: Load + args: list + element: Name + id: str = self + ctx: Load + element: Name + id: str = message + ctx: Load + keywords: list + element: keyword + arg: str = error + value: Name + id: str = error + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: ClassDef + name: str = KeyError + bases: list + element: Name + id: str = Exception + ctx: Load + keywords: list + body: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = message + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = error + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = Exception + ctx: Load + attr: str = __init__ + ctx: Load + args: list + element: Name + id: str = self + ctx: Load + element: Name + id: str = message + ctx: Load + keywords: list + element: keyword + arg: str = error + value: Name + id: str = error + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: ClassDef + name: str = AssertionError + bases: list + element: Name + id: str = Exception + ctx: Load + keywords: list + body: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = message + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = error + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: Name + id: str = message + ctx: Load + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = Exception + ctx: Load + attr: str = __init__ + ctx: Load + args: list + element: Name + id: str = self + ctx: Load + element: Name + id: str = message + ctx: Load + keywords: list + element: keyword + arg: str = error + value: Name + id: str = error + ctx: Load + orelse: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = Exception + ctx: Load + attr: str = __init__ + ctx: Load + args: list + element: Name + id: str = self + ctx: Load + keywords: list + element: keyword + arg: str = error + value: Name + id: str = error + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: ClassDef + name: str = NotImplementedError + bases: list + element: Name + id: str = Exception + ctx: Load + keywords: list + body: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = message + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = error + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = Exception + ctx: Load + attr: str = __init__ + ctx: Load + args: list + element: Name + id: str = self + ctx: Load + element: Name + id: str = message + ctx: Load + keywords: list + element: keyword + arg: str = error + value: Name + id: str = error + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: ClassDef + name: str = IndexError + bases: list + element: Name + id: str = Exception + ctx: Load + keywords: list + body: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = message + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = error + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = Exception + ctx: Load + attr: str = __init__ + ctx: Load + args: list + element: Name + id: str = self + ctx: Load + element: Name + id: str = message + ctx: Load + keywords: list + element: keyword + arg: str = error + value: Name + id: str = error + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: ClassDef + name: str = AttributeError + bases: list + element: Name + id: str = Exception + ctx: Load + keywords: list + body: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = message + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = error + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = Exception + ctx: Load + attr: str = __init__ + ctx: Load + args: list + element: Name + id: str = self + ctx: Load + element: Name + id: str = message + ctx: Load + keywords: list + element: keyword + arg: str = error + value: Name + id: str = error + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: ClassDef + name: str = TypeError + bases: list + element: Name + id: str = Exception + ctx: Load + keywords: list + body: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = message + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = error + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = Exception + ctx: Load + attr: str = __init__ + ctx: Load + args: list + element: Name + id: str = self + ctx: Load + element: Name + id: str = message + ctx: Load + keywords: list + element: keyword + arg: str = error + value: Name + id: str = error + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: ClassDef + name: str = Warning + bases: list + element: Name + id: str = Exception + ctx: Load + keywords: list + body: list + element: Expr + value: Constant + value: str = Warning Base Class + + kind: NoneType = None + element: Pass + decorator_list: list + element: ClassDef + name: str = UserWarning + bases: list + element: Name + id: str = Warning + ctx: Load + keywords: list + body: list + element: Pass + decorator_list: list + element: ClassDef + name: str = DeprecationWarning + bases: list + element: Name + id: str = Warning + ctx: Load + keywords: list + body: list + element: Pass + decorator_list: list + element: ClassDef + name: str = RuntimeWarning + bases: list + element: Name + id: str = Warning + ctx: Load + keywords: list + body: list + element: Pass + decorator_list: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = kwargs + kind: NoneType = None + keywords: list + element: FunctionDef + name: str = __sort__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = iterable + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = key + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = reverse + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + element: Constant + value: NoneType = None + kind: NoneType = None + element: Constant + value: bool = False + kind: NoneType = None + body: list + element: If + test: Name + id: str = key + ctx: Load + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = iterable + ctx: Load + attr: str = sort + ctx: Load + args: list + element: Lambda + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = a + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = b + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: IfExp + test: Compare + left: Call + func: Name + id: str = key + ctx: Load + args: list + element: Name + id: str = a + ctx: Load + keywords: list + ops: list + element: Gt + comparators: list + element: Call + func: Name + id: str = key + ctx: Load + args: list + element: Name + id: str = b + ctx: Load + keywords: list + body: Constant + value: int = 1 + kind: NoneType = None + orelse: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + keywords: list + orelse: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = iterable + ctx: Load + attr: str = sort + ctx: Load + args: list + keywords: list + element: If + test: Name + id: str = reverse + ctx: Load + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = iterable + ctx: Load + attr: str = reverse + ctx: Load + args: list + keywords: list + orelse: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = sorted + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = iterable + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = key + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = reverse + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + element: Constant + value: NoneType = None + kind: NoneType = None + element: Constant + value: bool = False + kind: NoneType = None + body: list + element: If + test: Compare + left: Call + func: Name + id: str = type + ctx: Load + args: list + element: Name + id: str = iterable + ctx: Load + keywords: list + ops: list + element: Eq + comparators: list + element: Name + id: str = dict + ctx: Load + body: list + element: Assign + targets: list + element: Name + id: str = result + ctx: Store + value: Call + func: Name + id: str = copy + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = iterable + ctx: Load + attr: str = keys + ctx: Load + args: list + keywords: list + keywords: list + type_comment: NoneType = None + orelse: list + element: Assign + targets: list + element: Name + id: str = result + ctx: Store + value: Call + func: Name + id: str = copy + ctx: Load + args: list + element: Name + id: str = iterable + ctx: Load + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __sort__ + ctx: Load + args: list + element: Name + id: str = result + ctx: Load + element: Name + id: str = key + ctx: Load + element: Name + id: str = reverse + ctx: Load + keywords: list + element: Return + value: Name + id: str = result + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = nokwargs + kind: NoneType = None + keywords: list + element: FunctionDef + name: str = map + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = func + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = iterable + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: ListComp + elt: Call + func: Name + id: str = func + ctx: Load + args: list + element: Name + id: str = item + ctx: Load + keywords: list + generators: list + element: comprehension + target: Name + id: str = item + ctx: Store + iter: Name + id: str = iterable + ctx: Load + ifs: list + is_async: int = 0 + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = filter + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = func + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = iterable + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: Compare + left: Name + id: str = func + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = func + ctx: Store + value: Name + id: str = bool + ctx: Load + type_comment: NoneType = None + orelse: list + element: Return + value: ListComp + elt: Name + id: str = item + ctx: Load + generators: list + element: comprehension + target: Name + id: str = item + ctx: Store + iter: Name + id: str = iterable + ctx: Load + ifs: list + element: Call + func: Name + id: str = func + ctx: Load + args: list + element: Name + id: str = item + ctx: Load + keywords: list + is_async: int = 0 + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = divmod + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = n + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = d + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Tuple + elts: list + element: BinOp + left: Name + id: str = n + ctx: Load + op: FloorDiv + right: Name + id: str = d + ctx: Load + element: BinOp + left: Name + id: str = n + ctx: Load + op: Mod + right: Name + id: str = d + ctx: Load + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = ifdef + kind: NoneType = None + element: Constant + value: str = __complex__ + kind: NoneType = None + keywords: list + element: ClassDef + name: str = complex + bases: list + keywords: list + body: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = real + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = imag + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: If + test: Compare + left: Name + id: str = imag + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: If + test: Compare + left: Call + func: Name + id: str = type + ctx: Load + args: list + element: Name + id: str = real + ctx: Load + keywords: list + ops: list + element: Eq + comparators: list + element: Name + id: str = complex + ctx: Load + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = real + ctx: Store + value: Attribute + value: Name + id: str = real + ctx: Load + attr: str = real + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = imag + ctx: Store + value: Attribute + value: Name + id: str = real + ctx: Load + attr: str = imag + ctx: Load + type_comment: NoneType = None + orelse: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = real + ctx: Store + value: Name + id: str = real + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = imag + ctx: Store + value: Constant + value: int = 0 + kind: NoneType = None + type_comment: NoneType = None + orelse: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = real + ctx: Store + value: Name + id: str = real + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = imag + ctx: Store + value: Name + id: str = imag + ctx: Load + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __neg__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Call + func: Name + id: str = complex + ctx: Load + args: list + element: UnaryOp + op: USub + operand: Attribute + value: Name + id: str = self + ctx: Load + attr: str = real + ctx: Load + element: UnaryOp + op: USub + operand: Attribute + value: Name + id: str = self + ctx: Load + attr: str = imag + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __exp__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Name + id: str = modulus + ctx: Store + value: Call + func: Attribute + value: Name + id: str = Math + ctx: Load + attr: str = exp + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = real + ctx: Load + keywords: list + type_comment: NoneType = None + element: Return + value: Call + func: Name + id: str = complex + ctx: Load + args: list + element: BinOp + left: Name + id: str = modulus + ctx: Load + op: Mult + right: Call + func: Attribute + value: Name + id: str = Math + ctx: Load + attr: str = cos + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = imag + ctx: Load + keywords: list + element: BinOp + left: Name + id: str = modulus + ctx: Load + op: Mult + right: Call + func: Attribute + value: Name + id: str = Math + ctx: Load + attr: str = sin + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = imag + ctx: Load + keywords: list + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __log__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Call + func: Name + id: str = complex + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = Math + ctx: Load + attr: str = log + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = Math + ctx: Load + attr: str = sqrt + ctx: Load + args: list + element: BinOp + left: BinOp + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = real + ctx: Load + op: Mult + right: Attribute + value: Name + id: str = self + ctx: Load + attr: str = real + ctx: Load + op: Add + right: BinOp + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = imag + ctx: Load + op: Mult + right: Attribute + value: Name + id: str = self + ctx: Load + attr: str = imag + ctx: Load + keywords: list + keywords: list + element: Call + func: Attribute + value: Name + id: str = Math + ctx: Load + attr: str = atan2 + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = imag + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = real + ctx: Load + keywords: list + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __pow__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Call + func: Attribute + value: Call + func: Attribute + value: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = __log__ + ctx: Load + args: list + keywords: list + attr: str = __mul__ + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + keywords: list + attr: str = __exp__ + ctx: Load + args: list + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __rpow__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = real + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Call + func: Attribute + value: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = __mul__ + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = Math + ctx: Load + attr: str = log + ctx: Load + args: list + element: Name + id: str = real + ctx: Load + keywords: list + keywords: list + attr: str = __exp__ + ctx: Load + args: list + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __mul__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: Compare + left: Call + func: Name + id: str = __typeof__ + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + keywords: list + ops: list + element: Is + comparators: list + element: Constant + value: str = number + kind: NoneType = None + body: list + element: Return + value: Call + func: Name + id: str = complex + ctx: Load + args: list + element: BinOp + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = real + ctx: Load + op: Mult + right: Name + id: str = other + ctx: Load + element: BinOp + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = imag + ctx: Load + op: Mult + right: Name + id: str = other + ctx: Load + keywords: list + orelse: list + element: Return + value: Call + func: Name + id: str = complex + ctx: Load + args: list + element: BinOp + left: BinOp + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = real + ctx: Load + op: Mult + right: Attribute + value: Name + id: str = other + ctx: Load + attr: str = real + ctx: Load + op: Sub + right: BinOp + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = imag + ctx: Load + op: Mult + right: Attribute + value: Name + id: str = other + ctx: Load + attr: str = imag + ctx: Load + element: BinOp + left: BinOp + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = real + ctx: Load + op: Mult + right: Attribute + value: Name + id: str = other + ctx: Load + attr: str = imag + ctx: Load + op: Add + right: BinOp + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = imag + ctx: Load + op: Mult + right: Attribute + value: Name + id: str = other + ctx: Load + attr: str = real + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __rmul__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = real + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Call + func: Name + id: str = complex + ctx: Load + args: list + element: BinOp + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = real + ctx: Load + op: Mult + right: Name + id: str = real + ctx: Load + element: BinOp + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = imag + ctx: Load + op: Mult + right: Name + id: str = real + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __div__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: Compare + left: Call + func: Name + id: str = __typeof__ + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + keywords: list + ops: list + element: Is + comparators: list + element: Constant + value: str = number + kind: NoneType = None + body: list + element: Return + value: Call + func: Name + id: str = complex + ctx: Load + args: list + element: BinOp + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = real + ctx: Load + op: Div + right: Name + id: str = other + ctx: Load + element: BinOp + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = imag + ctx: Load + op: Div + right: Name + id: str = other + ctx: Load + keywords: list + orelse: list + element: Assign + targets: list + element: Name + id: str = denom + ctx: Store + value: BinOp + left: BinOp + left: Attribute + value: Name + id: str = other + ctx: Load + attr: str = real + ctx: Load + op: Mult + right: Attribute + value: Name + id: str = other + ctx: Load + attr: str = real + ctx: Load + op: Add + right: BinOp + left: Attribute + value: Name + id: str = other + ctx: Load + attr: str = imag + ctx: Load + op: Mult + right: Attribute + value: Name + id: str = other + ctx: Load + attr: str = imag + ctx: Load + type_comment: NoneType = None + element: Return + value: Call + func: Name + id: str = complex + ctx: Load + args: list + element: BinOp + left: BinOp + left: BinOp + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = real + ctx: Load + op: Mult + right: Attribute + value: Name + id: str = other + ctx: Load + attr: str = real + ctx: Load + op: Add + right: BinOp + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = imag + ctx: Load + op: Mult + right: Attribute + value: Name + id: str = other + ctx: Load + attr: str = imag + ctx: Load + op: Div + right: Name + id: str = denom + ctx: Load + element: BinOp + left: BinOp + left: BinOp + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = imag + ctx: Load + op: Mult + right: Attribute + value: Name + id: str = other + ctx: Load + attr: str = real + ctx: Load + op: Sub + right: BinOp + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = real + ctx: Load + op: Mult + right: Attribute + value: Name + id: str = other + ctx: Load + attr: str = imag + ctx: Load + op: Div + right: Name + id: str = denom + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __rdiv__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = real + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Name + id: str = denom + ctx: Store + value: BinOp + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = real + ctx: Load + op: Mult + right: Attribute + value: Name + id: str = self + ctx: Load + attr: str = real + ctx: Load + type_comment: NoneType = None + element: Return + value: Call + func: Name + id: str = complex + ctx: Load + args: list + element: BinOp + left: BinOp + left: Name + id: str = real + ctx: Load + op: Mult + right: Attribute + value: Name + id: str = self + ctx: Load + attr: str = real + ctx: Load + op: Div + right: Name + id: str = denom + ctx: Load + element: BinOp + left: BinOp + left: Name + id: str = real + ctx: Load + op: Mult + right: Attribute + value: Name + id: str = self + ctx: Load + attr: str = imag + ctx: Load + op: Div + right: Name + id: str = denom + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __add__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: Compare + left: Call + func: Name + id: str = __typeof__ + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + keywords: list + ops: list + element: Is + comparators: list + element: Constant + value: str = number + kind: NoneType = None + body: list + element: Return + value: Call + func: Name + id: str = complex + ctx: Load + args: list + element: BinOp + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = real + ctx: Load + op: Add + right: Name + id: str = other + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = imag + ctx: Load + keywords: list + orelse: list + element: Return + value: Call + func: Name + id: str = complex + ctx: Load + args: list + element: BinOp + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = real + ctx: Load + op: Add + right: Attribute + value: Name + id: str = other + ctx: Load + attr: str = real + ctx: Load + element: BinOp + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = imag + ctx: Load + op: Add + right: Attribute + value: Name + id: str = other + ctx: Load + attr: str = imag + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __radd__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = real + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Call + func: Name + id: str = complex + ctx: Load + args: list + element: BinOp + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = real + ctx: Load + op: Add + right: Name + id: str = real + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = imag + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __sub__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: Compare + left: Call + func: Name + id: str = __typeof__ + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + keywords: list + ops: list + element: Is + comparators: list + element: Constant + value: str = number + kind: NoneType = None + body: list + element: Return + value: Call + func: Name + id: str = complex + ctx: Load + args: list + element: BinOp + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = real + ctx: Load + op: Sub + right: Name + id: str = other + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = imag + ctx: Load + keywords: list + orelse: list + element: Return + value: Call + func: Name + id: str = complex + ctx: Load + args: list + element: BinOp + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = real + ctx: Load + op: Sub + right: Attribute + value: Name + id: str = other + ctx: Load + attr: str = real + ctx: Load + element: BinOp + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = imag + ctx: Load + op: Sub + right: Attribute + value: Name + id: str = other + ctx: Load + attr: str = imag + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __rsub__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = real + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Call + func: Name + id: str = complex + ctx: Load + args: list + element: BinOp + left: Name + id: str = real + ctx: Load + op: Sub + right: Attribute + value: Name + id: str = self + ctx: Load + attr: str = real + ctx: Load + element: UnaryOp + op: USub + operand: Attribute + value: Name + id: str = self + ctx: Load + attr: str = imag + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __repr__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Call + func: Attribute + value: Constant + value: str = ({}{}{}j) + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = real + ctx: Load + element: IfExp + test: Compare + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = imag + ctx: Load + ops: list + element: GtE + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + body: Constant + value: str = + + kind: NoneType = None + orelse: Constant + value: str = + kind: NoneType = None + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = imag + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __str__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Subscript + value: Call + func: Name + id: str = __repr__ + ctx: Load + args: list + element: Name + id: str = self + ctx: Load + keywords: list + slice: Slice + lower: Constant + value: int = 1 + kind: NoneType = None + upper: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + step: NoneType = None + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __eq__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: Compare + left: Call + func: Name + id: str = __typeof__ + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + keywords: list + ops: list + element: Is + comparators: list + element: Constant + value: str = number + kind: NoneType = None + body: list + element: Return + value: Compare + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = real + ctx: Load + ops: list + element: Eq + comparators: list + element: Name + id: str = other + ctx: Load + orelse: list + element: Return + value: BoolOp + op: And + values: list + element: Compare + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = real + ctx: Load + ops: list + element: Eq + comparators: list + element: Attribute + value: Name + id: str = other + ctx: Load + attr: str = real + ctx: Load + element: Compare + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = imag + ctx: Load + ops: list + element: Eq + comparators: list + element: Attribute + value: Name + id: str = other + ctx: Load + attr: str = imag + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __ne__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = other + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: Compare + left: Call + func: Name + id: str = __typeof__ + ctx: Load + args: list + element: Name + id: str = other + ctx: Load + keywords: list + ops: list + element: Is + comparators: list + element: Constant + value: str = number + kind: NoneType = None + body: list + element: Return + value: Compare + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = real + ctx: Load + ops: list + element: NotEq + comparators: list + element: Name + id: str = other + ctx: Load + orelse: list + element: Return + value: BoolOp + op: Or + values: list + element: Compare + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = real + ctx: Load + ops: list + element: NotEq + comparators: list + element: Attribute + value: Name + id: str = other + ctx: Load + attr: str = real + ctx: Load + element: Compare + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = imag + ctx: Load + ops: list + element: NotEq + comparators: list + element: Attribute + value: Name + id: str = other + ctx: Load + attr: str = imag + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = conjugate + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Call + func: Name + id: str = complex + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = real + ctx: Load + element: UnaryOp + op: USub + operand: Attribute + value: Name + id: str = self + ctx: Load + attr: str = imag + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: FunctionDef + name: str = __conj__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = aNumber + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: Call + func: Name + id: str = isinstance + ctx: Load + args: list + element: Name + id: str = aNumber + ctx: Load + element: Name + id: str = complex + ctx: Load + keywords: list + body: list + element: Return + value: Call + func: Name + id: str = complex + ctx: Load + args: list + element: Attribute + value: Name + id: str = aNumber + ctx: Load + attr: str = real + ctx: Load + element: UnaryOp + op: USub + operand: Attribute + value: Name + id: str = aNumber + ctx: Load + attr: str = imag + ctx: Load + keywords: list + orelse: list + element: Return + value: Call + func: Name + id: str = complex + ctx: Load + args: list + element: Name + id: str = aNumber + ctx: Load + element: Constant + value: int = 0 + kind: NoneType = None + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = endif + kind: NoneType = None + keywords: list + element: ClassDef + name: str = __Terminal__ + bases: list + keywords: list + body: list + element: Expr + value: Constant + value: str = + Printing to either the console or to html happens async, but is blocked by calling window.prompt. + So while all input and print statements are encountered in normal order, the print's exit immediately without yet having actually printed + This means the next input takes control, blocking actual printing and so on indefinitely + The effect is that everything's only printed after all inputs are done + To prevent that, what's needed is to only execute the next window.prompt after actual printing has been done + Since we've no way to find out when that is, a timeout is used. + + kind: NoneType = None + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = buffer + ctx: Store + value: Constant + value: str = + kind: NoneType = None + type_comment: NoneType = None + element: Try + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = element + ctx: Store + value: Call + func: Attribute + value: Name + id: str = document + ctx: Load + attr: str = getElementById + ctx: Load + args: list + element: Constant + value: str = __terminal__ + kind: NoneType = None + keywords: list + type_comment: NoneType = None + handlers: list + element: ExceptHandler + type: NoneType = None + name: NoneType = None + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = element + ctx: Store + value: Constant + value: NoneType = None + kind: NoneType = None + type_comment: NoneType = None + orelse: list + finalbody: list + element: If + test: Attribute + value: Name + id: str = self + ctx: Load + attr: str = element + ctx: Load + body: list + element: Assign + targets: list + element: Attribute + value: Attribute + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = element + ctx: Load + attr: str = style + ctx: Load + attr: str = overflowX + ctx: Store + value: Constant + value: str = auto + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Attribute + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = element + ctx: Load + attr: str = style + ctx: Load + attr: str = boxSizing + ctx: Store + value: Constant + value: str = border-box + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Attribute + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = element + ctx: Load + attr: str = style + ctx: Load + attr: str = padding + ctx: Store + value: Constant + value: str = 5px + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = element + ctx: Load + attr: str = innerHTML + ctx: Store + value: Constant + value: str = _ + kind: NoneType = None + type_comment: NoneType = None + orelse: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = kwargs + kind: NoneType = None + keywords: list + element: FunctionDef + name: str = print + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: arg + arg: str = args + annotation: NoneType = None + type_comment: NoneType = None + kwonlyargs: list + element: arg + arg: str = sep + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = end + annotation: NoneType = None + type_comment: NoneType = None + kw_defaults: list + element: Constant + value: str = + kind: NoneType = None + element: Constant + value: str = + + kind: NoneType = None + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = buffer + ctx: Store + value: Subscript + value: Call + func: Attribute + value: Constant + value: str = {}{}{} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = buffer + ctx: Load + element: Call + func: Attribute + value: Name + id: str = sep + ctx: Load + attr: str = join + ctx: Load + args: list + element: ListComp + elt: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = arg + ctx: Load + keywords: list + generators: list + element: comprehension + target: Name + id: str = arg + ctx: Store + iter: Name + id: str = args + ctx: Load + ifs: list + is_async: int = 0 + keywords: list + element: Name + id: str = end + ctx: Load + keywords: list + slice: Slice + lower: UnaryOp + op: USub + operand: Constant + value: int = 4096 + kind: NoneType = None + upper: NoneType = None + step: NoneType = None + ctx: Load + type_comment: NoneType = None + element: If + test: Attribute + value: Name + id: str = self + ctx: Load + attr: str = element + ctx: Load + body: list + element: Assign + targets: list + element: Attribute + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = element + ctx: Load + attr: str = innerHTML + ctx: Store + value: Call + func: Attribute + value: Call + func: Attribute + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = buffer + ctx: Load + attr: str = replace + ctx: Load + args: list + element: Constant + value: str = + + kind: NoneType = None + element: Constant + value: str =
+ kind: NoneType = None + keywords: list + attr: str = replace + ctx: Load + args: list + element: Constant + value: str = + kind: NoneType = None + element: Constant + value: str =   + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = element + ctx: Load + attr: str = scrollTop + ctx: Store + value: Attribute + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = element + ctx: Load + attr: str = scrollHeight + ctx: Load + type_comment: NoneType = None + orelse: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = console + ctx: Load + attr: str = log + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = sep + ctx: Load + attr: str = join + ctx: Load + args: list + element: ListComp + elt: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = arg + ctx: Load + keywords: list + generators: list + element: comprehension + target: Name + id: str = arg + ctx: Store + iter: Name + id: str = args + ctx: Load + ifs: list + is_async: int = 0 + keywords: list + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = input + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = question + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = print + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = {} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Name + id: str = question + ctx: Load + keywords: list + keywords: list + element: keyword + arg: str = end + value: Constant + value: str = + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = answer + ctx: Store + value: Call + func: Attribute + value: Name + id: str = window + ctx: Load + attr: str = prompt + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = + + kind: NoneType = None + attr: str = join + ctx: Load + args: list + element: Subscript + value: Call + func: Attribute + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = buffer + ctx: Load + attr: str = split + ctx: Load + args: list + element: Constant + value: str = + + kind: NoneType = None + keywords: list + slice: Slice + lower: UnaryOp + op: USub + operand: Constant + value: int = 8 + kind: NoneType = None + upper: NoneType = None + step: NoneType = None + ctx: Load + keywords: list + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = print + ctx: Load + args: list + element: Name + id: str = answer + ctx: Load + keywords: list + element: Return + value: Name + id: str = answer + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = nokwargs + kind: NoneType = None + keywords: list + decorator_list: list + element: Assign + targets: list + element: Name + id: str = __terminal__ + ctx: Store + value: Call + func: Name + id: str = __Terminal__ + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = print + ctx: Store + value: Attribute + value: Name + id: str = __terminal__ + ctx: Load + attr: str = print + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = input + ctx: Store + value: Attribute + value: Name + id: str = __terminal__ + ctx: Load + attr: str = input + ctx: Load + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/org.transcrypt.autotester.html.js b/transcrypt/development/automated_tests/transcrypt/__target__39/org.transcrypt.autotester.html.js new file mode 100644 index 000000000..3df51c8f1 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/org.transcrypt.autotester.html.js @@ -0,0 +1,292 @@ +// Transcrypt'ed from Python, 2021-05-14 15:01:26 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +var __all__ = dict ({get DataConverter () {return DataConverter;}, set DataConverter (value) {DataConverter = value;}, get HTMLGenerator () {return HTMLGenerator;}, set HTMLGenerator (value) {HTMLGenerator = value;}, get JSTesterUI () {return JSTesterUI;}, set JSTesterUI (value) {JSTesterUI = value;}, get TestModuleExpander () {return TestModuleExpander;}, set TestModuleExpander (value) {TestModuleExpander = value;}, get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get errorColor () {return errorColor;}, set errorColor (value) {errorColor = value;}, get excAreaId () {return excAreaId;}, set excAreaId (value) {excAreaId = value;}, get excHeaderClass () {return excHeaderClass;}, set excHeaderClass (value) {excHeaderClass = value;}, get faultRowClass () {return faultRowClass;}, set faultRowClass (value) {faultRowClass = value;}, get forceCollapseId () {return forceCollapseId;}, set forceCollapseId (value) {forceCollapseId = value;}, get forceExpandId () {return forceExpandId;}, set forceExpandId (value) {forceExpandId = value;}, get getRowClsName () {return getRowClsName;}, set getRowClsName (value) {getRowClsName = value;}, get highlightColor () {return highlightColor;}, set highlightColor (value) {highlightColor = value;}, get itemsAreEqual () {return itemsAreEqual;}, set itemsAreEqual (value) {itemsAreEqual = value;}, get messageDivId () {return messageDivId;}, set messageDivId (value) {messageDivId = value;}, get okColor () {return okColor;}, set okColor (value) {okColor = value;}, get pyPosClass () {return pyPosClass;}, set pyPosClass (value) {pyPosClass = value;}, get pyValClass () {return pyValClass;}, set pyValClass (value) {pyValClass = value;}, get refPosDivId () {return refPosDivId;}, set refPosDivId (value) {refPosDivId = value;}, get refResultDivId () {return refResultDivId;}, set refResultDivId (value) {refResultDivId = value;}, get referenceDivId () {return referenceDivId;}, set referenceDivId (value) {referenceDivId = value;}, get resultsDivId () {return resultsDivId;}, set resultsDivId (value) {resultsDivId = value;}, get tableId () {return tableId;}, set tableId (value) {tableId = value;}, get testDivId () {return testDivId;}, set testDivId (value) {testDivId = value;}, get testletHeaderClass () {return testletHeaderClass;}, set testletHeaderClass (value) {testletHeaderClass = value;}, get testletNameColor () {return testletNameColor;}, set testletNameColor (value) {testletNameColor = value;}, get transPosClass () {return transPosClass;}, set transPosClass (value) {transPosClass = value;}, get transValClass () {return transValClass;}, set transValClass (value) {transValClass = value;}}); +var __name__ = 'org.transcrypt.autotester.html'; +export var okColor = 'green'; +export var errorColor = 'red'; +export var highlightColor = 'yellow'; +export var testletNameColor = 'blue'; +export var messageDivId = 'message'; +export var referenceDivId = 'python'; +export var refResultDivId = 'pyresults'; +export var refPosDivId = 'pypos'; +export var testDivId = 'transcrypt'; +export var tableId = 'resulttable'; +export var resultsDivId = 'results'; +export var faultRowClass = 'faultrow'; +export var testletHeaderClass = 'testletheader'; +export var transValClass = 'trans-val'; +export var transPosClass = 'trans-pos'; +export var pyValClass = 'py-val'; +export var pyPosClass = 'py-pos'; +export var excAreaId = 'exc-area'; +export var excHeaderClass = 'exc-header'; +export var forceCollapseId = 'force-collapse'; +export var forceExpandId = 'force-expand'; +export var itemsAreEqual = function (item0, item1) { + return ' '.join (item0.py_split ()) == ' '.join (item1.py_split ()); +}; +export var HTMLGenerator = __class__ ('HTMLGenerator', [object], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self, filenameBase) { + if (typeof filenameBase == 'undefined' || (filenameBase != null && filenameBase.hasOwnProperty ("__kwargtrans__"))) {; + var filenameBase = null; + }; + self._fnameBase = filenameBase; + });}, + get generate_html () {return __get__ (this, function (self, refDict) { + var minified = false; + if (self._fnameBase === null) { + var __except0__ = ValueError ('Filename Base must be defined to generate'); + __except0__.__cause__ = null; + throw __except0__; + } + var fname = self._fnameBase + '.html'; + print ('Generating {}'.format (fname)); + var jsPath = '__target__/{}.js'.format (); + var f = open (fname, 'w', __kwargtrans__ ({encoding: 'UTF-8'})); + try { + f.__enter__ (); + f.write (""); + self._writeCSS (f); + f.write (''); + self._writeStatusHeaderTemplate (f); + var dc = DataConverter (); + dc.writeHiddenResults (f, refDict); + self._writeTableArea (f); + f.write ('\n\n'.format (jsPath)); + f.write (''); + f.__exit__ (); + } + catch (__except0__) { + if (! (f.__exit__ (__except0__.name, __except0__, __except0__.stack))) { + throw __except0__; + } + } + });}, + get _writeCSS () {return __get__ (this, function (self, f) { + var cssOut = '\n \n '; + f.write (cssOut); + });}, + get _writeStatusHeaderTemplate () {return __get__ (this, function (self, f) { + f.write ('Status:\n'); + f.write ('


\n\n'.format (messageDivId)); + });}, + get _writeTableArea () {return __get__ (this, function (self, f) { + f.write ('
'.format (excAreaId)); + f.write ('
'.format (resultsDivId)); + f.write (''.format (forceCollapseId, forceExpandId)); + f.write (''.format (tableId)); + f.write (''); + f.write ('
CPython Transcrypt
Location Value Value Location
'); + f.write ('
'); + });} +}); +export var DataConverter = __class__ ('DataConverter', [object], { + __module__: __name__, + get writeHiddenResults () {return __get__ (this, function (self, f, refDict) { + f.write ('\n'); + });}, + get getPythonResults () {return __get__ (this, function (self) { + var refData = document.getElementById (referenceDivId); + var refDict = dict ({}); + for (var child of refData.children) { + var keyName = child.getAttribute ('id'); + var __left0__ = self._extractPosResult (child); + var posData = __left0__ [0]; + var resultData = __left0__ [1]; + } + return refDict; + });}, + get _extractPosResult () {return __get__ (this, function (self, elem) { + var resultData = null; + var posData = null; + for (var e of elem.children) { + var idStr = e.getAttribute ('id'); + if (idStr == refResultDivId) { + var resultData = e.innerHTML.py_split (' | '); + } + else if (idStr == refPosDivId) { + var posData = e.innerHTML.py_split (' | '); + } + else { + // pass; + } + } + return tuple ([posData, resultData]); + });} +}); +export var getRowClsName = function (py_name) { + return 'mod-' + py_name; +}; +export var JSTesterUI = __class__ ('JSTesterUI', [object], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self) { + self.expander = TestModuleExpander (); + });}, + get setOutputStatus () {return __get__ (this, function (self, success) { + if (success) { + document.getElementById (messageDivId).innerHTML = '
Test succeeded
'.format (okColor); + } + else { + document.getElementById (messageDivId).innerHTML = '
Test failed
'.format (errorColor); + } + });}, + get appendSeqRowName () {return __get__ (this, function (self, py_name, errCount) { + var table = document.getElementById (tableId); + var row = table.insertRow (-(1)); + row.id = py_name; + row.classList.add (testletHeaderClass); + self.expander.setupCollapseableHeader (row, errCount == 0); + var headerCell = row.insertCell (0); + headerCell.innerHTML = (py_name + ' | Errors = ') + str (errCount); + headerCell.colSpan = 4; + headerCell.style.textAlign = 'center'; + });}, + get appendTableResult () {return __get__ (this, function (self, py_name, testPos, testItem, refPos, refItem, collapse) { + if (typeof collapse == 'undefined' || (collapse != null && collapse.hasOwnProperty ("__kwargtrans__"))) {; + var collapse = false; + }; + var clsName = getRowClsName (py_name); + var table = document.getElementById (tableId); + var row = table.insertRow (-(1)); + row.classList.add (clsName); + if (!(itemsAreEqual (testItem, refItem))) { + row.classList.add (faultRowClass); + var refPos = '!!!' + refPos; + } + else { + self.expander.setCollapsed (row, collapse); + } + var cpy_pos = row.insertCell (0); + cpy_pos.innerHTML = refPos; + cpy_pos.classList.add (pyPosClass); + var cpy_val = row.insertCell (1); + cpy_val.innerHTML = refItem; + cpy_val.classList.add (pyValClass); + var trans_val = row.insertCell (2); + if (testItem !== null) { + trans_val.innerHTML = testItem; + } + trans_val.classList.add (transValClass); + var trans_pos = row.insertCell (3); + if (testPos !== null) { + trans_pos.innerHTML = testPos; + } + trans_pos.classList.add (transPosClass); + });}, + get showException () {return __get__ (this, function (self, testname, exc) { + var excElem = document.getElementById (excAreaId); + var header = document.createElement ('H2'); + header.classList.add (excHeaderClass); + header.innerHTML = 'Exception Thrown in JS Runtime'; + excElem.appendChild (header); + var content = document.createElement ('p'); + content.innerHTML = 'Exception in {}: {}'.format (testname, str (exc)); + excElem.appendChild (content); + var stacktrace = document.createElement ('p'); + if (exc.stack !== null) { + stacktrace.innerHTML = str (exc.stack); + } + else { + stacktrace.innerHTML = 'No Stack Trace Available!'; + } + });} +}); +export var TestModuleExpander = __class__ ('TestModuleExpander', [object], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self) { + self.collapsedClass = 'collapsed'; + self.modCollapseClass = 'mod-collapsed'; + self._expandCollapseAllFuncs (); + });}, + get setCollapsed () {return __get__ (this, function (self, row, collapse) { + if (collapse) { + row.classList.add (self.collapsedClass); + } + else { + row.classList.remove (self.collapsedClass); + } + });}, + get setupCollapseableHeader () {return __get__ (this, function (self, row, startCollapsed) { + if (typeof startCollapsed == 'undefined' || (startCollapsed != null && startCollapsed.hasOwnProperty ("__kwargtrans__"))) {; + var startCollapsed = false; + }; + if (startCollapsed) { + row.classList.add (self.modCollapseClass); + } + var toggleCollapse = function (evt) { + var headerRow = evt.target.parentElement; + var doCollapse = !(headerRow.classList.contains (self.modCollapseClass)); + self.collapseModule (headerRow, doCollapse); + }; + row.onclick = toggleCollapse; + });}, + get collapseModule () {return __get__ (this, function (self, headerRow, doCollapse) { + var py_name = headerRow.id; + var table = document.getElementById (tableId); + var clsName = getRowClsName (py_name); + var allRows = table.tHead.children; + var rows = filter ((function __lambda__ (x) { + return x.classList.contains (clsName); + }), allRows); + for (var row of rows) { + self.setCollapsed (row, doCollapse); + } + if (doCollapse) { + headerRow.classList.add (self.modCollapseClass); + } + else { + headerRow.classList.remove (self.modCollapseClass); + } + });}, + get _expandCollapseAllFuncs () {return __get__ (this, function (self) { + var applyToAll = function (evt, collapse) { + var table = document.getElementById (tableId); + var filtFunc = (function __lambda__ (x) { + return x.classList.contains (testletHeaderClass); + }); + var headerRows = filter (filtFunc, table.tHead.children); + for (var headerRow of headerRows) { + self.collapseModule (headerRow, collapse); + } + }; + var collapseAll = function (evt) { + evt.preventDefault (); + applyToAll (evt, true); + return false; + }; + var expandAll = function (evt) { + evt.preventDefault (); + applyToAll (evt, false); + return false; + }; + var forceCollapse = document.getElementById (forceCollapseId); + forceCollapse.onclick = collapseAll; + var forceExpand = document.getElementById (forceExpandId); + forceExpand.onclick = expandAll; + });} +}); + +//# sourceMappingURL=org.transcrypt.autotester.html.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/org.transcrypt.autotester.html.tree b/transcrypt/development/automated_tests/transcrypt/__target__39/org.transcrypt.autotester.html.tree new file mode 100644 index 000000000..d7a1aa4f9 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/org.transcrypt.autotester.html.tree @@ -0,0 +1,3300 @@ +file: Module + body: list + element: ImportFrom + module: str = org.transcrypt.stubs.browser + names: list + element: alias + name: str = __main__ + asname: NoneType = None + element: alias + name: str = __envir__ + asname: NoneType = None + element: alias + name: str = __pragma__ + asname: NoneType = None + level: int = 0 + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = nokwargs + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = okColor + ctx: Store + value: Constant + value: str = green + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = errorColor + ctx: Store + value: Constant + value: str = red + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = highlightColor + ctx: Store + value: Constant + value: str = yellow + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = testletNameColor + ctx: Store + value: Constant + value: str = blue + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = messageDivId + ctx: Store + value: Constant + value: str = message + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = referenceDivId + ctx: Store + value: Constant + value: str = python + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = refResultDivId + ctx: Store + value: Constant + value: str = pyresults + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = refPosDivId + ctx: Store + value: Constant + value: str = pypos + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = testDivId + ctx: Store + value: Constant + value: str = transcrypt + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = tableId + ctx: Store + value: Constant + value: str = resulttable + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = resultsDivId + ctx: Store + value: Constant + value: str = results + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = faultRowClass + ctx: Store + value: Constant + value: str = faultrow + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = testletHeaderClass + ctx: Store + value: Constant + value: str = testletheader + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = transValClass + ctx: Store + value: Constant + value: str = trans-val + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = transPosClass + ctx: Store + value: Constant + value: str = trans-pos + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = pyValClass + ctx: Store + value: Constant + value: str = py-val + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = pyPosClass + ctx: Store + value: Constant + value: str = py-pos + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = excAreaId + ctx: Store + value: Constant + value: str = exc-area + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = excHeaderClass + ctx: Store + value: Constant + value: str = exc-header + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = forceCollapseId + ctx: Store + value: Constant + value: str = force-collapse + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = forceExpandId + ctx: Store + value: Constant + value: str = force-expand + kind: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = itemsAreEqual + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = item0 + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = item1 + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Compare + left: Call + func: Attribute + value: Constant + value: str = + kind: NoneType = None + attr: str = join + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = item0 + ctx: Load + attr: str = split + ctx: Load + args: list + keywords: list + keywords: list + ops: list + element: Eq + comparators: list + element: Call + func: Attribute + value: Constant + value: str = + kind: NoneType = None + attr: str = join + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = item1 + ctx: Load + attr: str = split + ctx: Load + args: list + keywords: list + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: ClassDef + name: str = HTMLGenerator + bases: list + element: Name + id: str = object + ctx: Load + keywords: list + body: list + element: Expr + value: Constant + value: str = This class generates the HTML template for the autotester results. + This code is primarily run during the Python execution cycle but + does define strings that are referenced by the javascript as well. + + kind: NoneType = None + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = filenameBase + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Expr + value: Constant + value: str = + @param filenameBase string denoting the base filename for the + files this class will generate. This should NOT include the + file extension (.html for example). This will be tacked on + later depending on minified state. + + kind: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _fnameBase + ctx: Store + value: Name + id: str = filenameBase + ctx: Load + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = generate_html + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = refDict + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = Generate the HTML file that gets generated by the + Python script portion of the test. File will be named + ' + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _writeCSS + ctx: Load + args: list + element: Name + id: str = f + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = f + ctx: Load + attr: str = write + ctx: Load + args: list + element: Constant + value: str = + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _writeStatusHeaderTemplate + ctx: Load + args: list + element: Name + id: str = f + ctx: Load + keywords: list + element: Assign + targets: list + element: Name + id: str = dc + ctx: Store + value: Call + func: Name + id: str = DataConverter + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = dc + ctx: Load + attr: str = writeHiddenResults + ctx: Load + args: list + element: Name + id: str = f + ctx: Load + element: Name + id: str = refDict + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _writeTableArea + ctx: Load + args: list + element: Name + id: str = f + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = f + ctx: Load + attr: str = write + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = + + + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Name + id: str = jsPath + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = f + ctx: Load + attr: str = write + ctx: Load + args: list + element: Constant + value: str = + kind: NoneType = None + keywords: list + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = _writeCSS + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = f + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Name + id: str = cssOut + ctx: Store + value: Constant + value: str = + + + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = f + ctx: Load + attr: str = write + ctx: Load + args: list + element: Name + id: str = cssOut + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = _writeStatusHeaderTemplate + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = f + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = f + ctx: Load + attr: str = write + ctx: Load + args: list + element: Constant + value: str = Status: + + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = f + ctx: Load + attr: str = write + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str =


+ + + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Name + id: str = messageDivId + ctx: Load + keywords: list + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = _writeTableArea + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = f + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = f + ctx: Load + attr: str = write + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str =
+ kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Name + id: str = excAreaId + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = f + ctx: Load + attr: str = write + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str =
+ kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Name + id: str = resultsDivId + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = f + ctx: Load + attr: str = write + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Name + id: str = forceCollapseId + ctx: Load + element: Name + id: str = forceExpandId + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = f + ctx: Load + attr: str = write + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Name + id: str = tableId + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = f + ctx: Load + attr: str = write + ctx: Load + args: list + element: Constant + value: str = + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = f + ctx: Load + attr: str = write + ctx: Load + args: list + element: Constant + value: str =
CPython Transcrypt
Location Value Value Location
+ kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = f + ctx: Load + attr: str = write + ctx: Load + args: list + element: Constant + value: str =
+ kind: NoneType = None + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: ClassDef + name: str = DataConverter + bases: list + element: Name + id: str = object + ctx: Load + keywords: list + body: list + element: Expr + value: Constant + value: str = This class contains code that stores the python results in + the HTML document and can extract the data from the HTML to + prepare it for comparison with the javascript results. + + kind: NoneType = None + element: FunctionDef + name: str = writeHiddenResults + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = f + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = refDict + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = Write the Python results into a div that is hidden by + default so that we can extract it at runtime. + @param f file that we are writing the content into + @param refDict python reference result data in the form of + a dict. The keys are the names of the individual test modules. + + kind: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = f + ctx: Load + attr: str = write + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = + + kind: NoneType = None + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = getPythonResults + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = Acquire the python unit test results from the + hidden div and parse into a dictionary. + @return dict whose keys are the names of the test + submodules. + + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = refData + ctx: Store + value: Call + func: Attribute + value: Name + id: str = document + ctx: Load + attr: str = getElementById + ctx: Load + args: list + element: Name + id: str = referenceDivId + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = refDict + ctx: Store + value: Dict + keys: list + values: list + type_comment: NoneType = None + element: For + target: Name + id: str = child + ctx: Store + iter: Attribute + value: Name + id: str = refData + ctx: Load + attr: str = children + ctx: Load + body: list + element: Assign + targets: list + element: Name + id: str = keyName + ctx: Store + value: Call + func: Attribute + value: Name + id: str = child + ctx: Load + attr: str = getAttribute + ctx: Load + args: list + element: Constant + value: str = id + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = posData + ctx: Store + element: Name + id: str = resultData + ctx: Store + ctx: Store + value: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _extractPosResult + ctx: Load + args: list + element: Name + id: str = child + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Subscript + value: Name + id: str = refDict + ctx: Load + slice: Name + id: str = keyName + ctx: Load + ctx: Store + value: Call + func: Name + id: str = zip + ctx: Load + args: list + element: Name + id: str = posData + ctx: Load + element: Name + id: str = resultData + ctx: Load + keywords: list + type_comment: NoneType = None + orelse: list + type_comment: NoneType = None + element: Return + value: Name + id: str = refDict + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = _extractPosResult + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = elem + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Name + id: str = resultData + ctx: Store + value: Constant + value: NoneType = None + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = posData + ctx: Store + value: Constant + value: NoneType = None + kind: NoneType = None + type_comment: NoneType = None + element: For + target: Name + id: str = e + ctx: Store + iter: Attribute + value: Name + id: str = elem + ctx: Load + attr: str = children + ctx: Load + body: list + element: Assign + targets: list + element: Name + id: str = idStr + ctx: Store + value: Call + func: Attribute + value: Name + id: str = e + ctx: Load + attr: str = getAttribute + ctx: Load + args: list + element: Constant + value: str = id + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: If + test: Compare + left: Name + id: str = idStr + ctx: Load + ops: list + element: Eq + comparators: list + element: Name + id: str = refResultDivId + ctx: Load + body: list + element: Assign + targets: list + element: Name + id: str = resultData + ctx: Store + value: Call + func: Attribute + value: Attribute + value: Name + id: str = e + ctx: Load + attr: str = innerHTML + ctx: Load + attr: str = split + ctx: Load + args: list + element: Constant + value: str = | + kind: NoneType = None + keywords: list + type_comment: NoneType = None + orelse: list + element: If + test: Compare + left: Name + id: str = idStr + ctx: Load + ops: list + element: Eq + comparators: list + element: Name + id: str = refPosDivId + ctx: Load + body: list + element: Assign + targets: list + element: Name + id: str = posData + ctx: Store + value: Call + func: Attribute + value: Attribute + value: Name + id: str = e + ctx: Load + attr: str = innerHTML + ctx: Load + attr: str = split + ctx: Load + args: list + element: Constant + value: str = | + kind: NoneType = None + keywords: list + type_comment: NoneType = None + orelse: list + element: Pass + orelse: list + type_comment: NoneType = None + element: Return + value: Tuple + elts: list + element: Name + id: str = posData + ctx: Load + element: Name + id: str = resultData + ctx: Load + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: FunctionDef + name: str = getRowClsName + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = name + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = Utility method for naming the test module class that + a row belows to + + kind: NoneType = None + element: Return + value: BinOp + left: Constant + value: str = mod- + kind: NoneType = None + op: Add + right: Name + id: str = name + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: ClassDef + name: str = JSTesterUI + bases: list + element: Name + id: str = object + ctx: Load + keywords: list + body: list + element: Expr + value: Constant + value: str = This class contains the code that populates the autotester results + while running in the javascript runtime. + + kind: NoneType = None + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = + + kind: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = expander + ctx: Store + value: Call + func: Name + id: str = TestModuleExpander + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = setOutputStatus + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = success + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: Name + id: str = success + ctx: Load + body: list + element: Assign + targets: list + element: Attribute + value: Call + func: Attribute + value: Name + id: str = document + ctx: Load + attr: str = getElementById + ctx: Load + args: list + element: Name + id: str = messageDivId + ctx: Load + keywords: list + attr: str = innerHTML + ctx: Store + value: Call + func: Attribute + value: Constant + value: str =
Test succeeded
+ kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Name + id: str = okColor + ctx: Load + keywords: list + type_comment: NoneType = None + orelse: list + element: Assign + targets: list + element: Attribute + value: Call + func: Attribute + value: Name + id: str = document + ctx: Load + attr: str = getElementById + ctx: Load + args: list + element: Name + id: str = messageDivId + ctx: Load + keywords: list + attr: str = innerHTML + ctx: Store + value: Call + func: Attribute + value: Constant + value: str =
Test failed
+ kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Name + id: str = errorColor + ctx: Load + keywords: list + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = appendSeqRowName + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = name + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = errCount + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = + + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = table + ctx: Store + value: Call + func: Attribute + value: Name + id: str = document + ctx: Load + attr: str = getElementById + ctx: Load + args: list + element: Name + id: str = tableId + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = row + ctx: Store + value: Call + func: Attribute + value: Name + id: str = table + ctx: Load + attr: str = insertRow + ctx: Load + args: list + element: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = row + ctx: Load + attr: str = id + ctx: Store + value: Name + id: str = name + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Attribute + value: Name + id: str = row + ctx: Load + attr: str = classList + ctx: Load + attr: str = add + ctx: Load + args: list + element: Name + id: str = testletHeaderClass + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = expander + ctx: Load + attr: str = setupCollapseableHeader + ctx: Load + args: list + element: Name + id: str = row + ctx: Load + element: Compare + left: Name + id: str = errCount + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = headerCell + ctx: Store + value: Call + func: Attribute + value: Name + id: str = row + ctx: Load + attr: str = insertCell + ctx: Load + args: list + element: Constant + value: int = 0 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = headerCell + ctx: Load + attr: str = innerHTML + ctx: Store + value: BinOp + left: BinOp + left: Name + id: str = name + ctx: Load + op: Add + right: Constant + value: str = | Errors = + kind: NoneType = None + op: Add + right: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = errCount + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = headerCell + ctx: Load + attr: str = colSpan + ctx: Store + value: Constant + value: int = 4 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Attribute + value: Name + id: str = headerCell + ctx: Load + attr: str = style + ctx: Load + attr: str = textAlign + ctx: Store + value: Constant + value: str = center + kind: NoneType = None + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = appendTableResult + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = name + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = testPos + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = testItem + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = refPos + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = refItem + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = collapse + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + element: Constant + value: bool = False + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = clsName + ctx: Store + value: Call + func: Name + id: str = getRowClsName + ctx: Load + args: list + element: Name + id: str = name + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = table + ctx: Store + value: Call + func: Attribute + value: Name + id: str = document + ctx: Load + attr: str = getElementById + ctx: Load + args: list + element: Name + id: str = tableId + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = row + ctx: Store + value: Call + func: Attribute + value: Name + id: str = table + ctx: Load + attr: str = insertRow + ctx: Load + args: list + element: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Attribute + value: Name + id: str = row + ctx: Load + attr: str = classList + ctx: Load + attr: str = add + ctx: Load + args: list + element: Name + id: str = clsName + ctx: Load + keywords: list + element: If + test: UnaryOp + op: Not + operand: Call + func: Name + id: str = itemsAreEqual + ctx: Load + args: list + element: Name + id: str = testItem + ctx: Load + element: Name + id: str = refItem + ctx: Load + keywords: list + body: list + element: Expr + value: Call + func: Attribute + value: Attribute + value: Name + id: str = row + ctx: Load + attr: str = classList + ctx: Load + attr: str = add + ctx: Load + args: list + element: Name + id: str = faultRowClass + ctx: Load + keywords: list + element: Assign + targets: list + element: Name + id: str = refPos + ctx: Store + value: BinOp + left: Constant + value: str = !!! + kind: NoneType = None + op: Add + right: Name + id: str = refPos + ctx: Load + type_comment: NoneType = None + orelse: list + element: Expr + value: Call + func: Attribute + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = expander + ctx: Load + attr: str = setCollapsed + ctx: Load + args: list + element: Name + id: str = row + ctx: Load + element: Name + id: str = collapse + ctx: Load + keywords: list + element: Assign + targets: list + element: Name + id: str = cpy_pos + ctx: Store + value: Call + func: Attribute + value: Name + id: str = row + ctx: Load + attr: str = insertCell + ctx: Load + args: list + element: Constant + value: int = 0 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = cpy_pos + ctx: Load + attr: str = innerHTML + ctx: Store + value: Name + id: str = refPos + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Attribute + value: Name + id: str = cpy_pos + ctx: Load + attr: str = classList + ctx: Load + attr: str = add + ctx: Load + args: list + element: Name + id: str = pyPosClass + ctx: Load + keywords: list + element: Assign + targets: list + element: Name + id: str = cpy_val + ctx: Store + value: Call + func: Attribute + value: Name + id: str = row + ctx: Load + attr: str = insertCell + ctx: Load + args: list + element: Constant + value: int = 1 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = cpy_val + ctx: Load + attr: str = innerHTML + ctx: Store + value: Name + id: str = refItem + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Attribute + value: Name + id: str = cpy_val + ctx: Load + attr: str = classList + ctx: Load + attr: str = add + ctx: Load + args: list + element: Name + id: str = pyValClass + ctx: Load + keywords: list + element: Assign + targets: list + element: Name + id: str = trans_val + ctx: Store + value: Call + func: Attribute + value: Name + id: str = row + ctx: Load + attr: str = insertCell + ctx: Load + args: list + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: If + test: Compare + left: Name + id: str = testItem + ctx: Load + ops: list + element: IsNot + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = trans_val + ctx: Load + attr: str = innerHTML + ctx: Store + value: Name + id: str = testItem + ctx: Load + type_comment: NoneType = None + orelse: list + element: Expr + value: Call + func: Attribute + value: Attribute + value: Name + id: str = trans_val + ctx: Load + attr: str = classList + ctx: Load + attr: str = add + ctx: Load + args: list + element: Name + id: str = transValClass + ctx: Load + keywords: list + element: Assign + targets: list + element: Name + id: str = trans_pos + ctx: Store + value: Call + func: Attribute + value: Name + id: str = row + ctx: Load + attr: str = insertCell + ctx: Load + args: list + element: Constant + value: int = 3 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: If + test: Compare + left: Name + id: str = testPos + ctx: Load + ops: list + element: IsNot + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = trans_pos + ctx: Load + attr: str = innerHTML + ctx: Store + value: Name + id: str = testPos + ctx: Load + type_comment: NoneType = None + orelse: list + element: Expr + value: Call + func: Attribute + value: Attribute + value: Name + id: str = trans_pos + ctx: Load + attr: str = classList + ctx: Load + attr: str = add + ctx: Load + args: list + element: Name + id: str = transPosClass + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = showException + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = testname + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = exc + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = + + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = excElem + ctx: Store + value: Call + func: Attribute + value: Name + id: str = document + ctx: Load + attr: str = getElementById + ctx: Load + args: list + element: Name + id: str = excAreaId + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = header + ctx: Store + value: Call + func: Attribute + value: Name + id: str = document + ctx: Load + attr: str = createElement + ctx: Load + args: list + element: Constant + value: str = H2 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Attribute + value: Name + id: str = header + ctx: Load + attr: str = classList + ctx: Load + attr: str = add + ctx: Load + args: list + element: Name + id: str = excHeaderClass + ctx: Load + keywords: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = header + ctx: Load + attr: str = innerHTML + ctx: Store + value: Constant + value: str = Exception Thrown in JS Runtime + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = excElem + ctx: Load + attr: str = appendChild + ctx: Load + args: list + element: Name + id: str = header + ctx: Load + keywords: list + element: Assign + targets: list + element: Name + id: str = content + ctx: Store + value: Call + func: Attribute + value: Name + id: str = document + ctx: Load + attr: str = createElement + ctx: Load + args: list + element: Constant + value: str = p + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = content + ctx: Load + attr: str = innerHTML + ctx: Store + value: Call + func: Attribute + value: Constant + value: str = Exception in {}: {} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Name + id: str = testname + ctx: Load + element: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = exc + ctx: Load + keywords: list + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = excElem + ctx: Load + attr: str = appendChild + ctx: Load + args: list + element: Name + id: str = content + ctx: Load + keywords: list + element: Assign + targets: list + element: Name + id: str = stacktrace + ctx: Store + value: Call + func: Attribute + value: Name + id: str = document + ctx: Load + attr: str = createElement + ctx: Load + args: list + element: Constant + value: str = p + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: If + test: Compare + left: Attribute + value: Name + id: str = exc + ctx: Load + attr: str = stack + ctx: Load + ops: list + element: IsNot + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = stacktrace + ctx: Load + attr: str = innerHTML + ctx: Store + value: Call + func: Name + id: str = str + ctx: Load + args: list + element: Attribute + value: Name + id: str = exc + ctx: Load + attr: str = stack + ctx: Load + keywords: list + type_comment: NoneType = None + orelse: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = stacktrace + ctx: Load + attr: str = innerHTML + ctx: Store + value: Constant + value: str = No Stack Trace Available! + kind: NoneType = None + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: ClassDef + name: str = TestModuleExpander + bases: list + element: Name + id: str = object + ctx: Load + keywords: list + body: list + element: Expr + value: Constant + value: str = This class handles expanding or contracting a set of + test row results under a particular test. + + kind: NoneType = None + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = + + kind: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = collapsedClass + ctx: Store + value: Constant + value: str = collapsed + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = modCollapseClass + ctx: Store + value: Constant + value: str = mod-collapsed + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _expandCollapseAllFuncs + ctx: Load + args: list + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = setCollapsed + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = row + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = collapse + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = + + kind: NoneType = None + element: If + test: Name + id: str = collapse + ctx: Load + body: list + element: Expr + value: Call + func: Attribute + value: Attribute + value: Name + id: str = row + ctx: Load + attr: str = classList + ctx: Load + attr: str = add + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = collapsedClass + ctx: Load + keywords: list + orelse: list + element: Expr + value: Call + func: Attribute + value: Attribute + value: Name + id: str = row + ctx: Load + attr: str = classList + ctx: Load + attr: str = remove + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = collapsedClass + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = setupCollapseableHeader + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = row + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = startCollapsed + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + element: Constant + value: bool = False + kind: NoneType = None + body: list + element: Expr + value: Constant + value: str = + + kind: NoneType = None + element: If + test: Name + id: str = startCollapsed + ctx: Load + body: list + element: Expr + value: Call + func: Attribute + value: Attribute + value: Name + id: str = row + ctx: Load + attr: str = classList + ctx: Load + attr: str = add + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = modCollapseClass + ctx: Load + keywords: list + orelse: list + element: FunctionDef + name: str = toggleCollapse + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = evt + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = Toggle whether the + + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = headerRow + ctx: Store + value: Attribute + value: Attribute + value: Name + id: str = evt + ctx: Load + attr: str = target + ctx: Load + attr: str = parentElement + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = doCollapse + ctx: Store + value: UnaryOp + op: Not + operand: Call + func: Attribute + value: Attribute + value: Name + id: str = headerRow + ctx: Load + attr: str = classList + ctx: Load + attr: str = contains + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = modCollapseClass + ctx: Load + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = collapseModule + ctx: Load + args: list + element: Name + id: str = headerRow + ctx: Load + element: Name + id: str = doCollapse + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = row + ctx: Load + attr: str = onclick + ctx: Store + value: Name + id: str = toggleCollapse + ctx: Load + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = collapseModule + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = headerRow + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = doCollapse + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = collapse/expand particular module in the table of results + + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = name + ctx: Store + value: Attribute + value: Name + id: str = headerRow + ctx: Load + attr: str = id + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = table + ctx: Store + value: Call + func: Attribute + value: Name + id: str = document + ctx: Load + attr: str = getElementById + ctx: Load + args: list + element: Name + id: str = tableId + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = clsName + ctx: Store + value: Call + func: Name + id: str = getRowClsName + ctx: Load + args: list + element: Name + id: str = name + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = allRows + ctx: Store + value: Attribute + value: Attribute + value: Name + id: str = table + ctx: Load + attr: str = tHead + ctx: Load + attr: str = children + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = rows + ctx: Store + value: Call + func: Name + id: str = filter + ctx: Load + args: list + element: Lambda + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: Call + func: Attribute + value: Attribute + value: Name + id: str = x + ctx: Load + attr: str = classList + ctx: Load + attr: str = contains + ctx: Load + args: list + element: Name + id: str = clsName + ctx: Load + keywords: list + element: Name + id: str = allRows + ctx: Load + keywords: list + type_comment: NoneType = None + element: For + target: Name + id: str = row + ctx: Store + iter: Name + id: str = rows + ctx: Load + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = setCollapsed + ctx: Load + args: list + element: Name + id: str = row + ctx: Load + element: Name + id: str = doCollapse + ctx: Load + keywords: list + orelse: list + type_comment: NoneType = None + element: If + test: Name + id: str = doCollapse + ctx: Load + body: list + element: Expr + value: Call + func: Attribute + value: Attribute + value: Name + id: str = headerRow + ctx: Load + attr: str = classList + ctx: Load + attr: str = add + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = modCollapseClass + ctx: Load + keywords: list + orelse: list + element: Expr + value: Call + func: Attribute + value: Attribute + value: Name + id: str = headerRow + ctx: Load + attr: str = classList + ctx: Load + attr: str = remove + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = modCollapseClass + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = _expandCollapseAllFuncs + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = This function sets up the callback handlers for the + collapse all and expand all links + + kind: NoneType = None + element: FunctionDef + name: str = applyToAll + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = evt + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = collapse + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = + + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = table + ctx: Store + value: Call + func: Attribute + value: Name + id: str = document + ctx: Load + attr: str = getElementById + ctx: Load + args: list + element: Name + id: str = tableId + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = filtFunc + ctx: Store + value: Lambda + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = x + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: Call + func: Attribute + value: Attribute + value: Name + id: str = x + ctx: Load + attr: str = classList + ctx: Load + attr: str = contains + ctx: Load + args: list + element: Name + id: str = testletHeaderClass + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = headerRows + ctx: Store + value: Call + func: Name + id: str = filter + ctx: Load + args: list + element: Name + id: str = filtFunc + ctx: Load + element: Attribute + value: Attribute + value: Name + id: str = table + ctx: Load + attr: str = tHead + ctx: Load + attr: str = children + ctx: Load + keywords: list + type_comment: NoneType = None + element: For + target: Name + id: str = headerRow + ctx: Store + iter: Name + id: str = headerRows + ctx: Load + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = collapseModule + ctx: Load + args: list + element: Name + id: str = headerRow + ctx: Load + element: Name + id: str = collapse + ctx: Load + keywords: list + orelse: list + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = collapseAll + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = evt + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = collapse all rows handler + + kind: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = evt + ctx: Load + attr: str = preventDefault + ctx: Load + args: list + keywords: list + element: Expr + value: Call + func: Name + id: str = applyToAll + ctx: Load + args: list + element: Name + id: str = evt + ctx: Load + element: Constant + value: bool = True + kind: NoneType = None + keywords: list + element: Return + value: Constant + value: bool = False + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = expandAll + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = evt + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = Expand All Rows Handler + + kind: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = evt + ctx: Load + attr: str = preventDefault + ctx: Load + args: list + keywords: list + element: Expr + value: Call + func: Name + id: str = applyToAll + ctx: Load + args: list + element: Name + id: str = evt + ctx: Load + element: Constant + value: bool = False + kind: NoneType = None + keywords: list + element: Return + value: Constant + value: bool = False + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = forceCollapse + ctx: Store + value: Call + func: Attribute + value: Name + id: str = document + ctx: Load + attr: str = getElementById + ctx: Load + args: list + element: Name + id: str = forceCollapseId + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = forceCollapse + ctx: Load + attr: str = onclick + ctx: Store + value: Name + id: str = collapseAll + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = forceExpand + ctx: Store + value: Call + func: Attribute + value: Name + id: str = document + ctx: Load + attr: str = getElementById + ctx: Load + args: list + element: Name + id: str = forceExpandId + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = forceExpand + ctx: Load + attr: str = onclick + ctx: Store + value: Name + id: str = expandAll + ctx: Load + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/org.transcrypt.autotester.js b/transcrypt/development/automated_tests/transcrypt/__target__39/org.transcrypt.autotester.js new file mode 100644 index 000000000..44049ca38 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/org.transcrypt.autotester.js @@ -0,0 +1,305 @@ +// Transcrypt'ed from Python, 2021-05-14 15:01:26 +var itertools = {}; +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +import * as __module_itertools__ from './itertools.js'; +__nest__ (itertools, '', __module_itertools__); +import {DataConverter, HTMLGenerator, JSTesterUI, itemsAreEqual} from './org.transcrypt.autotester.html.js'; +export {HTMLGenerator, DataConverter, JSTesterUI, itemsAreEqual}; +var __all__ = dict ({get AutoTester () {return AutoTester;}, set AutoTester (value) {AutoTester = value;}, get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get getFileLocation () {return getFileLocation;}, set getFileLocation (value) {getFileLocation = value;}}); +var __name__ = 'org.transcrypt.autotester'; +export var getFileLocation = function (ancestor) { + if (__envir__.executor_name == __envir__.transpiler_name) { + var s = null; + + var e = new Error(); + if ( ! e.stack ) { + console.log("MAJOR ISSUE: Browser Error lacks Stack"); + } else { + s = e.stack; + } + + var frames = null; + + var linereg = new RegExp("\n\r|\n", "g"); + frames = s.toString().split(linereg); + + if (frames === null || len (frames) < 2) { + console.log("Failed to Split Stack"); + return 'UNKNOWN:???'; + } + var gpFrame = ; + var frameReg = '([^(]*)\\(?([^:]*:)\\/{2,3}([^:/]*:?)([^:]*):(\\d+):(\\d+)'; + var m = null; + + var r = new RegExp(frameReg); + m = r.exec(gpFrame); + + if (m) { + var filepath = ; + var pathParts = filepath.py_split ('/'); + var filename = ; + var lineno = ; + return '{}:{}'.format (filename, lineno); + } + else { + console.log("Failed to Match Frame", gpFrame); + return 'UNKNOWN:???'; + } + } +}; +export var AutoTester = __class__ ('AutoTester', [object], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self, symbols) { + if (typeof symbols == 'undefined' || (symbols != null && symbols.hasOwnProperty ("__kwargtrans__"))) {; + var symbols = []; + }; + self.symbols = symbols; + self._currTestlet = 'UNKNOWN'; + self.testDict = dict ({}); + self.refDict = dict ({}); + if (__envir__.executor_name == __envir__.transpiler_name) { + self.ui = JSTesterUI (); + } + else { + self.ui = null; + } + });}, + get sortedRepr () {return __get__ (this, function (self, any) { + var tryGetNumKey = function (key) { + if (py_typeof (key) == str) { + try { + return int (key); + } + catch (__except0__) { + try { + return float (key); + } + catch (__except1__) { + return key; + } + } + } + else { + return key; + } + }; + if (py_typeof (any) == dict) { + return ('{' + ', '.join ((function () { + var __accu0__ = []; + for (var [index, key] of enumerate (sorted ((function () { + var __accu1__ = []; + for (var key of any.py_keys ()) { + __accu1__.append (tryGetNumKey (key)); + } + return __accu1__; + }) (), __kwargtrans__ ({key: (function __lambda__ (aKey) { + return str (aKey); + })})))) { + __accu0__.append ('{}: {}'.format (repr (key), repr ())); + } + return __accu0__; + }) ())) + '}'; + } + else if (py_typeof (any) == set) { + if (len (any)) { + return ('{' + ', '.join (sorted ((function () { + var __accu0__ = []; + for (var item of list (any)) { + __accu0__.append (str (item)); + } + return __accu0__; + }) ()))) + '}'; + } + else { + return repr (any); + } + } + else if (py_typeof (any) == range) { + return repr (list (any)); + } + else { + return repr (any); + } + });}, + get check () {return __get__ (this, function (self) { + var ancestor = 2; + if (arguments.length) { + var __ilastarg0__ = arguments.length - 1; + if (arguments [__ilastarg0__] && arguments [__ilastarg0__].hasOwnProperty ("__kwargtrans__")) { + var __allkwargs0__ = arguments [__ilastarg0__--]; + for (var __attrib0__ in __allkwargs0__) { + switch (__attrib0__) { + case 'self': var self = __allkwargs0__ [__attrib0__]; break; + case 'ancestor': var ancestor = __allkwargs0__ [__attrib0__]; break; + } + } + } + var args = tuple ([].slice.apply (arguments).slice (1, __ilastarg0__ + 1)); + } + else { + var args = tuple (); + } + var position = getFileLocation (ancestor); + var item = ' '.join ((function () { + var __accu0__ = []; + for (var arg of args) { + __accu0__.append (self.sortedRepr (arg)); + } + return __accu0__; + }) ()); + if (__envir__.executor_name == __envir__.transpiler_name) { + .append (tuple ([position, item])); + } + else { + .append (tuple ([position, item])); + } + });}, + get expectException () {return __get__ (this, function (self, func) { + try { + func (); + return 'no exception'; + } + catch (__except0__) { + if (isinstance (__except0__, Exception)) { + var exc = __except0__; + return 'exception'; + } + else { + throw __except0__; + } + } + });}, + get throwToError () {return __get__ (this, function (self, func) { + try { + return func (); + } + catch (__except0__) { + if (isinstance (__except0__, Exception)) { + var exc = __except0__; + return tuple ([null, '!!!{}'.format (str (exc))]); + } + else { + throw __except0__; + } + } + });}, + get checkEval () {return __get__ (this, function (self, func) { + var ret = self.throwToError (func); + self.check (ret, __kwargtrans__ ({ancestor: 3})); + });}, + get checkPad () {return __get__ (this, function (self, val, count) { + for (var i = 0; i < count; i++) { + self.check (val); + } + });}, + get _getTotalErrorCnt () {return __get__ (this, function (self, testData, refData) { + var errCount = 0; + for (var [i, [refPos, refItem]] of enumerate (refData)) { + try { + var __left0__ = ; + var testPos = __left0__ [0]; + var testItem = __left0__ [1]; + if (!(itemsAreEqual (testItem, refItem))) { + errCount++; + } + } + catch (__except0__) { + errCount++; + } + } + return errCount; + });}, + get compare () {return __get__ (this, function (self) { + var dc = DataConverter (); + self.refDict = dc.getPythonResults (); + var totalErrors = 0; + var sKeys = sorted (self.refDict.py_keys ()); + for (var key of sKeys) { + var refData = ; + try { + var testData = ; + if (testData === null) { + var __except0__ = KeyError ('No Test Data Module: {}'.format (key)); + __except0__.__cause__ = null; + throw __except0__; + } + } + catch (__except0__) { + if (isinstance (__except0__, KeyError)) { + self.ui.appendSeqRowName (key, len (refData)); + for (var [i, [refPos, refItem]] of enumerate (refData)) { + self.ui.appendTableResult (key, null, null, refPos, refItem, false); + } + continue; + } + else { + throw __except0__; + } + } + var errCount = self._getTotalErrorCnt (testData, refData); + var collapse = errCount == 0; + self.ui.appendSeqRowName (key, errCount); + for (var [i, [refPos, refItem]] of enumerate (refData)) { + try { + var __left0__ = ; + var testPos = __left0__ [0]; + var testItem = __left0__ [1]; + } + catch (__except0__) { + var testPos = null; + var testItem = null; + } + self.ui.appendTableResult (key, testPos, testItem, refPos, refItem, collapse); + } + totalErrors += errCount; + } + self.ui.setOutputStatus (totalErrors == 0); + });}, + get _cleanName () {return __get__ (this, function (self, py_name) { + var ret = py_name; + var invalidChars = ['~', '!', '@', '$', '%', '^', '&', '*', '(', ')', '+', '=', ',', '.', '/', "'", ';', ':', '"', '?', '>', '<', '[', ']', '\\', '{', '}', '|', '`', '#', ' ']; + for (var ch of invalidChars) { + var ret = ret.py_replace (ch, '_'); + } + return ret; + });}, + get run () {return __get__ (this, function (self, testlet, testletName) { + var testletName = self._cleanName (testletName); + self._currTestlet = testletName; + if (__envir__.executor_name == __envir__.transpiler_name) { + } + else { + } + try { + testlet.run (self); + } + catch (__except0__) { + if (isinstance (__except0__, Exception)) { + var exc = __except0__; + if (self.ui !== null) { + self.ui.setOutputStatus (false); + self.ui.showException (testletName, exc); + } + else { + __except0__.__cause__ = null; + throw __except0__; + } + } + else { + throw __except0__; + } + } + });}, + get done () {return __get__ (this, function (self) { + if (__envir__.executor_name == __envir__.transpiler_name) { + self.compare (); + } + else { + var fnameBase = __main__.__file__.py_replace ('\\', '/'); + var hg = HTMLGenerator (fnameBase); + hg.generate_html (self.refDict); + } + });} +}); + +//# sourceMappingURL=org.transcrypt.autotester.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/org.transcrypt.autotester.tree b/transcrypt/development/automated_tests/transcrypt/__target__39/org.transcrypt.autotester.tree new file mode 100644 index 000000000..def03a64c --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/org.transcrypt.autotester.tree @@ -0,0 +1,2546 @@ +file: Module + body: list + element: ImportFrom + module: str = org.transcrypt.stubs.browser + names: list + element: alias + name: str = __main__ + asname: NoneType = None + element: alias + name: str = __envir__ + asname: NoneType = None + element: alias + name: str = __pragma__ + asname: NoneType = None + level: int = 0 + element: ImportFrom + module: str = org.transcrypt.autotester.html + names: list + element: alias + name: str = HTMLGenerator + asname: NoneType = None + element: alias + name: str = DataConverter + asname: NoneType = None + element: alias + name: str = JSTesterUI + asname: NoneType = None + element: alias + name: str = itemsAreEqual + asname: NoneType = None + level: int = 0 + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = nokwargs + kind: NoneType = None + keywords: list + element: Import + names: list + element: alias + name: str = itertools + asname: NoneType = None + element: FunctionDef + name: str = getFileLocation + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = ancestor + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = This function needs to crawl up the stack + and find out where the ancestor caller of + this function was in the source code of either the + python or javascript, depending on environment. + @param ancestor the ancestor of this function that + we want to capture file information about. + @return string indicating the file position and line number + + kind: NoneType = None + element: If + test: Compare + left: Attribute + value: Name + id: str = __envir__ + ctx: Load + attr: str = executor_name + ctx: Load + ops: list + element: Eq + comparators: list + element: Attribute + value: Name + id: str = __envir__ + ctx: Load + attr: str = transpiler_name + ctx: Load + body: list + element: Assign + targets: list + element: Name + id: str = s + ctx: Store + value: Constant + value: NoneType = None + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = js + kind: NoneType = None + element: Constant + value: str = {} + kind: NoneType = None + element: Constant + value: str = + var e = new Error(); + if ( ! e.stack ) { + console.log("MAJOR ISSUE: Browser Error lacks Stack"); + } else { + s = e.stack; + } + + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = frames + ctx: Store + value: Constant + value: NoneType = None + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = js + kind: NoneType = None + element: Constant + value: str = {} + kind: NoneType = None + element: Constant + value: str = + var linereg = new RegExp("\n\r|\n", "g"); + frames = s.toString().split(linereg); + + kind: NoneType = None + keywords: list + element: If + test: BoolOp + op: Or + values: list + element: Compare + left: Name + id: str = frames + ctx: Load + ops: list + element: Is + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + element: Compare + left: Call + func: Name + id: str = len + ctx: Load + args: list + element: Name + id: str = frames + ctx: Load + keywords: list + ops: list + element: Lt + comparators: list + element: Constant + value: int = 2 + kind: NoneType = None + body: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = js + kind: NoneType = None + element: Constant + value: str = {} + kind: NoneType = None + element: Constant + value: str = console.log("Failed to Split Stack"); + kind: NoneType = None + keywords: list + element: Return + value: Constant + value: str = UNKNOWN:??? + kind: NoneType = None + orelse: list + element: Assign + targets: list + element: Name + id: str = gpFrame + ctx: Store + value: Subscript + value: Name + id: str = frames + ctx: Load + slice: BinOp + left: BinOp + left: Name + id: str = ancestor + ctx: Load + op: Mult + right: Constant + value: int = 2 + kind: NoneType = None + op: Add + right: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = frameReg + ctx: Store + value: Constant + value: str = ([^(]*)\(?([^:]*:)\/{2,3}([^:/]*:?)([^:]*):(\d+):(\d+) + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = m + ctx: Store + value: Constant + value: NoneType = None + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = js + kind: NoneType = None + element: Constant + value: str = {} + kind: NoneType = None + element: Constant + value: str = + var r = new RegExp(frameReg); + m = r.exec(gpFrame); + + kind: NoneType = None + keywords: list + element: If + test: Name + id: str = m + ctx: Load + body: list + element: Assign + targets: list + element: Name + id: str = filepath + ctx: Store + value: Subscript + value: Name + id: str = m + ctx: Load + slice: Constant + value: int = 4 + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = pathParts + ctx: Store + value: Call + func: Attribute + value: Name + id: str = filepath + ctx: Load + attr: str = split + ctx: Load + args: list + element: Constant + value: str = / + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = filename + ctx: Store + value: Subscript + value: Name + id: str = pathParts + ctx: Load + slice: BinOp + left: Call + func: Name + id: str = len + ctx: Load + args: list + element: Name + id: str = pathParts + ctx: Load + keywords: list + op: Sub + right: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = lineno + ctx: Store + value: Subscript + value: Name + id: str = m + ctx: Load + slice: Constant + value: int = 5 + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Return + value: Call + func: Attribute + value: Constant + value: str = {}:{} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Name + id: str = filename + ctx: Load + element: Name + id: str = lineno + ctx: Load + keywords: list + orelse: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = js + kind: NoneType = None + element: Constant + value: str = {} + kind: NoneType = None + element: Constant + value: str = console.log("Failed to Match Frame", gpFrame); + kind: NoneType = None + keywords: list + element: Return + value: Constant + value: str = UNKNOWN:??? + kind: NoneType = None + orelse: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = skip + kind: NoneType = None + keywords: list + element: ImportFrom + module: str = inspect + names: list + element: alias + name: str = getframeinfo + asname: NoneType = None + element: alias + name: str = stack + asname: NoneType = None + level: int = 0 + element: Assign + targets: list + element: Name + id: str = s + ctx: Store + value: Call + func: Name + id: str = stack + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = caller + ctx: Store + value: Call + func: Name + id: str = getframeinfo + ctx: Load + args: list + element: Subscript + value: Subscript + value: Name + id: str = s + ctx: Load + slice: Name + id: str = ancestor + ctx: Load + ctx: Load + slice: Constant + value: int = 0 + kind: NoneType = None + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = filepath + ctx: Store + value: Attribute + value: Name + id: str = caller + ctx: Load + attr: str = filename + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = pathParts + ctx: Store + value: Call + func: Attribute + value: Name + id: str = filepath + ctx: Load + attr: str = split + ctx: Load + args: list + element: Constant + value: str = / + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = filename + ctx: Store + value: Call + func: Attribute + value: Constant + value: str = / + kind: NoneType = None + attr: str = join + ctx: Load + args: list + element: Subscript + value: Name + id: str = pathParts + ctx: Load + slice: Slice + lower: UnaryOp + op: USub + operand: Constant + value: int = 2 + kind: NoneType = None + upper: NoneType = None + step: NoneType = None + ctx: Load + keywords: list + type_comment: NoneType = None + element: Return + value: BinOp + left: Constant + value: str = %s:%d + kind: NoneType = None + op: Mod + right: Tuple + elts: list + element: Name + id: str = filename + ctx: Load + element: Attribute + value: Name + id: str = caller + ctx: Load + attr: str = lineno + ctx: Load + ctx: Load + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = noskip + kind: NoneType = None + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: ClassDef + name: str = AutoTester + bases: list + keywords: list + body: list + element: Expr + value: Constant + value: str = Main testing class for comparing CPython to Transcrypt. This + class is primarily used by calling the "check" method to confirm that + the result is the same in both environments and "done" when all checks + for a particular module have been completed. + + kind: NoneType = None + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = symbols + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + element: List + elts: list + ctx: Load + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = symbols + ctx: Store + value: Name + id: str = symbols + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _currTestlet + ctx: Store + value: Constant + value: str = UNKNOWN + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = testDict + ctx: Store + value: Dict + keys: list + values: list + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = refDict + ctx: Store + value: Dict + keys: list + values: list + type_comment: NoneType = None + element: If + test: Compare + left: Attribute + value: Name + id: str = __envir__ + ctx: Load + attr: str = executor_name + ctx: Load + ops: list + element: Eq + comparators: list + element: Attribute + value: Name + id: str = __envir__ + ctx: Load + attr: str = transpiler_name + ctx: Load + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = ui + ctx: Store + value: Call + func: Name + id: str = JSTesterUI + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + orelse: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = ui + ctx: Store + value: Constant + value: NoneType = None + kind: NoneType = None + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = sortedRepr + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = any + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: FunctionDef + name: str = tryGetNumKey + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = key + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: Compare + left: Call + func: Name + id: str = type + ctx: Load + args: list + element: Name + id: str = key + ctx: Load + keywords: list + ops: list + element: Eq + comparators: list + element: Name + id: str = str + ctx: Load + body: list + element: Try + body: list + element: Return + value: Call + func: Name + id: str = int + ctx: Load + args: list + element: Name + id: str = key + ctx: Load + keywords: list + handlers: list + element: ExceptHandler + type: NoneType = None + name: NoneType = None + body: list + element: Try + body: list + element: Return + value: Call + func: Name + id: str = float + ctx: Load + args: list + element: Name + id: str = key + ctx: Load + keywords: list + handlers: list + element: ExceptHandler + type: NoneType = None + name: NoneType = None + body: list + element: Return + value: Name + id: str = key + ctx: Load + orelse: list + finalbody: list + orelse: list + finalbody: list + orelse: list + element: Return + value: Name + id: str = key + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: If + test: Compare + left: Call + func: Name + id: str = type + ctx: Load + args: list + element: Name + id: str = any + ctx: Load + keywords: list + ops: list + element: Eq + comparators: list + element: Name + id: str = dict + ctx: Load + body: list + element: Return + value: BinOp + left: BinOp + left: Constant + value: str = { + kind: NoneType = None + op: Add + right: Call + func: Attribute + value: Constant + value: str = , + kind: NoneType = None + attr: str = join + ctx: Load + args: list + element: ListComp + elt: Call + func: Attribute + value: Constant + value: str = {}: {} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Name + id: str = key + ctx: Load + keywords: list + element: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Subscript + value: Name + id: str = any + ctx: Load + slice: Name + id: str = key + ctx: Load + ctx: Load + keywords: list + keywords: list + generators: list + element: comprehension + target: Tuple + elts: list + element: Name + id: str = index + ctx: Store + element: Name + id: str = key + ctx: Store + ctx: Store + iter: Call + func: Name + id: str = enumerate + ctx: Load + args: list + element: Call + func: Name + id: str = sorted + ctx: Load + args: list + element: ListComp + elt: Call + func: Name + id: str = tryGetNumKey + ctx: Load + args: list + element: Name + id: str = key + ctx: Load + keywords: list + generators: list + element: comprehension + target: Name + id: str = key + ctx: Store + iter: Call + func: Attribute + value: Name + id: str = any + ctx: Load + attr: str = keys + ctx: Load + args: list + keywords: list + ifs: list + is_async: int = 0 + keywords: list + element: keyword + arg: str = key + value: Lambda + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = aKey + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = aKey + ctx: Load + keywords: list + keywords: list + ifs: list + is_async: int = 0 + keywords: list + op: Add + right: Constant + value: str = } + kind: NoneType = None + orelse: list + element: If + test: Compare + left: Call + func: Name + id: str = type + ctx: Load + args: list + element: Name + id: str = any + ctx: Load + keywords: list + ops: list + element: Eq + comparators: list + element: Name + id: str = set + ctx: Load + body: list + element: If + test: Call + func: Name + id: str = len + ctx: Load + args: list + element: Name + id: str = any + ctx: Load + keywords: list + body: list + element: Return + value: BinOp + left: BinOp + left: Constant + value: str = { + kind: NoneType = None + op: Add + right: Call + func: Attribute + value: Constant + value: str = , + kind: NoneType = None + attr: str = join + ctx: Load + args: list + element: Call + func: Name + id: str = sorted + ctx: Load + args: list + element: ListComp + elt: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = item + ctx: Load + keywords: list + generators: list + element: comprehension + target: Name + id: str = item + ctx: Store + iter: Call + func: Name + id: str = list + ctx: Load + args: list + element: Name + id: str = any + ctx: Load + keywords: list + ifs: list + is_async: int = 0 + keywords: list + keywords: list + op: Add + right: Constant + value: str = } + kind: NoneType = None + orelse: list + element: Return + value: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Name + id: str = any + ctx: Load + keywords: list + orelse: list + element: If + test: Compare + left: Call + func: Name + id: str = type + ctx: Load + args: list + element: Name + id: str = any + ctx: Load + keywords: list + ops: list + element: Eq + comparators: list + element: Name + id: str = range + ctx: Load + body: list + element: Return + value: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Call + func: Name + id: str = list + ctx: Load + args: list + element: Name + id: str = any + ctx: Load + keywords: list + keywords: list + orelse: list + element: Return + value: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Name + id: str = any + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = kwargs + kind: NoneType = None + keywords: list + element: FunctionDef + name: str = check + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: arg + arg: str = args + annotation: NoneType = None + type_comment: NoneType = None + kwonlyargs: list + element: arg + arg: str = ancestor + annotation: NoneType = None + type_comment: NoneType = None + kw_defaults: list + element: Constant + value: int = 2 + kind: NoneType = None + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = Given a set of values from either the python or transcrypt + environments, we log the position of the check call in the test + and representative values of the passed arguments for later + comparison. + + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = position + ctx: Store + value: Call + func: Name + id: str = getFileLocation + ctx: Load + args: list + element: Name + id: str = ancestor + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = item + ctx: Store + value: Call + func: Attribute + value: Constant + value: str = + kind: NoneType = None + attr: str = join + ctx: Load + args: list + element: ListComp + elt: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = sortedRepr + ctx: Load + args: list + element: Name + id: str = arg + ctx: Load + keywords: list + generators: list + element: comprehension + target: Name + id: str = arg + ctx: Store + iter: Name + id: str = args + ctx: Load + ifs: list + is_async: int = 0 + keywords: list + type_comment: NoneType = None + element: If + test: Compare + left: Attribute + value: Name + id: str = __envir__ + ctx: Load + attr: str = executor_name + ctx: Load + ops: list + element: Eq + comparators: list + element: Attribute + value: Name + id: str = __envir__ + ctx: Load + attr: str = transpiler_name + ctx: Load + body: list + element: Expr + value: Call + func: Attribute + value: Subscript + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = testDict + ctx: Load + slice: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _currTestlet + ctx: Load + ctx: Load + attr: str = append + ctx: Load + args: list + element: Tuple + elts: list + element: Name + id: str = position + ctx: Load + element: Name + id: str = item + ctx: Load + ctx: Load + keywords: list + orelse: list + element: Expr + value: Call + func: Attribute + value: Subscript + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = refDict + ctx: Load + slice: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _currTestlet + ctx: Load + ctx: Load + attr: str = append + ctx: Load + args: list + element: Tuple + elts: list + element: Name + id: str = position + ctx: Load + element: Name + id: str = item + ctx: Load + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = nokwargs + kind: NoneType = None + keywords: list + element: FunctionDef + name: str = expectException + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = func + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = This method attempts to call the passed method and + checks to see whether an exception was generated. + @return string indicating "no exception" or "exception" + + kind: NoneType = None + element: Try + body: list + element: Expr + value: Call + func: Name + id: str = func + ctx: Load + args: list + keywords: list + element: Return + value: Constant + value: str = no exception + kind: NoneType = None + handlers: list + element: ExceptHandler + type: Name + id: str = Exception + ctx: Load + name: str = exc + body: list + element: Return + value: Constant + value: str = exception + kind: NoneType = None + orelse: list + finalbody: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = throwToError + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = func + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = This function invokes the passed function and then + converts an exception to an error response so that + the unit test can continue even in the case where an + exception may or may not occur. + + kind: NoneType = None + element: Try + body: list + element: Return + value: Call + func: Name + id: str = func + ctx: Load + args: list + keywords: list + handlers: list + element: ExceptHandler + type: Name + id: str = Exception + ctx: Load + name: str = exc + body: list + element: Return + value: Tuple + elts: list + element: Constant + value: NoneType = None + kind: NoneType = None + element: Call + func: Attribute + value: Constant + value: str = !!!{} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = exc + ctx: Load + keywords: list + keywords: list + ctx: Load + orelse: list + finalbody: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = checkEval + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = func + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = Check the result of the passed function which is + invoked without arguments. If this function throws an + exception, that exception is caught and converted to an error + with can be compared against the result. This allows the + user to control for exception that may or may not be generated + in the unit tests + + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = ret + ctx: Store + value: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = throwToError + ctx: Load + args: list + element: Name + id: str = func + ctx: Load + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = ret + ctx: Load + keywords: list + element: keyword + arg: str = ancestor + value: Constant + value: int = 3 + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = checkPad + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = val + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = count + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = This method is to help manage flow control in unit tests and + keep all unit tests aligned + + kind: NoneType = None + element: For + target: Name + id: str = i + ctx: Store + iter: Call + func: Name + id: str = range + ctx: Load + args: list + element: Constant + value: int = 0 + kind: NoneType = None + element: Name + id: str = count + ctx: Load + keywords: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = val + ctx: Load + keywords: list + orelse: list + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = _getTotalErrorCnt + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = testData + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = refData + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = This method determines the total number of non-matching + values in the test and reference data for a particular module. + + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = errCount + ctx: Store + value: Constant + value: int = 0 + kind: NoneType = None + type_comment: NoneType = None + element: For + target: Tuple + elts: list + element: Name + id: str = i + ctx: Store + element: Tuple + elts: list + element: Name + id: str = refPos + ctx: Store + element: Name + id: str = refItem + ctx: Store + ctx: Store + ctx: Store + iter: Call + func: Name + id: str = enumerate + ctx: Load + args: list + element: Name + id: str = refData + ctx: Load + keywords: list + body: list + element: Try + body: list + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = testPos + ctx: Store + element: Name + id: str = testItem + ctx: Store + ctx: Store + value: Subscript + value: Name + id: str = testData + ctx: Load + slice: Name + id: str = i + ctx: Load + ctx: Load + type_comment: NoneType = None + element: If + test: UnaryOp + op: Not + operand: Call + func: Name + id: str = itemsAreEqual + ctx: Load + args: list + element: Name + id: str = testItem + ctx: Load + element: Name + id: str = refItem + ctx: Load + keywords: list + body: list + element: AugAssign + target: Name + id: str = errCount + ctx: Store + op: Add + value: Constant + value: int = 1 + kind: NoneType = None + orelse: list + handlers: list + element: ExceptHandler + type: NoneType = None + name: NoneType = None + body: list + element: AugAssign + target: Name + id: str = errCount + ctx: Store + op: Add + value: Constant + value: int = 1 + kind: NoneType = None + orelse: list + finalbody: list + orelse: list + type_comment: NoneType = None + element: Return + value: Name + id: str = errCount + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = compare + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Name + id: str = dc + ctx: Store + value: Call + func: Name + id: str = DataConverter + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = refDict + ctx: Store + value: Call + func: Attribute + value: Name + id: str = dc + ctx: Load + attr: str = getPythonResults + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = totalErrors + ctx: Store + value: Constant + value: int = 0 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = sKeys + ctx: Store + value: Call + func: Name + id: str = sorted + ctx: Load + args: list + element: Call + func: Attribute + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = refDict + ctx: Load + attr: str = keys + ctx: Load + args: list + keywords: list + keywords: list + type_comment: NoneType = None + element: For + target: Name + id: str = key + ctx: Store + iter: Name + id: str = sKeys + ctx: Load + body: list + element: Assign + targets: list + element: Name + id: str = refData + ctx: Store + value: Subscript + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = refDict + ctx: Load + slice: Name + id: str = key + ctx: Load + ctx: Load + type_comment: NoneType = None + element: Try + body: list + element: Assign + targets: list + element: Name + id: str = testData + ctx: Store + value: Subscript + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = testDict + ctx: Load + slice: Name + id: str = key + ctx: Load + ctx: Load + type_comment: NoneType = None + element: If + test: Compare + left: Name + id: str = testData + ctx: Load + ops: list + element: Is + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Raise + exc: Call + func: Name + id: str = KeyError + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = No Test Data Module: {} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Name + id: str = key + ctx: Load + keywords: list + keywords: list + cause: NoneType = None + orelse: list + handlers: list + element: ExceptHandler + type: Name + id: str = KeyError + ctx: Load + name: NoneType = None + body: list + element: Expr + value: Call + func: Attribute + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = ui + ctx: Load + attr: str = appendSeqRowName + ctx: Load + args: list + element: Name + id: str = key + ctx: Load + element: Call + func: Name + id: str = len + ctx: Load + args: list + element: Name + id: str = refData + ctx: Load + keywords: list + keywords: list + element: For + target: Tuple + elts: list + element: Name + id: str = i + ctx: Store + element: Tuple + elts: list + element: Name + id: str = refPos + ctx: Store + element: Name + id: str = refItem + ctx: Store + ctx: Store + ctx: Store + iter: Call + func: Name + id: str = enumerate + ctx: Load + args: list + element: Name + id: str = refData + ctx: Load + keywords: list + body: list + element: Expr + value: Call + func: Attribute + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = ui + ctx: Load + attr: str = appendTableResult + ctx: Load + args: list + element: Name + id: str = key + ctx: Load + element: Constant + value: NoneType = None + kind: NoneType = None + element: Constant + value: NoneType = None + kind: NoneType = None + element: Name + id: str = refPos + ctx: Load + element: Name + id: str = refItem + ctx: Load + element: Constant + value: bool = False + kind: NoneType = None + keywords: list + orelse: list + type_comment: NoneType = None + element: Continue + orelse: list + finalbody: list + element: Assign + targets: list + element: Name + id: str = errCount + ctx: Store + value: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _getTotalErrorCnt + ctx: Load + args: list + element: Name + id: str = testData + ctx: Load + element: Name + id: str = refData + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = collapse + ctx: Store + value: Compare + left: Name + id: str = errCount + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = ui + ctx: Load + attr: str = appendSeqRowName + ctx: Load + args: list + element: Name + id: str = key + ctx: Load + element: Name + id: str = errCount + ctx: Load + keywords: list + element: For + target: Tuple + elts: list + element: Name + id: str = i + ctx: Store + element: Tuple + elts: list + element: Name + id: str = refPos + ctx: Store + element: Name + id: str = refItem + ctx: Store + ctx: Store + ctx: Store + iter: Call + func: Name + id: str = enumerate + ctx: Load + args: list + element: Name + id: str = refData + ctx: Load + keywords: list + body: list + element: Try + body: list + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = testPos + ctx: Store + element: Name + id: str = testItem + ctx: Store + ctx: Store + value: Subscript + value: Name + id: str = testData + ctx: Load + slice: Name + id: str = i + ctx: Load + ctx: Load + type_comment: NoneType = None + handlers: list + element: ExceptHandler + type: NoneType = None + name: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = testPos + ctx: Store + value: Constant + value: NoneType = None + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = testItem + ctx: Store + value: Constant + value: NoneType = None + kind: NoneType = None + type_comment: NoneType = None + orelse: list + finalbody: list + element: Expr + value: Call + func: Attribute + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = ui + ctx: Load + attr: str = appendTableResult + ctx: Load + args: list + element: Name + id: str = key + ctx: Load + element: Name + id: str = testPos + ctx: Load + element: Name + id: str = testItem + ctx: Load + element: Name + id: str = refPos + ctx: Load + element: Name + id: str = refItem + ctx: Load + element: Name + id: str = collapse + ctx: Load + keywords: list + orelse: list + type_comment: NoneType = None + element: AugAssign + target: Name + id: str = totalErrors + ctx: Store + op: Add + value: Name + id: str = errCount + ctx: Load + orelse: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = ui + ctx: Load + attr: str = setOutputStatus + ctx: Load + args: list + element: Compare + left: Name + id: str = totalErrors + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = _cleanName + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = name + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = Clean the passed name of characters that won't be allowed + in CSS class or HTML id strings. + + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = ret + ctx: Store + value: Name + id: str = name + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = invalidChars + ctx: Store + value: List + elts: list + element: Constant + value: str = ~ + kind: NoneType = None + element: Constant + value: str = ! + kind: NoneType = None + element: Constant + value: str = @ + kind: NoneType = None + element: Constant + value: str = $ + kind: NoneType = None + element: Constant + value: str = % + kind: NoneType = None + element: Constant + value: str = ^ + kind: NoneType = None + element: Constant + value: str = & + kind: NoneType = None + element: Constant + value: str = * + kind: NoneType = None + element: Constant + value: str = ( + kind: NoneType = None + element: Constant + value: str = ) + kind: NoneType = None + element: Constant + value: str = + + kind: NoneType = None + element: Constant + value: str = = + kind: NoneType = None + element: Constant + value: str = , + kind: NoneType = None + element: Constant + value: str = . + kind: NoneType = None + element: Constant + value: str = / + kind: NoneType = None + element: Constant + value: str = ' + kind: NoneType = None + element: Constant + value: str = ; + kind: NoneType = None + element: Constant + value: str = : + kind: NoneType = None + element: Constant + value: str = " + kind: NoneType = None + element: Constant + value: str = ? + kind: NoneType = None + element: Constant + value: str = > + kind: NoneType = None + element: Constant + value: str = < + kind: NoneType = None + element: Constant + value: str = [ + kind: NoneType = None + element: Constant + value: str = ] + kind: NoneType = None + element: Constant + value: str = \ + kind: NoneType = None + element: Constant + value: str = { + kind: NoneType = None + element: Constant + value: str = } + kind: NoneType = None + element: Constant + value: str = | + kind: NoneType = None + element: Constant + value: str = ` + kind: NoneType = None + element: Constant + value: str = # + kind: NoneType = None + element: Constant + value: str = + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: For + target: Name + id: str = ch + ctx: Store + iter: Name + id: str = invalidChars + ctx: Load + body: list + element: Assign + targets: list + element: Name + id: str = ret + ctx: Store + value: Call + func: Attribute + value: Name + id: str = ret + ctx: Load + attr: str = replace + ctx: Load + args: list + element: Name + id: str = ch + ctx: Load + element: Constant + value: str = _ + kind: NoneType = None + keywords: list + type_comment: NoneType = None + orelse: list + type_comment: NoneType = None + element: Return + value: Name + id: str = ret + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = run + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = testlet + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = testletName + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Name + id: str = testletName + ctx: Store + value: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _cleanName + ctx: Load + args: list + element: Name + id: str = testletName + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _currTestlet + ctx: Store + value: Name + id: str = testletName + ctx: Load + type_comment: NoneType = None + element: If + test: Compare + left: Attribute + value: Name + id: str = __envir__ + ctx: Load + attr: str = executor_name + ctx: Load + ops: list + element: Eq + comparators: list + element: Attribute + value: Name + id: str = __envir__ + ctx: Load + attr: str = transpiler_name + ctx: Load + body: list + element: Assign + targets: list + element: Subscript + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = testDict + ctx: Load + slice: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _currTestlet + ctx: Load + ctx: Store + value: List + elts: list + ctx: Load + type_comment: NoneType = None + orelse: list + element: Assign + targets: list + element: Subscript + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = refDict + ctx: Load + slice: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _currTestlet + ctx: Load + ctx: Store + value: List + elts: list + ctx: Load + type_comment: NoneType = None + element: Try + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = testlet + ctx: Load + attr: str = run + ctx: Load + args: list + element: Name + id: str = self + ctx: Load + keywords: list + handlers: list + element: ExceptHandler + type: Name + id: str = Exception + ctx: Load + name: str = exc + body: list + element: If + test: Compare + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = ui + ctx: Load + ops: list + element: IsNot + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Expr + value: Call + func: Attribute + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = ui + ctx: Load + attr: str = setOutputStatus + ctx: Load + args: list + element: Constant + value: bool = False + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = ui + ctx: Load + attr: str = showException + ctx: Load + args: list + element: Name + id: str = testletName + ctx: Load + element: Name + id: str = exc + ctx: Load + keywords: list + orelse: list + element: Raise + exc: NoneType = None + cause: NoneType = None + orelse: list + finalbody: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = done + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: Compare + left: Attribute + value: Name + id: str = __envir__ + ctx: Load + attr: str = executor_name + ctx: Load + ops: list + element: Eq + comparators: list + element: Attribute + value: Name + id: str = __envir__ + ctx: Load + attr: str = transpiler_name + ctx: Load + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = compare + ctx: Load + args: list + keywords: list + orelse: list + element: Assign + targets: list + element: Name + id: str = fnameBase + ctx: Store + value: Call + func: Attribute + value: Attribute + value: Name + id: str = __main__ + ctx: Load + attr: str = __file__ + ctx: Load + attr: str = replace + ctx: Load + args: list + element: Constant + value: str = \ + kind: NoneType = None + element: Constant + value: str = / + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = hg + ctx: Store + value: Call + func: Name + id: str = HTMLGenerator + ctx: Load + args: list + element: Name + id: str = fnameBase + ctx: Load + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = hg + ctx: Load + attr: str = generate_html + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = refDict + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/properties.js b/transcrypt/development/automated_tests/transcrypt/__target__39/properties.js new file mode 100644 index 000000000..60d56dc36 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/properties.js @@ -0,0 +1,96 @@ +// Transcrypt'ed from Python, 2021-05-14 15:01:24 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +var __all__ = dict ({get A () {return A;}, set A (value) {A = value;}, get B () {return B;}, set B (value) {B = value;}, get C () {return C;}, set C (value) {C = value;}, get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get run () {return run;}, set run (value) {run = value;}}); +var __name__ = 'properties'; +export var A = __class__ ('A', [object], { + __module__: __name__, + p: 1234, + get getX () {return __get__ (this, function (self) { + return self._x; + });}, + get setX () {return __get__ (this, function (self, value) { + self._x = value; + });}, + get getY () {return __get__ (this, function (self) { + return self._y; + });}, + get setY () {return __get__ (this, function (self, value) { + self._y = 1000 + value; + });}, + get getY2 () {return __get__ (this, function (self) { + return self._y; + });}, + get setY2 () {return __get__ (this, function (self, value) { + self._y = value; + });}, + get getT () {return __get__ (this, function (self) { + return self._t; + });}, + get setT () {return __get__ (this, function (self, value) { + self._t = value; + });}, + get getU () {return __get__ (this, function (self) { + return self._u + 10000; + });}, + get setU () {return __get__ (this, function (self, value) { + self._u = value - 5000; + });} +}); +var __left0__ = tuple ([property.call (A, A.getX, A.setX), property.call (A, A.getY, A.setY), property.call (A, A.getY2, A.setY2)]); +Object.defineProperty (A, 'x', __left0__ [0]); +Object.defineProperty (A, 'y', __left0__ [1]); +Object.defineProperty (A, 'y2', __left0__ [2]); +Object.defineProperty (A, 't', property.call (A, A.getT, A.setT)); +Object.defineProperty (A, 'u', property.call (A, A.getU, A.setU)); +A.q = 5678; +export var B = __class__ ('B', [object], { + __module__: __name__, + get getZ () {return __get__ (this, function (self) { + return self.z_; + });}, + get setZ () {return __get__ (this, function (self, value) { + self.z_ = value; + });} +}); +Object.defineProperty (B, 'z', property.call (B, B.getZ, B.setZ)); +export var C = __class__ ('C', [object], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self) { + self.offset = 1234; + });}, + get getW () {return __get__ (this, function (self) { + return self.w_ + self.offset; + });}, + get setW () {return __get__ (this, function (self, value) { + self.w_ = value - self.offset; + });} +}); +Object.defineProperty (C, 'w', property.call (C, C.getW, C.setW)); +export var run = function (autoTester) { + var a1 = A (); + var a2 = A (); + a1.y2 = 1000; + a2.y2 = 2000; + a1.x = 5; + a1.y = 6; + a2.x = 7; + a2.y = 8; + a1.t = 77; + a1.u = 88; + autoTester.check (a1.x, a1.y, a1.y2); + autoTester.check (a2.x, a2.y, a2.y2); + autoTester.check (a1.p, a2.p, a1.q, a2.q); + autoTester.check (a1.t, a1.u); + var b = B (); + var c = C (); + b.z = 100100; + c.z = 200200; + c.w = 300300; + autoTester.check (a1.x, b.z, c.z, c.w); + c.w = 400400; + c.z = 500500; + b.z = 600600; + autoTester.check (a1.x, b.z, c.z, c.w); +}; + +//# sourceMappingURL=properties.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/properties.tree b/transcrypt/development/automated_tests/transcrypt/__target__39/properties.tree new file mode 100644 index 000000000..c6df78f74 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/properties.tree @@ -0,0 +1,1056 @@ +file: Module + body: list + element: ClassDef + name: str = A + bases: list + keywords: list + body: list + element: Assign + targets: list + element: Name + id: str = p + ctx: Store + value: Constant + value: int = 1234 + kind: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = getX + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _x + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = setX + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = value + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _x + ctx: Store + value: Name + id: str = value + ctx: Load + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = getY + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _y + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = setY + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = value + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _y + ctx: Store + value: BinOp + left: Constant + value: int = 1000 + kind: NoneType = None + op: Add + right: Name + id: str = value + ctx: Load + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = getY2 + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _y + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = setY2 + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = value + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _y + ctx: Store + value: Name + id: str = value + ctx: Load + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = getT + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _t + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = setT + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = value + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _t + ctx: Store + value: Name + id: str = value + ctx: Load + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = getU + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: BinOp + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _u + ctx: Load + op: Add + right: Constant + value: int = 10000 + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = setU + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = value + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _u + ctx: Store + value: BinOp + left: Name + id: str = value + ctx: Load + op: Sub + right: Constant + value: int = 5000 + kind: NoneType = None + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = x + ctx: Store + element: Name + id: str = y + ctx: Store + element: Name + id: str = y2 + ctx: Store + ctx: Store + value: Tuple + elts: list + element: Call + func: Name + id: str = property + ctx: Load + args: list + element: Name + id: str = getX + ctx: Load + element: Name + id: str = setX + ctx: Load + keywords: list + element: Call + func: Name + id: str = property + ctx: Load + args: list + element: Name + id: str = getY + ctx: Load + element: Name + id: str = setY + ctx: Load + keywords: list + element: Call + func: Name + id: str = property + ctx: Load + args: list + element: Name + id: str = getY2 + ctx: Load + element: Name + id: str = setY2 + ctx: Load + keywords: list + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = t + ctx: Store + value: Call + func: Name + id: str = property + ctx: Load + args: list + element: Name + id: str = getT + ctx: Load + element: Name + id: str = setT + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = u + ctx: Store + value: Call + func: Name + id: str = property + ctx: Load + args: list + element: Name + id: str = getU + ctx: Load + element: Name + id: str = setU + ctx: Load + keywords: list + type_comment: NoneType = None + decorator_list: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = A + ctx: Load + attr: str = q + ctx: Store + value: Constant + value: int = 5678 + kind: NoneType = None + type_comment: NoneType = None + element: ClassDef + name: str = B + bases: list + keywords: list + body: list + element: FunctionDef + name: str = getZ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = z_ + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = setZ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = value + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = z_ + ctx: Store + value: Name + id: str = value + ctx: Load + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = z + ctx: Store + value: Call + func: Name + id: str = property + ctx: Load + args: list + element: Name + id: str = getZ + ctx: Load + element: Name + id: str = setZ + ctx: Load + keywords: list + type_comment: NoneType = None + decorator_list: list + element: ClassDef + name: str = C + bases: list + keywords: list + body: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = offset + ctx: Store + value: Constant + value: int = 1234 + kind: NoneType = None + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = getW + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: BinOp + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = w_ + ctx: Load + op: Add + right: Attribute + value: Name + id: str = self + ctx: Load + attr: str = offset + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = setW + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = value + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = w_ + ctx: Store + value: BinOp + left: Name + id: str = value + ctx: Load + op: Sub + right: Attribute + value: Name + id: str = self + ctx: Load + attr: str = offset + ctx: Load + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = w + ctx: Store + value: Call + func: Name + id: str = property + ctx: Load + args: list + element: Name + id: str = getW + ctx: Load + element: Name + id: str = setW + ctx: Load + keywords: list + type_comment: NoneType = None + decorator_list: list + element: FunctionDef + name: str = run + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = autoTester + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Name + id: str = a1 + ctx: Store + value: Call + func: Name + id: str = A + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = a2 + ctx: Store + value: Call + func: Name + id: str = A + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = a1 + ctx: Load + attr: str = y2 + ctx: Store + value: Constant + value: int = 1000 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = a2 + ctx: Load + attr: str = y2 + ctx: Store + value: Constant + value: int = 2000 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = a1 + ctx: Load + attr: str = x + ctx: Store + value: Constant + value: int = 5 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = a1 + ctx: Load + attr: str = y + ctx: Store + value: Constant + value: int = 6 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = a2 + ctx: Load + attr: str = x + ctx: Store + value: Constant + value: int = 7 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = a2 + ctx: Load + attr: str = y + ctx: Store + value: Constant + value: int = 8 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = a1 + ctx: Load + attr: str = t + ctx: Store + value: Constant + value: int = 77 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = a1 + ctx: Load + attr: str = u + ctx: Store + value: Constant + value: int = 88 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = a1 + ctx: Load + attr: str = x + ctx: Load + element: Attribute + value: Name + id: str = a1 + ctx: Load + attr: str = y + ctx: Load + element: Attribute + value: Name + id: str = a1 + ctx: Load + attr: str = y2 + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = a2 + ctx: Load + attr: str = x + ctx: Load + element: Attribute + value: Name + id: str = a2 + ctx: Load + attr: str = y + ctx: Load + element: Attribute + value: Name + id: str = a2 + ctx: Load + attr: str = y2 + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = a1 + ctx: Load + attr: str = p + ctx: Load + element: Attribute + value: Name + id: str = a2 + ctx: Load + attr: str = p + ctx: Load + element: Attribute + value: Name + id: str = a1 + ctx: Load + attr: str = q + ctx: Load + element: Attribute + value: Name + id: str = a2 + ctx: Load + attr: str = q + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = a1 + ctx: Load + attr: str = t + ctx: Load + element: Attribute + value: Name + id: str = a1 + ctx: Load + attr: str = u + ctx: Load + keywords: list + element: Assign + targets: list + element: Name + id: str = b + ctx: Store + value: Call + func: Name + id: str = B + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = c + ctx: Store + value: Call + func: Name + id: str = C + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = b + ctx: Load + attr: str = z + ctx: Store + value: Constant + value: int = 100100 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = c + ctx: Load + attr: str = z + ctx: Store + value: Constant + value: int = 200200 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = c + ctx: Load + attr: str = w + ctx: Store + value: Constant + value: int = 300300 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = a1 + ctx: Load + attr: str = x + ctx: Load + element: Attribute + value: Name + id: str = b + ctx: Load + attr: str = z + ctx: Load + element: Attribute + value: Name + id: str = c + ctx: Load + attr: str = z + ctx: Load + element: Attribute + value: Name + id: str = c + ctx: Load + attr: str = w + ctx: Load + keywords: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = c + ctx: Load + attr: str = w + ctx: Store + value: Constant + value: int = 400400 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = c + ctx: Load + attr: str = z + ctx: Store + value: Constant + value: int = 500500 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = b + ctx: Load + attr: str = z + ctx: Store + value: Constant + value: int = 600600 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = a1 + ctx: Load + attr: str = x + ctx: Load + element: Attribute + value: Name + id: str = b + ctx: Load + attr: str = z + ctx: Load + element: Attribute + value: Name + id: str = c + ctx: Load + attr: str = z + ctx: Load + element: Attribute + value: Name + id: str = c + ctx: Load + attr: str = w + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/proxies.js b/transcrypt/development/automated_tests/transcrypt/__target__39/proxies.js new file mode 100644 index 000000000..59e36dbe8 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/proxies.js @@ -0,0 +1,122 @@ +// Transcrypt'ed from Python, 2021-05-14 15:01:24 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get run () {return run;}, set run (value) {run = value;}}); +var __name__ = 'proxies'; +export var run = function (autoTester) { + var CodedStore = __class__ ('CodedStore', [object], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self) { + try { + self ["__dict__"] = {} + } + catch (__except0__) { + // pass; + } + });}, + get __setattr__ () {return __get__ (this, function (self, py_name, message) { + });}, + get __getattr__ () {return __get__ (this, function (self, py_name) { + return 'decoded_' + ; + });}, + get peek () {return __get__ (this, function (self, py_name) { + return ; + });} + }); + var s = CodedStore (); + s.john = 'brown'; + s.mary = 'white'; + autoTester.check (s.peek ('john')); + autoTester.check (s.peek ('mary')); + autoTester.check (s.john); + autoTester.check (s.mary); + var A = __class__ ('A', [object], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self) { + self.p = 1; + self.q = 2; + });} + }); + var B = __class__ ('B', [A], { + __module__: __name__, + get __getattr__ () {return __get__ (this, function (self, py_name) { + return 'Faked {}'.format (py_name); + });} + }); + var C = __class__ ('C', [A], { + __module__: __name__, + get __setattr__ () {return __get__ (this, function (self, py_name, value) { + autoTester.check ('Set faked {}'.format (py_name)); + A.__setattr__ (self, py_name, value); + });} + }); + var D = __class__ ('D', [B, C], { + __module__: __name__, + }); + var a = A (); + var b = B (); + var c = C (); + var d = D (); + autoTester.check (a.p, a.q); + a.p = 3; + autoTester.check (a.p, a.q); + autoTester.check (b.p, b.q, b.r, b.s); + b.p = 4; + b.r = 5; + autoTester.check (b.p, b.q, b.r, b.s); + autoTester.check (c.p, c.q); + c.p = 6; + c.q = 7; + autoTester.check (c.p, c.q); + autoTester.check (d.p, d.q, d.r, d.s); + d.p = 8; + d.q = 9; + d.r = 10; + d.s = 11; + autoTester.check (d.p, d.q, d.r, d.s); + autoTester.check ('Issue 587'); + var Element = __class__ ('Element', [object], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self) { + self.message = 'Goodbye'; + });}, + get sayBye () {return __get__ (this, function (self) { + autoTester.check (self.message); + });} + }); + var Wrapper = __class__ ('Wrapper', [object], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self, element) { + self.element = element; + });}, + get __setattr__ () {return __get__ (this, function (self, py_name, value) { + if (py_name != 'element' && hasattr (self.element, py_name)) { + setattr (self.element, py_name, value); + } + else { + } + });}, + get __getattr__ () {return __get__ (this, function (self, py_name) { + var result = getattr (self.element, py_name); + if (hasattr (result, 'call') && hasattr (result, 'bind')) { + var result = result.bind (self.element); + } + return result; + });}, + get sayHello () {return __get__ (this, function (self) { + autoTester.check ('Hello'); + return self; + });} + }); + var e = Element (); + var w = Wrapper (e); + e.sayBye (); + w.sayBye (); + w.sayHello ().sayBye (); + w.message = 'Bye'; + e.sayBye (); + w.sayBye (); + w.sayHello ().sayBye (); + autoTester.check ('End issue 587'); +}; + +//# sourceMappingURL=proxies.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/proxies.tree b/transcrypt/development/automated_tests/transcrypt/__target__39/proxies.tree new file mode 100644 index 000000000..a35d5176a --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/proxies.tree @@ -0,0 +1,1378 @@ +file: Module + body: list + element: ImportFrom + module: str = org.transcrypt.stubs.browser + names: list + element: alias + name: str = __pragma__ + asname: NoneType = None + level: int = 0 + element: FunctionDef + name: str = run + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = autoTester + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: ClassDef + name: str = CodedStore + bases: list + keywords: list + body: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Try + body: list + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = js + kind: NoneType = None + element: Constant + value: str = {} + kind: NoneType = None + element: Constant + value: str = self ["__dict__"] = {} + kind: NoneType = None + keywords: list + handlers: list + element: ExceptHandler + type: NoneType = None + name: NoneType = None + body: list + element: Pass + orelse: list + finalbody: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __setattr__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = name + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = message + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Subscript + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = __dict__ + ctx: Load + slice: BinOp + left: Constant + value: str = _ + kind: NoneType = None + op: Add + right: Name + id: str = name + ctx: Load + ctx: Store + value: BinOp + left: Constant + value: str = coded_ + kind: NoneType = None + op: Add + right: Name + id: str = message + ctx: Load + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __getattr__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = name + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: BinOp + left: Constant + value: str = decoded_ + kind: NoneType = None + op: Add + right: Subscript + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = __dict__ + ctx: Load + slice: BinOp + left: Constant + value: str = _ + kind: NoneType = None + op: Add + right: Name + id: str = name + ctx: Load + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = peek + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = name + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Subscript + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = __dict__ + ctx: Load + slice: BinOp + left: Constant + value: str = _ + kind: NoneType = None + op: Add + right: Name + id: str = name + ctx: Load + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: Assign + targets: list + element: Name + id: str = s + ctx: Store + value: Call + func: Name + id: str = CodedStore + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = s + ctx: Load + attr: str = john + ctx: Store + value: Constant + value: str = brown + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = s + ctx: Load + attr: str = mary + ctx: Store + value: Constant + value: str = white + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = s + ctx: Load + attr: str = peek + ctx: Load + args: list + element: Constant + value: str = john + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = s + ctx: Load + attr: str = peek + ctx: Load + args: list + element: Constant + value: str = mary + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = s + ctx: Load + attr: str = john + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = s + ctx: Load + attr: str = mary + ctx: Load + keywords: list + element: Expr + value: Constant + value: str = + The code above produces the following output: + 'coded_brown' + 'coded_white' + 'decoded_coded_brown' + 'decoded_coded_white' + + kind: NoneType = None + element: ClassDef + name: str = A + bases: list + keywords: list + body: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = p + ctx: Store + value: Constant + value: int = 1 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = q + ctx: Store + value: Constant + value: int = 2 + kind: NoneType = None + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: ClassDef + name: str = B + bases: list + element: Name + id: str = A + ctx: Load + keywords: list + body: list + element: FunctionDef + name: str = __getattr__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = name + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Call + func: Attribute + value: Constant + value: str = Faked {} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Name + id: str = name + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: ClassDef + name: str = C + bases: list + element: Name + id: str = A + ctx: Load + keywords: list + body: list + element: FunctionDef + name: str = __setattr__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = name + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = value + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = Set faked {} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Name + id: str = name + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = A + ctx: Load + attr: str = __setattr__ + ctx: Load + args: list + element: Name + id: str = self + ctx: Load + element: Name + id: str = name + ctx: Load + element: Name + id: str = value + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: ClassDef + name: str = D + bases: list + element: Name + id: str = B + ctx: Load + element: Name + id: str = C + ctx: Load + keywords: list + body: list + element: Pass + decorator_list: list + element: Assign + targets: list + element: Name + id: str = a + ctx: Store + value: Call + func: Name + id: str = A + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = b + ctx: Store + value: Call + func: Name + id: str = B + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = c + ctx: Store + value: Call + func: Name + id: str = C + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = d + ctx: Store + value: Call + func: Name + id: str = D + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = a + ctx: Load + attr: str = p + ctx: Load + element: Attribute + value: Name + id: str = a + ctx: Load + attr: str = q + ctx: Load + keywords: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = a + ctx: Load + attr: str = p + ctx: Store + value: Constant + value: int = 3 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = a + ctx: Load + attr: str = p + ctx: Load + element: Attribute + value: Name + id: str = a + ctx: Load + attr: str = q + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = b + ctx: Load + attr: str = p + ctx: Load + element: Attribute + value: Name + id: str = b + ctx: Load + attr: str = q + ctx: Load + element: Attribute + value: Name + id: str = b + ctx: Load + attr: str = r + ctx: Load + element: Attribute + value: Name + id: str = b + ctx: Load + attr: str = s + ctx: Load + keywords: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = b + ctx: Load + attr: str = p + ctx: Store + value: Constant + value: int = 4 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = b + ctx: Load + attr: str = r + ctx: Store + value: Constant + value: int = 5 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = b + ctx: Load + attr: str = p + ctx: Load + element: Attribute + value: Name + id: str = b + ctx: Load + attr: str = q + ctx: Load + element: Attribute + value: Name + id: str = b + ctx: Load + attr: str = r + ctx: Load + element: Attribute + value: Name + id: str = b + ctx: Load + attr: str = s + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = c + ctx: Load + attr: str = p + ctx: Load + element: Attribute + value: Name + id: str = c + ctx: Load + attr: str = q + ctx: Load + keywords: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = c + ctx: Load + attr: str = p + ctx: Store + value: Constant + value: int = 6 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = c + ctx: Load + attr: str = q + ctx: Store + value: Constant + value: int = 7 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = c + ctx: Load + attr: str = p + ctx: Load + element: Attribute + value: Name + id: str = c + ctx: Load + attr: str = q + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = d + ctx: Load + attr: str = p + ctx: Load + element: Attribute + value: Name + id: str = d + ctx: Load + attr: str = q + ctx: Load + element: Attribute + value: Name + id: str = d + ctx: Load + attr: str = r + ctx: Load + element: Attribute + value: Name + id: str = d + ctx: Load + attr: str = s + ctx: Load + keywords: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = d + ctx: Load + attr: str = p + ctx: Store + value: Constant + value: int = 8 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = d + ctx: Load + attr: str = q + ctx: Store + value: Constant + value: int = 9 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = d + ctx: Load + attr: str = r + ctx: Store + value: Constant + value: int = 10 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = d + ctx: Load + attr: str = s + ctx: Store + value: Constant + value: int = 11 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = d + ctx: Load + attr: str = p + ctx: Load + element: Attribute + value: Name + id: str = d + ctx: Load + attr: str = q + ctx: Load + element: Attribute + value: Name + id: str = d + ctx: Load + attr: str = r + ctx: Load + element: Attribute + value: Name + id: str = d + ctx: Load + attr: str = s + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Issue 587 + kind: NoneType = None + keywords: list + element: ClassDef + name: str = Element + bases: list + keywords: list + body: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = message + ctx: Store + value: Constant + value: str = Goodbye + kind: NoneType = None + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = sayBye + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = message + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: ClassDef + name: str = Wrapper + bases: list + keywords: list + body: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = element + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = element + ctx: Store + value: Name + id: str = element + ctx: Load + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __setattr__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = name + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = value + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = set attribute on element if it already has the attribute + kind: NoneType = None + element: If + test: BoolOp + op: And + values: list + element: Compare + left: Name + id: str = name + ctx: Load + ops: list + element: NotEq + comparators: list + element: Constant + value: str = element + kind: NoneType = None + element: Call + func: Name + id: str = hasattr + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = element + ctx: Load + element: Name + id: str = name + ctx: Load + keywords: list + body: list + element: Expr + value: Call + func: Name + id: str = setattr + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = element + ctx: Load + element: Name + id: str = name + ctx: Load + element: Name + id: str = value + ctx: Load + keywords: list + orelse: list + element: Assign + targets: list + element: Subscript + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = __dict__ + ctx: Load + slice: Name + id: str = name + ctx: Load + ctx: Store + value: Name + id: str = value + ctx: Load + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __getattr__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = name + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = get attribute from element if this object doesn't have the attribute + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = result + ctx: Store + value: Call + func: Name + id: str = getattr + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = element + ctx: Load + element: Name + id: str = name + ctx: Load + keywords: list + type_comment: NoneType = None + element: If + test: BoolOp + op: And + values: list + element: Call + func: Name + id: str = hasattr + ctx: Load + args: list + element: Name + id: str = result + ctx: Load + element: Constant + value: str = call + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = hasattr + ctx: Load + args: list + element: Name + id: str = result + ctx: Load + element: Constant + value: str = bind + kind: NoneType = None + keywords: list + body: list + element: Assign + targets: list + element: Name + id: str = result + ctx: Store + value: Call + func: Attribute + value: Name + id: str = result + ctx: Load + attr: str = bind + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = element + ctx: Load + keywords: list + type_comment: NoneType = None + orelse: list + element: Return + value: Name + id: str = result + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = sayHello + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Hello + kind: NoneType = None + keywords: list + element: Return + value: Name + id: str = self + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: Assign + targets: list + element: Name + id: str = e + ctx: Store + value: Call + func: Name + id: str = Element + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = w + ctx: Store + value: Call + func: Name + id: str = Wrapper + ctx: Load + args: list + element: Name + id: str = e + ctx: Load + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = e + ctx: Load + attr: str = sayBye + ctx: Load + args: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = w + ctx: Load + attr: str = sayBye + ctx: Load + args: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Call + func: Attribute + value: Name + id: str = w + ctx: Load + attr: str = sayHello + ctx: Load + args: list + keywords: list + attr: str = sayBye + ctx: Load + args: list + keywords: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = w + ctx: Load + attr: str = message + ctx: Store + value: Constant + value: str = Bye + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = e + ctx: Load + attr: str = sayBye + ctx: Load + args: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = w + ctx: Load + attr: str = sayBye + ctx: Load + args: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Call + func: Attribute + value: Name + id: str = w + ctx: Load + attr: str = sayHello + ctx: Load + args: list + keywords: list + attr: str = sayBye + ctx: Load + args: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = End issue 587 + kind: NoneType = None + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/re.js b/transcrypt/development/automated_tests/transcrypt/__target__39/re.js new file mode 100644 index 000000000..fc9545d6e --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/re.js @@ -0,0 +1,810 @@ +// Transcrypt'ed from Python, 2021-05-14 15:01:25 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +import {translate} from './re.translate.js'; +export {translate}; +var __all__ = dict ({get A () {return A;}, set A (value) {A = value;}, get ASCII () {return ASCII;}, set ASCII (value) {ASCII = value;}, get DEBUG () {return DEBUG;}, set DEBUG (value) {DEBUG = value;}, get DOTALL () {return DOTALL;}, set DOTALL (value) {DOTALL = value;}, get G () {return G;}, set G (value) {G = value;}, get GLOBAL () {return GLOBAL;}, set GLOBAL (value) {GLOBAL = value;}, get I () {return I;}, set I (value) {I = value;}, get IGNORECASE () {return IGNORECASE;}, set IGNORECASE (value) {IGNORECASE = value;}, get J () {return J;}, set J (value) {J = value;}, get JSSTRICT () {return JSSTRICT;}, set JSSTRICT (value) {JSSTRICT = value;}, get L () {return L;}, set L (value) {L = value;}, get LOCALE () {return LOCALE;}, set LOCALE (value) {LOCALE = value;}, get M () {return M;}, set M (value) {M = value;}, get MULTILINE () {return MULTILINE;}, set MULTILINE (value) {MULTILINE = value;}, get Match () {return Match;}, set Match (value) {Match = value;}, get PyRegExp () {return PyRegExp;}, set PyRegExp (value) {PyRegExp = value;}, get ReIndexError () {return ReIndexError;}, set ReIndexError (value) {ReIndexError = value;}, get Regex () {return Regex;}, set Regex (value) {Regex = value;}, get S () {return S;}, set S (value) {S = value;}, get STICKY () {return STICKY;}, set STICKY (value) {STICKY = value;}, get T () {return T;}, set T (value) {T = value;}, get TEMPLATE () {return TEMPLATE;}, set TEMPLATE (value) {TEMPLATE = value;}, get U () {return U;}, set U (value) {U = value;}, get UNICODE () {return UNICODE;}, set UNICODE (value) {UNICODE = value;}, get VERBOSE () {return VERBOSE;}, set VERBOSE (value) {VERBOSE = value;}, get X () {return X;}, set X (value) {X = value;}, get Y () {return Y;}, set Y (value) {Y = value;}, get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get compile () {return compile;}, set compile (value) {compile = value;}, get error () {return error;}, set error (value) {error = value;}, get escape () {return escape;}, set escape (value) {escape = value;}, get findall () {return findall;}, set findall (value) {findall = value;}, get finditer () {return finditer;}, set finditer (value) {finditer = value;}, get fullmatch () {return fullmatch;}, set fullmatch (value) {fullmatch = value;}, get match () {return match;}, set match (value) {match = value;}, get purge () {return purge;}, set purge (value) {purge = value;}, get search () {return search;}, set search (value) {search = value;}, get split () {return split;}, set split (value) {split = value;}, get sub () {return sub;}, set sub (value) {sub = value;}, get subn () {return subn;}, set subn (value) {subn = value;}}); +var __name__ = 're'; +export var T = 1 << 0; +export var TEMPLATE = T; +export var I = 1 << 1; +export var IGNORECASE = I; +export var L = 1 << 2; +export var LOCALE = L; +export var M = 1 << 3; +export var MULTILINE = M; +export var S = 1 << 4; +export var DOTALL = S; +export var U = 1 << 5; +export var UNICODE = U; +export var X = 1 << 6; +export var VERBOSE = X; +export var DEBUG = 1 << 7; +export var A = 1 << 8; +export var ASCII = A; +export var Y = 1 << 16; +export var STICKY = Y; +export var G = 1 << 17; +export var GLOBAL = G; +export var J = 1 << 19; +export var JSSTRICT = J; +export var error = __class__ ('error', [Exception], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self, msg, error, pattern, flags, pos) { + if (typeof pattern == 'undefined' || (pattern != null && pattern.hasOwnProperty ("__kwargtrans__"))) {; + var pattern = null; + }; + if (typeof flags == 'undefined' || (flags != null && flags.hasOwnProperty ("__kwargtrans__"))) {; + var flags = 0; + }; + if (typeof pos == 'undefined' || (pos != null && pos.hasOwnProperty ("__kwargtrans__"))) {; + var pos = null; + }; + Exception.__init__ (self, msg, __kwargtrans__ ({error: error})); + self.pattern = pattern; + self.flags = flags; + self.pos = pos; + });} +}); +export var ReIndexError = __class__ ('ReIndexError', [IndexError], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self) { + IndexError.__init__ (self, 'no such group'); + });} +}); +export var Match = __class__ ('Match', [object], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self, mObj, string, pos, endpos, rObj, namedGroups) { + if (typeof namedGroups == 'undefined' || (namedGroups != null && namedGroups.hasOwnProperty ("__kwargtrans__"))) {; + var namedGroups = null; + }; + for (var [index, match] of enumerate (mObj)) { + } + self._obj = mObj; + self._pos = pos; + self._endpos = endpos; + self._re = rObj; + self._string = string; + self._namedGroups = namedGroups; + self._lastindex = self._lastMatchGroup (); + if (self._namedGroups !== null) { + self._lastgroup = ; + } + else { + self._lastgroup = null; + } + });}, + get _getPos () {return __get__ (this, function (self) { + return self._pos; + });}, + get _setPos () {return __get__ (this, function (self, val) { + var __except0__ = AttributeError ('readonly attribute'); + __except0__.__cause__ = null; + throw __except0__; + });}, + get _getEndPos () {return __get__ (this, function (self) { + return self._endpos; + });}, + get _setEndPos () {return __get__ (this, function (self, val) { + var __except0__ = AttributeError ('readonly attribute'); + __except0__.__cause__ = null; + throw __except0__; + });}, + get _getRe () {return __get__ (this, function (self) { + return self._re; + });}, + get _setRe () {return __get__ (this, function (self, val) { + var __except0__ = AttributeError ('readonly attribute'); + __except0__.__cause__ = null; + throw __except0__; + });}, + get _getString () {return __get__ (this, function (self) { + return self._string; + });}, + get _setString () {return __get__ (this, function (self, val) { + var __except0__ = AttributeError ('readonly attribute'); + __except0__.__cause__ = null; + throw __except0__; + });}, + get _getLastGroup () {return __get__ (this, function (self) { + return self._lastgroup; + });}, + get _setLastGroup () {return __get__ (this, function (self, val) { + var __except0__ = AttributeError ('readonly attribute'); + __except0__.__cause__ = null; + throw __except0__; + });}, + get _getLastIndex () {return __get__ (this, function (self) { + return self._lastindex; + });}, + get _setLastIndex () {return __get__ (this, function (self, val) { + var __except0__ = AttributeError ('readonly attribute'); + __except0__.__cause__ = null; + throw __except0__; + });}, + get _lastMatchGroup () {return __get__ (this, function (self) { + if (len (self._obj) > 1) { + for (var i = len (self._obj) - 1; i > 0; i--) { + if ( !== null) { + return i; + } + } + return null; + } + else { + return null; + } + });}, + get expand () {return __get__ (this, function (self, template) { + var __except0__ = NotImplementedError (); + __except0__.__cause__ = null; + throw __except0__; + });}, + get group () {return __get__ (this, function (self) { + var args = tuple ([].slice.apply (arguments).slice (1)); + var ret = []; + if (len (args) > 0) { + for (var index of args) { + if (py_typeof (index) === str) { + if (self._namedGroups !== null) { + if (!__in__ (index, self._namedGroups.py_keys ())) { + var __except0__ = ReIndexError (); + __except0__.__cause__ = null; + throw __except0__; + } + ret.append (); + } + else { + var __except0__ = NotImplementedError ('No NamedGroups Available'); + __except0__.__cause__ = null; + throw __except0__; + } + } + else { + if (index >= len (self._obj)) { + var __except0__ = ReIndexError (); + __except0__.__cause__ = null; + throw __except0__; + } + ret.append (); + } + } + } + else { + ret.append (); + } + if (len (ret) == 1) { + return ; + } + else { + return tuple (ret); + } + });}, + get groups () {return __get__ (this, function (self, py_default) { + if (typeof py_default == 'undefined' || (py_default != null && py_default.hasOwnProperty ("__kwargtrans__"))) {; + var py_default = null; + }; + if (len (self._obj) > 1) { + var ret = self._obj.__getslice__ (1, null, 1); + return tuple ((function () { + var __accu0__ = []; + for (var x of ret) { + __accu0__.append ((x !== null ? x : py_default)); + } + return __accu0__; + }) ()); + } + else { + return tuple (); + } + });}, + get groupdict () {return __get__ (this, function (self, py_default) { + if (typeof py_default == 'undefined' || (py_default != null && py_default.hasOwnProperty ("__kwargtrans__"))) {; + var py_default = null; + }; + if (self._namedGroups !== null) { + var ret = dict ({}); + for (var [gName, gId] of self._namedGroups.py_items ()) { + var value = ; + } + return ret; + } + else { + var __except0__ = NotImplementedError ('No NamedGroups Available'); + __except0__.__cause__ = null; + throw __except0__; + } + });}, + get start () {return __get__ (this, function (self, group) { + if (typeof group == 'undefined' || (group != null && group.hasOwnProperty ("__kwargtrans__"))) {; + var group = 0; + }; + var gId = 0; + if (py_typeof (group) === str) { + if (self._namedGroups !== null) { + if (!__in__ (group, self._namedGroups.py_keys ())) { + var __except0__ = ReIndexError (); + __except0__.__cause__ = null; + throw __except0__; + } + var gId = ; + } + else { + var __except0__ = NotImplementedError ('No NamedGroups Available'); + __except0__.__cause__ = null; + throw __except0__; + } + } + else { + var gId = group; + } + if (gId >= len (self._obj)) { + var __except0__ = ReIndexError (); + __except0__.__cause__ = null; + throw __except0__; + } + if (gId == 0) { + return self._obj.index; + } + else if ( !== null) { + var r = compile (escape (), self._re.flags); + var m = r.search (); + if (m) { + return self._obj.index + m.start (); + } + else { + var __except0__ = Exception ('Failed to find capture group'); + __except0__.__cause__ = null; + throw __except0__; + } + } + else { + return -(1); + } + });}, + get end () {return __get__ (this, function (self, group) { + if (typeof group == 'undefined' || (group != null && group.hasOwnProperty ("__kwargtrans__"))) {; + var group = 0; + }; + var gId = 0; + if (py_typeof (group) === str) { + if (self._namedGroups !== null) { + if (!__in__ (group, self._namedGroups.py_keys ())) { + var __except0__ = ReIndexError (); + __except0__.__cause__ = null; + throw __except0__; + } + var gId = ; + } + else { + var __except0__ = NotImplementedError ('No NamedGroups Available'); + __except0__.__cause__ = null; + throw __except0__; + } + } + else { + var gId = group; + } + if (gId >= len (self._obj)) { + var __except0__ = ReIndexError (); + __except0__.__cause__ = null; + throw __except0__; + } + if (gId == 0) { + return self._obj.index + len (); + } + else if ( !== null) { + var r = compile (escape (), self._re.flags); + var m = r.search (); + if (m) { + return self._obj.index + m.end (); + } + else { + var __except0__ = Exception ('Failed to find capture group'); + __except0__.__cause__ = null; + throw __except0__; + } + } + else { + return -(1); + } + });}, + get span () {return __get__ (this, function (self, group) { + if (typeof group == 'undefined' || (group != null && group.hasOwnProperty ("__kwargtrans__"))) {; + var group = 0; + }; + return tuple ([self.start (group), self.end (group)]); + });} +}); +Object.defineProperty (Match, 'pos', property.call (Match, Match._getPos, Match._setPos)); +Object.defineProperty (Match, 'endpos', property.call (Match, Match._getEndPos, Match._setEndPos)); +Object.defineProperty (Match, 're', property.call (Match, Match._getRe, Match._setRe)); +Object.defineProperty (Match, 'string', property.call (Match, Match._getString, Match._setString)); +Object.defineProperty (Match, 'lastgroup', property.call (Match, Match._getLastGroup, Match._setLastGroup)); +Object.defineProperty (Match, 'lastindex', property.call (Match, Match._getLastIndex, Match._setLastIndex)); +export var Regex = __class__ ('Regex', [object], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self, pattern, flags) { + if (!((flags & ASCII) > 0)) { + flags |= UNICODE; + } + self._flags = flags; + var __left0__ = self._compileWrapper (pattern, flags); + self._jsFlags = __left0__ [0]; + self._obj = __left0__ [1]; + self._jspattern = pattern; + self._pypattern = pattern; + var __left0__ = self._compileWrapper (pattern + '|', flags); + var _ = __left0__ [0]; + var groupCounterRegex = __left0__ [1]; + self._groups = groupCounterRegex.exec ('').length - 1; + self._groupindex = null; + });}, + get _getPattern () {return __get__ (this, function (self) { + var ret = self._pypattern.py_replace ('\\', '\\\\'); + return ret; + });}, + get _setPattern () {return __get__ (this, function (self, val) { + var __except0__ = AttributeError ('readonly attribute'); + __except0__.__cause__ = null; + throw __except0__; + });}, + get _getFlags () {return __get__ (this, function (self) { + return self._flags; + });}, + get _setFlags () {return __get__ (this, function (self, val) { + var __except0__ = AttributeError ('readonly attribute'); + __except0__.__cause__ = null; + throw __except0__; + });}, + get _getGroups () {return __get__ (this, function (self) { + return self._groups; + });}, + get _setGroups () {return __get__ (this, function (self, val) { + var __except0__ = AttributeError ('readonly attribute'); + __except0__.__cause__ = null; + throw __except0__; + });}, + get _getGroupIndex () {return __get__ (this, function (self) { + if (self._groupindex === null) { + return dict ({}); + } + else { + return self._groupindex; + } + });}, + get _setGroupIndex () {return __get__ (this, function (self, val) { + var __except0__ = AttributeError ('readonly attribute'); + __except0__.__cause__ = null; + throw __except0__; + });}, + get _compileWrapper () {return __get__ (this, function (self, pattern, flags) { + if (typeof flags == 'undefined' || (flags != null && flags.hasOwnProperty ("__kwargtrans__"))) {; + var flags = 0; + }; + var jsFlags = self._convertFlags (flags); + var rObj = null; + var errObj = null; + + try { + rObj = new RegExp(pattern, jsFlags) + } catch( err ) { + errObj = err + } + + if (errObj !== null) { + var __except0__ = error (errObj.message, errObj, pattern, flags); + __except0__.__cause__ = null; + throw __except0__; + } + return tuple ([jsFlags, rObj]); + });}, + get _convertFlags () {return __get__ (this, function (self, flags) { + var bitmaps = [tuple ([DEBUG, '']), tuple ([IGNORECASE, 'i']), tuple ([MULTILINE, 'm']), tuple ([STICKY, 'y']), tuple ([GLOBAL, 'g']), tuple ([UNICODE, 'u'])]; + var ret = ''.join ((function () { + var __accu0__ = []; + for (var x of bitmaps) { + if (( & flags) > 0) { + __accu0__.append (); + } + } + return __accu0__; + }) ()); + return ret; + });}, + get _getTargetStr () {return __get__ (this, function (self, string, pos, endpos) { + var endPtr = len (string); + if (endpos !== null) { + if (endpos < endPtr) { + var endPtr = endpos; + } + } + if (endPtr < 0) { + var endPtr = 0; + } + var ret = string.__getslice__ (pos, endPtr, 1); + return ret; + });}, + get _patternHasCaptures () {return __get__ (this, function (self) { + return self._groups > 0; + });}, + get search () {return __get__ (this, function (self, string, pos, endpos) { + if (typeof pos == 'undefined' || (pos != null && pos.hasOwnProperty ("__kwargtrans__"))) {; + var pos = 0; + }; + if (typeof endpos == 'undefined' || (endpos != null && endpos.hasOwnProperty ("__kwargtrans__"))) {; + var endpos = null; + }; + if (endpos === null) { + var endpos = len (string); + } + var rObj = self._obj; + var m = rObj.exec (string); + if (m) { + if (m.index < pos || m.index > endpos) { + return null; + } + else { + return Match (m, string, pos, endpos, self, self._groupindex); + } + } + else { + return null; + } + });}, + get match () {return __get__ (this, function (self, string, pos, endpos) { + if (typeof pos == 'undefined' || (pos != null && pos.hasOwnProperty ("__kwargtrans__"))) {; + var pos = 0; + }; + if (typeof endpos == 'undefined' || (endpos != null && endpos.hasOwnProperty ("__kwargtrans__"))) {; + var endpos = null; + }; + var target = string; + if (endpos !== null) { + var target = target.__getslice__ (0, endpos, 1); + } + else { + var endpos = len (string); + } + var rObj = self._obj; + var m = rObj.exec (target); + if (m) { + if (m.index == pos) { + return Match (m, string, pos, endpos, self, self._groupindex); + } + else { + return null; + } + } + else { + return null; + } + });}, + get fullmatch () {return __get__ (this, function (self, string, pos, endpos) { + if (typeof pos == 'undefined' || (pos != null && pos.hasOwnProperty ("__kwargtrans__"))) {; + var pos = 0; + }; + if (typeof endpos == 'undefined' || (endpos != null && endpos.hasOwnProperty ("__kwargtrans__"))) {; + var endpos = null; + }; + var target = string; + var strEndPos = len (string); + if (endpos !== null) { + var target = target.__getslice__ (0, endpos, 1); + var strEndPos = endpos; + } + var rObj = self._obj; + var m = rObj.exec (target); + if (m) { + var obsEndPos = m.index + len (); + if (m.index == pos && obsEndPos == strEndPos) { + return Match (m, string, pos, strEndPos, self, self._groupindex); + } + else { + return null; + } + } + else { + return null; + } + });}, + get py_split () {return __get__ (this, function (self, string, maxsplit) { + if (typeof maxsplit == 'undefined' || (maxsplit != null && maxsplit.hasOwnProperty ("__kwargtrans__"))) {; + var maxsplit = 0; + }; + if (maxsplit < 0) { + return [string]; + } + var mObj = null; + var rObj = self._obj; + if (maxsplit == 0) { + var mObj = string.py_split (rObj); + return mObj; + } + else { + var flags = self._flags; + flags |= GLOBAL; + var __left0__ = self._compileWrapper (self._jspattern, flags); + var _ = __left0__ [0]; + var rObj = __left0__ [1]; + var ret = []; + var lastM = null; + var cnt = 0; + for (var i = 0; i < maxsplit; i++) { + var m = rObj.exec (string); + if (m) { + cnt++; + if (lastM !== null) { + var start = lastM.index + len (); + var head = string.__getslice__ (start, m.index, 1); + ret.append (head); + if (len (m) > 1) { + ret.extend (m.__getslice__ (1, null, 1)); + } + } + else { + var head = string.__getslice__ (0, m.index, 1); + ret.append (head); + if (len (m) > 1) { + ret.extend (m.__getslice__ (1, null, 1)); + } + } + var lastM = m; + } + else { + break; + } + } + if (lastM !== null) { + var endPos = lastM.index + len (); + var end = string.__getslice__ (endPos, null, 1); + ret.append (end); + } + return ret; + } + });}, + get _findAllMatches () {return __get__ (this, function (self, string, pos, endpos) { + if (typeof pos == 'undefined' || (pos != null && pos.hasOwnProperty ("__kwargtrans__"))) {; + var pos = 0; + }; + if (typeof endpos == 'undefined' || (endpos != null && endpos.hasOwnProperty ("__kwargtrans__"))) {; + var endpos = null; + }; + var target = self._getTargetStr (string, pos, endpos); + var flags = self._flags; + flags |= GLOBAL; + var __left0__ = self._compileWrapper (self._jspattern, flags); + var _ = __left0__ [0]; + var rObj = __left0__ [1]; + var ret = []; + while (true) { + var m = rObj.exec (target); + if (m) { + ret.append (m); + } + else { + break; + } + } + return ret; + });}, + get findall () {return __get__ (this, function (self, string, pos, endpos) { + if (typeof pos == 'undefined' || (pos != null && pos.hasOwnProperty ("__kwargtrans__"))) {; + var pos = 0; + }; + if (typeof endpos == 'undefined' || (endpos != null && endpos.hasOwnProperty ("__kwargtrans__"))) {; + var endpos = null; + }; + var mlist = self._findAllMatches (string, pos, endpos); + var mSelect = function (m) { + if (len (m) > 2) { + return tuple (m.__getslice__ (1, null, 1)); + } + else if (len (m) == 2) { + return ; + } + else { + return ; + } + }; + var ret = map (mSelect, mlist); + return ret; + });}, + get finditer () {return __get__ (this, function (self, string, pos, endpos) { + if (typeof endpos == 'undefined' || (endpos != null && endpos.hasOwnProperty ("__kwargtrans__"))) {; + var endpos = null; + }; + var mlist = self._findAllMatches (string, pos, endpos); + var ret = map ((function __lambda__ (m) { + return Match (m, string, 0, len (string), self, self._groupindex); + }), mlist); + return py_iter (ret); + });}, + get sub () {return __get__ (this, function (self, repl, string, count) { + if (typeof count == 'undefined' || (count != null && count.hasOwnProperty ("__kwargtrans__"))) {; + var count = 0; + }; + var __left0__ = self.subn (repl, string, count); + var ret = __left0__ [0]; + var _ = __left0__ [1]; + return ret; + });}, + get subn () {return __get__ (this, function (self, repl, string, count) { + if (typeof count == 'undefined' || (count != null && count.hasOwnProperty ("__kwargtrans__"))) {; + var count = 0; + }; + var flags = self._flags; + flags |= GLOBAL; + var __left0__ = self._compileWrapper (self._jspattern, flags); + var _ = __left0__ [0]; + var rObj = __left0__ [1]; + var ret = ''; + var totalMatch = 0; + var lastEnd = -(1); + while (true) { + if (count > 0) { + if (totalMatch >= count) { + if (lastEnd < 0) { + return tuple ([ret, totalMatch]); + } + else { + ret += string.__getslice__ (lastEnd, m.index, 1); + return tuple ([ret, totalMatch]); + } + } + } + var m = rObj.exec (string); + if (m) { + if (lastEnd < 0) { + ret += string.__getslice__ (0, m.index, 1); + } + else { + ret += string.__getslice__ (lastEnd, m.index, 1); + } + if (callable (repl)) { + var content = repl (Match (m, string, 0, len (string), self, self._groupindex)); + ret += content; + } + else { + ret += repl; + } + totalMatch++; + var lastEnd = m.index + len (); + } + else if (lastEnd < 0) { + return tuple ([string, 0]); + } + else { + ret += string.__getslice__ (lastEnd, null, 1); + return tuple ([ret, totalMatch]); + } + } + });} +}); +Object.defineProperty (Regex, 'pattern', property.call (Regex, Regex._getPattern, Regex._setPattern)); +Object.defineProperty (Regex, 'flags', property.call (Regex, Regex._getFlags, Regex._setFlags)); +Object.defineProperty (Regex, 'groups', property.call (Regex, Regex._getGroups, Regex._setGroups)); +Object.defineProperty (Regex, 'groupindex', property.call (Regex, Regex._getGroupIndex, Regex._setGroupIndex)); +export var PyRegExp = __class__ ('PyRegExp', [Regex], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self, pyPattern, flags) { + var __left0__ = translate (pyPattern); + var jsTokens = __left0__ [0]; + var inlineFlags = __left0__ [1]; + var namedGroups = __left0__ [2]; + var nCapGroups = __left0__ [3]; + var n_splits = __left0__ [4]; + flags |= inlineFlags; + var jsPattern = ''.join (jsTokens); + Regex.__init__ (self, jsPattern, flags); + self._pypattern = pyPattern; + self._nsplits = n_splits; + self._jsTokens = jsTokens; + self._capgroups = nCapGroups; + self._groupindex = namedGroups; + });} +}); +export var compile = function (pattern, flags) { + if (typeof flags == 'undefined' || (flags != null && flags.hasOwnProperty ("__kwargtrans__"))) {; + var flags = 0; + }; + if (flags & JSSTRICT) { + var p = Regex (pattern, flags); + } + else { + var p = PyRegExp (pattern, flags); + } + return p; +}; +export var search = function (pattern, string, flags) { + if (typeof flags == 'undefined' || (flags != null && flags.hasOwnProperty ("__kwargtrans__"))) {; + var flags = 0; + }; + var p = compile (pattern, flags); + return p.search (string); +}; +export var match = function (pattern, string, flags) { + if (typeof flags == 'undefined' || (flags != null && flags.hasOwnProperty ("__kwargtrans__"))) {; + var flags = 0; + }; + var p = compile (pattern, flags); + return p.match (string); +}; +export var fullmatch = function (pattern, string, flags) { + if (typeof flags == 'undefined' || (flags != null && flags.hasOwnProperty ("__kwargtrans__"))) {; + var flags = 0; + }; + var p = compile (pattern, flags); + return p.fullmatch (string); +}; +export var py_split = function (pattern, string, maxsplit, flags) { + if (typeof maxsplit == 'undefined' || (maxsplit != null && maxsplit.hasOwnProperty ("__kwargtrans__"))) {; + var maxsplit = 0; + }; + if (typeof flags == 'undefined' || (flags != null && flags.hasOwnProperty ("__kwargtrans__"))) {; + var flags = 0; + }; + var p = compile (pattern, flags); + return p.py_split (string, maxsplit); +}; +export var findall = function (pattern, string, flags) { + if (typeof flags == 'undefined' || (flags != null && flags.hasOwnProperty ("__kwargtrans__"))) {; + var flags = 0; + }; + var p = compile (pattern, flags); + return p.findall (string); +}; +export var finditer = function (pattern, string, flags) { + if (typeof flags == 'undefined' || (flags != null && flags.hasOwnProperty ("__kwargtrans__"))) {; + var flags = 0; + }; + var p = compile (pattern, flags); + return p.finditer (string); +}; +export var sub = function (pattern, repl, string, count, flags) { + if (typeof count == 'undefined' || (count != null && count.hasOwnProperty ("__kwargtrans__"))) {; + var count = 0; + }; + if (typeof flags == 'undefined' || (flags != null && flags.hasOwnProperty ("__kwargtrans__"))) {; + var flags = 0; + }; + var p = compile (pattern, flags); + return p.sub (repl, string, count); +}; +export var subn = function (pattern, repl, string, count, flags) { + if (typeof count == 'undefined' || (count != null && count.hasOwnProperty ("__kwargtrans__"))) {; + var count = 0; + }; + if (typeof flags == 'undefined' || (flags != null && flags.hasOwnProperty ("__kwargtrans__"))) {; + var flags = 0; + }; + var p = compile (pattern, flags); + return p.subn (repl, string, count); +}; +export var escape = function (string) { + var ret = null; + var replfunc = function (m) { + if ( == '\\') { + return '\\\\\\\\'; + } + else { + return '\\\\' + ; + } + }; + + var r = /[^A-Za-z:;\d]/g; + ret = string.replace(r, replfunc); + + if (ret !== null) { + return ret; + } + else { + var __except0__ = Exception ('Failed to escape the passed string'); + __except0__.__cause__ = null; + throw __except0__; + } +}; +export var purge = function () { + // pass; +}; + +//# sourceMappingURL=re.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/re.translate.js b/transcrypt/development/automated_tests/transcrypt/__target__39/re.translate.js new file mode 100644 index 000000000..4928be478 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/re.translate.js @@ -0,0 +1,359 @@ +// Transcrypt'ed from Python, 2021-05-14 15:01:26 +var re = {}; +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +import * as __module_re__ from './re.js'; +__nest__ (re, '', __module_re__); +var __all__ = dict ({get Group () {return Group;}, set Group (value) {Group = value;}, get MAX_SHIFTREDUCE_LOOPS () {return MAX_SHIFTREDUCE_LOOPS;}, set MAX_SHIFTREDUCE_LOOPS (value) {MAX_SHIFTREDUCE_LOOPS = value;}, get Token () {return Token;}, set Token (value) {Token = value;}, get VERBOSE () {return VERBOSE;}, set VERBOSE (value) {VERBOSE = value;}, get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get countCaptureGroups () {return countCaptureGroups;}, set countCaptureGroups (value) {countCaptureGroups = value;}, get generateGroupSpans () {return generateGroupSpans;}, set generateGroupSpans (value) {generateGroupSpans = value;}, get getCaptureGroup () {return getCaptureGroup;}, set getCaptureGroup (value) {getCaptureGroup = value;}, get shift () {return shift;}, set shift (value) {shift = value;}, get shiftReduce () {return shiftReduce;}, set shiftReduce (value) {shiftReduce = value;}, get splitIfElse () {return splitIfElse;}, set splitIfElse (value) {splitIfElse = value;}, get stringFlags () {return stringFlags;}, set stringFlags (value) {stringFlags = value;}, get translate () {return translate;}, set translate (value) {translate = value;}}); +var __name__ = 're.translate'; +export var VERBOSE = false; +export var MAX_SHIFTREDUCE_LOOPS = 1000; +export var stringFlags = 'aiLmsux'; +export var Group = __class__ ('Group', [object], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self, start, end, klass) { + self.start = start; + self.end = end; + self.klass = klass; + });}, + get __repr__ () {return __get__ (this, function (self) { + return str (tuple ([self.start, self.end, self.klass])); + });} +}); +export var generateGroupSpans = function (tokens) { + var groupInfo = []; + var idx = 0; + for (var token of tokens) { + if (__t__ (token.py_name.startswith ('('))) { + groupInfo.append (Group (idx, null, token.py_name)); + } + else if (__t__ (token.py_name == ')')) { + for (var group of py_reversed (groupInfo)) { + if (__t__ (group.end === null)) { + group.end = idx; + } + } + } + idx++; + } + return groupInfo; +}; +export var countCaptureGroups = function (tokens) { + var groupInfo = generateGroupSpans (tokens); + var count = 0; + for (var token of tokens) { + if (__t__ (token.py_name == '(')) { + count++; + } + } + return count; +}; +export var getCaptureGroup = function (groupInfo, namedGroups, groupRef) { + try { + var id = int (groupRef); + } + catch (__except0__) { + var id = ; + } + var search = 0; + for (var group of groupInfo) { + if (__t__ (group.klass == '(')) { + search++; + if (__t__ (search == id)) { + return group; + } + } + } +}; +export var splitIfElse = function (tokens, namedGroups) { + var variants = []; + var groupInfo = generateGroupSpans (tokens); + for (var group of groupInfo) { + if (__t__ (group.klass == '(?<')) { + var iff = tokens.__getslice__ (0, null, 1); + var els = tokens.__getslice__ (0, null, 1); + var conStart = group.start; + var conEnd = group.end; + var ref = .py_name; + var captureGroup = getCaptureGroup (groupInfo, namedGroups, ref); + var captureGroupModifier = ; + if (__t__ (__t__ (__in__ (captureGroupModifier.py_name, ['?', '*'])) || captureGroupModifier.py_name.startswith ('{0,'))) { + if (__t__ (captureGroupModifier.py_name == '?')) { + } + else if (__t__ (captureGroupModifier.py_name == '*')) { + } + else if (__t__ (captureGroupModifier.py_name.startswith ('{0,'))) { + .py_name.__setslice__ (0, 3, null, '{1,'); + } + var hasElse = false; + for (var idx = conStart; idx < conEnd; idx++) { + if (__t__ (.py_name == '|')) { + var hasElse = true; + els.py_pop (conEnd); + iff.__setslice__ (idx, conEnd + 1, null, []); + els.__setslice__ (conStart, idx + 1, null, []); + break; + } + } + if (__t__ (!__t__ ((hasElse)))) { + els.__setslice__ (conStart, conEnd + 1, null, []); + iff.py_pop (conEnd); + } + iff.__setslice__ (conStart, conStart + 3, null, []); + els.__setslice__ (captureGroup.start, captureGroup.end + 1, null, [Token ('('), Token (')')]); + iff.remove (null); + els.remove (null); + variants.append (iff); + variants.append (els); + } + else { + var pastIff = false; + for (var idx = conStart; idx < conEnd; idx++) { + if (__t__ (.py_name == '|')) { + var iff = tokens.__getslice__ (0, idx, 1); + iff.extend (tokens.__getslice__ (conEnd + 1, null, 1)); + break; + } + } + iff.__setslice__ (conStart, conStart + 3, null, []); + variants.append (iff); + } + break; + } + } + if (__t__ (!__t__ ((variants)))) { + return [tokens]; + } + var allVariants = []; + for (var variant of variants) { + allVariants.extend (splitIfElse (variant, namedGroups)); + } + return allVariants; +}; +export var Token = __class__ ('Token', [object], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self, py_name, paras, pure) { + if (typeof paras == 'undefined' || (paras != null && paras.hasOwnProperty ("__kwargtrans__"))) {; + var paras = null; + }; + if (typeof pure == 'undefined' || (pure != null && pure.hasOwnProperty ("__kwargtrans__"))) {; + var pure = false; + }; + if (__t__ (paras === null)) { + var paras = []; + } + self.py_name = py_name; + self.paras = paras; + self.pure = pure; + self.isModeGroup = false; + });}, + get __repr__ () {return __get__ (this, function (self) { + return self.py_name; + });}, + get resolve () {return __get__ (this, function (self) { + var paras = ''; + for (var para of self.paras) { + paras += str (para); + } + return self.py_name + paras; + });} +}); +export var shift = function (stack, queue) { + var done = !__t__ ((bool (queue))); + if (__t__ (!__t__ ((done)))) { + stack.append (Token (, [], true)); + var queue = queue.__getslice__ (1, null, 1); + } + return tuple ([stack, queue, done]); +}; +export var shiftReduce = function (stack, queue, namedGroups, flags) { + var done = false; + var high = len (stack) - 1; + if (__t__ (len (stack) < 2)) { + var __left0__ = shift (stack, queue); + var stack = __left0__ [0]; + var queue = __left0__ [1]; + var done = __left0__ [2]; + return tuple ([stack, queue, flags, done]); + } + var s0 = (__t__ (len (stack) > 0) ? : Token ('')); + var s1 = (__t__ (len (stack) > 1) ? : Token ('')); + if (__t__ (VERBOSE)) { + for (var token of stack) { + console.log (token.resolve (), '\t', __kwargtrans__ ({end: ''})); + } + console.log (''); + } + if (__t__ (s1.py_name == '\\')) { + if (__t__ (s0.py_name == 'A')) { + stack.__setslice__ (-__t__ ((2)), null, null, [Token ('^')]); + } + else if (__t__ (s0.py_name == 'a')) { + stack.__setslice__ (-__t__ ((2)), null, null, [Token ('\\07')]); + } + else if (__t__ (s0.py_name == 'Z')) { + stack.__setslice__ (-__t__ ((2)), null, null, [Token ('$')]); + } + else { + stack.__setslice__ (-__t__ ((2)), null, null, [Token ('\\' + s0.py_name)]); + } + } + else if (__t__ (__t__ (s0.py_name == '$') && s0.pure)) { + stack.py_pop (); + stack.extend ([Token ('(?='), Token ('\\n'), Token ('?'), Token ('$'), Token (')')]); + } + else if (__t__ (s1.py_name == '{')) { + if (__t__ (__t__ (s0.py_name == ',') && len (s1.paras) == 0)) { + s1.paras.append ('0'); + s1.paras.append (','); + } + else if (__t__ (s0.py_name == '}')) { + s1.paras.append ('}'); + s1.py_name = s1.resolve (); + s1.paras = []; + } + else { + s1.paras.append (s0.py_name); + } + var stack = stack.__getslice__ (0, -__t__ ((1)), 1); + } + else if (__t__ (__t__ (s1.py_name == '[') && s0.py_name == '^')) { + stack.__setslice__ (-__t__ ((2)), null, null, [Token ('[^')]); + } + else if (__t__ (__t__ (s1.py_name == '(') && s0.py_name == '?')) { + stack.__setslice__ (-__t__ ((2)), null, null, [Token ('(?')]); + } + else if (__t__ (__t__ (__in__ (s1.py_name, ['*', '+', '?'])) && s0.py_name == '?')) { + stack.__setslice__ (-__t__ ((2)), null, null, [Token (s1.py_name + '?')]); + } + else if (__t__ (__t__ (s1.isModeGroup) && s0.py_name == ')')) { + var stack = stack.__getslice__ (0, -__t__ ((2)), 1); + } + else if (__t__ (s1.py_name == '(?')) { + if (__t__ (__in__ (s0.py_name, stringFlags))) { + if (__t__ (s0.py_name == 'i')) { + flags |= re.IGNORECASE; + } + else if (__t__ (s0.py_name == 'L')) { + flags |= re.LOCALE; + } + else if (__t__ (s0.py_name == 'm')) { + flags |= re.MULTILINE; + } + else if (__t__ (s0.py_name == 's')) { + flags |= re.DOTALL; + } + else if (__t__ (s0.py_name == 'u')) { + flags |= re.UNICODE; + } + else if (__t__ (s0.py_name == 'x')) { + flags |= re.VERBOSE; + } + else if (__t__ (s0.py_name == 'a')) { + flags |= re.ASCII; + } + stack.py_pop (); + s1.isModeGroup = true; + } + else { + if (__t__ (s0.py_name == '(')) { + s0.py_name = '<'; + } + var newToken = Token ('(?' + s0.py_name); + stack.__setslice__ (-__t__ ((2)), null, null, [newToken]); + } + } + else if (__t__ (s1.py_name == '(?<')) { + if (__t__ (s0.py_name == ')')) { + stack.__setslice__ (-__t__ ((1)), null, null, [Token (''.join (s1.paras)), Token ('>')]); + s1.paras = []; + } + else { + s1.paras.append (s0.py_name); + stack.py_pop (); + } + } + else if (__t__ (s1.py_name == '(?P')) { + stack.__setslice__ (-__t__ ((2)), null, null, [Token ('(?P' + s0.py_name)]); + } + else if (__t__ (s1.py_name == '(?P<')) { + if (__t__ (s0.py_name == '>')) { + stack.__setslice__ (-__t__ ((2)), null, null, [Token ('(')]); + } + else { + s1.paras.append (s0.py_name); + stack.py_pop (); + } + } + else if (__t__ (s1.py_name == '(?P=')) { + if (__t__ (s0.py_name == ')')) { + stack.__setslice__ (-__t__ ((2)), null, null, [Token ('\\' + str ())]); + } + else if (__t__ (!__t__ ((s1.paras)))) { + s1.paras.append (s0.py_name); + stack.py_pop (); + } + else { + stack.py_pop (); + } + } + else if (__t__ (s1.py_name == '(?#')) { + if (__t__ (s0.py_name == ')')) { + var stack = stack.__getslice__ (0, -__t__ ((2)), 1); + } + else { + var stack = stack.__getslice__ (0, -__t__ ((1)), 1); + } + } + else { + var __left0__ = shift (stack, queue); + var stack = __left0__ [0]; + var queue = __left0__ [1]; + var done = __left0__ [2]; + } + return tuple ([stack, queue, flags, done]); +}; +export var translate = function (rgx) { + var stack = []; + var queue = list (rgx); + var flags = 0; + var namedGroups = dict (); + var nloop = 0; + while (__t__ (true)) { + nloop++; + if (__t__ (nloop > MAX_SHIFTREDUCE_LOOPS)) { + var __except0__ = Exception ('Too many iterations in converting regex from Python to JavaScript'); + __except0__.__cause__ = null; + throw __except0__; + } + var __left0__ = shiftReduce (stack, queue, namedGroups, flags); + var stack = __left0__ [0]; + var queue = __left0__ [1]; + var flags = __left0__ [2]; + var done = __left0__ [3]; + if (__t__ (done)) { + break; + } + } + var variants = splitIfElse (stack, namedGroups); + var n_splits = len (variants); + var final = []; + for (var i = 0; i < len (variants); i++) { + final.extend (); + if (__t__ (i < len (variants) - 1)) { + final.append (Token ('|')); + } + } + var stack = final; + var groupInfo = generateGroupSpans (stack); + var resolvedTokens = []; + for (var token of stack) { + var stringed = token.resolve (); + if (__t__ (__t__ (flags & re.DOTALL) && stringed == '.')) { + var stringed = '[\\s\\S]'; + } + resolvedTokens.append (stringed); + } + return tuple ([resolvedTokens, flags, namedGroups, countCaptureGroups (stack), n_splits]); +}; + +//# sourceMappingURL=re.translate.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/re.translate.tree b/transcrypt/development/automated_tests/transcrypt/__target__39/re.translate.tree new file mode 100644 index 000000000..95b8e2de2 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/re.translate.tree @@ -0,0 +1,3970 @@ +file: Module + body: list + element: Import + names: list + element: alias + name: str = re + asname: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = tconv + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = VERBOSE + ctx: Store + value: Constant + value: bool = False + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = MAX_SHIFTREDUCE_LOOPS + ctx: Store + value: Constant + value: int = 1000 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = stringFlags + ctx: Store + value: Constant + value: str = aiLmsux + kind: NoneType = None + type_comment: NoneType = None + element: ClassDef + name: str = Group + bases: list + keywords: list + body: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = start + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = end + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = klass + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = start + ctx: Store + value: Name + id: str = start + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = end + ctx: Store + value: Name + id: str = end + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = klass + ctx: Store + value: Name + id: str = klass + ctx: Load + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __repr__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Call + func: Name + id: str = str + ctx: Load + args: list + element: Tuple + elts: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = start + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = end + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = klass + ctx: Load + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: FunctionDef + name: str = generateGroupSpans + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = tokens + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Name + id: str = groupInfo + ctx: Store + value: List + elts: list + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = idx + ctx: Store + value: Constant + value: int = 0 + kind: NoneType = None + type_comment: NoneType = None + element: For + target: Name + id: str = token + ctx: Store + iter: Name + id: str = tokens + ctx: Load + body: list + element: If + test: Call + func: Attribute + value: Attribute + value: Name + id: str = token + ctx: Load + attr: str = name + ctx: Load + attr: str = startswith + ctx: Load + args: list + element: Constant + value: str = ( + kind: NoneType = None + keywords: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = groupInfo + ctx: Load + attr: str = append + ctx: Load + args: list + element: Call + func: Name + id: str = Group + ctx: Load + args: list + element: Name + id: str = idx + ctx: Load + element: Constant + value: NoneType = None + kind: NoneType = None + element: Attribute + value: Name + id: str = token + ctx: Load + attr: str = name + ctx: Load + keywords: list + keywords: list + orelse: list + element: If + test: Compare + left: Attribute + value: Name + id: str = token + ctx: Load + attr: str = name + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = ) + kind: NoneType = None + body: list + element: For + target: Name + id: str = group + ctx: Store + iter: Call + func: Name + id: str = reversed + ctx: Load + args: list + element: Name + id: str = groupInfo + ctx: Load + keywords: list + body: list + element: If + test: Compare + left: Attribute + value: Name + id: str = group + ctx: Load + attr: str = end + ctx: Load + ops: list + element: Is + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = group + ctx: Load + attr: str = end + ctx: Store + value: Name + id: str = idx + ctx: Load + type_comment: NoneType = None + orelse: list + orelse: list + type_comment: NoneType = None + orelse: list + element: AugAssign + target: Name + id: str = idx + ctx: Store + op: Add + value: Constant + value: int = 1 + kind: NoneType = None + orelse: list + type_comment: NoneType = None + element: Return + value: Name + id: str = groupInfo + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = countCaptureGroups + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = tokens + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Name + id: str = groupInfo + ctx: Store + value: Call + func: Name + id: str = generateGroupSpans + ctx: Load + args: list + element: Name + id: str = tokens + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = count + ctx: Store + value: Constant + value: int = 0 + kind: NoneType = None + type_comment: NoneType = None + element: For + target: Name + id: str = token + ctx: Store + iter: Name + id: str = tokens + ctx: Load + body: list + element: If + test: Compare + left: Attribute + value: Name + id: str = token + ctx: Load + attr: str = name + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = ( + kind: NoneType = None + body: list + element: AugAssign + target: Name + id: str = count + ctx: Store + op: Add + value: Constant + value: int = 1 + kind: NoneType = None + orelse: list + orelse: list + type_comment: NoneType = None + element: Return + value: Name + id: str = count + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = getCaptureGroup + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = groupInfo + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = namedGroups + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = groupRef + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Try + body: list + element: Assign + targets: list + element: Name + id: str = id + ctx: Store + value: Call + func: Name + id: str = int + ctx: Load + args: list + element: Name + id: str = groupRef + ctx: Load + keywords: list + type_comment: NoneType = None + handlers: list + element: ExceptHandler + type: NoneType = None + name: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = id + ctx: Store + value: Subscript + value: Name + id: str = namedGroups + ctx: Load + slice: Name + id: str = groupRef + ctx: Load + ctx: Load + type_comment: NoneType = None + orelse: list + finalbody: list + element: Assign + targets: list + element: Name + id: str = search + ctx: Store + value: Constant + value: int = 0 + kind: NoneType = None + type_comment: NoneType = None + element: For + target: Name + id: str = group + ctx: Store + iter: Name + id: str = groupInfo + ctx: Load + body: list + element: If + test: Compare + left: Attribute + value: Name + id: str = group + ctx: Load + attr: str = klass + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = ( + kind: NoneType = None + body: list + element: AugAssign + target: Name + id: str = search + ctx: Store + op: Add + value: Constant + value: int = 1 + kind: NoneType = None + element: If + test: Compare + left: Name + id: str = search + ctx: Load + ops: list + element: Eq + comparators: list + element: Name + id: str = id + ctx: Load + body: list + element: Return + value: Name + id: str = group + ctx: Load + orelse: list + orelse: list + orelse: list + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = splitIfElse + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = tokens + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = namedGroups + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Name + id: str = variants + ctx: Store + value: List + elts: list + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = groupInfo + ctx: Store + value: Call + func: Name + id: str = generateGroupSpans + ctx: Load + args: list + element: Name + id: str = tokens + ctx: Load + keywords: list + type_comment: NoneType = None + element: For + target: Name + id: str = group + ctx: Store + iter: Name + id: str = groupInfo + ctx: Load + body: list + element: If + test: Compare + left: Attribute + value: Name + id: str = group + ctx: Load + attr: str = klass + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = (?< + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = iff + ctx: Store + value: Subscript + value: Name + id: str = tokens + ctx: Load + slice: Slice + lower: NoneType = None + upper: NoneType = None + step: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = els + ctx: Store + value: Subscript + value: Name + id: str = tokens + ctx: Load + slice: Slice + lower: NoneType = None + upper: NoneType = None + step: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = conStart + ctx: Store + value: Attribute + value: Name + id: str = group + ctx: Load + attr: str = start + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = conEnd + ctx: Store + value: Attribute + value: Name + id: str = group + ctx: Load + attr: str = end + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = ref + ctx: Store + value: Attribute + value: Subscript + value: Name + id: str = tokens + ctx: Load + slice: BinOp + left: Name + id: str = conStart + ctx: Load + op: Add + right: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + attr: str = name + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = captureGroup + ctx: Store + value: Call + func: Name + id: str = getCaptureGroup + ctx: Load + args: list + element: Name + id: str = groupInfo + ctx: Load + element: Name + id: str = namedGroups + ctx: Load + element: Name + id: str = ref + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = captureGroupModifier + ctx: Store + value: Subscript + value: Name + id: str = tokens + ctx: Load + slice: BinOp + left: Attribute + value: Name + id: str = captureGroup + ctx: Load + attr: str = end + ctx: Load + op: Add + right: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: If + test: BoolOp + op: Or + values: list + element: Compare + left: Attribute + value: Name + id: str = captureGroupModifier + ctx: Load + attr: str = name + ctx: Load + ops: list + element: In + comparators: list + element: List + elts: list + element: Constant + value: str = ? + kind: NoneType = None + element: Constant + value: str = * + kind: NoneType = None + ctx: Load + element: Call + func: Attribute + value: Attribute + value: Name + id: str = captureGroupModifier + ctx: Load + attr: str = name + ctx: Load + attr: str = startswith + ctx: Load + args: list + element: Constant + value: str = {0, + kind: NoneType = None + keywords: list + body: list + element: If + test: Compare + left: Attribute + value: Name + id: str = captureGroupModifier + ctx: Load + attr: str = name + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = ? + kind: NoneType = None + body: list + element: Assign + targets: list + element: Subscript + value: Name + id: str = iff + ctx: Load + slice: BinOp + left: Attribute + value: Name + id: str = captureGroup + ctx: Load + attr: str = end + ctx: Load + op: Add + right: Constant + value: int = 1 + kind: NoneType = None + ctx: Store + value: Constant + value: NoneType = None + kind: NoneType = None + type_comment: NoneType = None + orelse: list + element: If + test: Compare + left: Attribute + value: Name + id: str = captureGroupModifier + ctx: Load + attr: str = name + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = * + kind: NoneType = None + body: list + element: Assign + targets: list + element: Subscript + value: Name + id: str = iff + ctx: Load + slice: BinOp + left: Attribute + value: Name + id: str = captureGroup + ctx: Load + attr: str = end + ctx: Load + op: Add + right: Constant + value: int = 1 + kind: NoneType = None + ctx: Store + value: Call + func: Name + id: str = Token + ctx: Load + args: list + element: Constant + value: str = + + kind: NoneType = None + keywords: list + type_comment: NoneType = None + orelse: list + element: If + test: Call + func: Attribute + value: Attribute + value: Name + id: str = captureGroupModifier + ctx: Load + attr: str = name + ctx: Load + attr: str = startswith + ctx: Load + args: list + element: Constant + value: str = {0, + kind: NoneType = None + keywords: list + body: list + element: Assign + targets: list + element: Subscript + value: Attribute + value: Subscript + value: Name + id: str = iff + ctx: Load + slice: BinOp + left: Attribute + value: Name + id: str = captureGroup + ctx: Load + attr: str = end + ctx: Load + op: Add + right: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + attr: str = name + ctx: Load + slice: Slice + lower: Constant + value: int = 0 + kind: NoneType = None + upper: Constant + value: int = 3 + kind: NoneType = None + step: NoneType = None + ctx: Store + value: Constant + value: str = {1, + kind: NoneType = None + type_comment: NoneType = None + orelse: list + element: Assign + targets: list + element: Subscript + value: Name + id: str = els + ctx: Load + slice: BinOp + left: Attribute + value: Name + id: str = captureGroup + ctx: Load + attr: str = end + ctx: Load + op: Add + right: Constant + value: int = 1 + kind: NoneType = None + ctx: Store + value: Constant + value: NoneType = None + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = hasElse + ctx: Store + value: Constant + value: bool = False + kind: NoneType = None + type_comment: NoneType = None + element: For + target: Name + id: str = idx + ctx: Store + iter: Call + func: Name + id: str = range + ctx: Load + args: list + element: Name + id: str = conStart + ctx: Load + element: Name + id: str = conEnd + ctx: Load + keywords: list + body: list + element: If + test: Compare + left: Attribute + value: Subscript + value: Name + id: str = tokens + ctx: Load + slice: Name + id: str = idx + ctx: Load + ctx: Load + attr: str = name + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = | + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = hasElse + ctx: Store + value: Constant + value: bool = True + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = els + ctx: Load + attr: str = pop + ctx: Load + args: list + element: Name + id: str = conEnd + ctx: Load + keywords: list + element: Assign + targets: list + element: Subscript + value: Name + id: str = iff + ctx: Load + slice: Slice + lower: Name + id: str = idx + ctx: Load + upper: BinOp + left: Name + id: str = conEnd + ctx: Load + op: Add + right: Constant + value: int = 1 + kind: NoneType = None + step: NoneType = None + ctx: Store + value: List + elts: list + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Subscript + value: Name + id: str = els + ctx: Load + slice: Slice + lower: Name + id: str = conStart + ctx: Load + upper: BinOp + left: Name + id: str = idx + ctx: Load + op: Add + right: Constant + value: int = 1 + kind: NoneType = None + step: NoneType = None + ctx: Store + value: List + elts: list + ctx: Load + type_comment: NoneType = None + element: Break + orelse: list + orelse: list + type_comment: NoneType = None + element: If + test: UnaryOp + op: Not + operand: Name + id: str = hasElse + ctx: Load + body: list + element: Assign + targets: list + element: Subscript + value: Name + id: str = els + ctx: Load + slice: Slice + lower: Name + id: str = conStart + ctx: Load + upper: BinOp + left: Name + id: str = conEnd + ctx: Load + op: Add + right: Constant + value: int = 1 + kind: NoneType = None + step: NoneType = None + ctx: Store + value: List + elts: list + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = iff + ctx: Load + attr: str = pop + ctx: Load + args: list + element: Name + id: str = conEnd + ctx: Load + keywords: list + orelse: list + element: Assign + targets: list + element: Subscript + value: Name + id: str = iff + ctx: Load + slice: Slice + lower: Name + id: str = conStart + ctx: Load + upper: BinOp + left: Name + id: str = conStart + ctx: Load + op: Add + right: Constant + value: int = 3 + kind: NoneType = None + step: NoneType = None + ctx: Store + value: List + elts: list + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Subscript + value: Name + id: str = els + ctx: Load + slice: Slice + lower: Attribute + value: Name + id: str = captureGroup + ctx: Load + attr: str = start + ctx: Load + upper: BinOp + left: Attribute + value: Name + id: str = captureGroup + ctx: Load + attr: str = end + ctx: Load + op: Add + right: Constant + value: int = 1 + kind: NoneType = None + step: NoneType = None + ctx: Store + value: List + elts: list + element: Call + func: Name + id: str = Token + ctx: Load + args: list + element: Constant + value: str = ( + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = Token + ctx: Load + args: list + element: Constant + value: str = ) + kind: NoneType = None + keywords: list + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = iff + ctx: Load + attr: str = remove + ctx: Load + args: list + element: Constant + value: NoneType = None + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = els + ctx: Load + attr: str = remove + ctx: Load + args: list + element: Constant + value: NoneType = None + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = variants + ctx: Load + attr: str = append + ctx: Load + args: list + element: Name + id: str = iff + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = variants + ctx: Load + attr: str = append + ctx: Load + args: list + element: Name + id: str = els + ctx: Load + keywords: list + orelse: list + element: Assign + targets: list + element: Name + id: str = pastIff + ctx: Store + value: Constant + value: bool = False + kind: NoneType = None + type_comment: NoneType = None + element: For + target: Name + id: str = idx + ctx: Store + iter: Call + func: Name + id: str = range + ctx: Load + args: list + element: Name + id: str = conStart + ctx: Load + element: Name + id: str = conEnd + ctx: Load + keywords: list + body: list + element: If + test: Compare + left: Attribute + value: Subscript + value: Name + id: str = iff + ctx: Load + slice: Name + id: str = idx + ctx: Load + ctx: Load + attr: str = name + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = | + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = iff + ctx: Store + value: Subscript + value: Name + id: str = tokens + ctx: Load + slice: Slice + lower: NoneType = None + upper: Name + id: str = idx + ctx: Load + step: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = iff + ctx: Load + attr: str = extend + ctx: Load + args: list + element: Subscript + value: Name + id: str = tokens + ctx: Load + slice: Slice + lower: BinOp + left: Name + id: str = conEnd + ctx: Load + op: Add + right: Constant + value: int = 1 + kind: NoneType = None + upper: NoneType = None + step: NoneType = None + ctx: Load + keywords: list + element: Break + orelse: list + orelse: list + type_comment: NoneType = None + element: Assign + targets: list + element: Subscript + value: Name + id: str = iff + ctx: Load + slice: Slice + lower: Name + id: str = conStart + ctx: Load + upper: BinOp + left: Name + id: str = conStart + ctx: Load + op: Add + right: Constant + value: int = 3 + kind: NoneType = None + step: NoneType = None + ctx: Store + value: List + elts: list + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = variants + ctx: Load + attr: str = append + ctx: Load + args: list + element: Name + id: str = iff + ctx: Load + keywords: list + element: Break + orelse: list + orelse: list + type_comment: NoneType = None + element: If + test: UnaryOp + op: Not + operand: Name + id: str = variants + ctx: Load + body: list + element: Return + value: List + elts: list + element: Name + id: str = tokens + ctx: Load + ctx: Load + orelse: list + element: Assign + targets: list + element: Name + id: str = allVariants + ctx: Store + value: List + elts: list + ctx: Load + type_comment: NoneType = None + element: For + target: Name + id: str = variant + ctx: Store + iter: Name + id: str = variants + ctx: Load + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = allVariants + ctx: Load + attr: str = extend + ctx: Load + args: list + element: Call + func: Name + id: str = splitIfElse + ctx: Load + args: list + element: Name + id: str = variant + ctx: Load + element: Name + id: str = namedGroups + ctx: Load + keywords: list + keywords: list + orelse: list + type_comment: NoneType = None + element: Return + value: Name + id: str = allVariants + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: ClassDef + name: str = Token + bases: list + keywords: list + body: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = name + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = paras + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = pure + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + element: Constant + value: NoneType = None + kind: NoneType = None + element: Constant + value: bool = False + kind: NoneType = None + body: list + element: If + test: Compare + left: Name + id: str = paras + ctx: Load + ops: list + element: Is + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = paras + ctx: Store + value: List + elts: list + ctx: Load + type_comment: NoneType = None + orelse: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = name + ctx: Store + value: Name + id: str = name + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = paras + ctx: Store + value: Name + id: str = paras + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = pure + ctx: Store + value: Name + id: str = pure + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = isModeGroup + ctx: Store + value: Constant + value: bool = False + kind: NoneType = None + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __repr__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = name + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = resolve + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Name + id: str = paras + ctx: Store + value: Constant + value: str = + kind: NoneType = None + type_comment: NoneType = None + element: For + target: Name + id: str = para + ctx: Store + iter: Attribute + value: Name + id: str = self + ctx: Load + attr: str = paras + ctx: Load + body: list + element: AugAssign + target: Name + id: str = paras + ctx: Store + op: Add + value: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = para + ctx: Load + keywords: list + orelse: list + type_comment: NoneType = None + element: Return + value: BinOp + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = name + ctx: Load + op: Add + right: Name + id: str = paras + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: FunctionDef + name: str = shift + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = stack + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = queue + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Name + id: str = done + ctx: Store + value: UnaryOp + op: Not + operand: Call + func: Name + id: str = bool + ctx: Load + args: list + element: Name + id: str = queue + ctx: Load + keywords: list + type_comment: NoneType = None + element: If + test: UnaryOp + op: Not + operand: Name + id: str = done + ctx: Load + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = stack + ctx: Load + attr: str = append + ctx: Load + args: list + element: Call + func: Name + id: str = Token + ctx: Load + args: list + element: Subscript + value: Name + id: str = queue + ctx: Load + slice: Constant + value: int = 0 + kind: NoneType = None + ctx: Load + element: List + elts: list + ctx: Load + element: Constant + value: bool = True + kind: NoneType = None + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = queue + ctx: Store + value: Subscript + value: Name + id: str = queue + ctx: Load + slice: Slice + lower: Constant + value: int = 1 + kind: NoneType = None + upper: NoneType = None + step: NoneType = None + ctx: Load + type_comment: NoneType = None + orelse: list + element: Return + value: Tuple + elts: list + element: Name + id: str = stack + ctx: Load + element: Name + id: str = queue + ctx: Load + element: Name + id: str = done + ctx: Load + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = shiftReduce + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = stack + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = queue + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = namedGroups + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = flags + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Name + id: str = done + ctx: Store + value: Constant + value: bool = False + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = high + ctx: Store + value: BinOp + left: Call + func: Name + id: str = len + ctx: Load + args: list + element: Name + id: str = stack + ctx: Load + keywords: list + op: Sub + right: Constant + value: int = 1 + kind: NoneType = None + type_comment: NoneType = None + element: If + test: Compare + left: Call + func: Name + id: str = len + ctx: Load + args: list + element: Name + id: str = stack + ctx: Load + keywords: list + ops: list + element: Lt + comparators: list + element: Constant + value: int = 2 + kind: NoneType = None + body: list + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = stack + ctx: Store + element: Name + id: str = queue + ctx: Store + element: Name + id: str = done + ctx: Store + ctx: Store + value: Call + func: Name + id: str = shift + ctx: Load + args: list + element: Name + id: str = stack + ctx: Load + element: Name + id: str = queue + ctx: Load + keywords: list + type_comment: NoneType = None + element: Return + value: Tuple + elts: list + element: Name + id: str = stack + ctx: Load + element: Name + id: str = queue + ctx: Load + element: Name + id: str = flags + ctx: Load + element: Name + id: str = done + ctx: Load + ctx: Load + orelse: list + element: Assign + targets: list + element: Name + id: str = s0 + ctx: Store + value: IfExp + test: Compare + left: Call + func: Name + id: str = len + ctx: Load + args: list + element: Name + id: str = stack + ctx: Load + keywords: list + ops: list + element: Gt + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + body: Subscript + value: Name + id: str = stack + ctx: Load + slice: Name + id: str = high + ctx: Load + ctx: Load + orelse: Call + func: Name + id: str = Token + ctx: Load + args: list + element: Constant + value: str = + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = s1 + ctx: Store + value: IfExp + test: Compare + left: Call + func: Name + id: str = len + ctx: Load + args: list + element: Name + id: str = stack + ctx: Load + keywords: list + ops: list + element: Gt + comparators: list + element: Constant + value: int = 1 + kind: NoneType = None + body: Subscript + value: Name + id: str = stack + ctx: Load + slice: BinOp + left: Name + id: str = high + ctx: Load + op: Sub + right: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + orelse: Call + func: Name + id: str = Token + ctx: Load + args: list + element: Constant + value: str = + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: If + test: Name + id: str = VERBOSE + ctx: Load + body: list + element: For + target: Name + id: str = token + ctx: Store + iter: Name + id: str = stack + ctx: Load + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = console + ctx: Load + attr: str = log + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = token + ctx: Load + attr: str = resolve + ctx: Load + args: list + keywords: list + element: Constant + value: str = + kind: NoneType = None + keywords: list + element: keyword + arg: str = end + value: Constant + value: str = + kind: NoneType = None + orelse: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = console + ctx: Load + attr: str = log + ctx: Load + args: list + element: Constant + value: str = + kind: NoneType = None + keywords: list + orelse: list + element: If + test: Compare + left: Attribute + value: Name + id: str = s1 + ctx: Load + attr: str = name + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = \ + kind: NoneType = None + body: list + element: If + test: Compare + left: Attribute + value: Name + id: str = s0 + ctx: Load + attr: str = name + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = A + kind: NoneType = None + body: list + element: Assign + targets: list + element: Subscript + value: Name + id: str = stack + ctx: Load + slice: Slice + lower: UnaryOp + op: USub + operand: Constant + value: int = 2 + kind: NoneType = None + upper: NoneType = None + step: NoneType = None + ctx: Store + value: List + elts: list + element: Call + func: Name + id: str = Token + ctx: Load + args: list + element: Constant + value: str = ^ + kind: NoneType = None + keywords: list + ctx: Load + type_comment: NoneType = None + orelse: list + element: If + test: Compare + left: Attribute + value: Name + id: str = s0 + ctx: Load + attr: str = name + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = a + kind: NoneType = None + body: list + element: Assign + targets: list + element: Subscript + value: Name + id: str = stack + ctx: Load + slice: Slice + lower: UnaryOp + op: USub + operand: Constant + value: int = 2 + kind: NoneType = None + upper: NoneType = None + step: NoneType = None + ctx: Store + value: List + elts: list + element: Call + func: Name + id: str = Token + ctx: Load + args: list + element: Constant + value: str = \07 + kind: NoneType = None + keywords: list + ctx: Load + type_comment: NoneType = None + orelse: list + element: If + test: Compare + left: Attribute + value: Name + id: str = s0 + ctx: Load + attr: str = name + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = Z + kind: NoneType = None + body: list + element: Assign + targets: list + element: Subscript + value: Name + id: str = stack + ctx: Load + slice: Slice + lower: UnaryOp + op: USub + operand: Constant + value: int = 2 + kind: NoneType = None + upper: NoneType = None + step: NoneType = None + ctx: Store + value: List + elts: list + element: Call + func: Name + id: str = Token + ctx: Load + args: list + element: Constant + value: str = $ + kind: NoneType = None + keywords: list + ctx: Load + type_comment: NoneType = None + orelse: list + element: Assign + targets: list + element: Subscript + value: Name + id: str = stack + ctx: Load + slice: Slice + lower: UnaryOp + op: USub + operand: Constant + value: int = 2 + kind: NoneType = None + upper: NoneType = None + step: NoneType = None + ctx: Store + value: List + elts: list + element: Call + func: Name + id: str = Token + ctx: Load + args: list + element: BinOp + left: Constant + value: str = \ + kind: NoneType = None + op: Add + right: Attribute + value: Name + id: str = s0 + ctx: Load + attr: str = name + ctx: Load + keywords: list + ctx: Load + type_comment: NoneType = None + orelse: list + element: If + test: BoolOp + op: And + values: list + element: Compare + left: Attribute + value: Name + id: str = s0 + ctx: Load + attr: str = name + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = $ + kind: NoneType = None + element: Attribute + value: Name + id: str = s0 + ctx: Load + attr: str = pure + ctx: Load + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = stack + ctx: Load + attr: str = pop + ctx: Load + args: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = stack + ctx: Load + attr: str = extend + ctx: Load + args: list + element: List + elts: list + element: Call + func: Name + id: str = Token + ctx: Load + args: list + element: Constant + value: str = (?= + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = Token + ctx: Load + args: list + element: Constant + value: str = \n + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = Token + ctx: Load + args: list + element: Constant + value: str = ? + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = Token + ctx: Load + args: list + element: Constant + value: str = $ + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = Token + ctx: Load + args: list + element: Constant + value: str = ) + kind: NoneType = None + keywords: list + ctx: Load + keywords: list + orelse: list + element: If + test: Compare + left: Attribute + value: Name + id: str = s1 + ctx: Load + attr: str = name + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = { + kind: NoneType = None + body: list + element: If + test: BoolOp + op: And + values: list + element: Compare + left: Attribute + value: Name + id: str = s0 + ctx: Load + attr: str = name + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = , + kind: NoneType = None + element: Compare + left: Call + func: Name + id: str = len + ctx: Load + args: list + element: Attribute + value: Name + id: str = s1 + ctx: Load + attr: str = paras + ctx: Load + keywords: list + ops: list + element: Eq + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + body: list + element: Expr + value: Call + func: Attribute + value: Attribute + value: Name + id: str = s1 + ctx: Load + attr: str = paras + ctx: Load + attr: str = append + ctx: Load + args: list + element: Constant + value: str = 0 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Attribute + value: Name + id: str = s1 + ctx: Load + attr: str = paras + ctx: Load + attr: str = append + ctx: Load + args: list + element: Constant + value: str = , + kind: NoneType = None + keywords: list + orelse: list + element: If + test: Compare + left: Attribute + value: Name + id: str = s0 + ctx: Load + attr: str = name + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = } + kind: NoneType = None + body: list + element: Expr + value: Call + func: Attribute + value: Attribute + value: Name + id: str = s1 + ctx: Load + attr: str = paras + ctx: Load + attr: str = append + ctx: Load + args: list + element: Constant + value: str = } + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = s1 + ctx: Load + attr: str = name + ctx: Store + value: Call + func: Attribute + value: Name + id: str = s1 + ctx: Load + attr: str = resolve + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = s1 + ctx: Load + attr: str = paras + ctx: Store + value: List + elts: list + ctx: Load + type_comment: NoneType = None + orelse: list + element: Expr + value: Call + func: Attribute + value: Attribute + value: Name + id: str = s1 + ctx: Load + attr: str = paras + ctx: Load + attr: str = append + ctx: Load + args: list + element: Attribute + value: Name + id: str = s0 + ctx: Load + attr: str = name + ctx: Load + keywords: list + element: Assign + targets: list + element: Name + id: str = stack + ctx: Store + value: Subscript + value: Name + id: str = stack + ctx: Load + slice: Slice + lower: NoneType = None + upper: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + step: NoneType = None + ctx: Load + type_comment: NoneType = None + orelse: list + element: If + test: BoolOp + op: And + values: list + element: Compare + left: Attribute + value: Name + id: str = s1 + ctx: Load + attr: str = name + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = [ + kind: NoneType = None + element: Compare + left: Attribute + value: Name + id: str = s0 + ctx: Load + attr: str = name + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = ^ + kind: NoneType = None + body: list + element: Assign + targets: list + element: Subscript + value: Name + id: str = stack + ctx: Load + slice: Slice + lower: UnaryOp + op: USub + operand: Constant + value: int = 2 + kind: NoneType = None + upper: NoneType = None + step: NoneType = None + ctx: Store + value: List + elts: list + element: Call + func: Name + id: str = Token + ctx: Load + args: list + element: Constant + value: str = [^ + kind: NoneType = None + keywords: list + ctx: Load + type_comment: NoneType = None + orelse: list + element: If + test: BoolOp + op: And + values: list + element: Compare + left: Attribute + value: Name + id: str = s1 + ctx: Load + attr: str = name + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = ( + kind: NoneType = None + element: Compare + left: Attribute + value: Name + id: str = s0 + ctx: Load + attr: str = name + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = ? + kind: NoneType = None + body: list + element: Assign + targets: list + element: Subscript + value: Name + id: str = stack + ctx: Load + slice: Slice + lower: UnaryOp + op: USub + operand: Constant + value: int = 2 + kind: NoneType = None + upper: NoneType = None + step: NoneType = None + ctx: Store + value: List + elts: list + element: Call + func: Name + id: str = Token + ctx: Load + args: list + element: Constant + value: str = (? + kind: NoneType = None + keywords: list + ctx: Load + type_comment: NoneType = None + orelse: list + element: If + test: BoolOp + op: And + values: list + element: Compare + left: Attribute + value: Name + id: str = s1 + ctx: Load + attr: str = name + ctx: Load + ops: list + element: In + comparators: list + element: List + elts: list + element: Constant + value: str = * + kind: NoneType = None + element: Constant + value: str = + + kind: NoneType = None + element: Constant + value: str = ? + kind: NoneType = None + ctx: Load + element: Compare + left: Attribute + value: Name + id: str = s0 + ctx: Load + attr: str = name + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = ? + kind: NoneType = None + body: list + element: Assign + targets: list + element: Subscript + value: Name + id: str = stack + ctx: Load + slice: Slice + lower: UnaryOp + op: USub + operand: Constant + value: int = 2 + kind: NoneType = None + upper: NoneType = None + step: NoneType = None + ctx: Store + value: List + elts: list + element: Call + func: Name + id: str = Token + ctx: Load + args: list + element: BinOp + left: Attribute + value: Name + id: str = s1 + ctx: Load + attr: str = name + ctx: Load + op: Add + right: Constant + value: str = ? + kind: NoneType = None + keywords: list + ctx: Load + type_comment: NoneType = None + orelse: list + element: If + test: BoolOp + op: And + values: list + element: Attribute + value: Name + id: str = s1 + ctx: Load + attr: str = isModeGroup + ctx: Load + element: Compare + left: Attribute + value: Name + id: str = s0 + ctx: Load + attr: str = name + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = ) + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = stack + ctx: Store + value: Subscript + value: Name + id: str = stack + ctx: Load + slice: Slice + lower: NoneType = None + upper: UnaryOp + op: USub + operand: Constant + value: int = 2 + kind: NoneType = None + step: NoneType = None + ctx: Load + type_comment: NoneType = None + orelse: list + element: If + test: Compare + left: Attribute + value: Name + id: str = s1 + ctx: Load + attr: str = name + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = (? + kind: NoneType = None + body: list + element: If + test: Compare + left: Attribute + value: Name + id: str = s0 + ctx: Load + attr: str = name + ctx: Load + ops: list + element: In + comparators: list + element: Name + id: str = stringFlags + ctx: Load + body: list + element: If + test: Compare + left: Attribute + value: Name + id: str = s0 + ctx: Load + attr: str = name + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = i + kind: NoneType = None + body: list + element: AugAssign + target: Name + id: str = flags + ctx: Store + op: BitOr + value: Attribute + value: Name + id: str = re + ctx: Load + attr: str = IGNORECASE + ctx: Load + orelse: list + element: If + test: Compare + left: Attribute + value: Name + id: str = s0 + ctx: Load + attr: str = name + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = L + kind: NoneType = None + body: list + element: AugAssign + target: Name + id: str = flags + ctx: Store + op: BitOr + value: Attribute + value: Name + id: str = re + ctx: Load + attr: str = LOCALE + ctx: Load + orelse: list + element: If + test: Compare + left: Attribute + value: Name + id: str = s0 + ctx: Load + attr: str = name + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = m + kind: NoneType = None + body: list + element: AugAssign + target: Name + id: str = flags + ctx: Store + op: BitOr + value: Attribute + value: Name + id: str = re + ctx: Load + attr: str = MULTILINE + ctx: Load + orelse: list + element: If + test: Compare + left: Attribute + value: Name + id: str = s0 + ctx: Load + attr: str = name + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = s + kind: NoneType = None + body: list + element: AugAssign + target: Name + id: str = flags + ctx: Store + op: BitOr + value: Attribute + value: Name + id: str = re + ctx: Load + attr: str = DOTALL + ctx: Load + orelse: list + element: If + test: Compare + left: Attribute + value: Name + id: str = s0 + ctx: Load + attr: str = name + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = u + kind: NoneType = None + body: list + element: AugAssign + target: Name + id: str = flags + ctx: Store + op: BitOr + value: Attribute + value: Name + id: str = re + ctx: Load + attr: str = UNICODE + ctx: Load + orelse: list + element: If + test: Compare + left: Attribute + value: Name + id: str = s0 + ctx: Load + attr: str = name + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = x + kind: NoneType = None + body: list + element: AugAssign + target: Name + id: str = flags + ctx: Store + op: BitOr + value: Attribute + value: Name + id: str = re + ctx: Load + attr: str = VERBOSE + ctx: Load + orelse: list + element: If + test: Compare + left: Attribute + value: Name + id: str = s0 + ctx: Load + attr: str = name + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = a + kind: NoneType = None + body: list + element: AugAssign + target: Name + id: str = flags + ctx: Store + op: BitOr + value: Attribute + value: Name + id: str = re + ctx: Load + attr: str = ASCII + ctx: Load + orelse: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = stack + ctx: Load + attr: str = pop + ctx: Load + args: list + keywords: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = s1 + ctx: Load + attr: str = isModeGroup + ctx: Store + value: Constant + value: bool = True + kind: NoneType = None + type_comment: NoneType = None + orelse: list + element: If + test: Compare + left: Attribute + value: Name + id: str = s0 + ctx: Load + attr: str = name + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = ( + kind: NoneType = None + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = s0 + ctx: Load + attr: str = name + ctx: Store + value: Constant + value: str = < + kind: NoneType = None + type_comment: NoneType = None + orelse: list + element: Assign + targets: list + element: Name + id: str = newToken + ctx: Store + value: Call + func: Name + id: str = Token + ctx: Load + args: list + element: BinOp + left: Constant + value: str = (? + kind: NoneType = None + op: Add + right: Attribute + value: Name + id: str = s0 + ctx: Load + attr: str = name + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Subscript + value: Name + id: str = stack + ctx: Load + slice: Slice + lower: UnaryOp + op: USub + operand: Constant + value: int = 2 + kind: NoneType = None + upper: NoneType = None + step: NoneType = None + ctx: Store + value: List + elts: list + element: Name + id: str = newToken + ctx: Load + ctx: Load + type_comment: NoneType = None + orelse: list + element: If + test: Compare + left: Attribute + value: Name + id: str = s1 + ctx: Load + attr: str = name + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = (?< + kind: NoneType = None + body: list + element: If + test: Compare + left: Attribute + value: Name + id: str = s0 + ctx: Load + attr: str = name + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = ) + kind: NoneType = None + body: list + element: Assign + targets: list + element: Subscript + value: Name + id: str = stack + ctx: Load + slice: Slice + lower: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + upper: NoneType = None + step: NoneType = None + ctx: Store + value: List + elts: list + element: Call + func: Name + id: str = Token + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = + kind: NoneType = None + attr: str = join + ctx: Load + args: list + element: Attribute + value: Name + id: str = s1 + ctx: Load + attr: str = paras + ctx: Load + keywords: list + keywords: list + element: Call + func: Name + id: str = Token + ctx: Load + args: list + element: Constant + value: str = > + kind: NoneType = None + keywords: list + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = s1 + ctx: Load + attr: str = paras + ctx: Store + value: List + elts: list + ctx: Load + type_comment: NoneType = None + orelse: list + element: Expr + value: Call + func: Attribute + value: Attribute + value: Name + id: str = s1 + ctx: Load + attr: str = paras + ctx: Load + attr: str = append + ctx: Load + args: list + element: Attribute + value: Name + id: str = s0 + ctx: Load + attr: str = name + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = stack + ctx: Load + attr: str = pop + ctx: Load + args: list + keywords: list + orelse: list + element: If + test: Compare + left: Attribute + value: Name + id: str = s1 + ctx: Load + attr: str = name + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = (?P + kind: NoneType = None + body: list + element: Assign + targets: list + element: Subscript + value: Name + id: str = stack + ctx: Load + slice: Slice + lower: UnaryOp + op: USub + operand: Constant + value: int = 2 + kind: NoneType = None + upper: NoneType = None + step: NoneType = None + ctx: Store + value: List + elts: list + element: Call + func: Name + id: str = Token + ctx: Load + args: list + element: BinOp + left: Constant + value: str = (?P + kind: NoneType = None + op: Add + right: Attribute + value: Name + id: str = s0 + ctx: Load + attr: str = name + ctx: Load + keywords: list + ctx: Load + type_comment: NoneType = None + orelse: list + element: If + test: Compare + left: Attribute + value: Name + id: str = s1 + ctx: Load + attr: str = name + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = (?P< + kind: NoneType = None + body: list + element: If + test: Compare + left: Attribute + value: Name + id: str = s0 + ctx: Load + attr: str = name + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = > + kind: NoneType = None + body: list + element: Assign + targets: list + element: Subscript + value: Name + id: str = namedGroups + ctx: Load + slice: Call + func: Attribute + value: Constant + value: str = + kind: NoneType = None + attr: str = join + ctx: Load + args: list + element: Attribute + value: Name + id: str = s1 + ctx: Load + attr: str = paras + ctx: Load + keywords: list + ctx: Store + value: BinOp + left: Call + func: Name + id: str = countCaptureGroups + ctx: Load + args: list + element: Name + id: str = stack + ctx: Load + keywords: list + op: Add + right: Constant + value: int = 1 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Subscript + value: Name + id: str = stack + ctx: Load + slice: Slice + lower: UnaryOp + op: USub + operand: Constant + value: int = 2 + kind: NoneType = None + upper: NoneType = None + step: NoneType = None + ctx: Store + value: List + elts: list + element: Call + func: Name + id: str = Token + ctx: Load + args: list + element: Constant + value: str = ( + kind: NoneType = None + keywords: list + ctx: Load + type_comment: NoneType = None + orelse: list + element: Expr + value: Call + func: Attribute + value: Attribute + value: Name + id: str = s1 + ctx: Load + attr: str = paras + ctx: Load + attr: str = append + ctx: Load + args: list + element: Attribute + value: Name + id: str = s0 + ctx: Load + attr: str = name + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = stack + ctx: Load + attr: str = pop + ctx: Load + args: list + keywords: list + orelse: list + element: If + test: Compare + left: Attribute + value: Name + id: str = s1 + ctx: Load + attr: str = name + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = (?P= + kind: NoneType = None + body: list + element: If + test: Compare + left: Attribute + value: Name + id: str = s0 + ctx: Load + attr: str = name + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = ) + kind: NoneType = None + body: list + element: Assign + targets: list + element: Subscript + value: Name + id: str = stack + ctx: Load + slice: Slice + lower: UnaryOp + op: USub + operand: Constant + value: int = 2 + kind: NoneType = None + upper: NoneType = None + step: NoneType = None + ctx: Store + value: List + elts: list + element: Call + func: Name + id: str = Token + ctx: Load + args: list + element: BinOp + left: Constant + value: str = \ + kind: NoneType = None + op: Add + right: Call + func: Name + id: str = str + ctx: Load + args: list + element: Subscript + value: Name + id: str = namedGroups + ctx: Load + slice: Subscript + value: Attribute + value: Name + id: str = s1 + ctx: Load + attr: str = paras + ctx: Load + slice: Constant + value: int = 0 + kind: NoneType = None + ctx: Load + ctx: Load + keywords: list + keywords: list + ctx: Load + type_comment: NoneType = None + orelse: list + element: If + test: UnaryOp + op: Not + operand: Attribute + value: Name + id: str = s1 + ctx: Load + attr: str = paras + ctx: Load + body: list + element: Expr + value: Call + func: Attribute + value: Attribute + value: Name + id: str = s1 + ctx: Load + attr: str = paras + ctx: Load + attr: str = append + ctx: Load + args: list + element: Attribute + value: Name + id: str = s0 + ctx: Load + attr: str = name + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = stack + ctx: Load + attr: str = pop + ctx: Load + args: list + keywords: list + orelse: list + element: AugAssign + target: Subscript + value: Attribute + value: Name + id: str = s1 + ctx: Load + attr: str = paras + ctx: Load + slice: Constant + value: int = 0 + kind: NoneType = None + ctx: Store + op: Add + value: Attribute + value: Name + id: str = s0 + ctx: Load + attr: str = name + ctx: Load + element: Expr + value: Call + func: Attribute + value: Name + id: str = stack + ctx: Load + attr: str = pop + ctx: Load + args: list + keywords: list + orelse: list + element: If + test: Compare + left: Attribute + value: Name + id: str = s1 + ctx: Load + attr: str = name + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = (?# + kind: NoneType = None + body: list + element: If + test: Compare + left: Attribute + value: Name + id: str = s0 + ctx: Load + attr: str = name + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = ) + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = stack + ctx: Store + value: Subscript + value: Name + id: str = stack + ctx: Load + slice: Slice + lower: NoneType = None + upper: UnaryOp + op: USub + operand: Constant + value: int = 2 + kind: NoneType = None + step: NoneType = None + ctx: Load + type_comment: NoneType = None + orelse: list + element: Assign + targets: list + element: Name + id: str = stack + ctx: Store + value: Subscript + value: Name + id: str = stack + ctx: Load + slice: Slice + lower: NoneType = None + upper: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + step: NoneType = None + ctx: Load + type_comment: NoneType = None + orelse: list + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = stack + ctx: Store + element: Name + id: str = queue + ctx: Store + element: Name + id: str = done + ctx: Store + ctx: Store + value: Call + func: Name + id: str = shift + ctx: Load + args: list + element: Name + id: str = stack + ctx: Load + element: Name + id: str = queue + ctx: Load + keywords: list + type_comment: NoneType = None + element: Return + value: Tuple + elts: list + element: Name + id: str = stack + ctx: Load + element: Name + id: str = queue + ctx: Load + element: Name + id: str = flags + ctx: Load + element: Name + id: str = done + ctx: Load + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = translate + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = rgx + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Name + id: str = stack + ctx: Store + value: List + elts: list + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = queue + ctx: Store + value: Call + func: Name + id: str = list + ctx: Load + args: list + element: Name + id: str = rgx + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = flags + ctx: Store + value: Constant + value: int = 0 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = namedGroups + ctx: Store + value: Call + func: Name + id: str = dict + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = nloop + ctx: Store + value: Constant + value: int = 0 + kind: NoneType = None + type_comment: NoneType = None + element: While + test: Constant + value: bool = True + kind: NoneType = None + body: list + element: AugAssign + target: Name + id: str = nloop + ctx: Store + op: Add + value: Constant + value: int = 1 + kind: NoneType = None + element: If + test: Compare + left: Name + id: str = nloop + ctx: Load + ops: list + element: Gt + comparators: list + element: Name + id: str = MAX_SHIFTREDUCE_LOOPS + ctx: Load + body: list + element: Raise + exc: Call + func: Name + id: str = Exception + ctx: Load + args: list + element: Constant + value: str = Too many iterations in converting regex from Python to JavaScript + kind: NoneType = None + keywords: list + cause: NoneType = None + orelse: list + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = stack + ctx: Store + element: Name + id: str = queue + ctx: Store + element: Name + id: str = flags + ctx: Store + element: Name + id: str = done + ctx: Store + ctx: Store + value: Call + func: Name + id: str = shiftReduce + ctx: Load + args: list + element: Name + id: str = stack + ctx: Load + element: Name + id: str = queue + ctx: Load + element: Name + id: str = namedGroups + ctx: Load + element: Name + id: str = flags + ctx: Load + keywords: list + type_comment: NoneType = None + element: If + test: Name + id: str = done + ctx: Load + body: list + element: Break + orelse: list + orelse: list + element: Assign + targets: list + element: Name + id: str = variants + ctx: Store + value: Call + func: Name + id: str = splitIfElse + ctx: Load + args: list + element: Name + id: str = stack + ctx: Load + element: Name + id: str = namedGroups + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = n_splits + ctx: Store + value: Call + func: Name + id: str = len + ctx: Load + args: list + element: Name + id: str = variants + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = final + ctx: Store + value: List + elts: list + ctx: Load + type_comment: NoneType = None + element: For + target: Name + id: str = i + ctx: Store + iter: Call + func: Name + id: str = range + ctx: Load + args: list + element: Constant + value: int = 0 + kind: NoneType = None + element: Call + func: Name + id: str = len + ctx: Load + args: list + element: Name + id: str = variants + ctx: Load + keywords: list + keywords: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = final + ctx: Load + attr: str = extend + ctx: Load + args: list + element: Subscript + value: Name + id: str = variants + ctx: Load + slice: Name + id: str = i + ctx: Load + ctx: Load + keywords: list + element: If + test: Compare + left: Name + id: str = i + ctx: Load + ops: list + element: Lt + comparators: list + element: BinOp + left: Call + func: Name + id: str = len + ctx: Load + args: list + element: Name + id: str = variants + ctx: Load + keywords: list + op: Sub + right: Constant + value: int = 1 + kind: NoneType = None + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = final + ctx: Load + attr: str = append + ctx: Load + args: list + element: Call + func: Name + id: str = Token + ctx: Load + args: list + element: Constant + value: str = | + kind: NoneType = None + keywords: list + keywords: list + orelse: list + orelse: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = stack + ctx: Store + value: Name + id: str = final + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = groupInfo + ctx: Store + value: Call + func: Name + id: str = generateGroupSpans + ctx: Load + args: list + element: Name + id: str = stack + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = resolvedTokens + ctx: Store + value: List + elts: list + ctx: Load + type_comment: NoneType = None + element: For + target: Name + id: str = token + ctx: Store + iter: Name + id: str = stack + ctx: Load + body: list + element: Assign + targets: list + element: Name + id: str = stringed + ctx: Store + value: Call + func: Attribute + value: Name + id: str = token + ctx: Load + attr: str = resolve + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: If + test: BoolOp + op: And + values: list + element: BinOp + left: Name + id: str = flags + ctx: Load + op: BitAnd + right: Attribute + value: Name + id: str = re + ctx: Load + attr: str = DOTALL + ctx: Load + element: Compare + left: Name + id: str = stringed + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = . + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = stringed + ctx: Store + value: Constant + value: str = [\s\S] + kind: NoneType = None + type_comment: NoneType = None + orelse: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = resolvedTokens + ctx: Load + attr: str = append + ctx: Load + args: list + element: Name + id: str = stringed + ctx: Load + keywords: list + orelse: list + type_comment: NoneType = None + element: Return + value: Tuple + elts: list + element: Name + id: str = resolvedTokens + ctx: Load + element: Name + id: str = flags + ctx: Load + element: Name + id: str = namedGroups + ctx: Load + element: Call + func: Name + id: str = countCaptureGroups + ctx: Load + args: list + element: Name + id: str = stack + ctx: Load + keywords: list + element: Name + id: str = n_splits + ctx: Load + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/re.tree b/transcrypt/development/automated_tests/transcrypt/__target__39/re.tree new file mode 100644 index 000000000..53609f3c0 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/re.tree @@ -0,0 +1,6739 @@ +file: Module + body: list + element: ImportFrom + module: str = org.transcrypt.stubs.browser + names: list + element: alias + name: str = __pragma__ + asname: NoneType = None + level: int = 0 + element: ImportFrom + module: str = re.translate + names: list + element: alias + name: str = translate + asname: NoneType = None + level: int = 0 + element: Assign + targets: list + element: Name + id: str = T + ctx: Store + value: BinOp + left: Constant + value: int = 1 + kind: NoneType = None + op: LShift + right: Constant + value: int = 0 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = TEMPLATE + ctx: Store + value: Name + id: str = T + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = I + ctx: Store + value: BinOp + left: Constant + value: int = 1 + kind: NoneType = None + op: LShift + right: Constant + value: int = 1 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = IGNORECASE + ctx: Store + value: Name + id: str = I + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = L + ctx: Store + value: BinOp + left: Constant + value: int = 1 + kind: NoneType = None + op: LShift + right: Constant + value: int = 2 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = LOCALE + ctx: Store + value: Name + id: str = L + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = M + ctx: Store + value: BinOp + left: Constant + value: int = 1 + kind: NoneType = None + op: LShift + right: Constant + value: int = 3 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = MULTILINE + ctx: Store + value: Name + id: str = M + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = S + ctx: Store + value: BinOp + left: Constant + value: int = 1 + kind: NoneType = None + op: LShift + right: Constant + value: int = 4 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = DOTALL + ctx: Store + value: Name + id: str = S + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = U + ctx: Store + value: BinOp + left: Constant + value: int = 1 + kind: NoneType = None + op: LShift + right: Constant + value: int = 5 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = UNICODE + ctx: Store + value: Name + id: str = U + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = X + ctx: Store + value: BinOp + left: Constant + value: int = 1 + kind: NoneType = None + op: LShift + right: Constant + value: int = 6 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = VERBOSE + ctx: Store + value: Name + id: str = X + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = DEBUG + ctx: Store + value: BinOp + left: Constant + value: int = 1 + kind: NoneType = None + op: LShift + right: Constant + value: int = 7 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = A + ctx: Store + value: BinOp + left: Constant + value: int = 1 + kind: NoneType = None + op: LShift + right: Constant + value: int = 8 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = ASCII + ctx: Store + value: Name + id: str = A + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = Y + ctx: Store + value: BinOp + left: Constant + value: int = 1 + kind: NoneType = None + op: LShift + right: Constant + value: int = 16 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = STICKY + ctx: Store + value: Name + id: str = Y + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = G + ctx: Store + value: BinOp + left: Constant + value: int = 1 + kind: NoneType = None + op: LShift + right: Constant + value: int = 17 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = GLOBAL + ctx: Store + value: Name + id: str = G + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = J + ctx: Store + value: BinOp + left: Constant + value: int = 1 + kind: NoneType = None + op: LShift + right: Constant + value: int = 19 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = JSSTRICT + ctx: Store + value: Name + id: str = J + ctx: Load + type_comment: NoneType = None + element: ClassDef + name: str = error + bases: list + element: Name + id: str = Exception + ctx: Load + keywords: list + body: list + element: Expr + value: Constant + value: str = Regular Expression Exception Class + + kind: NoneType = None + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = msg + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = error + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = pattern + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = flags + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = pos + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + element: Constant + value: NoneType = None + kind: NoneType = None + element: Constant + value: int = 0 + kind: NoneType = None + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Expr + value: Constant + value: str = + + kind: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = Exception + ctx: Load + attr: str = __init__ + ctx: Load + args: list + element: Name + id: str = self + ctx: Load + element: Name + id: str = msg + ctx: Load + keywords: list + element: keyword + arg: str = error + value: Name + id: str = error + ctx: Load + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = pattern + ctx: Store + value: Name + id: str = pattern + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = flags + ctx: Store + value: Name + id: str = flags + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = pos + ctx: Store + value: Name + id: str = pos + ctx: Load + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: ClassDef + name: str = ReIndexError + bases: list + element: Name + id: str = IndexError + ctx: Load + keywords: list + body: list + element: Expr + value: Constant + value: str = Index Error variant for the re module - primarily used for + the group method in the Match Object. + + kind: NoneType = None + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = IndexError + ctx: Load + attr: str = __init__ + ctx: Load + args: list + element: Name + id: str = self + ctx: Load + element: Constant + value: str = no such group + kind: NoneType = None + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: ClassDef + name: str = Match + bases: list + element: Name + id: str = object + ctx: Load + keywords: list + body: list + element: Expr + value: Constant + value: str = Resulting Match from a Regex Operation + + kind: NoneType = None + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = mObj + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = string + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = pos + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = endpos + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = rObj + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = namedGroups + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Expr + value: Constant + value: str = + + kind: NoneType = None + element: For + target: Tuple + elts: list + element: Name + id: str = index + ctx: Store + element: Name + id: str = match + ctx: Store + ctx: Store + iter: Call + func: Name + id: str = enumerate + ctx: Load + args: list + element: Name + id: str = mObj + ctx: Load + keywords: list + body: list + element: Assign + targets: list + element: Subscript + value: Name + id: str = mObj + ctx: Load + slice: Name + id: str = index + ctx: Load + ctx: Store + value: IfExp + test: Compare + left: Subscript + value: Name + id: str = mObj + ctx: Load + slice: Name + id: str = index + ctx: Load + ctx: Load + ops: list + element: Eq + comparators: list + element: Name + id: str = js_undefined + ctx: Load + body: Constant + value: NoneType = None + kind: NoneType = None + orelse: Subscript + value: Name + id: str = mObj + ctx: Load + slice: Name + id: str = index + ctx: Load + ctx: Load + type_comment: NoneType = None + orelse: list + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _obj + ctx: Store + value: Name + id: str = mObj + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _pos + ctx: Store + value: Name + id: str = pos + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _endpos + ctx: Store + value: Name + id: str = endpos + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _re + ctx: Store + value: Name + id: str = rObj + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _string + ctx: Store + value: Name + id: str = string + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _namedGroups + ctx: Store + value: Name + id: str = namedGroups + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _lastindex + ctx: Store + value: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _lastMatchGroup + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: If + test: Compare + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _namedGroups + ctx: Load + ops: list + element: IsNot + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _lastgroup + ctx: Store + value: Subscript + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _namedGroups + ctx: Load + slice: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _lastindex + ctx: Load + ctx: Load + type_comment: NoneType = None + orelse: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _lastgroup + ctx: Store + value: Constant + value: NoneType = None + kind: NoneType = None + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = _getPos + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _pos + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = _setPos + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = val + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Raise + exc: Call + func: Name + id: str = AttributeError + ctx: Load + args: list + element: Constant + value: str = readonly attribute + kind: NoneType = None + keywords: list + cause: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = pos + ctx: Store + value: Call + func: Name + id: str = property + ctx: Load + args: list + element: Name + id: str = _getPos + ctx: Load + element: Name + id: str = _setPos + ctx: Load + keywords: list + type_comment: NoneType = None + element: FunctionDef + name: str = _getEndPos + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _endpos + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = _setEndPos + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = val + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Raise + exc: Call + func: Name + id: str = AttributeError + ctx: Load + args: list + element: Constant + value: str = readonly attribute + kind: NoneType = None + keywords: list + cause: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = endpos + ctx: Store + value: Call + func: Name + id: str = property + ctx: Load + args: list + element: Name + id: str = _getEndPos + ctx: Load + element: Name + id: str = _setEndPos + ctx: Load + keywords: list + type_comment: NoneType = None + element: FunctionDef + name: str = _getRe + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _re + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = _setRe + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = val + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Raise + exc: Call + func: Name + id: str = AttributeError + ctx: Load + args: list + element: Constant + value: str = readonly attribute + kind: NoneType = None + keywords: list + cause: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = re + ctx: Store + value: Call + func: Name + id: str = property + ctx: Load + args: list + element: Name + id: str = _getRe + ctx: Load + element: Name + id: str = _setRe + ctx: Load + keywords: list + type_comment: NoneType = None + element: FunctionDef + name: str = _getString + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _string + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = _setString + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = val + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Raise + exc: Call + func: Name + id: str = AttributeError + ctx: Load + args: list + element: Constant + value: str = readonly attribute + kind: NoneType = None + keywords: list + cause: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = string + ctx: Store + value: Call + func: Name + id: str = property + ctx: Load + args: list + element: Name + id: str = _getString + ctx: Load + element: Name + id: str = _setString + ctx: Load + keywords: list + type_comment: NoneType = None + element: FunctionDef + name: str = _getLastGroup + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _lastgroup + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = _setLastGroup + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = val + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Raise + exc: Call + func: Name + id: str = AttributeError + ctx: Load + args: list + element: Constant + value: str = readonly attribute + kind: NoneType = None + keywords: list + cause: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = lastgroup + ctx: Store + value: Call + func: Name + id: str = property + ctx: Load + args: list + element: Name + id: str = _getLastGroup + ctx: Load + element: Name + id: str = _setLastGroup + ctx: Load + keywords: list + type_comment: NoneType = None + element: FunctionDef + name: str = _getLastIndex + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _lastindex + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = _setLastIndex + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = val + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Raise + exc: Call + func: Name + id: str = AttributeError + ctx: Load + args: list + element: Constant + value: str = readonly attribute + kind: NoneType = None + keywords: list + cause: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = lastindex + ctx: Store + value: Call + func: Name + id: str = property + ctx: Load + args: list + element: Name + id: str = _getLastIndex + ctx: Load + element: Name + id: str = _setLastIndex + ctx: Load + keywords: list + type_comment: NoneType = None + element: FunctionDef + name: str = _lastMatchGroup + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = Determine the last matching group in the object + + kind: NoneType = None + element: If + test: Compare + left: Call + func: Name + id: str = len + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _obj + ctx: Load + keywords: list + ops: list + element: Gt + comparators: list + element: Constant + value: int = 1 + kind: NoneType = None + body: list + element: For + target: Name + id: str = i + ctx: Store + iter: Call + func: Name + id: str = range + ctx: Load + args: list + element: BinOp + left: Call + func: Name + id: str = len + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _obj + ctx: Load + keywords: list + op: Sub + right: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 0 + kind: NoneType = None + element: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + keywords: list + body: list + element: If + test: Compare + left: Subscript + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _obj + ctx: Load + slice: Name + id: str = i + ctx: Load + ctx: Load + ops: list + element: IsNot + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Return + value: Name + id: str = i + ctx: Load + orelse: list + orelse: list + type_comment: NoneType = None + element: Return + value: Constant + value: NoneType = None + kind: NoneType = None + orelse: list + element: Return + value: Constant + value: NoneType = None + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = expand + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = template + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = + + kind: NoneType = None + element: Raise + exc: Call + func: Name + id: str = NotImplementedError + ctx: Load + args: list + keywords: list + cause: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = group + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: arg + arg: str = args + annotation: NoneType = None + type_comment: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = Return the string[s] for a group[s] + if only one group is provided, a string is returned + if multiple groups are provided, a tuple of strings is returned + + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = ret + ctx: Store + value: List + elts: list + ctx: Load + type_comment: NoneType = None + element: If + test: Compare + left: Call + func: Name + id: str = len + ctx: Load + args: list + element: Name + id: str = args + ctx: Load + keywords: list + ops: list + element: Gt + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + body: list + element: For + target: Name + id: str = index + ctx: Store + iter: Name + id: str = args + ctx: Load + body: list + element: If + test: Compare + left: Call + func: Name + id: str = type + ctx: Load + args: list + element: Name + id: str = index + ctx: Load + keywords: list + ops: list + element: Is + comparators: list + element: Name + id: str = str + ctx: Load + body: list + element: If + test: Compare + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _namedGroups + ctx: Load + ops: list + element: IsNot + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: If + test: Compare + left: Name + id: str = index + ctx: Load + ops: list + element: NotIn + comparators: list + element: Call + func: Attribute + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _namedGroups + ctx: Load + attr: str = keys + ctx: Load + args: list + keywords: list + body: list + element: Raise + exc: Call + func: Name + id: str = ReIndexError + ctx: Load + args: list + keywords: list + cause: NoneType = None + orelse: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = ret + ctx: Load + attr: str = append + ctx: Load + args: list + element: Subscript + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _obj + ctx: Load + slice: Subscript + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _namedGroups + ctx: Load + slice: Name + id: str = index + ctx: Load + ctx: Load + ctx: Load + keywords: list + orelse: list + element: Raise + exc: Call + func: Name + id: str = NotImplementedError + ctx: Load + args: list + element: Constant + value: str = No NamedGroups Available + kind: NoneType = None + keywords: list + cause: NoneType = None + orelse: list + element: If + test: Compare + left: Name + id: str = index + ctx: Load + ops: list + element: GtE + comparators: list + element: Call + func: Name + id: str = len + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _obj + ctx: Load + keywords: list + body: list + element: Raise + exc: Call + func: Name + id: str = ReIndexError + ctx: Load + args: list + keywords: list + cause: NoneType = None + orelse: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = ret + ctx: Load + attr: str = append + ctx: Load + args: list + element: Subscript + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _obj + ctx: Load + slice: Name + id: str = index + ctx: Load + ctx: Load + keywords: list + orelse: list + type_comment: NoneType = None + orelse: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = ret + ctx: Load + attr: str = append + ctx: Load + args: list + element: Subscript + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _obj + ctx: Load + slice: Constant + value: int = 0 + kind: NoneType = None + ctx: Load + keywords: list + element: If + test: Compare + left: Call + func: Name + id: str = len + ctx: Load + args: list + element: Name + id: str = ret + ctx: Load + keywords: list + ops: list + element: Eq + comparators: list + element: Constant + value: int = 1 + kind: NoneType = None + body: list + element: Return + value: Subscript + value: Name + id: str = ret + ctx: Load + slice: Constant + value: int = 0 + kind: NoneType = None + ctx: Load + orelse: list + element: Return + value: Call + func: Name + id: str = tuple + ctx: Load + args: list + element: Name + id: str = ret + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = groups + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = default + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Expr + value: Constant + value: str = Get all the groups in this match. Replace any + groups that did not contribute to the match with default + value. + + kind: NoneType = None + element: If + test: Compare + left: Call + func: Name + id: str = len + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _obj + ctx: Load + keywords: list + ops: list + element: Gt + comparators: list + element: Constant + value: int = 1 + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = ret + ctx: Store + value: Subscript + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _obj + ctx: Load + slice: Slice + lower: Constant + value: int = 1 + kind: NoneType = None + upper: NoneType = None + step: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Return + value: Call + func: Name + id: str = tuple + ctx: Load + args: list + element: ListComp + elt: IfExp + test: Compare + left: Name + id: str = x + ctx: Load + ops: list + element: IsNot + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: Name + id: str = x + ctx: Load + orelse: Name + id: str = default + ctx: Load + generators: list + element: comprehension + target: Name + id: str = x + ctx: Store + iter: Name + id: str = ret + ctx: Load + ifs: list + is_async: int = 0 + keywords: list + orelse: list + element: Return + value: Call + func: Name + id: str = tuple + ctx: Load + args: list + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = groupdict + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = default + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Expr + value: Constant + value: str = The concept of named captures doesn't exist + in javascript so this will likely never be implemented. + For the python translated re we will have a group dict where + possible. + + kind: NoneType = None + element: If + test: Compare + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _namedGroups + ctx: Load + ops: list + element: IsNot + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = ret + ctx: Store + value: Dict + keys: list + values: list + type_comment: NoneType = None + element: For + target: Tuple + elts: list + element: Name + id: str = gName + ctx: Store + element: Name + id: str = gId + ctx: Store + ctx: Store + iter: Call + func: Attribute + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _namedGroups + ctx: Load + attr: str = items + ctx: Load + args: list + keywords: list + body: list + element: Assign + targets: list + element: Name + id: str = value + ctx: Store + value: Subscript + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _obj + ctx: Load + slice: Name + id: str = gId + ctx: Load + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Subscript + value: Name + id: str = ret + ctx: Load + slice: Name + id: str = gName + ctx: Load + ctx: Store + value: IfExp + test: Compare + left: Name + id: str = value + ctx: Load + ops: list + element: IsNot + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: Name + id: str = value + ctx: Load + orelse: Name + id: str = default + ctx: Load + type_comment: NoneType = None + orelse: list + type_comment: NoneType = None + element: Return + value: Name + id: str = ret + ctx: Load + orelse: list + element: Raise + exc: Call + func: Name + id: str = NotImplementedError + ctx: Load + args: list + element: Constant + value: str = No NamedGroups Available + kind: NoneType = None + keywords: list + cause: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = start + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = group + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + element: Constant + value: int = 0 + kind: NoneType = None + body: list + element: Expr + value: Constant + value: str = Find the starting index in the string for the passed + group id or named group string. + @param group + if the type of group is a str, then the named groups dict + is searched for a matching string. + if the type of group is an int, then the groups are + indexed starting with 0 = entire match, and 1,... are + the indices of the matched sub-groups + + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = gId + ctx: Store + value: Constant + value: int = 0 + kind: NoneType = None + type_comment: NoneType = None + element: If + test: Compare + left: Call + func: Name + id: str = type + ctx: Load + args: list + element: Name + id: str = group + ctx: Load + keywords: list + ops: list + element: Is + comparators: list + element: Name + id: str = str + ctx: Load + body: list + element: If + test: Compare + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _namedGroups + ctx: Load + ops: list + element: IsNot + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: If + test: Compare + left: Name + id: str = group + ctx: Load + ops: list + element: NotIn + comparators: list + element: Call + func: Attribute + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _namedGroups + ctx: Load + attr: str = keys + ctx: Load + args: list + keywords: list + body: list + element: Raise + exc: Call + func: Name + id: str = ReIndexError + ctx: Load + args: list + keywords: list + cause: NoneType = None + orelse: list + element: Assign + targets: list + element: Name + id: str = gId + ctx: Store + value: Subscript + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _namedGroups + ctx: Load + slice: Name + id: str = group + ctx: Load + ctx: Load + type_comment: NoneType = None + orelse: list + element: Raise + exc: Call + func: Name + id: str = NotImplementedError + ctx: Load + args: list + element: Constant + value: str = No NamedGroups Available + kind: NoneType = None + keywords: list + cause: NoneType = None + orelse: list + element: Assign + targets: list + element: Name + id: str = gId + ctx: Store + value: Name + id: str = group + ctx: Load + type_comment: NoneType = None + element: If + test: Compare + left: Name + id: str = gId + ctx: Load + ops: list + element: GtE + comparators: list + element: Call + func: Name + id: str = len + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _obj + ctx: Load + keywords: list + body: list + element: Raise + exc: Call + func: Name + id: str = ReIndexError + ctx: Load + args: list + keywords: list + cause: NoneType = None + orelse: list + element: If + test: Compare + left: Name + id: str = gId + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + body: list + element: Return + value: Attribute + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _obj + ctx: Load + attr: str = index + ctx: Load + orelse: list + element: If + test: Compare + left: Subscript + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _obj + ctx: Load + slice: Name + id: str = gId + ctx: Load + ctx: Load + ops: list + element: IsNot + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = r + ctx: Store + value: Call + func: Name + id: str = compile + ctx: Load + args: list + element: Call + func: Name + id: str = escape + ctx: Load + args: list + element: Subscript + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _obj + ctx: Load + slice: Name + id: str = gId + ctx: Load + ctx: Load + keywords: list + element: Attribute + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _re + ctx: Load + attr: str = flags + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = m + ctx: Store + value: Call + func: Attribute + value: Name + id: str = r + ctx: Load + attr: str = search + ctx: Load + args: list + element: Subscript + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _obj + ctx: Load + slice: Constant + value: int = 0 + kind: NoneType = None + ctx: Load + keywords: list + type_comment: NoneType = None + element: If + test: Name + id: str = m + ctx: Load + body: list + element: Return + value: BinOp + left: Attribute + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _obj + ctx: Load + attr: str = index + ctx: Load + op: Add + right: Call + func: Attribute + value: Name + id: str = m + ctx: Load + attr: str = start + ctx: Load + args: list + keywords: list + orelse: list + element: Raise + exc: Call + func: Name + id: str = Exception + ctx: Load + args: list + element: Constant + value: str = Failed to find capture group + kind: NoneType = None + keywords: list + cause: NoneType = None + orelse: list + element: Return + value: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = end + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = group + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + element: Constant + value: int = 0 + kind: NoneType = None + body: list + element: Expr + value: Constant + value: str = Find the ending index in the string for the passed + group id or named group string. + @param group + if the type of group is a str, then the named groups dict + is searched for a matching string. + if the type of group is an int, then the groups are + indexed starting with 0 = entire match, and 1,... are + the indices of the matched sub-groups + + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = gId + ctx: Store + value: Constant + value: int = 0 + kind: NoneType = None + type_comment: NoneType = None + element: If + test: Compare + left: Call + func: Name + id: str = type + ctx: Load + args: list + element: Name + id: str = group + ctx: Load + keywords: list + ops: list + element: Is + comparators: list + element: Name + id: str = str + ctx: Load + body: list + element: If + test: Compare + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _namedGroups + ctx: Load + ops: list + element: IsNot + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: If + test: Compare + left: Name + id: str = group + ctx: Load + ops: list + element: NotIn + comparators: list + element: Call + func: Attribute + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _namedGroups + ctx: Load + attr: str = keys + ctx: Load + args: list + keywords: list + body: list + element: Raise + exc: Call + func: Name + id: str = ReIndexError + ctx: Load + args: list + keywords: list + cause: NoneType = None + orelse: list + element: Assign + targets: list + element: Name + id: str = gId + ctx: Store + value: Subscript + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _namedGroups + ctx: Load + slice: Name + id: str = group + ctx: Load + ctx: Load + type_comment: NoneType = None + orelse: list + element: Raise + exc: Call + func: Name + id: str = NotImplementedError + ctx: Load + args: list + element: Constant + value: str = No NamedGroups Available + kind: NoneType = None + keywords: list + cause: NoneType = None + orelse: list + element: Assign + targets: list + element: Name + id: str = gId + ctx: Store + value: Name + id: str = group + ctx: Load + type_comment: NoneType = None + element: If + test: Compare + left: Name + id: str = gId + ctx: Load + ops: list + element: GtE + comparators: list + element: Call + func: Name + id: str = len + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _obj + ctx: Load + keywords: list + body: list + element: Raise + exc: Call + func: Name + id: str = ReIndexError + ctx: Load + args: list + keywords: list + cause: NoneType = None + orelse: list + element: If + test: Compare + left: Name + id: str = gId + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + body: list + element: Return + value: BinOp + left: Attribute + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _obj + ctx: Load + attr: str = index + ctx: Load + op: Add + right: Call + func: Name + id: str = len + ctx: Load + args: list + element: Subscript + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _obj + ctx: Load + slice: Constant + value: int = 0 + kind: NoneType = None + ctx: Load + keywords: list + orelse: list + element: If + test: Compare + left: Subscript + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _obj + ctx: Load + slice: Name + id: str = gId + ctx: Load + ctx: Load + ops: list + element: IsNot + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = r + ctx: Store + value: Call + func: Name + id: str = compile + ctx: Load + args: list + element: Call + func: Name + id: str = escape + ctx: Load + args: list + element: Subscript + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _obj + ctx: Load + slice: Name + id: str = gId + ctx: Load + ctx: Load + keywords: list + element: Attribute + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _re + ctx: Load + attr: str = flags + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = m + ctx: Store + value: Call + func: Attribute + value: Name + id: str = r + ctx: Load + attr: str = search + ctx: Load + args: list + element: Subscript + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _obj + ctx: Load + slice: Constant + value: int = 0 + kind: NoneType = None + ctx: Load + keywords: list + type_comment: NoneType = None + element: If + test: Name + id: str = m + ctx: Load + body: list + element: Return + value: BinOp + left: Attribute + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _obj + ctx: Load + attr: str = index + ctx: Load + op: Add + right: Call + func: Attribute + value: Name + id: str = m + ctx: Load + attr: str = end + ctx: Load + args: list + keywords: list + orelse: list + element: Raise + exc: Call + func: Name + id: str = Exception + ctx: Load + args: list + element: Constant + value: str = Failed to find capture group + kind: NoneType = None + keywords: list + cause: NoneType = None + orelse: list + element: Return + value: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = span + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = group + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + element: Constant + value: int = 0 + kind: NoneType = None + body: list + element: Expr + value: Constant + value: str = Find the start and end index in the string for the passed + group id or named group string. + @param group + if the type of group is a str, then the named groups dict + is searched for a matching string. + if the type of group is an int, then the groups are + indexed starting with 0 = entire match, and 1,... are + the indices of the matched sub-groups + @return tuple of (start, end) + + kind: NoneType = None + element: Return + value: Tuple + elts: list + element: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = start + ctx: Load + args: list + element: Name + id: str = group + ctx: Load + keywords: list + element: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = end + ctx: Load + args: list + element: Name + id: str = group + ctx: Load + keywords: list + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: ClassDef + name: str = Regex + bases: list + element: Name + id: str = object + ctx: Load + keywords: list + body: list + element: Expr + value: Constant + value: str = Regular Expression Object + + kind: NoneType = None + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = pattern + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = flags + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = Initial the Regex Object + @param pattern - javascript regular expression pattern as a string + @param flags - string of javascript flags for the subsequently + created RegExp object. + + kind: NoneType = None + element: If + test: UnaryOp + op: Not + operand: Compare + left: BinOp + left: Name + id: str = flags + ctx: Load + op: BitAnd + right: Name + id: str = ASCII + ctx: Load + ops: list + element: Gt + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + body: list + element: AugAssign + target: Name + id: str = flags + ctx: Store + op: BitOr + value: Name + id: str = UNICODE + ctx: Load + orelse: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _flags + ctx: Store + value: Name + id: str = flags + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Tuple + elts: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _jsFlags + ctx: Store + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _obj + ctx: Store + ctx: Store + value: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _compileWrapper + ctx: Load + args: list + element: Name + id: str = pattern + ctx: Load + element: Name + id: str = flags + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _jspattern + ctx: Store + value: Name + id: str = pattern + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _pypattern + ctx: Store + value: Name + id: str = pattern + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = _ + ctx: Store + element: Name + id: str = groupCounterRegex + ctx: Store + ctx: Store + value: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _compileWrapper + ctx: Load + args: list + element: BinOp + left: Name + id: str = pattern + ctx: Load + op: Add + right: Constant + value: str = | + kind: NoneType = None + element: Name + id: str = flags + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _groups + ctx: Store + value: BinOp + left: Attribute + value: Call + func: Attribute + value: Name + id: str = groupCounterRegex + ctx: Load + attr: str = exec + ctx: Load + args: list + element: Constant + value: str = + kind: NoneType = None + keywords: list + attr: str = length + ctx: Load + op: Sub + right: Constant + value: int = 1 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _groupindex + ctx: Store + value: Constant + value: NoneType = None + kind: NoneType = None + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = _getPattern + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Name + id: str = ret + ctx: Store + value: Call + func: Attribute + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _pypattern + ctx: Load + attr: str = replace + ctx: Load + args: list + element: Constant + value: str = \ + kind: NoneType = None + element: Constant + value: str = \\ + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Return + value: Name + id: str = ret + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = _setPattern + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = val + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Raise + exc: Call + func: Name + id: str = AttributeError + ctx: Load + args: list + element: Constant + value: str = readonly attribute + kind: NoneType = None + keywords: list + cause: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = pattern + ctx: Store + value: Call + func: Name + id: str = property + ctx: Load + args: list + element: Name + id: str = _getPattern + ctx: Load + element: Name + id: str = _setPattern + ctx: Load + keywords: list + type_comment: NoneType = None + element: FunctionDef + name: str = _getFlags + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _flags + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = _setFlags + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = val + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Raise + exc: Call + func: Name + id: str = AttributeError + ctx: Load + args: list + element: Constant + value: str = readonly attribute + kind: NoneType = None + keywords: list + cause: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = flags + ctx: Store + value: Call + func: Name + id: str = property + ctx: Load + args: list + element: Name + id: str = _getFlags + ctx: Load + element: Name + id: str = _setFlags + ctx: Load + keywords: list + type_comment: NoneType = None + element: FunctionDef + name: str = _getGroups + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _groups + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = _setGroups + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = val + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Raise + exc: Call + func: Name + id: str = AttributeError + ctx: Load + args: list + element: Constant + value: str = readonly attribute + kind: NoneType = None + keywords: list + cause: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = groups + ctx: Store + value: Call + func: Name + id: str = property + ctx: Load + args: list + element: Name + id: str = _getGroups + ctx: Load + element: Name + id: str = _setGroups + ctx: Load + keywords: list + type_comment: NoneType = None + element: FunctionDef + name: str = _getGroupIndex + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: Compare + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _groupindex + ctx: Load + ops: list + element: Is + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Return + value: Dict + keys: list + values: list + orelse: list + element: Return + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _groupindex + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = _setGroupIndex + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = val + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Raise + exc: Call + func: Name + id: str = AttributeError + ctx: Load + args: list + element: Constant + value: str = readonly attribute + kind: NoneType = None + keywords: list + cause: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = groupindex + ctx: Store + value: Call + func: Name + id: str = property + ctx: Load + args: list + element: Name + id: str = _getGroupIndex + ctx: Load + element: Name + id: str = _setGroupIndex + ctx: Load + keywords: list + type_comment: NoneType = None + element: FunctionDef + name: str = _compileWrapper + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = pattern + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = flags + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + element: Constant + value: int = 0 + kind: NoneType = None + body: list + element: Expr + value: Constant + value: str = This function wraps the creation of the the + regular expresion so that we can catch the + Syntax Error exception and turn it into a + Python Exception + + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = jsFlags + ctx: Store + value: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _convertFlags + ctx: Load + args: list + element: Name + id: str = flags + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = rObj + ctx: Store + value: Constant + value: NoneType = None + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = errObj + ctx: Store + value: Constant + value: NoneType = None + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = js + kind: NoneType = None + element: Constant + value: str = {} + kind: NoneType = None + element: Constant + value: str = + try { + rObj = new RegExp(pattern, jsFlags) + } catch( err ) { + errObj = err + } + + kind: NoneType = None + keywords: list + element: If + test: Compare + left: Name + id: str = errObj + ctx: Load + ops: list + element: IsNot + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Raise + exc: Call + func: Name + id: str = error + ctx: Load + args: list + element: Attribute + value: Name + id: str = errObj + ctx: Load + attr: str = message + ctx: Load + element: Name + id: str = errObj + ctx: Load + element: Name + id: str = pattern + ctx: Load + element: Name + id: str = flags + ctx: Load + keywords: list + cause: NoneType = None + orelse: list + element: Return + value: Tuple + elts: list + element: Name + id: str = jsFlags + ctx: Load + element: Name + id: str = rObj + ctx: Load + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = _convertFlags + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = flags + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = Convert the Integer map based flags to a + string list of flags for js + + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = bitmaps + ctx: Store + value: List + elts: list + element: Tuple + elts: list + element: Name + id: str = DEBUG + ctx: Load + element: Constant + value: str = + kind: NoneType = None + ctx: Load + element: Tuple + elts: list + element: Name + id: str = IGNORECASE + ctx: Load + element: Constant + value: str = i + kind: NoneType = None + ctx: Load + element: Tuple + elts: list + element: Name + id: str = MULTILINE + ctx: Load + element: Constant + value: str = m + kind: NoneType = None + ctx: Load + element: Tuple + elts: list + element: Name + id: str = STICKY + ctx: Load + element: Constant + value: str = y + kind: NoneType = None + ctx: Load + element: Tuple + elts: list + element: Name + id: str = GLOBAL + ctx: Load + element: Constant + value: str = g + kind: NoneType = None + ctx: Load + element: Tuple + elts: list + element: Name + id: str = UNICODE + ctx: Load + element: Constant + value: str = u + kind: NoneType = None + ctx: Load + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = ret + ctx: Store + value: Call + func: Attribute + value: Constant + value: str = + kind: NoneType = None + attr: str = join + ctx: Load + args: list + element: ListComp + elt: Subscript + value: Name + id: str = x + ctx: Load + slice: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + generators: list + element: comprehension + target: Name + id: str = x + ctx: Store + iter: Name + id: str = bitmaps + ctx: Load + ifs: list + element: Compare + left: BinOp + left: Subscript + value: Name + id: str = x + ctx: Load + slice: Constant + value: int = 0 + kind: NoneType = None + ctx: Load + op: BitAnd + right: Name + id: str = flags + ctx: Load + ops: list + element: Gt + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + is_async: int = 0 + keywords: list + type_comment: NoneType = None + element: Return + value: Name + id: str = ret + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = _getTargetStr + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = string + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = pos + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = endpos + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = Given an start and endpos, slice out a target string. + + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = endPtr + ctx: Store + value: Call + func: Name + id: str = len + ctx: Load + args: list + element: Name + id: str = string + ctx: Load + keywords: list + type_comment: NoneType = None + element: If + test: Compare + left: Name + id: str = endpos + ctx: Load + ops: list + element: IsNot + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: If + test: Compare + left: Name + id: str = endpos + ctx: Load + ops: list + element: Lt + comparators: list + element: Name + id: str = endPtr + ctx: Load + body: list + element: Assign + targets: list + element: Name + id: str = endPtr + ctx: Store + value: Name + id: str = endpos + ctx: Load + type_comment: NoneType = None + orelse: list + orelse: list + element: If + test: Compare + left: Name + id: str = endPtr + ctx: Load + ops: list + element: Lt + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = endPtr + ctx: Store + value: Constant + value: int = 0 + kind: NoneType = None + type_comment: NoneType = None + orelse: list + element: Assign + targets: list + element: Name + id: str = ret + ctx: Store + value: Subscript + value: Name + id: str = string + ctx: Load + slice: Slice + lower: Name + id: str = pos + ctx: Load + upper: Name + id: str = endPtr + ctx: Load + step: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Return + value: Name + id: str = ret + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = _patternHasCaptures + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = Check if the regex pattern contains a capture + necessary to make split behave correctly + + kind: NoneType = None + element: Return + value: Compare + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _groups + ctx: Load + ops: list + element: Gt + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = search + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = string + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = pos + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = endpos + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + element: Constant + value: int = 0 + kind: NoneType = None + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Expr + value: Constant + value: str = Search through a string for matches to + this regex object. @see the python docs + + kind: NoneType = None + element: If + test: Compare + left: Name + id: str = endpos + ctx: Load + ops: list + element: Is + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = endpos + ctx: Store + value: Call + func: Name + id: str = len + ctx: Load + args: list + element: Name + id: str = string + ctx: Load + keywords: list + type_comment: NoneType = None + orelse: list + element: Assign + targets: list + element: Name + id: str = rObj + ctx: Store + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _obj + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = m + ctx: Store + value: Call + func: Attribute + value: Name + id: str = rObj + ctx: Load + attr: str = exec + ctx: Load + args: list + element: Name + id: str = string + ctx: Load + keywords: list + type_comment: NoneType = None + element: If + test: Name + id: str = m + ctx: Load + body: list + element: If + test: BoolOp + op: Or + values: list + element: Compare + left: Attribute + value: Name + id: str = m + ctx: Load + attr: str = index + ctx: Load + ops: list + element: Lt + comparators: list + element: Name + id: str = pos + ctx: Load + element: Compare + left: Attribute + value: Name + id: str = m + ctx: Load + attr: str = index + ctx: Load + ops: list + element: Gt + comparators: list + element: Name + id: str = endpos + ctx: Load + body: list + element: Return + value: Constant + value: NoneType = None + kind: NoneType = None + orelse: list + element: Return + value: Call + func: Name + id: str = Match + ctx: Load + args: list + element: Name + id: str = m + ctx: Load + element: Name + id: str = string + ctx: Load + element: Name + id: str = pos + ctx: Load + element: Name + id: str = endpos + ctx: Load + element: Name + id: str = self + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _groupindex + ctx: Load + keywords: list + orelse: list + element: Return + value: Constant + value: NoneType = None + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = match + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = string + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = pos + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = endpos + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + element: Constant + value: int = 0 + kind: NoneType = None + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Expr + value: Constant + value: str = Match this regex at the beginning of the passed + string. @see the python docs + + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = target + ctx: Store + value: Name + id: str = string + ctx: Load + type_comment: NoneType = None + element: If + test: Compare + left: Name + id: str = endpos + ctx: Load + ops: list + element: IsNot + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = target + ctx: Store + value: Subscript + value: Name + id: str = target + ctx: Load + slice: Slice + lower: NoneType = None + upper: Name + id: str = endpos + ctx: Load + step: NoneType = None + ctx: Load + type_comment: NoneType = None + orelse: list + element: Assign + targets: list + element: Name + id: str = endpos + ctx: Store + value: Call + func: Name + id: str = len + ctx: Load + args: list + element: Name + id: str = string + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = rObj + ctx: Store + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _obj + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = m + ctx: Store + value: Call + func: Attribute + value: Name + id: str = rObj + ctx: Load + attr: str = exec + ctx: Load + args: list + element: Name + id: str = target + ctx: Load + keywords: list + type_comment: NoneType = None + element: If + test: Name + id: str = m + ctx: Load + body: list + element: If + test: Compare + left: Attribute + value: Name + id: str = m + ctx: Load + attr: str = index + ctx: Load + ops: list + element: Eq + comparators: list + element: Name + id: str = pos + ctx: Load + body: list + element: Return + value: Call + func: Name + id: str = Match + ctx: Load + args: list + element: Name + id: str = m + ctx: Load + element: Name + id: str = string + ctx: Load + element: Name + id: str = pos + ctx: Load + element: Name + id: str = endpos + ctx: Load + element: Name + id: str = self + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _groupindex + ctx: Load + keywords: list + orelse: list + element: Return + value: Constant + value: NoneType = None + kind: NoneType = None + orelse: list + element: Return + value: Constant + value: NoneType = None + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = fullmatch + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = string + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = pos + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = endpos + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + element: Constant + value: int = 0 + kind: NoneType = None + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Expr + value: Constant + value: str = Match the entirety of the passed string to this regex + object. @see the python docs + + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = target + ctx: Store + value: Name + id: str = string + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = strEndPos + ctx: Store + value: Call + func: Name + id: str = len + ctx: Load + args: list + element: Name + id: str = string + ctx: Load + keywords: list + type_comment: NoneType = None + element: If + test: Compare + left: Name + id: str = endpos + ctx: Load + ops: list + element: IsNot + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = target + ctx: Store + value: Subscript + value: Name + id: str = target + ctx: Load + slice: Slice + lower: NoneType = None + upper: Name + id: str = endpos + ctx: Load + step: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = strEndPos + ctx: Store + value: Name + id: str = endpos + ctx: Load + type_comment: NoneType = None + orelse: list + element: Assign + targets: list + element: Name + id: str = rObj + ctx: Store + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _obj + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = m + ctx: Store + value: Call + func: Attribute + value: Name + id: str = rObj + ctx: Load + attr: str = exec + ctx: Load + args: list + element: Name + id: str = target + ctx: Load + keywords: list + type_comment: NoneType = None + element: If + test: Name + id: str = m + ctx: Load + body: list + element: Assign + targets: list + element: Name + id: str = obsEndPos + ctx: Store + value: BinOp + left: Attribute + value: Name + id: str = m + ctx: Load + attr: str = index + ctx: Load + op: Add + right: Call + func: Name + id: str = len + ctx: Load + args: list + element: Subscript + value: Name + id: str = m + ctx: Load + slice: Constant + value: int = 0 + kind: NoneType = None + ctx: Load + keywords: list + type_comment: NoneType = None + element: If + test: BoolOp + op: And + values: list + element: Compare + left: Attribute + value: Name + id: str = m + ctx: Load + attr: str = index + ctx: Load + ops: list + element: Eq + comparators: list + element: Name + id: str = pos + ctx: Load + element: Compare + left: Name + id: str = obsEndPos + ctx: Load + ops: list + element: Eq + comparators: list + element: Name + id: str = strEndPos + ctx: Load + body: list + element: Return + value: Call + func: Name + id: str = Match + ctx: Load + args: list + element: Name + id: str = m + ctx: Load + element: Name + id: str = string + ctx: Load + element: Name + id: str = pos + ctx: Load + element: Name + id: str = strEndPos + ctx: Load + element: Name + id: str = self + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _groupindex + ctx: Load + keywords: list + orelse: list + element: Return + value: Constant + value: NoneType = None + kind: NoneType = None + orelse: list + element: Return + value: Constant + value: NoneType = None + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = split + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = string + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = maxsplit + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + element: Constant + value: int = 0 + kind: NoneType = None + body: list + element: Expr + value: Constant + value: str = Split the passed string on each match of this regex + object. If the regex contains captures, then the match + content is included as a separate item. If no captures are + in the regex, then only the non-matching split content is + returned. @see the python docs + @param maxsplit max number of times to split the string + at a matching substring. + @return list of sub-strings + + kind: NoneType = None + element: If + test: Compare + left: Name + id: str = maxsplit + ctx: Load + ops: list + element: Lt + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + body: list + element: Return + value: List + elts: list + element: Name + id: str = string + ctx: Load + ctx: Load + orelse: list + element: Assign + targets: list + element: Name + id: str = mObj + ctx: Store + value: Constant + value: NoneType = None + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = rObj + ctx: Store + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _obj + ctx: Load + type_comment: NoneType = None + element: If + test: Compare + left: Name + id: str = maxsplit + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = mObj + ctx: Store + value: Call + func: Attribute + value: Name + id: str = string + ctx: Load + attr: str = split + ctx: Load + args: list + element: Name + id: str = rObj + ctx: Load + keywords: list + type_comment: NoneType = None + element: Return + value: Name + id: str = mObj + ctx: Load + orelse: list + element: Assign + targets: list + element: Name + id: str = flags + ctx: Store + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _flags + ctx: Load + type_comment: NoneType = None + element: AugAssign + target: Name + id: str = flags + ctx: Store + op: BitOr + value: Name + id: str = GLOBAL + ctx: Load + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = _ + ctx: Store + element: Name + id: str = rObj + ctx: Store + ctx: Store + value: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _compileWrapper + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _jspattern + ctx: Load + element: Name + id: str = flags + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = ret + ctx: Store + value: List + elts: list + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = lastM + ctx: Store + value: Constant + value: NoneType = None + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = cnt + ctx: Store + value: Constant + value: int = 0 + kind: NoneType = None + type_comment: NoneType = None + element: For + target: Name + id: str = i + ctx: Store + iter: Call + func: Name + id: str = range + ctx: Load + args: list + element: Constant + value: int = 0 + kind: NoneType = None + element: Name + id: str = maxsplit + ctx: Load + keywords: list + body: list + element: Assign + targets: list + element: Name + id: str = m + ctx: Store + value: Call + func: Attribute + value: Name + id: str = rObj + ctx: Load + attr: str = exec + ctx: Load + args: list + element: Name + id: str = string + ctx: Load + keywords: list + type_comment: NoneType = None + element: If + test: Name + id: str = m + ctx: Load + body: list + element: AugAssign + target: Name + id: str = cnt + ctx: Store + op: Add + value: Constant + value: int = 1 + kind: NoneType = None + element: If + test: Compare + left: Name + id: str = lastM + ctx: Load + ops: list + element: IsNot + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = start + ctx: Store + value: BinOp + left: Attribute + value: Name + id: str = lastM + ctx: Load + attr: str = index + ctx: Load + op: Add + right: Call + func: Name + id: str = len + ctx: Load + args: list + element: Subscript + value: Name + id: str = lastM + ctx: Load + slice: Constant + value: int = 0 + kind: NoneType = None + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = head + ctx: Store + value: Subscript + value: Name + id: str = string + ctx: Load + slice: Slice + lower: Name + id: str = start + ctx: Load + upper: Attribute + value: Name + id: str = m + ctx: Load + attr: str = index + ctx: Load + step: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = ret + ctx: Load + attr: str = append + ctx: Load + args: list + element: Name + id: str = head + ctx: Load + keywords: list + element: If + test: Compare + left: Call + func: Name + id: str = len + ctx: Load + args: list + element: Name + id: str = m + ctx: Load + keywords: list + ops: list + element: Gt + comparators: list + element: Constant + value: int = 1 + kind: NoneType = None + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = ret + ctx: Load + attr: str = extend + ctx: Load + args: list + element: Subscript + value: Name + id: str = m + ctx: Load + slice: Slice + lower: Constant + value: int = 1 + kind: NoneType = None + upper: NoneType = None + step: NoneType = None + ctx: Load + keywords: list + orelse: list + orelse: list + element: Assign + targets: list + element: Name + id: str = head + ctx: Store + value: Subscript + value: Name + id: str = string + ctx: Load + slice: Slice + lower: NoneType = None + upper: Attribute + value: Name + id: str = m + ctx: Load + attr: str = index + ctx: Load + step: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = ret + ctx: Load + attr: str = append + ctx: Load + args: list + element: Name + id: str = head + ctx: Load + keywords: list + element: If + test: Compare + left: Call + func: Name + id: str = len + ctx: Load + args: list + element: Name + id: str = m + ctx: Load + keywords: list + ops: list + element: Gt + comparators: list + element: Constant + value: int = 1 + kind: NoneType = None + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = ret + ctx: Load + attr: str = extend + ctx: Load + args: list + element: Subscript + value: Name + id: str = m + ctx: Load + slice: Slice + lower: Constant + value: int = 1 + kind: NoneType = None + upper: NoneType = None + step: NoneType = None + ctx: Load + keywords: list + orelse: list + element: Assign + targets: list + element: Name + id: str = lastM + ctx: Store + value: Name + id: str = m + ctx: Load + type_comment: NoneType = None + orelse: list + element: Break + orelse: list + type_comment: NoneType = None + element: If + test: Compare + left: Name + id: str = lastM + ctx: Load + ops: list + element: IsNot + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = endPos + ctx: Store + value: BinOp + left: Attribute + value: Name + id: str = lastM + ctx: Load + attr: str = index + ctx: Load + op: Add + right: Call + func: Name + id: str = len + ctx: Load + args: list + element: Subscript + value: Name + id: str = lastM + ctx: Load + slice: Constant + value: int = 0 + kind: NoneType = None + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = end + ctx: Store + value: Subscript + value: Name + id: str = string + ctx: Load + slice: Slice + lower: Name + id: str = endPos + ctx: Load + upper: NoneType = None + step: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = ret + ctx: Load + attr: str = append + ctx: Load + args: list + element: Name + id: str = end + ctx: Load + keywords: list + orelse: list + element: Return + value: Name + id: str = ret + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = _findAllMatches + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = string + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = pos + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = endpos + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + element: Constant + value: int = 0 + kind: NoneType = None + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = target + ctx: Store + value: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _getTargetStr + ctx: Load + args: list + element: Name + id: str = string + ctx: Load + element: Name + id: str = pos + ctx: Load + element: Name + id: str = endpos + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = flags + ctx: Store + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _flags + ctx: Load + type_comment: NoneType = None + element: AugAssign + target: Name + id: str = flags + ctx: Store + op: BitOr + value: Name + id: str = GLOBAL + ctx: Load + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = _ + ctx: Store + element: Name + id: str = rObj + ctx: Store + ctx: Store + value: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _compileWrapper + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _jspattern + ctx: Load + element: Name + id: str = flags + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = ret + ctx: Store + value: List + elts: list + ctx: Load + type_comment: NoneType = None + element: While + test: Constant + value: bool = True + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = m + ctx: Store + value: Call + func: Attribute + value: Name + id: str = rObj + ctx: Load + attr: str = exec + ctx: Load + args: list + element: Name + id: str = target + ctx: Load + keywords: list + type_comment: NoneType = None + element: If + test: Name + id: str = m + ctx: Load + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = ret + ctx: Load + attr: str = append + ctx: Load + args: list + element: Name + id: str = m + ctx: Load + keywords: list + orelse: list + element: Break + orelse: list + element: Return + value: Name + id: str = ret + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = findall + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = string + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = pos + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = endpos + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + element: Constant + value: int = 0 + kind: NoneType = None + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Expr + value: Constant + value: str = Find All the matches to this regex in the passed string + @return either: + List of strings of the matched regex has 1 or 0 capture + groups + List of elements that are each a list of the groups matched + at each location in the string. + @see the python docs + + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = mlist + ctx: Store + value: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _findAllMatches + ctx: Load + args: list + element: Name + id: str = string + ctx: Load + element: Name + id: str = pos + ctx: Load + element: Name + id: str = endpos + ctx: Load + keywords: list + type_comment: NoneType = None + element: FunctionDef + name: str = mSelect + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = m + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: Compare + left: Call + func: Name + id: str = len + ctx: Load + args: list + element: Name + id: str = m + ctx: Load + keywords: list + ops: list + element: Gt + comparators: list + element: Constant + value: int = 2 + kind: NoneType = None + body: list + element: Return + value: Call + func: Name + id: str = tuple + ctx: Load + args: list + element: Subscript + value: Name + id: str = m + ctx: Load + slice: Slice + lower: Constant + value: int = 1 + kind: NoneType = None + upper: NoneType = None + step: NoneType = None + ctx: Load + keywords: list + orelse: list + element: If + test: Compare + left: Call + func: Name + id: str = len + ctx: Load + args: list + element: Name + id: str = m + ctx: Load + keywords: list + ops: list + element: Eq + comparators: list + element: Constant + value: int = 2 + kind: NoneType = None + body: list + element: Return + value: Subscript + value: Name + id: str = m + ctx: Load + slice: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + orelse: list + element: Return + value: Subscript + value: Name + id: str = m + ctx: Load + slice: Constant + value: int = 0 + kind: NoneType = None + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = ret + ctx: Store + value: Call + func: Name + id: str = map + ctx: Load + args: list + element: Name + id: str = mSelect + ctx: Load + element: Name + id: str = mlist + ctx: Load + keywords: list + type_comment: NoneType = None + element: Return + value: Name + id: str = ret + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = finditer + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = string + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = pos + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = endpos + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Expr + value: Constant + value: str = Like findall but returns an iterator instead of + a list. + @see the python docs + + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = mlist + ctx: Store + value: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _findAllMatches + ctx: Load + args: list + element: Name + id: str = string + ctx: Load + element: Name + id: str = pos + ctx: Load + element: Name + id: str = endpos + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = ret + ctx: Store + value: Call + func: Name + id: str = map + ctx: Load + args: list + element: Lambda + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = m + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: Call + func: Name + id: str = Match + ctx: Load + args: list + element: Name + id: str = m + ctx: Load + element: Name + id: str = string + ctx: Load + element: Constant + value: int = 0 + kind: NoneType = None + element: Call + func: Name + id: str = len + ctx: Load + args: list + element: Name + id: str = string + ctx: Load + keywords: list + element: Name + id: str = self + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _groupindex + ctx: Load + keywords: list + element: Name + id: str = mlist + ctx: Load + keywords: list + type_comment: NoneType = None + element: Return + value: Call + func: Name + id: str = iter + ctx: Load + args: list + element: Name + id: str = ret + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = sub + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = repl + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = string + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = count + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + element: Constant + value: int = 0 + kind: NoneType = None + body: list + element: Expr + value: Constant + value: str = Substitude each match of this regex in the passed string + with either: + if repl is of type string, + replace with repl + if repl is a callable object, then the returned value + from repl(m) where m is the match object at a particular + point in the string. + @see the python docs + @return the augmented string with substitutions + + kind: NoneType = None + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = ret + ctx: Store + element: Name + id: str = _ + ctx: Store + ctx: Store + value: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = subn + ctx: Load + args: list + element: Name + id: str = repl + ctx: Load + element: Name + id: str = string + ctx: Load + element: Name + id: str = count + ctx: Load + keywords: list + type_comment: NoneType = None + element: Return + value: Name + id: str = ret + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = subn + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = repl + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = string + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = count + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + element: Constant + value: int = 0 + kind: NoneType = None + body: list + element: Expr + value: Constant + value: str = Similar to sub except that instead of just returning the + augmented string, it returns a tuple of the augmented string + and the number of times that the replacement op occured. + (augstr, numreplacements) + @see the python docs + + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = flags + ctx: Store + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _flags + ctx: Load + type_comment: NoneType = None + element: AugAssign + target: Name + id: str = flags + ctx: Store + op: BitOr + value: Name + id: str = GLOBAL + ctx: Load + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = _ + ctx: Store + element: Name + id: str = rObj + ctx: Store + ctx: Store + value: Call + func: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _compileWrapper + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _jspattern + ctx: Load + element: Name + id: str = flags + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = ret + ctx: Store + value: Constant + value: str = + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = totalMatch + ctx: Store + value: Constant + value: int = 0 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = lastEnd + ctx: Store + value: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + type_comment: NoneType = None + element: While + test: Constant + value: bool = True + kind: NoneType = None + body: list + element: If + test: Compare + left: Name + id: str = count + ctx: Load + ops: list + element: Gt + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + body: list + element: If + test: Compare + left: Name + id: str = totalMatch + ctx: Load + ops: list + element: GtE + comparators: list + element: Name + id: str = count + ctx: Load + body: list + element: If + test: Compare + left: Name + id: str = lastEnd + ctx: Load + ops: list + element: Lt + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + body: list + element: Return + value: Tuple + elts: list + element: Name + id: str = ret + ctx: Load + element: Name + id: str = totalMatch + ctx: Load + ctx: Load + orelse: list + element: AugAssign + target: Name + id: str = ret + ctx: Store + op: Add + value: Subscript + value: Name + id: str = string + ctx: Load + slice: Slice + lower: Name + id: str = lastEnd + ctx: Load + upper: Attribute + value: Name + id: str = m + ctx: Load + attr: str = index + ctx: Load + step: NoneType = None + ctx: Load + element: Return + value: Tuple + elts: list + element: Name + id: str = ret + ctx: Load + element: Name + id: str = totalMatch + ctx: Load + ctx: Load + orelse: list + orelse: list + element: Assign + targets: list + element: Name + id: str = m + ctx: Store + value: Call + func: Attribute + value: Name + id: str = rObj + ctx: Load + attr: str = exec + ctx: Load + args: list + element: Name + id: str = string + ctx: Load + keywords: list + type_comment: NoneType = None + element: If + test: Name + id: str = m + ctx: Load + body: list + element: If + test: Compare + left: Name + id: str = lastEnd + ctx: Load + ops: list + element: Lt + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + body: list + element: AugAssign + target: Name + id: str = ret + ctx: Store + op: Add + value: Subscript + value: Name + id: str = string + ctx: Load + slice: Slice + lower: NoneType = None + upper: Attribute + value: Name + id: str = m + ctx: Load + attr: str = index + ctx: Load + step: NoneType = None + ctx: Load + orelse: list + element: AugAssign + target: Name + id: str = ret + ctx: Store + op: Add + value: Subscript + value: Name + id: str = string + ctx: Load + slice: Slice + lower: Name + id: str = lastEnd + ctx: Load + upper: Attribute + value: Name + id: str = m + ctx: Load + attr: str = index + ctx: Load + step: NoneType = None + ctx: Load + element: If + test: Call + func: Name + id: str = callable + ctx: Load + args: list + element: Name + id: str = repl + ctx: Load + keywords: list + body: list + element: Assign + targets: list + element: Name + id: str = content + ctx: Store + value: Call + func: Name + id: str = repl + ctx: Load + args: list + element: Call + func: Name + id: str = Match + ctx: Load + args: list + element: Name + id: str = m + ctx: Load + element: Name + id: str = string + ctx: Load + element: Constant + value: int = 0 + kind: NoneType = None + element: Call + func: Name + id: str = len + ctx: Load + args: list + element: Name + id: str = string + ctx: Load + keywords: list + element: Name + id: str = self + ctx: Load + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _groupindex + ctx: Load + keywords: list + keywords: list + type_comment: NoneType = None + element: AugAssign + target: Name + id: str = ret + ctx: Store + op: Add + value: Name + id: str = content + ctx: Load + orelse: list + element: AugAssign + target: Name + id: str = ret + ctx: Store + op: Add + value: Name + id: str = repl + ctx: Load + element: AugAssign + target: Name + id: str = totalMatch + ctx: Store + op: Add + value: Constant + value: int = 1 + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = lastEnd + ctx: Store + value: BinOp + left: Attribute + value: Name + id: str = m + ctx: Load + attr: str = index + ctx: Load + op: Add + right: Call + func: Name + id: str = len + ctx: Load + args: list + element: Subscript + value: Name + id: str = m + ctx: Load + slice: Constant + value: int = 0 + kind: NoneType = None + ctx: Load + keywords: list + type_comment: NoneType = None + orelse: list + element: If + test: Compare + left: Name + id: str = lastEnd + ctx: Load + ops: list + element: Lt + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + body: list + element: Return + value: Tuple + elts: list + element: Name + id: str = string + ctx: Load + element: Constant + value: int = 0 + kind: NoneType = None + ctx: Load + orelse: list + element: AugAssign + target: Name + id: str = ret + ctx: Store + op: Add + value: Subscript + value: Name + id: str = string + ctx: Load + slice: Slice + lower: Name + id: str = lastEnd + ctx: Load + upper: NoneType = None + step: NoneType = None + ctx: Load + element: Return + value: Tuple + elts: list + element: Name + id: str = ret + ctx: Load + element: Name + id: str = totalMatch + ctx: Load + ctx: Load + orelse: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: ClassDef + name: str = PyRegExp + bases: list + element: Name + id: str = Regex + ctx: Load + keywords: list + body: list + element: Expr + value: Constant + value: str = Python Regular Expression object which translates a python + regex syntax string into a format that can be passed to the + js regex engine. + + kind: NoneType = None + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = pyPattern + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = flags + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = + @pattern Python Regex String + @pattern flags bit flags passed by the user. + + kind: NoneType = None + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = jsTokens + ctx: Store + element: Name + id: str = inlineFlags + ctx: Store + element: Name + id: str = namedGroups + ctx: Store + element: Name + id: str = nCapGroups + ctx: Store + element: Name + id: str = n_splits + ctx: Store + ctx: Store + value: Call + func: Name + id: str = translate + ctx: Load + args: list + element: Name + id: str = pyPattern + ctx: Load + keywords: list + type_comment: NoneType = None + element: AugAssign + target: Name + id: str = flags + ctx: Store + op: BitOr + value: Name + id: str = inlineFlags + ctx: Load + element: Assign + targets: list + element: Name + id: str = jsPattern + ctx: Store + value: Call + func: Attribute + value: Constant + value: str = + kind: NoneType = None + attr: str = join + ctx: Load + args: list + element: Name + id: str = jsTokens + ctx: Load + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = Regex + ctx: Load + attr: str = __init__ + ctx: Load + args: list + element: Name + id: str = self + ctx: Load + element: Name + id: str = jsPattern + ctx: Load + element: Name + id: str = flags + ctx: Load + keywords: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _pypattern + ctx: Store + value: Name + id: str = pyPattern + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _nsplits + ctx: Store + value: Name + id: str = n_splits + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _jsTokens + ctx: Store + value: Name + id: str = jsTokens + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _capgroups + ctx: Store + value: Name + id: str = nCapGroups + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _groupindex + ctx: Store + value: Name + id: str = namedGroups + ctx: Load + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: FunctionDef + name: str = compile + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = pattern + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = flags + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + element: Constant + value: int = 0 + kind: NoneType = None + body: list + element: Expr + value: Constant + value: str = Compile a regex object and return + an object that can be used for further processing. + + kind: NoneType = None + element: If + test: BinOp + left: Name + id: str = flags + ctx: Load + op: BitAnd + right: Name + id: str = JSSTRICT + ctx: Load + body: list + element: Assign + targets: list + element: Name + id: str = p + ctx: Store + value: Call + func: Name + id: str = Regex + ctx: Load + args: list + element: Name + id: str = pattern + ctx: Load + element: Name + id: str = flags + ctx: Load + keywords: list + type_comment: NoneType = None + orelse: list + element: Assign + targets: list + element: Name + id: str = p + ctx: Store + value: Call + func: Name + id: str = PyRegExp + ctx: Load + args: list + element: Name + id: str = pattern + ctx: Load + element: Name + id: str = flags + ctx: Load + keywords: list + type_comment: NoneType = None + element: Return + value: Name + id: str = p + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = search + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = pattern + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = string + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = flags + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + element: Constant + value: int = 0 + kind: NoneType = None + body: list + element: Expr + value: Constant + value: str = Search a string for a particular matching pattern + + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = p + ctx: Store + value: Call + func: Name + id: str = compile + ctx: Load + args: list + element: Name + id: str = pattern + ctx: Load + element: Name + id: str = flags + ctx: Load + keywords: list + type_comment: NoneType = None + element: Return + value: Call + func: Attribute + value: Name + id: str = p + ctx: Load + attr: str = search + ctx: Load + args: list + element: Name + id: str = string + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = match + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = pattern + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = string + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = flags + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + element: Constant + value: int = 0 + kind: NoneType = None + body: list + element: Expr + value: Constant + value: str = Match a string for a particular pattern + + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = p + ctx: Store + value: Call + func: Name + id: str = compile + ctx: Load + args: list + element: Name + id: str = pattern + ctx: Load + element: Name + id: str = flags + ctx: Load + keywords: list + type_comment: NoneType = None + element: Return + value: Call + func: Attribute + value: Name + id: str = p + ctx: Load + attr: str = match + ctx: Load + args: list + element: Name + id: str = string + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = fullmatch + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = pattern + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = string + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = flags + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + element: Constant + value: int = 0 + kind: NoneType = None + body: list + element: Expr + value: Constant + value: str = + + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = p + ctx: Store + value: Call + func: Name + id: str = compile + ctx: Load + args: list + element: Name + id: str = pattern + ctx: Load + element: Name + id: str = flags + ctx: Load + keywords: list + type_comment: NoneType = None + element: Return + value: Call + func: Attribute + value: Name + id: str = p + ctx: Load + attr: str = fullmatch + ctx: Load + args: list + element: Name + id: str = string + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = split + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = pattern + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = string + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = maxsplit + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = flags + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + element: Constant + value: int = 0 + kind: NoneType = None + element: Constant + value: int = 0 + kind: NoneType = None + body: list + element: Expr + value: Constant + value: str = + + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = p + ctx: Store + value: Call + func: Name + id: str = compile + ctx: Load + args: list + element: Name + id: str = pattern + ctx: Load + element: Name + id: str = flags + ctx: Load + keywords: list + type_comment: NoneType = None + element: Return + value: Call + func: Attribute + value: Name + id: str = p + ctx: Load + attr: str = split + ctx: Load + args: list + element: Name + id: str = string + ctx: Load + element: Name + id: str = maxsplit + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = findall + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = pattern + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = string + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = flags + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + element: Constant + value: int = 0 + kind: NoneType = None + body: list + element: Expr + value: Constant + value: str = + + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = p + ctx: Store + value: Call + func: Name + id: str = compile + ctx: Load + args: list + element: Name + id: str = pattern + ctx: Load + element: Name + id: str = flags + ctx: Load + keywords: list + type_comment: NoneType = None + element: Return + value: Call + func: Attribute + value: Name + id: str = p + ctx: Load + attr: str = findall + ctx: Load + args: list + element: Name + id: str = string + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = finditer + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = pattern + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = string + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = flags + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + element: Constant + value: int = 0 + kind: NoneType = None + body: list + element: Expr + value: Constant + value: str = + + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = p + ctx: Store + value: Call + func: Name + id: str = compile + ctx: Load + args: list + element: Name + id: str = pattern + ctx: Load + element: Name + id: str = flags + ctx: Load + keywords: list + type_comment: NoneType = None + element: Return + value: Call + func: Attribute + value: Name + id: str = p + ctx: Load + attr: str = finditer + ctx: Load + args: list + element: Name + id: str = string + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = sub + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = pattern + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = repl + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = string + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = count + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = flags + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + element: Constant + value: int = 0 + kind: NoneType = None + element: Constant + value: int = 0 + kind: NoneType = None + body: list + element: Expr + value: Constant + value: str = + + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = p + ctx: Store + value: Call + func: Name + id: str = compile + ctx: Load + args: list + element: Name + id: str = pattern + ctx: Load + element: Name + id: str = flags + ctx: Load + keywords: list + type_comment: NoneType = None + element: Return + value: Call + func: Attribute + value: Name + id: str = p + ctx: Load + attr: str = sub + ctx: Load + args: list + element: Name + id: str = repl + ctx: Load + element: Name + id: str = string + ctx: Load + element: Name + id: str = count + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = subn + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = pattern + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = repl + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = string + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = count + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = flags + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + element: Constant + value: int = 0 + kind: NoneType = None + element: Constant + value: int = 0 + kind: NoneType = None + body: list + element: Expr + value: Constant + value: str = + + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = p + ctx: Store + value: Call + func: Name + id: str = compile + ctx: Load + args: list + element: Name + id: str = pattern + ctx: Load + element: Name + id: str = flags + ctx: Load + keywords: list + type_comment: NoneType = None + element: Return + value: Call + func: Attribute + value: Name + id: str = p + ctx: Load + attr: str = subn + ctx: Load + args: list + element: Name + id: str = repl + ctx: Load + element: Name + id: str = string + ctx: Load + element: Name + id: str = count + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = escape + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = string + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = Escape a passed string so that we can send it to the + regular expressions engine. + + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = ret + ctx: Store + value: Constant + value: NoneType = None + kind: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = replfunc + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = m + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: If + test: Compare + left: Subscript + value: Name + id: str = m + ctx: Load + slice: Constant + value: int = 0 + kind: NoneType = None + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = \ + kind: NoneType = None + body: list + element: Return + value: Constant + value: str = \\\\ + kind: NoneType = None + orelse: list + element: Return + value: BinOp + left: Constant + value: str = \\ + kind: NoneType = None + op: Add + right: Subscript + value: Name + id: str = m + ctx: Load + slice: Constant + value: int = 0 + kind: NoneType = None + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = js + kind: NoneType = None + element: Constant + value: str = {} + kind: NoneType = None + element: Constant + value: str = + var r = /[^A-Za-z:;\d]/g; + ret = string.replace(r, replfunc); + + kind: NoneType = None + keywords: list + element: If + test: Compare + left: Name + id: str = ret + ctx: Load + ops: list + element: IsNot + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Return + value: Name + id: str = ret + ctx: Load + orelse: list + element: Raise + exc: Call + func: Name + id: str = Exception + ctx: Load + args: list + element: Constant + value: str = Failed to escape the passed string + kind: NoneType = None + keywords: list + cause: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = purge + args: arguments + posonlyargs: list + args: list + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = I think this function is unnecessary but included to keep interface + consistent. + + kind: NoneType = None + element: Pass + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/reprtest.js b/transcrypt/development/automated_tests/transcrypt/__target__39/reprtest.js new file mode 100644 index 000000000..1147647c8 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/reprtest.js @@ -0,0 +1,195 @@ +// Transcrypt'ed from Python, 2021-05-14 15:01:24 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get run () {return run;}, set run (value) {run = value;}}); +var __name__ = 'reprtest'; +export var run = function (test) { + var v = 1; + test.check (repr (v)); + test.check (str (v)); + var v = 'asdf'; + test.check (repr (v)); + test.check (str (v)); + var v = true; + test.check (repr (v)); + test.check (str (v)); + var v = false; + test.check (repr (v)); + test.check (str (v)); + var v = 1.2; + test.check (repr (v)); + test.check (str (v)); + var v = -(31.2); + test.check (repr (v)); + test.check (str (v)); + var v = 6.3e-11; + test.check (repr (v)); + test.check (str (v)); + var v = 2.4e+38; + test.check (repr (v)); + test.check (str (v)); + var v = -(3.4e-22); + test.check (repr (v)); + test.check (str (v)); + var v = -(8.9e+33); + test.check (repr (v)); + test.check (str (v)); + var v = null; + test.check (repr (v)); + test.check (str (v)); + var v = [null]; + test.check (repr (v)); + test.check (str (v)); + var v = [null, null]; + test.check (repr (v)); + test.check (str (v)); + var v = [null, 1.02]; + test.check (repr (v)); + test.check (str (v)); + var v = [1, 3.000234]; + test.check (repr (v)); + test.check (str (v)); + var v = [1, 2, 3]; + test.check (repr (v)); + test.check (str (v)); + var v = [1.04, 2.03, 3.005]; + test.check (repr (v)); + test.check (str (v)); + var v = ['asdf', 2.00009, '1234']; + test.check (repr (v)); + test.check (str (v)); + var v = set ([1, 2, 3]); + test.check (repr (v)); + test.check (str (v)); + var v = set ([]); + test.check (repr (v)); + test.check (str (v)); + var v = tuple ([1, 2]); + test.check (repr (v)); + test.check (str (v)); + var v = tuple ([3.4, 4.4]); + test.check (repr (v)); + test.check (str (v)); + var v = tuple ([null, 5.32]); + test.check (repr (v)); + test.check (str (v)); + var v = dict ({}); + test.check (repr (v)); + test.check (str (v)); + var v = dict ({'a': 1}); + test.check (repr (v)); + test.check (str (v)); + var d = dict ({'asdf': 3.4}); + test.check (repr (d)); + test.check (str (d)); + var d = dict ({'qwer': 'qwerqwer qwerqwer'}); + test.check (repr (d)); + test.check (str (d)); + var d = dict ({'a9342': null}); + test.check (repr (d)); + test.check (str (d)); + var d = dict ({'nfdns': true}); + test.check (repr (d)); + test.check (str (d)); + var d = dict ({'alel;e;': false}); + test.check (repr (d)); + test.check (str (d)); + var d = dict ({'didi': [true, false, true]}); + test.check (repr (d)); + test.check (str (d)); + var d = dict ({'bibi': [1, 2, 3]}); + test.check (repr (d)); + test.check (str (d)); + var d = dict ({'gigi': ['Asdf', 'qwer', 'rewer']}); + test.check (repr (d)); + test.check (str (d)); + var d = dict ({'hihi': tuple (['esdf', 'qwer', 'rewer'])}); + test.check (repr (d)); + test.check (str (d)); + var d = dict ({'jiji': [null, null, null]}); + test.check (repr (d)); + test.check (str (d)); + var d = dict ({'jiji': tuple ([1.3, 3.4])}); + test.check (repr (d)); + test.check (str (d)); + var d = dict ({'jiji': dict ({'c': 4})}); + test.check (repr (d)); + test.check (str (d)); + var Test1 = __class__ ('Test1', [object], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self, val) { + self._val = val; + });}, + get __str__ () {return __get__ (this, function (self) { + return '[Test1 {}]'.format (self._val); + });}, + get __repr__ () {return __get__ (this, function (self) { + return str (self); + });} + }); + var Test2 = __class__ ('Test2', [object], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self, val) { + self._val = val; + });}, + get __repr__ () {return __get__ (this, function (self) { + return '[Test2 {},{}]'.format (self._val, self._val * 2); + });}, + get __str__ () {return __get__ (this, function (self) { + return repr (self); + });} + }); + var Test3 = __class__ ('Test3', [Test2], { + __module__: __name__, + get __str__ () {return __get__ (this, function (self) { + return '[Test3 {}]'.format (self._val); + });} + }); + var Test4 = __class__ ('Test4', [object], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self, val) { + self._val = val; + });}, + get __repr__ () {return __get__ (this, function (self) { + return '[Test4 {}]'.format (self._val); + });} + }); + var t1 = Test1 (2); + test.check (repr (t1)); + test.check (str (t1)); + var t1 = Test1 (4.5); + test.check (repr (t1)); + test.check (str (t1)); + var t1 = Test1 ('blarg'); + test.check (repr (t1)); + test.check (str (t1)); + var t1 = Test1 ([1, 2, 3]); + test.check (repr (t1)); + test.check (str (t1)); + var t2 = Test2 (3); + test.check (repr (t2)); + test.check (str (t2)); + var t2 = Test2 (7.6); + test.check (repr (t2)); + test.check (str (t2)); + var t2 = Test2 (-(8.9)); + test.check (repr (t2)); + test.check (str (t2)); + var t3 = Test3 (8); + test.check (repr (t3)); + test.check (str (t3)); + var t3 = Test3 (3.4); + test.check (repr (t3)); + test.check (str (t3)); + test.check (repr ([t1, t2, 3])); + var d = dict ({'irew': t1}); + test.check (repr (d)); + test.check (str (d)); + var d = dict ({'irew': [t1, t2, t3]}); + test.check (repr (d)); + test.check (str (d)); + var t4 = Test4 ('qwer'); + test.check (repr (t4)); + test.check (str (t4)); +}; + +//# sourceMappingURL=reprtest.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/reprtest.tree b/transcrypt/development/automated_tests/transcrypt/__target__39/reprtest.tree new file mode 100644 index 000000000..bbd7f1059 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/reprtest.tree @@ -0,0 +1,3018 @@ +file: Module + body: list + element: FunctionDef + name: str = run + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = test + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = Test the repr and string implementations + + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = v + ctx: Store + value: Constant + value: int = 1 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Name + id: str = v + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = v + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = v + ctx: Store + value: Constant + value: str = asdf + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Name + id: str = v + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = v + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = v + ctx: Store + value: Constant + value: bool = True + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Name + id: str = v + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = v + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = v + ctx: Store + value: Constant + value: bool = False + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Name + id: str = v + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = v + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = v + ctx: Store + value: Constant + value: float = 1.2 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Name + id: str = v + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = v + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = v + ctx: Store + value: UnaryOp + op: USub + operand: Constant + value: float = 31.2 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Name + id: str = v + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = v + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = v + ctx: Store + value: Constant + value: float = 6.3e-11 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Name + id: str = v + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = v + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = v + ctx: Store + value: Constant + value: float = 2.4e+38 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Name + id: str = v + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = v + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = v + ctx: Store + value: UnaryOp + op: USub + operand: Constant + value: float = 3.4e-22 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Name + id: str = v + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = v + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = v + ctx: Store + value: UnaryOp + op: USub + operand: Constant + value: float = 8.9e+33 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Name + id: str = v + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = v + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = v + ctx: Store + value: Constant + value: NoneType = None + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Name + id: str = v + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = v + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = v + ctx: Store + value: List + elts: list + element: Constant + value: NoneType = None + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Name + id: str = v + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = v + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = v + ctx: Store + value: List + elts: list + element: Constant + value: NoneType = None + kind: NoneType = None + element: Constant + value: NoneType = None + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Name + id: str = v + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = v + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = v + ctx: Store + value: List + elts: list + element: Constant + value: NoneType = None + kind: NoneType = None + element: Constant + value: float = 1.02 + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Name + id: str = v + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = v + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = v + ctx: Store + value: List + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: float = 3.000234 + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Name + id: str = v + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = v + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = v + ctx: Store + value: List + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Name + id: str = v + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = v + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = v + ctx: Store + value: List + elts: list + element: Constant + value: float = 1.04 + kind: NoneType = None + element: Constant + value: float = 2.03 + kind: NoneType = None + element: Constant + value: float = 3.005 + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Name + id: str = v + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = v + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = v + ctx: Store + value: List + elts: list + element: Constant + value: str = asdf + kind: NoneType = None + element: Constant + value: float = 2.00009 + kind: NoneType = None + element: Constant + value: str = 1234 + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Name + id: str = v + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = v + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = v + ctx: Store + value: Call + func: Name + id: str = set + ctx: Load + args: list + element: List + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Name + id: str = v + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = v + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = v + ctx: Store + value: Call + func: Name + id: str = set + ctx: Load + args: list + element: List + elts: list + ctx: Load + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Name + id: str = v + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = v + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = v + ctx: Store + value: Tuple + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Name + id: str = v + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = v + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = v + ctx: Store + value: Tuple + elts: list + element: Constant + value: float = 3.4 + kind: NoneType = None + element: Constant + value: float = 4.4 + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Name + id: str = v + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = v + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = v + ctx: Store + value: Tuple + elts: list + element: Constant + value: NoneType = None + kind: NoneType = None + element: Constant + value: float = 5.32 + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Name + id: str = v + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = v + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = v + ctx: Store + value: Dict + keys: list + values: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Name + id: str = v + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = v + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = v + ctx: Store + value: Dict + keys: list + element: Constant + value: str = a + kind: NoneType = None + values: list + element: Constant + value: int = 1 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Name + id: str = v + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = v + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = d + ctx: Store + value: Dict + keys: list + element: Constant + value: str = asdf + kind: NoneType = None + values: list + element: Constant + value: float = 3.4 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Name + id: str = d + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = d + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = d + ctx: Store + value: Dict + keys: list + element: Constant + value: str = qwer + kind: NoneType = None + values: list + element: Constant + value: str = qwerqwer qwerqwer + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Name + id: str = d + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = d + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = d + ctx: Store + value: Dict + keys: list + element: Constant + value: str = a9342 + kind: NoneType = None + values: list + element: Constant + value: NoneType = None + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Name + id: str = d + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = d + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = d + ctx: Store + value: Dict + keys: list + element: Constant + value: str = nfdns + kind: NoneType = None + values: list + element: Constant + value: bool = True + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Name + id: str = d + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = d + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = d + ctx: Store + value: Dict + keys: list + element: Constant + value: str = alel;e; + kind: NoneType = None + values: list + element: Constant + value: bool = False + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Name + id: str = d + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = d + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = d + ctx: Store + value: Dict + keys: list + element: Constant + value: str = didi + kind: NoneType = None + values: list + element: List + elts: list + element: Constant + value: bool = True + kind: NoneType = None + element: Constant + value: bool = False + kind: NoneType = None + element: Constant + value: bool = True + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Name + id: str = d + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = d + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = d + ctx: Store + value: Dict + keys: list + element: Constant + value: str = bibi + kind: NoneType = None + values: list + element: List + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Name + id: str = d + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = d + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = d + ctx: Store + value: Dict + keys: list + element: Constant + value: str = gigi + kind: NoneType = None + values: list + element: List + elts: list + element: Constant + value: str = Asdf + kind: NoneType = None + element: Constant + value: str = qwer + kind: NoneType = None + element: Constant + value: str = rewer + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Name + id: str = d + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = d + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = d + ctx: Store + value: Dict + keys: list + element: Constant + value: str = hihi + kind: NoneType = None + values: list + element: Tuple + elts: list + element: Constant + value: str = esdf + kind: NoneType = None + element: Constant + value: str = qwer + kind: NoneType = None + element: Constant + value: str = rewer + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Name + id: str = d + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = d + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = d + ctx: Store + value: Dict + keys: list + element: Constant + value: str = jiji + kind: NoneType = None + values: list + element: List + elts: list + element: Constant + value: NoneType = None + kind: NoneType = None + element: Constant + value: NoneType = None + kind: NoneType = None + element: Constant + value: NoneType = None + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Name + id: str = d + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = d + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = d + ctx: Store + value: Dict + keys: list + element: Constant + value: str = jiji + kind: NoneType = None + values: list + element: Tuple + elts: list + element: Constant + value: float = 1.3 + kind: NoneType = None + element: Constant + value: float = 3.4 + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Name + id: str = d + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = d + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = d + ctx: Store + value: Dict + keys: list + element: Constant + value: str = jiji + kind: NoneType = None + values: list + element: Dict + keys: list + element: Constant + value: str = c + kind: NoneType = None + values: list + element: Constant + value: int = 4 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Name + id: str = d + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = d + ctx: Load + keywords: list + keywords: list + element: ClassDef + name: str = Test1 + bases: list + element: Name + id: str = object + ctx: Load + keywords: list + body: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = val + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _val + ctx: Store + value: Name + id: str = val + ctx: Load + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __str__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Call + func: Attribute + value: Constant + value: str = [Test1 {}] + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _val + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __repr__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = self + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: ClassDef + name: str = Test2 + bases: list + element: Name + id: str = object + ctx: Load + keywords: list + body: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = val + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _val + ctx: Store + value: Name + id: str = val + ctx: Load + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __repr__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Call + func: Attribute + value: Constant + value: str = [Test2 {},{}] + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _val + ctx: Load + element: BinOp + left: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _val + ctx: Load + op: Mult + right: Constant + value: int = 2 + kind: NoneType = None + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __str__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Name + id: str = self + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: ClassDef + name: str = Test3 + bases: list + element: Name + id: str = Test2 + ctx: Load + keywords: list + body: list + element: FunctionDef + name: str = __str__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Call + func: Attribute + value: Constant + value: str = [Test3 {}] + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _val + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: ClassDef + name: str = Test4 + bases: list + element: Name + id: str = object + ctx: Load + keywords: list + body: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = val + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _val + ctx: Store + value: Name + id: str = val + ctx: Load + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __repr__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Call + func: Attribute + value: Constant + value: str = [Test4 {}] + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = _val + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: Assign + targets: list + element: Name + id: str = t1 + ctx: Store + value: Call + func: Name + id: str = Test1 + ctx: Load + args: list + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Name + id: str = t1 + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = t1 + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = t1 + ctx: Store + value: Call + func: Name + id: str = Test1 + ctx: Load + args: list + element: Constant + value: float = 4.5 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Name + id: str = t1 + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = t1 + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = t1 + ctx: Store + value: Call + func: Name + id: str = Test1 + ctx: Load + args: list + element: Constant + value: str = blarg + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Name + id: str = t1 + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = t1 + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = t1 + ctx: Store + value: Call + func: Name + id: str = Test1 + ctx: Load + args: list + element: List + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Name + id: str = t1 + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = t1 + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = t2 + ctx: Store + value: Call + func: Name + id: str = Test2 + ctx: Load + args: list + element: Constant + value: int = 3 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Name + id: str = t2 + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = t2 + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = t2 + ctx: Store + value: Call + func: Name + id: str = Test2 + ctx: Load + args: list + element: Constant + value: float = 7.6 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Name + id: str = t2 + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = t2 + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = t2 + ctx: Store + value: Call + func: Name + id: str = Test2 + ctx: Load + args: list + element: UnaryOp + op: USub + operand: Constant + value: float = 8.9 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Name + id: str = t2 + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = t2 + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = t3 + ctx: Store + value: Call + func: Name + id: str = Test3 + ctx: Load + args: list + element: Constant + value: int = 8 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Name + id: str = t3 + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = t3 + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = t3 + ctx: Store + value: Call + func: Name + id: str = Test3 + ctx: Load + args: list + element: Constant + value: float = 3.4 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Name + id: str = t3 + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = t3 + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = repr + ctx: Load + args: list + element: List + elts: list + element: Name + id: str = t1 + ctx: Load + element: Name + id: str = t2 + ctx: Load + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = d + ctx: Store + value: Dict + keys: list + element: Constant + value: str = irew + kind: NoneType = None + values: list + element: Name + id: str = t1 + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Name + id: str = d + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = d + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = d + ctx: Store + value: Dict + keys: list + element: Constant + value: str = irew + kind: NoneType = None + values: list + element: List + elts: list + element: Name + id: str = t1 + ctx: Load + element: Name + id: str = t2 + ctx: Load + element: Name + id: str = t3 + ctx: Load + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Name + id: str = d + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = d + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = t4 + ctx: Store + value: Call + func: Name + id: str = Test4 + ctx: Load + args: list + element: Constant + value: str = qwer + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = repr + ctx: Load + args: list + element: Name + id: str = t4 + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = test + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = t4 + ctx: Load + keywords: list + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/set_comprehensions.js b/transcrypt/development/automated_tests/transcrypt/__target__39/set_comprehensions.js new file mode 100644 index 000000000..c0f5f93b1 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/set_comprehensions.js @@ -0,0 +1,51 @@ +// Transcrypt'ed from Python, 2021-05-14 15:01:24 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get run () {return run;}, set run (value) {run = value;}}); +var __name__ = 'set_comprehensions'; +export var run = function (autoTester) { + var even = (function () { + var __accu0__ = []; + for (var i of [0, 9, 1, 7, 2, 8, 3, 6, 4, 5]) { + __accu0__.append (2 * i); + } + return set (__accu0__); + }) (); + autoTester.check (even); + var odd = (function () { + var __accu0__ = []; + for (var i of [5, 6, 7, 8, 9, 4, 3, 1, 2, 0]) { + __accu0__.append (2 * i + 1); + } + return set (__accu0__); + }) (); + autoTester.check (odd); + even.add (12); + even.add (12); + autoTester.check (even); + even.discard (12); + even.discard (12); + autoTester.check (even); + var uni = even.union (odd); + autoTester.check (uni); + autoTester.check (odd.isdisjoint (even)); + autoTester.check (uni.isdisjoint (even)); + autoTester.check (even.issuperset (uni)); + autoTester.check (uni.issuperset (even)); + autoTester.check (even.issubset (uni)); + autoTester.check (uni.issubset (even)); + var first = new set ([4, 1, 0, 5, 3, 2, 6]); + autoTester.check (first); + var second = new set ([3, 5, 6, 9, 4, 7, 8]); + autoTester.check (second); + var inter = first.intersection (second); + autoTester.check (inter); + var diff = first.difference (second); + autoTester.check (diff); + var symDiff = first.symmetric_difference (second); + autoTester.check (symDiff); + var aSet = new set ([200, 4, 5, 100]); + aSet.py_update (first, symDiff, second); + autoTester.check (aSet); +}; + +//# sourceMappingURL=set_comprehensions.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/set_comprehensions.tree b/transcrypt/development/automated_tests/transcrypt/__target__39/set_comprehensions.tree new file mode 100644 index 000000000..601b104fb --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/set_comprehensions.tree @@ -0,0 +1,632 @@ +file: Module + body: list + element: FunctionDef + name: str = run + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = autoTester + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Name + id: str = even + ctx: Store + value: SetComp + elt: BinOp + left: Constant + value: int = 2 + kind: NoneType = None + op: Mult + right: Name + id: str = i + ctx: Load + generators: list + element: comprehension + target: Name + id: str = i + ctx: Store + iter: List + elts: list + element: Constant + value: int = 0 + kind: NoneType = None + element: Constant + value: int = 9 + kind: NoneType = None + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 7 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 8 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + element: Constant + value: int = 6 + kind: NoneType = None + element: Constant + value: int = 4 + kind: NoneType = None + element: Constant + value: int = 5 + kind: NoneType = None + ctx: Load + ifs: list + is_async: int = 0 + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = even + ctx: Load + keywords: list + element: Assign + targets: list + element: Name + id: str = odd + ctx: Store + value: SetComp + elt: BinOp + left: BinOp + left: Constant + value: int = 2 + kind: NoneType = None + op: Mult + right: Name + id: str = i + ctx: Load + op: Add + right: Constant + value: int = 1 + kind: NoneType = None + generators: list + element: comprehension + target: Name + id: str = i + ctx: Store + iter: List + elts: list + element: Constant + value: int = 5 + kind: NoneType = None + element: Constant + value: int = 6 + kind: NoneType = None + element: Constant + value: int = 7 + kind: NoneType = None + element: Constant + value: int = 8 + kind: NoneType = None + element: Constant + value: int = 9 + kind: NoneType = None + element: Constant + value: int = 4 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 0 + kind: NoneType = None + ctx: Load + ifs: list + is_async: int = 0 + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = odd + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = even + ctx: Load + attr: str = add + ctx: Load + args: list + element: Constant + value: int = 12 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = even + ctx: Load + attr: str = add + ctx: Load + args: list + element: Constant + value: int = 12 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = even + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = even + ctx: Load + attr: str = discard + ctx: Load + args: list + element: Constant + value: int = 12 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = even + ctx: Load + attr: str = discard + ctx: Load + args: list + element: Constant + value: int = 12 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = even + ctx: Load + keywords: list + element: Assign + targets: list + element: Name + id: str = uni + ctx: Store + value: Call + func: Attribute + value: Name + id: str = even + ctx: Load + attr: str = union + ctx: Load + args: list + element: Name + id: str = odd + ctx: Load + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = uni + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = odd + ctx: Load + attr: str = isdisjoint + ctx: Load + args: list + element: Name + id: str = even + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = uni + ctx: Load + attr: str = isdisjoint + ctx: Load + args: list + element: Name + id: str = even + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = even + ctx: Load + attr: str = issuperset + ctx: Load + args: list + element: Name + id: str = uni + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = uni + ctx: Load + attr: str = issuperset + ctx: Load + args: list + element: Name + id: str = even + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = even + ctx: Load + attr: str = issubset + ctx: Load + args: list + element: Name + id: str = uni + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = uni + ctx: Load + attr: str = issubset + ctx: Load + args: list + element: Name + id: str = even + ctx: Load + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = first + ctx: Store + value: Set + elts: list + element: Constant + value: int = 4 + kind: NoneType = None + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 0 + kind: NoneType = None + element: Constant + value: int = 5 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 6 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = first + ctx: Load + keywords: list + element: Assign + targets: list + element: Name + id: str = second + ctx: Store + value: Set + elts: list + element: Constant + value: int = 3 + kind: NoneType = None + element: Constant + value: int = 5 + kind: NoneType = None + element: Constant + value: int = 6 + kind: NoneType = None + element: Constant + value: int = 9 + kind: NoneType = None + element: Constant + value: int = 4 + kind: NoneType = None + element: Constant + value: int = 7 + kind: NoneType = None + element: Constant + value: int = 8 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = second + ctx: Load + keywords: list + element: Assign + targets: list + element: Name + id: str = inter + ctx: Store + value: Call + func: Attribute + value: Name + id: str = first + ctx: Load + attr: str = intersection + ctx: Load + args: list + element: Name + id: str = second + ctx: Load + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = inter + ctx: Load + keywords: list + element: Assign + targets: list + element: Name + id: str = diff + ctx: Store + value: Call + func: Attribute + value: Name + id: str = first + ctx: Load + attr: str = difference + ctx: Load + args: list + element: Name + id: str = second + ctx: Load + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = diff + ctx: Load + keywords: list + element: Assign + targets: list + element: Name + id: str = symDiff + ctx: Store + value: Call + func: Attribute + value: Name + id: str = first + ctx: Load + attr: str = symmetric_difference + ctx: Load + args: list + element: Name + id: str = second + ctx: Load + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = symDiff + ctx: Load + keywords: list + element: Assign + targets: list + element: Name + id: str = aSet + ctx: Store + value: Set + elts: list + element: Constant + value: int = 200 + kind: NoneType = None + element: Constant + value: int = 4 + kind: NoneType = None + element: Constant + value: int = 5 + kind: NoneType = None + element: Constant + value: int = 100 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = aSet + ctx: Load + attr: str = update + ctx: Load + args: list + element: Name + id: str = first + ctx: Load + element: Name + id: str = symDiff + ctx: Load + element: Name + id: str = second + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = aSet + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/simple_and_augmented_assignment.js b/transcrypt/development/automated_tests/transcrypt/__target__39/simple_and_augmented_assignment.js new file mode 100644 index 000000000..f2dc5c961 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/simple_and_augmented_assignment.js @@ -0,0 +1,53 @@ +// Transcrypt'ed from Python, 2021-05-14 15:01:24 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +var __all__ = dict ({get A () {return A;}, set A (value) {A = value;}, get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get a () {return a;}, set a (value) {a = value;}, get run () {return run;}, set run (value) {run = value;}}); +var __name__ = 'simple_and_augmented_assignment'; +export var A = __class__ ('A', [object], { + __module__: __name__, + get __init__ () {return __get__ (this, function (self) { + self.i = 0; + });}, + get f () {return __get__ (this, function (self) { + return self.i; + });} +}); +export var a = A (); +export var run = function (autoTester) { + var x = 3; + var y = 5; + var z = x + y; + autoTester.check (z); + var l = [1, 2, 3]; + autoTester.check (l); + x++; + autoTester.check (x); + x++; + autoTester.check (x); + x++; + autoTester.check (x); + y--; + autoTester.check (y); + y--; + autoTester.check (y); + y--; + autoTester.check (y); + x += -(3); + autoTester.check (x); + x += 6; + autoTester.check (x); + y -= 3; + autoTester.check (y); + autoTester.check (l); + x += y; + y += x; + autoTester.check (x, y); + var f = a.f; + a.i++; + autoTester.check (f ()); + a.i += 10; + autoTester.check (f ()); + a.i += a.i; + autoTester.check (f ()); +}; + +//# sourceMappingURL=simple_and_augmented_assignment.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/simple_and_augmented_assignment.tree b/transcrypt/development/automated_tests/transcrypt/__target__39/simple_and_augmented_assignment.tree new file mode 100644 index 000000000..4e4473739 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/simple_and_augmented_assignment.tree @@ -0,0 +1,547 @@ +file: Module + body: list + element: ClassDef + name: str = A + bases: list + keywords: list + body: list + element: FunctionDef + name: str = __init__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Attribute + value: Name + id: str = self + ctx: Load + attr: str = i + ctx: Store + value: Constant + value: int = 0 + kind: NoneType = None + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = f + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = i + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: Assign + targets: list + element: Name + id: str = a + ctx: Store + value: Call + func: Name + id: str = A + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: FunctionDef + name: str = run + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = autoTester + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Name + id: str = x + ctx: Store + value: Constant + value: int = 3 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = y + ctx: Store + value: Constant + value: int = 5 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = z + ctx: Store + value: BinOp + left: Name + id: str = x + ctx: Load + op: Add + right: Name + id: str = y + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = z + ctx: Load + keywords: list + element: Assign + targets: list + element: Name + id: str = l + ctx: Store + value: List + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Subscript + value: Name + id: str = l + ctx: Load + slice: Constant + value: int = 1 + kind: NoneType = None + ctx: Store + value: Subscript + value: Name + id: str = l + ctx: Load + slice: Constant + value: int = 2 + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = l + ctx: Load + keywords: list + element: AugAssign + target: Name + id: str = x + ctx: Store + op: Add + value: Constant + value: int = 1 + kind: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = x + ctx: Load + keywords: list + element: AugAssign + target: Name + id: str = x + ctx: Store + op: Add + value: UnaryOp + op: UAdd + operand: Constant + value: int = 1 + kind: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = x + ctx: Load + keywords: list + element: AugAssign + target: Name + id: str = x + ctx: Store + op: Sub + value: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = x + ctx: Load + keywords: list + element: AugAssign + target: Name + id: str = y + ctx: Store + op: Sub + value: Constant + value: int = 1 + kind: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = y + ctx: Load + keywords: list + element: AugAssign + target: Name + id: str = y + ctx: Store + op: Sub + value: UnaryOp + op: UAdd + operand: Constant + value: int = 1 + kind: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = y + ctx: Load + keywords: list + element: AugAssign + target: Name + id: str = y + ctx: Store + op: Add + value: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = y + ctx: Load + keywords: list + element: AugAssign + target: Name + id: str = x + ctx: Store + op: Add + value: UnaryOp + op: USub + operand: Constant + value: int = 3 + kind: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = x + ctx: Load + keywords: list + element: AugAssign + target: Name + id: str = x + ctx: Store + op: Add + value: Constant + value: int = 6 + kind: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = x + ctx: Load + keywords: list + element: AugAssign + target: Name + id: str = y + ctx: Store + op: Sub + value: Constant + value: int = 3 + kind: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = y + ctx: Load + keywords: list + element: AugAssign + target: Subscript + value: Name + id: str = l + ctx: Load + slice: Constant + value: int = 1 + kind: NoneType = None + ctx: Store + op: Add + value: Subscript + value: Name + id: str = l + ctx: Load + slice: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = l + ctx: Load + keywords: list + element: AugAssign + target: Name + id: str = x + ctx: Store + op: Add + value: Name + id: str = y + ctx: Load + element: AugAssign + target: Name + id: str = y + ctx: Store + op: Add + value: Name + id: str = x + ctx: Load + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = x + ctx: Load + element: Name + id: str = y + ctx: Load + keywords: list + element: Assign + targets: list + element: Name + id: str = f + ctx: Store + value: Attribute + value: Name + id: str = a + ctx: Load + attr: str = f + ctx: Load + type_comment: NoneType = None + element: AugAssign + target: Attribute + value: Name + id: str = a + ctx: Load + attr: str = i + ctx: Store + op: Add + value: Constant + value: int = 1 + kind: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = f + ctx: Load + args: list + keywords: list + keywords: list + element: AugAssign + target: Attribute + value: Name + id: str = a + ctx: Load + attr: str = i + ctx: Store + op: Add + value: Constant + value: int = 10 + kind: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = f + ctx: Load + args: list + keywords: list + keywords: list + element: AugAssign + target: Attribute + value: Name + id: str = a + ctx: Load + attr: str = i + ctx: Store + op: Add + value: Attribute + value: Name + id: str = a + ctx: Load + attr: str = i + ctx: Load + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = f + ctx: Load + args: list + keywords: list + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/string_format.js b/transcrypt/development/automated_tests/transcrypt/__target__39/string_format.js new file mode 100644 index 000000000..81f7c8e93 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/string_format.js @@ -0,0 +1,74 @@ +// Transcrypt'ed from Python, 2021-05-14 15:01:24 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get run () {return run;}, set run (value) {run = value;}}); +var __name__ = 'string_format'; +export var run = function (autoTester) { + autoTester.check ('Numbers:'); + autoTester.check ('int: {:06d}'.format (18)); + autoTester.check ('int: {:05}'.format (123)); + autoTester.check ('int: {:2d}'.format (180)); + autoTester.check ('int: {: 4d} {: 4d}'.format (75, -(8))); + autoTester.check ('int: {:<8d}'.format (55)); + autoTester.check ('int: {:*>8d}'.format (55)); + autoTester.check ('int: {:8,d}'.format (5555555)); + autoTester.check ('bin: {:b}'.format (325)); + autoTester.check ('bin: {:b}'.format (-(15))); + autoTester.check ('bin: {:010b}'.format (-(15))); + autoTester.check ('bin: {:#010b}'.format (-(15))); + autoTester.check ('oct: {:+010o}'.format (234)); + autoTester.check ('oct: {:#o}'.format (234)); + autoTester.check ('hex: {:+010x}'.format (234)); + autoTester.check ('hex: {:X}'.format (-(234))); + autoTester.check ('hex: {:#10X}'.format (-(234))); + autoTester.check ('chr: {:010c}'.format (64)); + autoTester.check ('float: {:f}'.format (-(1554.1556565))); + autoTester.check ('float: {:#f}'.format (-(1553))); + autoTester.check ('float: {:#.0f}'.format (-(1552))); + autoTester.check ('float: {:.2f}'.format (105.1528)); + autoTester.check ('float: {:.8f}'.format (0.1528)); + autoTester.check ('float: {:.2f}'.format (float ('-inf'))); + autoTester.check ('float: {:f}'.format (float ('nan'))); + autoTester.check ('pct: {:.4%}'.format (1 / 3)); + autoTester.check ('exp: {:e}'.format (-(17.845265568))); + autoTester.check ('exp: {:#e}'.format (-(17.0))); + autoTester.check ('exp: {:015.4e}'.format (17.845265568)); + autoTester.check ('exp: {:E}'.format (165665564654686.12)); + autoTester.check ('gen: {:g}'.format (165665564654686.12)); + autoTester.check ('gen: {:g}'.format (1656)); + autoTester.check ('gen: {:g}'.format (1.123485574)); + autoTester.check ('gen: {:.8g}'.format (148560.123485574)); + autoTester.check ('gen: {:.4}'.format (1485.1)); + autoTester.check ('gen: {}'.format (1485.1)); + autoTester.check ('gen: {:.8}'.format (1485.1)); + autoTester.check ('gen: {:.8g}'.format (1485.1)); + autoTester.check ('Strings:'); + autoTester.check ('str: {:20s}'.format ('abc')); + autoTester.check ('str: {:*>10}'.format ('abc')); + autoTester.check ('{1}{0}{1}'.format ('kad', 'abra')); + autoTester.check ('{1}{0!r}{1}'.format ('kad', 'abra')); + autoTester.check ('{} and {}'.format ('dog', 'cat')); + autoTester.check ('{:*^13}'.format ('centered')); + var a = [15.846, 16.7856, 18.8563]; + var B = __class__ ('B', [object], { + __module__: __name__, + get __repr__ () {return __get__ (this, function (self) { + return self.prop; + });}, + get __format__ () {return __get__ (this, function (self, fmt_spec) { + return (fmt_spec + ' ') + self.prop; + });} + }); + var b = B (); + b.prop = 'object attribute'; + var c = dict ({'somekey': 'key value'}); + autoTester.check ('{a[1]:.2f} {d} {b.prop} {c[somekey]}'.format (__kwargtrans__ ({a: a, b: b, c: c, d: 'test'}))); + autoTester.check ('Other:'); + autoTester.check ('{}'.format (true)); + autoTester.check ('{:*>10}'.format (true)); + autoTester.check ('{!r:*^20}'.format (b)); + autoTester.check ('{:custom_format}'.format (b)); + autoTester.check ('{}'.format (a)); + autoTester.check ('{}'.format (c)); +}; + +//# sourceMappingURL=string_format.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/string_format.tree b/transcrypt/development/automated_tests/transcrypt/__target__39/string_format.tree new file mode 100644 index 000000000..fdc43342a --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/string_format.tree @@ -0,0 +1,1355 @@ +file: Module + body: list + element: FunctionDef + name: str = run + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = autoTester + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Numbers: + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = int: {:06d} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Constant + value: int = 18 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = int: {:05} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Constant + value: int = 123 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = int: {:2d} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Constant + value: int = 180 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = int: {: 4d} {: 4d} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Constant + value: int = 75 + kind: NoneType = None + element: UnaryOp + op: USub + operand: Constant + value: int = 8 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = int: {:<8d} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Constant + value: int = 55 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = int: {:*>8d} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Constant + value: int = 55 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = int: {:8,d} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Constant + value: int = 5555555 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = bin: {:b} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Constant + value: int = 325 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = bin: {:b} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: UnaryOp + op: USub + operand: Constant + value: int = 15 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = bin: {:010b} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: UnaryOp + op: USub + operand: Constant + value: int = 15 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = bin: {:#010b} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: UnaryOp + op: USub + operand: Constant + value: int = 15 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = oct: {:+010o} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Constant + value: int = 234 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = oct: {:#o} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Constant + value: int = 234 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = hex: {:+010x} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Constant + value: int = 234 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = hex: {:X} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: UnaryOp + op: USub + operand: Constant + value: int = 234 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = hex: {:#10X} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: UnaryOp + op: USub + operand: Constant + value: int = 234 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = chr: {:010c} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Constant + value: int = 64 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = float: {:f} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: UnaryOp + op: USub + operand: Constant + value: float = 1554.1556565 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = float: {:#f} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: UnaryOp + op: USub + operand: Constant + value: int = 1553 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = float: {:#.0f} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: UnaryOp + op: USub + operand: Constant + value: int = 1552 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = float: {:.2f} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Constant + value: float = 105.1528 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = float: {:.8f} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Constant + value: float = 0.1528 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = float: {:.2f} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Call + func: Name + id: str = float + ctx: Load + args: list + element: Constant + value: str = -inf + kind: NoneType = None + keywords: list + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = float: {:f} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Call + func: Name + id: str = float + ctx: Load + args: list + element: Constant + value: str = nan + kind: NoneType = None + keywords: list + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = pct: {:.4%} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: BinOp + left: Constant + value: int = 1 + kind: NoneType = None + op: Div + right: Constant + value: int = 3 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = exp: {:e} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: UnaryOp + op: USub + operand: Constant + value: float = 17.845265568 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = exp: {:#e} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: UnaryOp + op: USub + operand: Constant + value: float = 17.0 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = exp: {:015.4e} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Constant + value: float = 17.845265568 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = exp: {:E} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Constant + value: float = 165665564654686.12 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = gen: {:g} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Constant + value: float = 165665564654686.12 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = gen: {:g} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Constant + value: int = 1656 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = gen: {:g} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Constant + value: float = 1.123485574 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = gen: {:.8g} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Constant + value: float = 148560.123485574 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = gen: {:.4} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Constant + value: float = 1485.1 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = gen: {} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Constant + value: float = 1485.1 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = gen: {:.8} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Constant + value: float = 1485.1 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = gen: {:.8g} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Constant + value: float = 1485.1 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Strings: + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = str: {:20s} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Constant + value: str = abc + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = str: {:*>10} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Constant + value: str = abc + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = {1}{0}{1} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Constant + value: str = kad + kind: NoneType = None + element: Constant + value: str = abra + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = {1}{0!r}{1} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Constant + value: str = kad + kind: NoneType = None + element: Constant + value: str = abra + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = {} and {} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Constant + value: str = dog + kind: NoneType = None + element: Constant + value: str = cat + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = {:*^13} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Constant + value: str = centered + kind: NoneType = None + keywords: list + keywords: list + element: Assign + targets: list + element: Name + id: str = a + ctx: Store + value: List + elts: list + element: Constant + value: float = 15.846 + kind: NoneType = None + element: Constant + value: float = 16.7856 + kind: NoneType = None + element: Constant + value: float = 18.8563 + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: ClassDef + name: str = B + bases: list + keywords: list + body: list + element: FunctionDef + name: str = __repr__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Attribute + value: Name + id: str = self + ctx: Load + attr: str = prop + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __format__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = fmt_spec + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: BinOp + left: BinOp + left: Name + id: str = fmt_spec + ctx: Load + op: Add + right: Constant + value: str = + kind: NoneType = None + op: Add + right: Attribute + value: Name + id: str = self + ctx: Load + attr: str = prop + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: Assign + targets: list + element: Name + id: str = b + ctx: Store + value: Call + func: Name + id: str = B + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Attribute + value: Name + id: str = b + ctx: Load + attr: str = prop + ctx: Store + value: Constant + value: str = object attribute + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = c + ctx: Store + value: Dict + keys: list + element: Constant + value: str = somekey + kind: NoneType = None + values: list + element: Constant + value: str = key value + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = {a[1]:.2f} {d} {b.prop} {c[somekey]} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + keywords: list + element: keyword + arg: str = a + value: Name + id: str = a + ctx: Load + element: keyword + arg: str = b + value: Name + id: str = b + ctx: Load + element: keyword + arg: str = c + value: Name + id: str = c + ctx: Load + element: keyword + arg: str = d + value: Constant + value: str = test + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Other: + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = {} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Constant + value: bool = True + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = {:*>10} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Constant + value: bool = True + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = {!r:*^20} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Name + id: str = b + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = {:custom_format} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Name + id: str = b + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = {} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Name + id: str = a + ctx: Load + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Attribute + value: Constant + value: str = {} + kind: NoneType = None + attr: str = format + ctx: Load + args: list + element: Name + id: str = c + ctx: Load + keywords: list + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/time.js b/transcrypt/development/automated_tests/transcrypt/__target__39/time.js new file mode 100644 index 000000000..d2d9632fa --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/time.js @@ -0,0 +1,413 @@ +// Transcrypt'ed from Python, 2021-05-14 15:01:25 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +var __all__ = dict ({get __adapt__ () {return __adapt__;}, set __adapt__ (value) {__adapt__ = value;}, get __d () {return __d;}, set __d (value) {__d = value;}, get __date () {return __date;}, set __date (value) {__date = value;}, get __debugGetLanguage () {return __debugGetLanguage;}, set __debugGetLanguage (value) {__debugGetLanguage = value;}, get __jan_jun_tz () {return __jan_jun_tz;}, set __jan_jun_tz (value) {__jan_jun_tz = value;}, get __language () {return __language;}, set __language (value) {__language = value;}, get __lu () {return __lu;}, set __lu (value) {__lu = value;}, get __months () {return __months;}, set __months (value) {__months = value;}, get __months_long () {return __months_long;}, set __months_long (value) {__months_long = value;}, get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get __now () {return __now;}, set __now (value) {__now = value;}, get __tzn () {return __tzn;}, set __tzn (value) {__tzn = value;}, get __weekdays () {return __weekdays;}, set __weekdays (value) {__weekdays = value;}, get __weekdays_long () {return __weekdays_long;}, set __weekdays_long (value) {__weekdays_long = value;}, get _day_of_year () {return _day_of_year;}, set _day_of_year (value) {_day_of_year = value;}, get _daylight () {return _daylight;}, set _daylight (value) {_daylight = value;}, get _daylight_in_effect () {return _daylight_in_effect;}, set _daylight_in_effect (value) {_daylight_in_effect = value;}, get _is_leap () {return _is_leap;}, set _is_leap (value) {_is_leap = value;}, get _jj () {return _jj;}, set _jj (value) {_jj = value;}, get _local_time_tuple () {return _local_time_tuple;}, set _local_time_tuple (value) {_local_time_tuple = value;}, get _lsplit () {return _lsplit;}, set _lsplit (value) {_lsplit = value;}, get _timezone () {return _timezone;}, set _timezone (value) {_timezone = value;}, get _tzname () {return _tzname;}, set _tzname (value) {_tzname = value;}, get _utc_time_tuple () {return _utc_time_tuple;}, set _utc_time_tuple (value) {_utc_time_tuple = value;}, get altzone () {return altzone;}, set altzone (value) {altzone = value;}, get asctime () {return asctime;}, set asctime (value) {asctime = value;}, get ctime () {return ctime;}, set ctime (value) {ctime = value;}, get daylight () {return daylight;}, set daylight (value) {daylight = value;}, get gmtime () {return gmtime;}, set gmtime (value) {gmtime = value;}, get i () {return i;}, set i (value) {i = value;}, get l () {return l;}, set l (value) {l = value;}, get localtime () {return localtime;}, set localtime (value) {localtime = value;}, get mktime () {return mktime;}, set mktime (value) {mktime = value;}, get s () {return s;}, set s (value) {s = value;}, get strftime () {return strftime;}, set strftime (value) {strftime = value;}, get strptime () {return strptime;}, set strptime (value) {strptime = value;}, get time () {return time;}, set time (value) {time = value;}, get timezone () {return timezone;}, set timezone (value) {timezone = value;}, get tzname () {return tzname;}, set tzname (value) {tzname = value;}}); +var __name__ = 'time'; +try { + var __language = window.navigator.language; +} +catch (__except0__) { + var __language = 'en-US'; +} +export var __debugGetLanguage = function () { + return __language; +}; +export var __adapt__ = function (request) { + __language = ; +}; +export var __date = new Date (0); +export var __now = new Date (); +export var __weekdays = []; +export var __weekdays_long = []; +export var __d = new Date (1467662339080); +for (var i = 0; i < 7; i++) { + for (var [l, s] of tuple ([tuple ([__weekdays, 'short']), tuple ([__weekdays_long, 'long'])])) { + l.append (__d.toLocaleString (__language, dict ({'weekday': s})).lower ()); + } + __d.setDate (__d.getDate () + 1); +} +export var __months = []; +export var __months_long = []; +var __d = new Date (946681200000.0); +for (var i = 0; i < 12; i++) { + for (var [l, s] of tuple ([tuple ([__months, 'short']), tuple ([__months_long, 'long'])])) { + l.append (__d.toLocaleString (__language, dict ({'month': s})).lower ()); + } + __d.setMonth (__d.getMonth () + 1); +} +export var __lu = dict ({'Y': 0, 'm': 1, 'd': 2, 'H': 3, 'M': 4, 'S': 5}); +export var _lsplit = function (s, sep, maxsplit) { + if (maxsplit == 0) { + return [s]; + } + var py_split = s.py_split (sep); + if (!(maxsplit)) { + return py_split; + } + var ret = py_split.slice (0, maxsplit, 1); + if (len (ret) == len (py_split)) { + return ret; + } + ret.append (sep.join (py_split.__getslice__ (maxsplit, null, 1))); + return ret; +}; +export var _local_time_tuple = function (jd) { + var res = tuple ([jd.getFullYear (), jd.getMonth () + 1, jd.getDate (), jd.getHours (), jd.getMinutes (), jd.getSeconds (), (jd.getDay () > 0 ? jd.getDay () - 1 : 6), _day_of_year (jd, true), _daylight_in_effect (jd), jd.getMilliseconds ()]); + return res; +}; +export var _utc_time_tuple = function (jd) { + var res = tuple ([jd.getUTCFullYear (), jd.getUTCMonth () + 1, jd.getUTCDate (), jd.getUTCHours (), jd.getUTCMinutes (), jd.getUTCSeconds (), jd.getUTCDay () - 1, _day_of_year (jd, false), 0, jd.getUTCMilliseconds ()]); + return res; +}; +export var _day_of_year = function (jd, local) { + var day_offs = 0; + if (jd.getHours () + (jd.getTimezoneOffset () * 60) / 3600 < 0) { + var day_offs = -(1); + } + var was = jd.getTime (); + var cur = jd.setHours (23); + jd.setUTCDate (1); + jd.setUTCMonth (0); + jd.setUTCHours (0); + jd.setUTCMinutes (0); + jd.setUTCSeconds (0); + var res = round ((cur - jd) / 86400000); + if (!(local)) { + res += day_offs; + } + if (res == 0) { + var res = 365; + jd.setTime (jd.getTime () - 86400); + var last_year = jd.getUTCFullYear (); + if (_is_leap (last_year)) { + var res = 366; + } + } + jd.setTime (was); + return res; +}; +export var _is_leap = function (year) { + return __mod__ (year, 4) == 0 && (__mod__ (year, 100) != 0 || __mod__ (year, 400) == 0); +}; +export var __jan_jun_tz = function (t, func) { + var was = t.getTime (); + t.setDate (1); + var res = []; + for (var m of tuple ([0, 6])) { + t.setMonth (m); + if (!(func)) { + res.append (t.getTimezoneOffset ()); + } + else { + res.append (func (t)); + } + } + t.setTime (was); + return res; +}; +export var _daylight = function (t) { + var jj = __jan_jun_tz (t); + if ( != ) { + return 1; + } + return 0; +}; +export var _daylight_in_effect = function (t) { + var jj = __jan_jun_tz (t); + if (min (, ) == t.getTimezoneOffset ()) { + return 1; + } + return 0; +}; +export var _timezone = function (t) { + var jj = __jan_jun_tz (t); + return max (, ); +}; +export var __tzn = function (t) { + try { + return ; + } + catch (__except0__) { + return 'n.a.'; + } +}; +export var _tzname = function (t) { + var cn = __tzn (t); + var ret = [cn, cn]; + var jj = __jan_jun_tz (t, __tzn); + var ind = 0; + if (!(_daylight_in_effect (t))) { + var ind = 1; + } + for (var i of jj) { + if (i != cn) { + } + } + return tuple (ret); +}; +export var altzone = __now.getTimezoneOffset (); +if (!(_daylight_in_effect (__now))) { + var _jj = __jan_jun_tz (__now); + var altzone = (altzone == ? : ); +} +var altzone = altzone * 60; +export var timezone = _timezone (__now) * 60; +export var daylight = _daylight (__now); +export var tzname = _tzname (__now); +export var time = function () { + return Date.now () / 1000; +}; +export var asctime = function (t) { + return strftime ('%a %b %d %H:%M:%S %Y', t); +}; +export var mktime = function (t) { + var d = new Date (, - 1, , , , , 0); + return (d - 0) / 1000; +}; +export var ctime = function (seconds) { + if (!(seconds)) { + var seconds = time (); + } + return asctime (localtime (seconds)); +}; +export var localtime = function (seconds) { + if (!(seconds)) { + var seconds = time (); + } + return gmtime (seconds, true); +}; +export var gmtime = function (seconds, localtime) { + if (!(seconds)) { + var seconds = time (); + } + var millis = seconds * 1000; + __date.setTime (millis); + if (localtime) { + var t = _local_time_tuple (__date); + } + else { + var t = _utc_time_tuple (__date); + } + return t.__getslice__ (0, 9, 1); +}; +export var strptime = function (string, format) { + if (!(format)) { + var format = '%a %b %d %H:%M:%S %Y'; + } + var __left0__ = tuple ([string, format]); + var ts = __left0__ [0]; + var fmt = __left0__ [1]; + var get_next = function (fmt) { + var get_sep = function (fmt) { + var res = []; + if (!(fmt)) { + return tuple (['', '']); + } + for (var i = 0; i < len (fmt) - 1; i++) { + var c = ; + if (c == '%') { + break; + } + res.append (c); + } + return tuple ([''.join (res), fmt.__getslice__ (i, null, 1)]); + }; + var __left0__ = tuple ([null, null, null]); + var d = __left0__ [0]; + var sep = __left0__ [1]; + var f = __left0__ [2]; + if (fmt) { + if ( == '%') { + var d = ; + var __left0__ = get_sep (fmt.__getslice__ (2, null, 1)); + var sep = __left0__ [0]; + var f = __left0__ [1]; + } + else { + var __left0__ = get_sep (fmt); + var sep = __left0__ [0]; + var f = __left0__ [1]; + } + } + return tuple ([d, sep, f]); + }; + var dir_val = dict ({}); + while (ts) { + var __left0__ = get_next (fmt); + var d = __left0__ [0]; + var sep = __left0__ [1]; + var fmt = __left0__ [2]; + if (sep == '') { + var lv = null; + if (d) { + var l = -(1); + if (d == 'Y') { + var l = 4; + } + else if (d == 'a') { + var l = len (); + } + else if (d == 'A') { + var l = len (); + } + else if (d == 'b') { + var l = len (); + } + else if (__in__ (d, tuple (['d', 'm', 'H', 'M', 'S']))) { + var l = 2; + } + if (l > -(1)) { + var lv = [ts.__getslice__ (0, l, 1), ts.__getslice__ (l, null, 1)]; + } + } + if (!(lv)) { + var lv = [ts, '']; + } + } + else { + var lv = _lsplit (ts, sep, 1); + } + if (d == null) { + var ts = ; + continue; + } + var __left0__ = tuple ([, ]); + var ts = __left0__ [0]; + if (fmt == '') { + break; + } + } + var t = [1900, 1, 1, 0, 0, 0, 0, 1, -(1)]; + var ignore_keys = []; + var have_weekday = false; + for (var [d, v] of dir_val.py_items ()) { + if (__in__ (d, ignore_keys)) { + continue; + } + if (d == 'p') { + continue; + } + if (__in__ (d, __lu.py_keys ())) { + continue; + } + if (__in__ (d, tuple (['a', 'A', 'b', 'B']))) { + var v = v.lower (); + } + if (d == 'm') { + ignore_keys.append ('b'); + ignore_keys.append ('B'); + } + if (d == 'a') { + if (!(__in__ (v, __weekdays))) { + var __except0__ = ValueError ('Weekday unknown in your locale'); + __except0__.__cause__ = null; + throw __except0__; + } + var have_weekday = true; + } + else if (d == 'A') { + if (!(__in__ (v, __weekdays_long))) { + var __except0__ = ValueError ('Weekday unknown in your locale'); + __except0__.__cause__ = null; + throw __except0__; + } + var have_weekday = true; + } + else if (d == 'b') { + if (!(__in__ (v, __months))) { + var __except0__ = ValueError ('Month unknown in your locale'); + __except0__.__cause__ = null; + throw __except0__; + } + } + else if (d == 'B') { + if (!(__in__ (v, __months_long))) { + var __except0__ = ValueError ('Month unknown in your locale'); + __except0__.__cause__ = null; + throw __except0__; + } + } + else if (d == 'I') { + var ampm = || 'am'; + var ampm = ampm.lower (); + var v = int (v); + if (v == 12) { + var v = 0; + } + else if (v > 12) { + var __except0__ = ValueError (((("time data '" + string) + "' does not match format '") + format) + "'"); + __except0__.__cause__ = null; + throw __except0__; + } + if (ampm == 'pm') { + v += 12; + } + } + else if (d == 'y') { + } + else if (d == 'Z') { + if (__in__ (v.lower (), ['gmt', 'utc'])) { + } + } + } + var __date = new Date (0); + __date.setUTCFullYear (); + __date.setUTCMonth ( - 1); + __date.setUTCDate (); + __date.setUTCHours (); + if (!(have_weekday)) { + } + return t; +}; +export var strftime = function (format, t) { + var zf2 = function (v) { + if (v < 10) { + return '0' + str (v); + } + return v; + }; + if (!(t)) { + var t = localtime (); + } + var f = format; + for (var d of __lu.py_keys ()) { + var k = '%' + d; + if (!(__in__ (k, f))) { + continue; + } + var v = zf2 (); + var f = f.py_replace (k, v); + } + for (var [d, l, pos] of tuple ([tuple (['b', __months, 1]), tuple (['B', __months_long, 1]), tuple (['a', __weekdays, 6]), tuple (['A', __weekdays_long, 6])])) { + var p = ; + if (pos == 1) { + var p = p - 1; + } + var v = .capitalize (); + var f = f.py_replace ('%' + d, v); + } + if (__in__ ('%p', f)) { + if ( > 11) { + var ap = 'PM'; + } + else { + var ap = 'AM'; + } + var f = f.py_replace ('%p', ap); + } + if (__in__ ('%y', f)) { + var f = f.py_replace ('%y', str ().__getslice__ (-(2), null, 1)); + } + if (__in__ ('%I', f)) { + var v = ; + if (v == 0) { + var v = 12; + } + else if (v > 12) { + var v = v - 12; + } + var f = f.py_replace ('%I', zf2 (v)); + } + return f; +}; + +//# sourceMappingURL=time.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/time.tree b/transcrypt/development/automated_tests/transcrypt/__target__39/time.tree new file mode 100644 index 000000000..a206d1198 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/time.tree @@ -0,0 +1,4837 @@ +file: Module + body: list + element: Expr + value: Constant + value: str = +time module + +No: + +- Platform specific functions +- sleep. In js currently not possible in browsers + except via busy loops, we don't do that. +- struct_time CLASS. we work only via the tuple interface of it. +- handling of weird stuff. + e.g.: In Europe/Simferopool (Ukraine) the UTC offset before 1924 was +2.67 + +Spec for all below (must have open to read this module): + +> https://docs.python.org/3.5/library/time.html + + +Jul 2016, Gunther Klessinger, Axiros GmbH + + kind: NoneType = None + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = nokwargs + kind: NoneType = None + keywords: list + element: Try + body: list + element: Assign + targets: list + element: Name + id: str = __language + ctx: Store + value: Attribute + value: Attribute + value: Name + id: str = window + ctx: Load + attr: str = navigator + ctx: Load + attr: str = language + ctx: Load + type_comment: NoneType = None + handlers: list + element: ExceptHandler + type: NoneType = None + name: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = __language + ctx: Store + value: Constant + value: str = en-US + kind: NoneType = None + type_comment: NoneType = None + orelse: list + finalbody: list + element: FunctionDef + name: str = __debugGetLanguage + args: arguments + posonlyargs: list + args: list + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Name + id: str = __language + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __adapt__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = request + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Global + names: list + element: str = __language + element: Assign + targets: list + element: Name + id: str = __language + ctx: Store + value: Subscript + value: Call + func: Attribute + value: Subscript + value: Attribute + value: Name + id: str = request + ctx: Load + attr: str = headers + ctx: Load + slice: Constant + value: str = accept-language + kind: NoneType = None + ctx: Load + attr: str = split + ctx: Load + args: list + element: Constant + value: str = , + kind: NoneType = None + keywords: list + slice: Constant + value: int = 0 + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: ImportFrom + module: str = org.transcrypt.stubs.browser + names: list + element: alias + name: str = __new__ + asname: NoneType = None + level: int = 0 + element: Assign + targets: list + element: Name + id: str = __date + ctx: Store + value: Call + func: Name + id: str = __new__ + ctx: Load + args: list + element: Call + func: Name + id: str = Date + ctx: Load + args: list + element: Constant + value: int = 0 + kind: NoneType = None + keywords: list + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = __now + ctx: Store + value: Call + func: Name + id: str = __new__ + ctx: Load + args: list + element: Call + func: Name + id: str = Date + ctx: Load + args: list + keywords: list + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = __weekdays + ctx: Store + value: List + elts: list + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = __weekdays_long + ctx: Store + value: List + elts: list + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = __d + ctx: Store + value: Call + func: Name + id: str = __new__ + ctx: Load + args: list + element: Call + func: Name + id: str = Date + ctx: Load + args: list + element: Constant + value: int = 1467662339080 + kind: NoneType = None + keywords: list + keywords: list + type_comment: NoneType = None + element: For + target: Name + id: str = i + ctx: Store + iter: Call + func: Name + id: str = range + ctx: Load + args: list + element: Constant + value: int = 7 + kind: NoneType = None + keywords: list + body: list + element: For + target: Tuple + elts: list + element: Name + id: str = l + ctx: Store + element: Name + id: str = s + ctx: Store + ctx: Store + iter: Tuple + elts: list + element: Tuple + elts: list + element: Name + id: str = __weekdays + ctx: Load + element: Constant + value: str = short + kind: NoneType = None + ctx: Load + element: Tuple + elts: list + element: Name + id: str = __weekdays_long + ctx: Load + element: Constant + value: str = long + kind: NoneType = None + ctx: Load + ctx: Load + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = l + ctx: Load + attr: str = append + ctx: Load + args: list + element: Call + func: Attribute + value: Call + func: Attribute + value: Name + id: str = __d + ctx: Load + attr: str = toLocaleString + ctx: Load + args: list + element: Name + id: str = __language + ctx: Load + element: Dict + keys: list + element: Constant + value: str = weekday + kind: NoneType = None + values: list + element: Name + id: str = s + ctx: Load + keywords: list + attr: str = lower + ctx: Load + args: list + keywords: list + keywords: list + orelse: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = __d + ctx: Load + attr: str = setDate + ctx: Load + args: list + element: BinOp + left: Call + func: Attribute + value: Name + id: str = __d + ctx: Load + attr: str = getDate + ctx: Load + args: list + keywords: list + op: Add + right: Constant + value: int = 1 + kind: NoneType = None + keywords: list + orelse: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = __months + ctx: Store + value: List + elts: list + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = __months_long + ctx: Store + value: List + elts: list + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = __d + ctx: Store + value: Call + func: Name + id: str = __new__ + ctx: Load + args: list + element: Call + func: Name + id: str = Date + ctx: Load + args: list + element: Constant + value: float = 946681200000.0 + kind: NoneType = None + keywords: list + keywords: list + type_comment: NoneType = None + element: For + target: Name + id: str = i + ctx: Store + iter: Call + func: Name + id: str = range + ctx: Load + args: list + element: Constant + value: int = 12 + kind: NoneType = None + keywords: list + body: list + element: For + target: Tuple + elts: list + element: Name + id: str = l + ctx: Store + element: Name + id: str = s + ctx: Store + ctx: Store + iter: Tuple + elts: list + element: Tuple + elts: list + element: Name + id: str = __months + ctx: Load + element: Constant + value: str = short + kind: NoneType = None + ctx: Load + element: Tuple + elts: list + element: Name + id: str = __months_long + ctx: Load + element: Constant + value: str = long + kind: NoneType = None + ctx: Load + ctx: Load + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = l + ctx: Load + attr: str = append + ctx: Load + args: list + element: Call + func: Attribute + value: Call + func: Attribute + value: Name + id: str = __d + ctx: Load + attr: str = toLocaleString + ctx: Load + args: list + element: Name + id: str = __language + ctx: Load + element: Dict + keys: list + element: Constant + value: str = month + kind: NoneType = None + values: list + element: Name + id: str = s + ctx: Load + keywords: list + attr: str = lower + ctx: Load + args: list + keywords: list + keywords: list + orelse: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = __d + ctx: Load + attr: str = setMonth + ctx: Load + args: list + element: BinOp + left: Call + func: Attribute + value: Name + id: str = __d + ctx: Load + attr: str = getMonth + ctx: Load + args: list + keywords: list + op: Add + right: Constant + value: int = 1 + kind: NoneType = None + keywords: list + orelse: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = __lu + ctx: Store + value: Dict + keys: list + element: Constant + value: str = Y + kind: NoneType = None + element: Constant + value: str = m + kind: NoneType = None + element: Constant + value: str = d + kind: NoneType = None + element: Constant + value: str = H + kind: NoneType = None + element: Constant + value: str = M + kind: NoneType = None + element: Constant + value: str = S + kind: NoneType = None + values: list + element: Constant + value: int = 0 + kind: NoneType = None + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + element: Constant + value: int = 4 + kind: NoneType = None + element: Constant + value: int = 5 + kind: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = _lsplit + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = s + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = sep + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = maxsplit + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = not yet in TS + kind: NoneType = None + element: If + test: Compare + left: Name + id: str = maxsplit + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + body: list + element: Return + value: List + elts: list + element: Name + id: str = s + ctx: Load + ctx: Load + orelse: list + element: Assign + targets: list + element: Name + id: str = split + ctx: Store + value: Call + func: Attribute + value: Name + id: str = s + ctx: Load + attr: str = split + ctx: Load + args: list + element: Name + id: str = sep + ctx: Load + keywords: list + type_comment: NoneType = None + element: If + test: UnaryOp + op: Not + operand: Name + id: str = maxsplit + ctx: Load + body: list + element: Return + value: Name + id: str = split + ctx: Load + orelse: list + element: Assign + targets: list + element: Name + id: str = ret + ctx: Store + value: Call + func: Attribute + value: Name + id: str = split + ctx: Load + attr: str = slice + ctx: Load + args: list + element: Constant + value: int = 0 + kind: NoneType = None + element: Name + id: str = maxsplit + ctx: Load + element: Constant + value: int = 1 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: If + test: Compare + left: Call + func: Name + id: str = len + ctx: Load + args: list + element: Name + id: str = ret + ctx: Load + keywords: list + ops: list + element: Eq + comparators: list + element: Call + func: Name + id: str = len + ctx: Load + args: list + element: Name + id: str = split + ctx: Load + keywords: list + body: list + element: Return + value: Name + id: str = ret + ctx: Load + orelse: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = ret + ctx: Load + attr: str = append + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = sep + ctx: Load + attr: str = join + ctx: Load + args: list + element: Subscript + value: Name + id: str = split + ctx: Load + slice: Slice + lower: Name + id: str = maxsplit + ctx: Load + upper: NoneType = None + step: NoneType = None + ctx: Load + keywords: list + keywords: list + element: Return + value: Name + id: str = ret + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = _local_time_tuple + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = jd + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = jd: javascript Date object, from unixtimestamp + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = res + ctx: Store + value: Tuple + elts: list + element: Call + func: Attribute + value: Name + id: str = jd + ctx: Load + attr: str = getFullYear + ctx: Load + args: list + keywords: list + element: BinOp + left: Call + func: Attribute + value: Name + id: str = jd + ctx: Load + attr: str = getMonth + ctx: Load + args: list + keywords: list + op: Add + right: Constant + value: int = 1 + kind: NoneType = None + element: Call + func: Attribute + value: Name + id: str = jd + ctx: Load + attr: str = getDate + ctx: Load + args: list + keywords: list + element: Call + func: Attribute + value: Name + id: str = jd + ctx: Load + attr: str = getHours + ctx: Load + args: list + keywords: list + element: Call + func: Attribute + value: Name + id: str = jd + ctx: Load + attr: str = getMinutes + ctx: Load + args: list + keywords: list + element: Call + func: Attribute + value: Name + id: str = jd + ctx: Load + attr: str = getSeconds + ctx: Load + args: list + keywords: list + element: IfExp + test: Compare + left: Call + func: Attribute + value: Name + id: str = jd + ctx: Load + attr: str = getDay + ctx: Load + args: list + keywords: list + ops: list + element: Gt + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + body: BinOp + left: Call + func: Attribute + value: Name + id: str = jd + ctx: Load + attr: str = getDay + ctx: Load + args: list + keywords: list + op: Sub + right: Constant + value: int = 1 + kind: NoneType = None + orelse: Constant + value: int = 6 + kind: NoneType = None + element: Call + func: Name + id: str = _day_of_year + ctx: Load + args: list + element: Name + id: str = jd + ctx: Load + element: Constant + value: bool = True + kind: NoneType = None + keywords: list + element: Call + func: Name + id: str = _daylight_in_effect + ctx: Load + args: list + element: Name + id: str = jd + ctx: Load + keywords: list + element: Call + func: Attribute + value: Name + id: str = jd + ctx: Load + attr: str = getMilliseconds + ctx: Load + args: list + keywords: list + ctx: Load + type_comment: NoneType = None + element: Return + value: Name + id: str = res + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = _utc_time_tuple + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = jd + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = jd: javascript Date object, from unixtimestamp + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = res + ctx: Store + value: Tuple + elts: list + element: Call + func: Attribute + value: Name + id: str = jd + ctx: Load + attr: str = getUTCFullYear + ctx: Load + args: list + keywords: list + element: BinOp + left: Call + func: Attribute + value: Name + id: str = jd + ctx: Load + attr: str = getUTCMonth + ctx: Load + args: list + keywords: list + op: Add + right: Constant + value: int = 1 + kind: NoneType = None + element: Call + func: Attribute + value: Name + id: str = jd + ctx: Load + attr: str = getUTCDate + ctx: Load + args: list + keywords: list + element: Call + func: Attribute + value: Name + id: str = jd + ctx: Load + attr: str = getUTCHours + ctx: Load + args: list + keywords: list + element: Call + func: Attribute + value: Name + id: str = jd + ctx: Load + attr: str = getUTCMinutes + ctx: Load + args: list + keywords: list + element: Call + func: Attribute + value: Name + id: str = jd + ctx: Load + attr: str = getUTCSeconds + ctx: Load + args: list + keywords: list + element: BinOp + left: Call + func: Attribute + value: Name + id: str = jd + ctx: Load + attr: str = getUTCDay + ctx: Load + args: list + keywords: list + op: Sub + right: Constant + value: int = 1 + kind: NoneType = None + element: Call + func: Name + id: str = _day_of_year + ctx: Load + args: list + element: Name + id: str = jd + ctx: Load + element: Constant + value: bool = False + kind: NoneType = None + keywords: list + element: Constant + value: int = 0 + kind: NoneType = None + element: Call + func: Attribute + value: Name + id: str = jd + ctx: Load + attr: str = getUTCMilliseconds + ctx: Load + args: list + keywords: list + ctx: Load + type_comment: NoneType = None + element: Return + value: Name + id: str = res + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = _day_of_year + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = jd + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = local + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Name + id: str = day_offs + ctx: Store + value: Constant + value: int = 0 + kind: NoneType = None + type_comment: NoneType = None + element: If + test: Compare + left: BinOp + left: Call + func: Attribute + value: Name + id: str = jd + ctx: Load + attr: str = getHours + ctx: Load + args: list + keywords: list + op: Add + right: BinOp + left: BinOp + left: Call + func: Attribute + value: Name + id: str = jd + ctx: Load + attr: str = getTimezoneOffset + ctx: Load + args: list + keywords: list + op: Mult + right: Constant + value: int = 60 + kind: NoneType = None + op: Div + right: Constant + value: int = 3600 + kind: NoneType = None + ops: list + element: Lt + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = day_offs + ctx: Store + value: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + type_comment: NoneType = None + orelse: list + element: Assign + targets: list + element: Name + id: str = was + ctx: Store + value: Call + func: Attribute + value: Name + id: str = jd + ctx: Load + attr: str = getTime + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = cur + ctx: Store + value: Call + func: Attribute + value: Name + id: str = jd + ctx: Load + attr: str = setHours + ctx: Load + args: list + element: Constant + value: int = 23 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = jd + ctx: Load + attr: str = setUTCDate + ctx: Load + args: list + element: Constant + value: int = 1 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = jd + ctx: Load + attr: str = setUTCMonth + ctx: Load + args: list + element: Constant + value: int = 0 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = jd + ctx: Load + attr: str = setUTCHours + ctx: Load + args: list + element: Constant + value: int = 0 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = jd + ctx: Load + attr: str = setUTCMinutes + ctx: Load + args: list + element: Constant + value: int = 0 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = jd + ctx: Load + attr: str = setUTCSeconds + ctx: Load + args: list + element: Constant + value: int = 0 + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = res + ctx: Store + value: Call + func: Name + id: str = round + ctx: Load + args: list + element: BinOp + left: BinOp + left: Name + id: str = cur + ctx: Load + op: Sub + right: Name + id: str = jd + ctx: Load + op: Div + right: Constant + value: int = 86400000 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: If + test: UnaryOp + op: Not + operand: Name + id: str = local + ctx: Load + body: list + element: AugAssign + target: Name + id: str = res + ctx: Store + op: Add + value: Name + id: str = day_offs + ctx: Load + orelse: list + element: If + test: Compare + left: Name + id: str = res + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = res + ctx: Store + value: Constant + value: int = 365 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = jd + ctx: Load + attr: str = setTime + ctx: Load + args: list + element: BinOp + left: Call + func: Attribute + value: Name + id: str = jd + ctx: Load + attr: str = getTime + ctx: Load + args: list + keywords: list + op: Sub + right: Constant + value: int = 86400 + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = last_year + ctx: Store + value: Call + func: Attribute + value: Name + id: str = jd + ctx: Load + attr: str = getUTCFullYear + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: If + test: Call + func: Name + id: str = _is_leap + ctx: Load + args: list + element: Name + id: str = last_year + ctx: Load + keywords: list + body: list + element: Assign + targets: list + element: Name + id: str = res + ctx: Store + value: Constant + value: int = 366 + kind: NoneType = None + type_comment: NoneType = None + orelse: list + orelse: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = jd + ctx: Load + attr: str = setTime + ctx: Load + args: list + element: Name + id: str = was + ctx: Load + keywords: list + element: Return + value: Name + id: str = res + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = _is_leap + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = year + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: BoolOp + op: And + values: list + element: Compare + left: BinOp + left: Name + id: str = year + ctx: Load + op: Mod + right: Constant + value: int = 4 + kind: NoneType = None + ops: list + element: Eq + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + element: BoolOp + op: Or + values: list + element: Compare + left: BinOp + left: Name + id: str = year + ctx: Load + op: Mod + right: Constant + value: int = 100 + kind: NoneType = None + ops: list + element: NotEq + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + element: Compare + left: BinOp + left: Name + id: str = year + ctx: Load + op: Mod + right: Constant + value: int = 400 + kind: NoneType = None + ops: list + element: Eq + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __jan_jun_tz + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = t + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = func + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = information about local jan and jun month of a t's year + default is to deliver timezone offset, but a function can be handed to us, + which we'll run on those two months + + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = was + ctx: Store + value: Call + func: Attribute + value: Name + id: str = t + ctx: Load + attr: str = getTime + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = t + ctx: Load + attr: str = setDate + ctx: Load + args: list + element: Constant + value: int = 1 + kind: NoneType = None + keywords: list + element: Assign + targets: list + element: Name + id: str = res + ctx: Store + value: List + elts: list + ctx: Load + type_comment: NoneType = None + element: For + target: Name + id: str = m + ctx: Store + iter: Tuple + elts: list + element: Constant + value: int = 0 + kind: NoneType = None + element: Constant + value: int = 6 + kind: NoneType = None + ctx: Load + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = t + ctx: Load + attr: str = setMonth + ctx: Load + args: list + element: Name + id: str = m + ctx: Load + keywords: list + element: If + test: UnaryOp + op: Not + operand: Name + id: str = func + ctx: Load + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = res + ctx: Load + attr: str = append + ctx: Load + args: list + element: Call + func: Attribute + value: Name + id: str = t + ctx: Load + attr: str = getTimezoneOffset + ctx: Load + args: list + keywords: list + keywords: list + orelse: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = res + ctx: Load + attr: str = append + ctx: Load + args: list + element: Call + func: Name + id: str = func + ctx: Load + args: list + element: Name + id: str = t + ctx: Load + keywords: list + keywords: list + orelse: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = t + ctx: Load + attr: str = setTime + ctx: Load + args: list + element: Name + id: str = was + ctx: Load + keywords: list + element: Return + value: Name + id: str = res + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = _daylight + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = t + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = + http://stackoverflow.com/questions/11887934/ + check-if-daylight-saving-time-is-in-effect-and-if-it-is-for-how-many-hours + + return 0 or 1 like python + CAUTION: https://docs.python.org/2/library/time.html#time.daylight: + "Nonzero if a DST timezone is DEFINED." (but not necessarily in effect!!) + -> we just check if there is a delta of tz offsets in june an jan of the + year of t: + + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = jj + ctx: Store + value: Call + func: Name + id: str = __jan_jun_tz + ctx: Load + args: list + element: Name + id: str = t + ctx: Load + keywords: list + type_comment: NoneType = None + element: If + test: Compare + left: Subscript + value: Name + id: str = jj + ctx: Load + slice: Constant + value: int = 0 + kind: NoneType = None + ctx: Load + ops: list + element: NotEq + comparators: list + element: Subscript + value: Name + id: str = jj + ctx: Load + slice: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + body: list + element: Return + value: Constant + value: int = 1 + kind: NoneType = None + orelse: list + element: Return + value: Constant + value: int = 0 + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = _daylight_in_effect + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = t + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Name + id: str = jj + ctx: Store + value: Call + func: Name + id: str = __jan_jun_tz + ctx: Load + args: list + element: Name + id: str = t + ctx: Load + keywords: list + type_comment: NoneType = None + element: If + test: Compare + left: Call + func: Name + id: str = min + ctx: Load + args: list + element: Subscript + value: Name + id: str = jj + ctx: Load + slice: Constant + value: int = 0 + kind: NoneType = None + ctx: Load + element: Subscript + value: Name + id: str = jj + ctx: Load + slice: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + keywords: list + ops: list + element: Eq + comparators: list + element: Call + func: Attribute + value: Name + id: str = t + ctx: Load + attr: str = getTimezoneOffset + ctx: Load + args: list + keywords: list + body: list + element: Return + value: Constant + value: int = 1 + kind: NoneType = None + orelse: list + element: Return + value: Constant + value: int = 0 + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = _timezone + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = t + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Name + id: str = jj + ctx: Store + value: Call + func: Name + id: str = __jan_jun_tz + ctx: Load + args: list + element: Name + id: str = t + ctx: Load + keywords: list + type_comment: NoneType = None + element: Return + value: Call + func: Name + id: str = max + ctx: Load + args: list + element: Subscript + value: Name + id: str = jj + ctx: Load + slice: Constant + value: int = 0 + kind: NoneType = None + ctx: Load + element: Subscript + value: Name + id: str = jj + ctx: Load + slice: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __tzn + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = t + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Try + body: list + element: Return + value: Subscript + value: Call + func: Attribute + value: Subscript + value: Call + func: Attribute + value: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = t + ctx: Load + keywords: list + attr: str = split + ctx: Load + args: list + element: Constant + value: str = ( + kind: NoneType = None + keywords: list + slice: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + attr: str = split + ctx: Load + args: list + element: Constant + value: str = ) + kind: NoneType = None + keywords: list + slice: Constant + value: int = 0 + kind: NoneType = None + ctx: Load + handlers: list + element: ExceptHandler + type: NoneType = None + name: NoneType = None + body: list + element: Return + value: Constant + value: str = n.a. + kind: NoneType = None + orelse: list + finalbody: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = _tzname + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = t + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = the first is the name of the local non-DST timezone, + the second is the name of the local DST timezone. + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = cn + ctx: Store + value: Call + func: Name + id: str = __tzn + ctx: Load + args: list + element: Name + id: str = t + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = ret + ctx: Store + value: List + elts: list + element: Name + id: str = cn + ctx: Load + element: Name + id: str = cn + ctx: Load + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = jj + ctx: Store + value: Call + func: Name + id: str = __jan_jun_tz + ctx: Load + args: list + element: Name + id: str = t + ctx: Load + element: Name + id: str = __tzn + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = ind + ctx: Store + value: Constant + value: int = 0 + kind: NoneType = None + type_comment: NoneType = None + element: If + test: UnaryOp + op: Not + operand: Call + func: Name + id: str = _daylight_in_effect + ctx: Load + args: list + element: Name + id: str = t + ctx: Load + keywords: list + body: list + element: Assign + targets: list + element: Name + id: str = ind + ctx: Store + value: Constant + value: int = 1 + kind: NoneType = None + type_comment: NoneType = None + orelse: list + element: For + target: Name + id: str = i + ctx: Store + iter: Name + id: str = jj + ctx: Load + body: list + element: If + test: Compare + left: Name + id: str = i + ctx: Load + ops: list + element: NotEq + comparators: list + element: Name + id: str = cn + ctx: Load + body: list + element: Assign + targets: list + element: Subscript + value: Name + id: str = ret + ctx: Load + slice: Name + id: str = ind + ctx: Load + ctx: Store + value: Name + id: str = i + ctx: Load + type_comment: NoneType = None + orelse: list + orelse: list + type_comment: NoneType = None + element: Return + value: Call + func: Name + id: str = tuple + ctx: Load + args: list + element: Name + id: str = ret + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = altzone + ctx: Store + value: Call + func: Attribute + value: Name + id: str = __now + ctx: Load + attr: str = getTimezoneOffset + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: If + test: UnaryOp + op: Not + operand: Call + func: Name + id: str = _daylight_in_effect + ctx: Load + args: list + element: Name + id: str = __now + ctx: Load + keywords: list + body: list + element: Assign + targets: list + element: Name + id: str = _jj + ctx: Store + value: Call + func: Name + id: str = __jan_jun_tz + ctx: Load + args: list + element: Name + id: str = __now + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = altzone + ctx: Store + value: IfExp + test: Compare + left: Name + id: str = altzone + ctx: Load + ops: list + element: Eq + comparators: list + element: Subscript + value: Name + id: str = _jj + ctx: Load + slice: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + body: Subscript + value: Name + id: str = _jj + ctx: Load + slice: Constant + value: int = 0 + kind: NoneType = None + ctx: Load + orelse: Subscript + value: Name + id: str = _jj + ctx: Load + slice: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + orelse: list + element: Assign + targets: list + element: Name + id: str = altzone + ctx: Store + value: BinOp + left: Name + id: str = altzone + ctx: Load + op: Mult + right: Constant + value: int = 60 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = timezone + ctx: Store + value: BinOp + left: Call + func: Name + id: str = _timezone + ctx: Load + args: list + element: Name + id: str = __now + ctx: Load + keywords: list + op: Mult + right: Constant + value: int = 60 + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = daylight + ctx: Store + value: Call + func: Name + id: str = _daylight + ctx: Load + args: list + element: Name + id: str = __now + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = tzname + ctx: Store + value: Call + func: Name + id: str = _tzname + ctx: Load + args: list + element: Name + id: str = __now + ctx: Load + keywords: list + type_comment: NoneType = None + element: FunctionDef + name: str = time + args: arguments + posonlyargs: list + args: list + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = + time() -> floating point number + +Return the current time in seconds + since the Epoch. + Fractions of a second may be present if the system clock provides them. + + kind: NoneType = None + element: Return + value: BinOp + left: Call + func: Attribute + value: Name + id: str = Date + ctx: Load + attr: str = now + ctx: Load + args: list + keywords: list + op: Div + right: Constant + value: int = 1000 + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = asctime + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = t + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Call + func: Name + id: str = strftime + ctx: Load + args: list + element: Constant + value: str = %a %b %d %H:%M:%S %Y + kind: NoneType = None + element: Name + id: str = t + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = mktime + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = t + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = inverse of localtime + kind: NoneType = None + element: Assign + targets: list + element: Name + id: str = d + ctx: Store + value: Call + func: Name + id: str = __new__ + ctx: Load + args: list + element: Call + func: Name + id: str = Date + ctx: Load + args: list + element: Subscript + value: Name + id: str = t + ctx: Load + slice: Constant + value: int = 0 + kind: NoneType = None + ctx: Load + element: BinOp + left: Subscript + value: Name + id: str = t + ctx: Load + slice: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + op: Sub + right: Constant + value: int = 1 + kind: NoneType = None + element: Subscript + value: Name + id: str = t + ctx: Load + slice: Constant + value: int = 2 + kind: NoneType = None + ctx: Load + element: Subscript + value: Name + id: str = t + ctx: Load + slice: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + element: Subscript + value: Name + id: str = t + ctx: Load + slice: Constant + value: int = 4 + kind: NoneType = None + ctx: Load + element: Subscript + value: Name + id: str = t + ctx: Load + slice: Constant + value: int = 5 + kind: NoneType = None + ctx: Load + element: Constant + value: int = 0 + kind: NoneType = None + keywords: list + keywords: list + type_comment: NoneType = None + element: Return + value: BinOp + left: BinOp + left: Name + id: str = d + ctx: Load + op: Sub + right: Constant + value: int = 0 + kind: NoneType = None + op: Div + right: Constant + value: int = 1000 + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = ctime + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = seconds + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = + ctime(seconds) -> string + + Convert a time in seconds since the Epoch to a string in local time. + This is equivalent to asctime(localtime(seconds)). When the time tuple is + not present, current time as returned by localtime() is used.' + + kind: NoneType = None + element: If + test: UnaryOp + op: Not + operand: Name + id: str = seconds + ctx: Load + body: list + element: Assign + targets: list + element: Name + id: str = seconds + ctx: Store + value: Call + func: Name + id: str = time + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + orelse: list + element: Return + value: Call + func: Name + id: str = asctime + ctx: Load + args: list + element: Call + func: Name + id: str = localtime + ctx: Load + args: list + element: Name + id: str = seconds + ctx: Load + keywords: list + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = localtime + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = seconds + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = + localtime([seconds]) -> (tm_year,tm_mon,tm_mday,tm_hour,tm_min, + tm_sec,tm_wday,tm_yday,tm_isdst) + + Convert seconds since the Epoch to a time tuple expressing local time. + When 'seconds' is not passed in, convert the current time instead. + + kind: NoneType = None + element: If + test: UnaryOp + op: Not + operand: Name + id: str = seconds + ctx: Load + body: list + element: Assign + targets: list + element: Name + id: str = seconds + ctx: Store + value: Call + func: Name + id: str = time + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + orelse: list + element: Return + value: Call + func: Name + id: str = gmtime + ctx: Load + args: list + element: Name + id: str = seconds + ctx: Load + element: Constant + value: bool = True + kind: NoneType = None + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = gmtime + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = seconds + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = localtime + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = + localtime([seconds]) -> (tm_year,tm_mon,tm_mday,tm_hour,tm_min, + tm_sec,tm_wday,tm_yday,tm_isdst) + + Convert seconds since the Epoch to a time tuple expressing local time. + When 'seconds' is not passed in, convert the current time instead. + + kind: NoneType = None + element: If + test: UnaryOp + op: Not + operand: Name + id: str = seconds + ctx: Load + body: list + element: Assign + targets: list + element: Name + id: str = seconds + ctx: Store + value: Call + func: Name + id: str = time + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + orelse: list + element: Assign + targets: list + element: Name + id: str = millis + ctx: Store + value: BinOp + left: Name + id: str = seconds + ctx: Load + op: Mult + right: Constant + value: int = 1000 + kind: NoneType = None + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = __date + ctx: Load + attr: str = setTime + ctx: Load + args: list + element: Name + id: str = millis + ctx: Load + keywords: list + element: If + test: Name + id: str = localtime + ctx: Load + body: list + element: Assign + targets: list + element: Name + id: str = t + ctx: Store + value: Call + func: Name + id: str = _local_time_tuple + ctx: Load + args: list + element: Name + id: str = __date + ctx: Load + keywords: list + type_comment: NoneType = None + orelse: list + element: Assign + targets: list + element: Name + id: str = t + ctx: Store + value: Call + func: Name + id: str = _utc_time_tuple + ctx: Load + args: list + element: Name + id: str = __date + ctx: Load + keywords: list + type_comment: NoneType = None + element: Return + value: Subscript + value: Name + id: str = t + ctx: Load + slice: Slice + lower: NoneType = None + upper: Constant + value: int = 9 + kind: NoneType = None + step: NoneType = None + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = strptime + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = string + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = format + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = + strptime(string, format) -> struct_time + + Parse a string to a time tuple according to a format specification. + See the library reference manual for formatting codes (same as + strftime()). + + Commonly used format codes: + + %Y Year with century as a decimal number. + %m Month as a decimal number [01,12]. + %d Day of the month as a decimal number [01,31]. + %H Hour (24-hour clock) as a decimal number [00,23]. + %M Minute as a decimal number [00,59]. + %S Second as a decimal number [00,61]. + %z Time zone offset from UTC. + %a Locale's abbreviated weekday name. + %A Locale's full weekday name. + %b Locale's abbreviated month name. + %B Locale's full month name. + %c Locale's appropriate date and time representation. + %I Hour (12-hour clock) as a decimal number [01,12]. + %p Locale's equivalent of either AM or PM. + + Tradoffs of this Transcrypt implementation: + + 1. platform specific codes not supported + 2. %% and %c not supported + + kind: NoneType = None + element: If + test: UnaryOp + op: Not + operand: Name + id: str = format + ctx: Load + body: list + element: Assign + targets: list + element: Name + id: str = format + ctx: Store + value: Constant + value: str = %a %b %d %H:%M:%S %Y + kind: NoneType = None + type_comment: NoneType = None + orelse: list + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = ts + ctx: Store + element: Name + id: str = fmt + ctx: Store + ctx: Store + value: Tuple + elts: list + element: Name + id: str = string + ctx: Load + element: Name + id: str = format + ctx: Load + ctx: Load + type_comment: NoneType = None + element: FunctionDef + name: str = get_next + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = fmt + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = returns next directive, next seperator, rest of format str + kind: NoneType = None + element: FunctionDef + name: str = get_sep + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = fmt + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Name + id: str = res + ctx: Store + value: List + elts: list + ctx: Load + type_comment: NoneType = None + element: If + test: UnaryOp + op: Not + operand: Name + id: str = fmt + ctx: Load + body: list + element: Return + value: Tuple + elts: list + element: Constant + value: str = + kind: NoneType = None + element: Constant + value: str = + kind: NoneType = None + ctx: Load + orelse: list + element: For + target: Name + id: str = i + ctx: Store + iter: Call + func: Name + id: str = range + ctx: Load + args: list + element: BinOp + left: Call + func: Name + id: str = len + ctx: Load + args: list + element: Name + id: str = fmt + ctx: Load + keywords: list + op: Sub + right: Constant + value: int = 1 + kind: NoneType = None + keywords: list + body: list + element: Assign + targets: list + element: Name + id: str = c + ctx: Store + value: Subscript + value: Name + id: str = fmt + ctx: Load + slice: Name + id: str = i + ctx: Load + ctx: Load + type_comment: NoneType = None + element: If + test: Compare + left: Name + id: str = c + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = % + kind: NoneType = None + body: list + element: Break + orelse: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = res + ctx: Load + attr: str = append + ctx: Load + args: list + element: Name + id: str = c + ctx: Load + keywords: list + orelse: list + type_comment: NoneType = None + element: Return + value: Tuple + elts: list + element: Call + func: Attribute + value: Constant + value: str = + kind: NoneType = None + attr: str = join + ctx: Load + args: list + element: Name + id: str = res + ctx: Load + keywords: list + element: Subscript + value: Name + id: str = fmt + ctx: Load + slice: Slice + lower: Name + id: str = i + ctx: Load + upper: NoneType = None + step: NoneType = None + ctx: Load + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = d + ctx: Store + element: Name + id: str = sep + ctx: Store + element: Name + id: str = f + ctx: Store + ctx: Store + value: Tuple + elts: list + element: Constant + value: NoneType = None + kind: NoneType = None + element: Constant + value: NoneType = None + kind: NoneType = None + element: Constant + value: NoneType = None + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: If + test: Name + id: str = fmt + ctx: Load + body: list + element: If + test: Compare + left: Subscript + value: Name + id: str = fmt + ctx: Load + slice: Constant + value: int = 0 + kind: NoneType = None + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = % + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = d + ctx: Store + value: Subscript + value: Name + id: str = fmt + ctx: Load + slice: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = sep + ctx: Store + element: Name + id: str = f + ctx: Store + ctx: Store + value: Call + func: Name + id: str = get_sep + ctx: Load + args: list + element: Subscript + value: Name + id: str = fmt + ctx: Load + slice: Slice + lower: Constant + value: int = 2 + kind: NoneType = None + upper: NoneType = None + step: NoneType = None + ctx: Load + keywords: list + type_comment: NoneType = None + orelse: list + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = sep + ctx: Store + element: Name + id: str = f + ctx: Store + ctx: Store + value: Call + func: Name + id: str = get_sep + ctx: Load + args: list + element: Name + id: str = fmt + ctx: Load + keywords: list + type_comment: NoneType = None + orelse: list + element: Return + value: Tuple + elts: list + element: Name + id: str = d + ctx: Load + element: Name + id: str = sep + ctx: Load + element: Name + id: str = f + ctx: Load + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = dir_val + ctx: Store + value: Dict + keys: list + values: list + type_comment: NoneType = None + element: While + test: Name + id: str = ts + ctx: Load + body: list + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = d + ctx: Store + element: Name + id: str = sep + ctx: Store + element: Name + id: str = fmt + ctx: Store + ctx: Store + value: Call + func: Name + id: str = get_next + ctx: Load + args: list + element: Name + id: str = fmt + ctx: Load + keywords: list + type_comment: NoneType = None + element: If + test: Compare + left: Name + id: str = sep + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = lv + ctx: Store + value: Constant + value: NoneType = None + kind: NoneType = None + type_comment: NoneType = None + element: If + test: Name + id: str = d + ctx: Load + body: list + element: Assign + targets: list + element: Name + id: str = l + ctx: Store + value: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + type_comment: NoneType = None + element: If + test: Compare + left: Name + id: str = d + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = Y + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = l + ctx: Store + value: Constant + value: int = 4 + kind: NoneType = None + type_comment: NoneType = None + orelse: list + element: If + test: Compare + left: Name + id: str = d + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = a + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = l + ctx: Store + value: Call + func: Name + id: str = len + ctx: Load + args: list + element: Subscript + value: Name + id: str = __weekdays + ctx: Load + slice: Constant + value: int = 0 + kind: NoneType = None + ctx: Load + keywords: list + type_comment: NoneType = None + orelse: list + element: If + test: Compare + left: Name + id: str = d + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = A + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = l + ctx: Store + value: Call + func: Name + id: str = len + ctx: Load + args: list + element: Subscript + value: Name + id: str = __weekdays_long + ctx: Load + slice: Constant + value: int = 0 + kind: NoneType = None + ctx: Load + keywords: list + type_comment: NoneType = None + orelse: list + element: If + test: Compare + left: Name + id: str = d + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = b + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = l + ctx: Store + value: Call + func: Name + id: str = len + ctx: Load + args: list + element: Subscript + value: Name + id: str = __months + ctx: Load + slice: Constant + value: int = 0 + kind: NoneType = None + ctx: Load + keywords: list + type_comment: NoneType = None + orelse: list + element: If + test: Compare + left: Name + id: str = d + ctx: Load + ops: list + element: In + comparators: list + element: Tuple + elts: list + element: Constant + value: str = d + kind: NoneType = None + element: Constant + value: str = m + kind: NoneType = None + element: Constant + value: str = H + kind: NoneType = None + element: Constant + value: str = M + kind: NoneType = None + element: Constant + value: str = S + kind: NoneType = None + ctx: Load + body: list + element: Assign + targets: list + element: Name + id: str = l + ctx: Store + value: Constant + value: int = 2 + kind: NoneType = None + type_comment: NoneType = None + orelse: list + element: If + test: Compare + left: Name + id: str = l + ctx: Load + ops: list + element: Gt + comparators: list + element: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = lv + ctx: Store + value: List + elts: list + element: Subscript + value: Name + id: str = ts + ctx: Load + slice: Slice + lower: NoneType = None + upper: Name + id: str = l + ctx: Load + step: NoneType = None + ctx: Load + element: Subscript + value: Name + id: str = ts + ctx: Load + slice: Slice + lower: Name + id: str = l + ctx: Load + upper: NoneType = None + step: NoneType = None + ctx: Load + ctx: Load + type_comment: NoneType = None + orelse: list + orelse: list + element: If + test: UnaryOp + op: Not + operand: Name + id: str = lv + ctx: Load + body: list + element: Assign + targets: list + element: Name + id: str = lv + ctx: Store + value: List + elts: list + element: Name + id: str = ts + ctx: Load + element: Constant + value: str = + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + orelse: list + orelse: list + element: Assign + targets: list + element: Name + id: str = lv + ctx: Store + value: Call + func: Name + id: str = _lsplit + ctx: Load + args: list + element: Name + id: str = ts + ctx: Load + element: Name + id: str = sep + ctx: Load + element: Constant + value: int = 1 + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: If + test: Compare + left: Name + id: str = d + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: NoneType = None + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = ts + ctx: Store + value: Subscript + value: Name + id: str = lv + ctx: Load + slice: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Continue + orelse: list + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = ts + ctx: Store + element: Subscript + value: Name + id: str = dir_val + ctx: Load + slice: Name + id: str = d + ctx: Load + ctx: Store + ctx: Store + value: Tuple + elts: list + element: Subscript + value: Name + id: str = lv + ctx: Load + slice: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + element: Subscript + value: Name + id: str = lv + ctx: Load + slice: Constant + value: int = 0 + kind: NoneType = None + ctx: Load + ctx: Load + type_comment: NoneType = None + element: If + test: Compare + left: Name + id: str = fmt + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = + kind: NoneType = None + body: list + element: Break + orelse: list + orelse: list + element: Assign + targets: list + element: Name + id: str = t + ctx: Store + value: List + elts: list + element: Constant + value: int = 1900 + kind: NoneType = None + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 0 + kind: NoneType = None + element: Constant + value: int = 0 + kind: NoneType = None + element: Constant + value: int = 0 + kind: NoneType = None + element: Constant + value: int = 0 + kind: NoneType = None + element: Constant + value: int = 1 + kind: NoneType = None + element: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = ignore_keys + ctx: Store + value: List + elts: list + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = have_weekday + ctx: Store + value: Constant + value: bool = False + kind: NoneType = None + type_comment: NoneType = None + element: For + target: Tuple + elts: list + element: Name + id: str = d + ctx: Store + element: Name + id: str = v + ctx: Store + ctx: Store + iter: Call + func: Attribute + value: Name + id: str = dir_val + ctx: Load + attr: str = items + ctx: Load + args: list + keywords: list + body: list + element: If + test: Compare + left: Name + id: str = d + ctx: Load + ops: list + element: In + comparators: list + element: Name + id: str = ignore_keys + ctx: Load + body: list + element: Continue + orelse: list + element: If + test: Compare + left: Name + id: str = d + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = p + kind: NoneType = None + body: list + element: Continue + orelse: list + element: If + test: Compare + left: Name + id: str = d + ctx: Load + ops: list + element: In + comparators: list + element: Call + func: Attribute + value: Name + id: str = __lu + ctx: Load + attr: str = keys + ctx: Load + args: list + keywords: list + body: list + element: Assign + targets: list + element: Subscript + value: Name + id: str = t + ctx: Load + slice: Subscript + value: Name + id: str = __lu + ctx: Load + slice: Name + id: str = d + ctx: Load + ctx: Load + ctx: Store + value: Call + func: Name + id: str = int + ctx: Load + args: list + element: Name + id: str = v + ctx: Load + keywords: list + type_comment: NoneType = None + element: Continue + orelse: list + element: If + test: Compare + left: Name + id: str = d + ctx: Load + ops: list + element: In + comparators: list + element: Tuple + elts: list + element: Constant + value: str = a + kind: NoneType = None + element: Constant + value: str = A + kind: NoneType = None + element: Constant + value: str = b + kind: NoneType = None + element: Constant + value: str = B + kind: NoneType = None + ctx: Load + body: list + element: Assign + targets: list + element: Name + id: str = v + ctx: Store + value: Call + func: Attribute + value: Name + id: str = v + ctx: Load + attr: str = lower + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + orelse: list + element: If + test: Compare + left: Name + id: str = d + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = m + kind: NoneType = None + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = ignore_keys + ctx: Load + attr: str = append + ctx: Load + args: list + element: Constant + value: str = b + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = ignore_keys + ctx: Load + attr: str = append + ctx: Load + args: list + element: Constant + value: str = B + kind: NoneType = None + keywords: list + orelse: list + element: If + test: Compare + left: Name + id: str = d + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = a + kind: NoneType = None + body: list + element: If + test: UnaryOp + op: Not + operand: Compare + left: Name + id: str = v + ctx: Load + ops: list + element: In + comparators: list + element: Name + id: str = __weekdays + ctx: Load + body: list + element: Raise + exc: Call + func: Name + id: str = ValueError + ctx: Load + args: list + element: Constant + value: str = Weekday unknown in your locale + kind: NoneType = None + keywords: list + cause: NoneType = None + orelse: list + element: Assign + targets: list + element: Name + id: str = have_weekday + ctx: Store + value: Constant + value: bool = True + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Subscript + value: Name + id: str = t + ctx: Load + slice: Constant + value: int = 6 + kind: NoneType = None + ctx: Store + value: Call + func: Attribute + value: Name + id: str = __weekdays + ctx: Load + attr: str = index + ctx: Load + args: list + element: Name + id: str = v + ctx: Load + keywords: list + type_comment: NoneType = None + orelse: list + element: If + test: Compare + left: Name + id: str = d + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = A + kind: NoneType = None + body: list + element: If + test: UnaryOp + op: Not + operand: Compare + left: Name + id: str = v + ctx: Load + ops: list + element: In + comparators: list + element: Name + id: str = __weekdays_long + ctx: Load + body: list + element: Raise + exc: Call + func: Name + id: str = ValueError + ctx: Load + args: list + element: Constant + value: str = Weekday unknown in your locale + kind: NoneType = None + keywords: list + cause: NoneType = None + orelse: list + element: Assign + targets: list + element: Name + id: str = have_weekday + ctx: Store + value: Constant + value: bool = True + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Subscript + value: Name + id: str = t + ctx: Load + slice: Constant + value: int = 6 + kind: NoneType = None + ctx: Store + value: Call + func: Attribute + value: Name + id: str = __weekdays_long + ctx: Load + attr: str = index + ctx: Load + args: list + element: Name + id: str = v + ctx: Load + keywords: list + type_comment: NoneType = None + orelse: list + element: If + test: Compare + left: Name + id: str = d + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = b + kind: NoneType = None + body: list + element: If + test: UnaryOp + op: Not + operand: Compare + left: Name + id: str = v + ctx: Load + ops: list + element: In + comparators: list + element: Name + id: str = __months + ctx: Load + body: list + element: Raise + exc: Call + func: Name + id: str = ValueError + ctx: Load + args: list + element: Constant + value: str = Month unknown in your locale + kind: NoneType = None + keywords: list + cause: NoneType = None + orelse: list + element: Assign + targets: list + element: Subscript + value: Name + id: str = t + ctx: Load + slice: Constant + value: int = 1 + kind: NoneType = None + ctx: Store + value: BinOp + left: Call + func: Attribute + value: Name + id: str = __months + ctx: Load + attr: str = index + ctx: Load + args: list + element: Name + id: str = v + ctx: Load + keywords: list + op: Add + right: Constant + value: int = 1 + kind: NoneType = None + type_comment: NoneType = None + orelse: list + element: If + test: Compare + left: Name + id: str = d + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = B + kind: NoneType = None + body: list + element: If + test: UnaryOp + op: Not + operand: Compare + left: Name + id: str = v + ctx: Load + ops: list + element: In + comparators: list + element: Name + id: str = __months_long + ctx: Load + body: list + element: Raise + exc: Call + func: Name + id: str = ValueError + ctx: Load + args: list + element: Constant + value: str = Month unknown in your locale + kind: NoneType = None + keywords: list + cause: NoneType = None + orelse: list + element: Assign + targets: list + element: Subscript + value: Name + id: str = t + ctx: Load + slice: Constant + value: int = 1 + kind: NoneType = None + ctx: Store + value: BinOp + left: Call + func: Attribute + value: Name + id: str = __months_long + ctx: Load + attr: str = index + ctx: Load + args: list + element: Name + id: str = v + ctx: Load + keywords: list + op: Add + right: Constant + value: int = 1 + kind: NoneType = None + type_comment: NoneType = None + orelse: list + element: If + test: Compare + left: Name + id: str = d + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = I + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = ampm + ctx: Store + value: BoolOp + op: Or + values: list + element: Subscript + value: Name + id: str = dir_val + ctx: Load + slice: Constant + value: str = p + kind: NoneType = None + ctx: Load + element: Constant + value: str = am + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = ampm + ctx: Store + value: Call + func: Attribute + value: Name + id: str = ampm + ctx: Load + attr: str = lower + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = v + ctx: Store + value: Call + func: Name + id: str = int + ctx: Load + args: list + element: Name + id: str = v + ctx: Load + keywords: list + type_comment: NoneType = None + element: If + test: Compare + left: Name + id: str = v + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: int = 12 + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = v + ctx: Store + value: Constant + value: int = 0 + kind: NoneType = None + type_comment: NoneType = None + orelse: list + element: If + test: Compare + left: Name + id: str = v + ctx: Load + ops: list + element: Gt + comparators: list + element: Constant + value: int = 12 + kind: NoneType = None + body: list + element: Raise + exc: Call + func: Name + id: str = ValueError + ctx: Load + args: list + element: BinOp + left: BinOp + left: BinOp + left: BinOp + left: Constant + value: str = time data ' + kind: NoneType = None + op: Add + right: Name + id: str = string + ctx: Load + op: Add + right: Constant + value: str = ' does not match format ' + kind: NoneType = None + op: Add + right: Name + id: str = format + ctx: Load + op: Add + right: Constant + value: str = ' + kind: NoneType = None + keywords: list + cause: NoneType = None + orelse: list + element: If + test: Compare + left: Name + id: str = ampm + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = pm + kind: NoneType = None + body: list + element: AugAssign + target: Name + id: str = v + ctx: Store + op: Add + value: Constant + value: int = 12 + kind: NoneType = None + orelse: list + element: Assign + targets: list + element: Subscript + value: Name + id: str = t + ctx: Load + slice: Subscript + value: Name + id: str = __lu + ctx: Load + slice: Constant + value: str = H + kind: NoneType = None + ctx: Load + ctx: Store + value: Name + id: str = v + ctx: Load + type_comment: NoneType = None + orelse: list + element: If + test: Compare + left: Name + id: str = d + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = y + kind: NoneType = None + body: list + element: Assign + targets: list + element: Subscript + value: Name + id: str = t + ctx: Load + slice: Constant + value: int = 0 + kind: NoneType = None + ctx: Store + value: BinOp + left: Constant + value: int = 2000 + kind: NoneType = None + op: Add + right: Call + func: Name + id: str = int + ctx: Load + args: list + element: Name + id: str = v + ctx: Load + keywords: list + type_comment: NoneType = None + orelse: list + element: If + test: Compare + left: Name + id: str = d + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: str = Z + kind: NoneType = None + body: list + element: If + test: Compare + left: Call + func: Attribute + value: Name + id: str = v + ctx: Load + attr: str = lower + ctx: Load + args: list + keywords: list + ops: list + element: In + comparators: list + element: List + elts: list + element: Constant + value: str = gmt + kind: NoneType = None + element: Constant + value: str = utc + kind: NoneType = None + ctx: Load + body: list + element: Assign + targets: list + element: Subscript + value: Name + id: str = t + ctx: Load + slice: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + ctx: Store + value: Constant + value: int = 0 + kind: NoneType = None + type_comment: NoneType = None + orelse: list + orelse: list + orelse: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = __date + ctx: Store + value: Call + func: Name + id: str = __new__ + ctx: Load + args: list + element: Call + func: Name + id: str = Date + ctx: Load + args: list + element: Constant + value: int = 0 + kind: NoneType = None + keywords: list + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = __date + ctx: Load + attr: str = setUTCFullYear + ctx: Load + args: list + element: Subscript + value: Name + id: str = t + ctx: Load + slice: Constant + value: int = 0 + kind: NoneType = None + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = __date + ctx: Load + attr: str = setUTCMonth + ctx: Load + args: list + element: BinOp + left: Subscript + value: Name + id: str = t + ctx: Load + slice: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + op: Sub + right: Constant + value: int = 1 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = __date + ctx: Load + attr: str = setUTCDate + ctx: Load + args: list + element: Subscript + value: Name + id: str = t + ctx: Load + slice: Constant + value: int = 2 + kind: NoneType = None + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = __date + ctx: Load + attr: str = setUTCHours + ctx: Load + args: list + element: Subscript + value: Name + id: str = t + ctx: Load + slice: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + keywords: list + element: Assign + targets: list + element: Subscript + value: Name + id: str = t + ctx: Load + slice: Constant + value: int = 7 + kind: NoneType = None + ctx: Store + value: Call + func: Name + id: str = _day_of_year + ctx: Load + args: list + element: Name + id: str = __date + ctx: Load + element: Constant + value: bool = True + kind: NoneType = None + keywords: list + type_comment: NoneType = None + element: If + test: UnaryOp + op: Not + operand: Name + id: str = have_weekday + ctx: Load + body: list + element: Assign + targets: list + element: Subscript + value: Name + id: str = t + ctx: Load + slice: Constant + value: int = 6 + kind: NoneType = None + ctx: Store + value: BinOp + left: Call + func: Attribute + value: Name + id: str = __date + ctx: Load + attr: str = getUTCDay + ctx: Load + args: list + keywords: list + op: Sub + right: Constant + value: int = 1 + kind: NoneType = None + type_comment: NoneType = None + orelse: list + element: Return + value: Name + id: str = t + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = strftime + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = format + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = t + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: FunctionDef + name: str = zf2 + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = v + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Constant + value: str = zfill missing + kind: NoneType = None + element: If + test: Compare + left: Name + id: str = v + ctx: Load + ops: list + element: Lt + comparators: list + element: Constant + value: int = 10 + kind: NoneType = None + body: list + element: Return + value: BinOp + left: Constant + value: str = 0 + kind: NoneType = None + op: Add + right: Call + func: Name + id: str = str + ctx: Load + args: list + element: Name + id: str = v + ctx: Load + keywords: list + orelse: list + element: Return + value: Name + id: str = v + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: If + test: UnaryOp + op: Not + operand: Name + id: str = t + ctx: Load + body: list + element: Assign + targets: list + element: Name + id: str = t + ctx: Store + value: Call + func: Name + id: str = localtime + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + orelse: list + element: Assign + targets: list + element: Name + id: str = f + ctx: Store + value: Name + id: str = format + ctx: Load + type_comment: NoneType = None + element: For + target: Name + id: str = d + ctx: Store + iter: Call + func: Attribute + value: Name + id: str = __lu + ctx: Load + attr: str = keys + ctx: Load + args: list + keywords: list + body: list + element: Assign + targets: list + element: Name + id: str = k + ctx: Store + value: BinOp + left: Constant + value: str = % + kind: NoneType = None + op: Add + right: Name + id: str = d + ctx: Load + type_comment: NoneType = None + element: If + test: UnaryOp + op: Not + operand: Compare + left: Name + id: str = k + ctx: Load + ops: list + element: In + comparators: list + element: Name + id: str = f + ctx: Load + body: list + element: Continue + orelse: list + element: Assign + targets: list + element: Name + id: str = v + ctx: Store + value: Call + func: Name + id: str = zf2 + ctx: Load + args: list + element: Subscript + value: Name + id: str = t + ctx: Load + slice: Subscript + value: Name + id: str = __lu + ctx: Load + slice: Name + id: str = d + ctx: Load + ctx: Load + ctx: Load + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = f + ctx: Store + value: Call + func: Attribute + value: Name + id: str = f + ctx: Load + attr: str = replace + ctx: Load + args: list + element: Name + id: str = k + ctx: Load + element: Name + id: str = v + ctx: Load + keywords: list + type_comment: NoneType = None + orelse: list + type_comment: NoneType = None + element: For + target: Tuple + elts: list + element: Name + id: str = d + ctx: Store + element: Name + id: str = l + ctx: Store + element: Name + id: str = pos + ctx: Store + ctx: Store + iter: Tuple + elts: list + element: Tuple + elts: list + element: Constant + value: str = b + kind: NoneType = None + element: Name + id: str = __months + ctx: Load + element: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + element: Tuple + elts: list + element: Constant + value: str = B + kind: NoneType = None + element: Name + id: str = __months_long + ctx: Load + element: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + element: Tuple + elts: list + element: Constant + value: str = a + kind: NoneType = None + element: Name + id: str = __weekdays + ctx: Load + element: Constant + value: int = 6 + kind: NoneType = None + ctx: Load + element: Tuple + elts: list + element: Constant + value: str = A + kind: NoneType = None + element: Name + id: str = __weekdays_long + ctx: Load + element: Constant + value: int = 6 + kind: NoneType = None + ctx: Load + ctx: Load + body: list + element: Assign + targets: list + element: Name + id: str = p + ctx: Store + value: Subscript + value: Name + id: str = t + ctx: Load + slice: Name + id: str = pos + ctx: Load + ctx: Load + type_comment: NoneType = None + element: If + test: Compare + left: Name + id: str = pos + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: int = 1 + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = p + ctx: Store + value: BinOp + left: Name + id: str = p + ctx: Load + op: Sub + right: Constant + value: int = 1 + kind: NoneType = None + type_comment: NoneType = None + orelse: list + element: Assign + targets: list + element: Name + id: str = v + ctx: Store + value: Call + func: Attribute + value: Subscript + value: Name + id: str = l + ctx: Load + slice: Name + id: str = p + ctx: Load + ctx: Load + attr: str = capitalize + ctx: Load + args: list + keywords: list + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = f + ctx: Store + value: Call + func: Attribute + value: Name + id: str = f + ctx: Load + attr: str = replace + ctx: Load + args: list + element: BinOp + left: Constant + value: str = % + kind: NoneType = None + op: Add + right: Name + id: str = d + ctx: Load + element: Name + id: str = v + ctx: Load + keywords: list + type_comment: NoneType = None + orelse: list + type_comment: NoneType = None + element: If + test: Compare + left: Constant + value: str = %p + kind: NoneType = None + ops: list + element: In + comparators: list + element: Name + id: str = f + ctx: Load + body: list + element: If + test: Compare + left: Subscript + value: Name + id: str = t + ctx: Load + slice: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + ops: list + element: Gt + comparators: list + element: Constant + value: int = 11 + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = ap + ctx: Store + value: Constant + value: str = PM + kind: NoneType = None + type_comment: NoneType = None + orelse: list + element: Assign + targets: list + element: Name + id: str = ap + ctx: Store + value: Constant + value: str = AM + kind: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Name + id: str = f + ctx: Store + value: Call + func: Attribute + value: Name + id: str = f + ctx: Load + attr: str = replace + ctx: Load + args: list + element: Constant + value: str = %p + kind: NoneType = None + element: Name + id: str = ap + ctx: Load + keywords: list + type_comment: NoneType = None + orelse: list + element: If + test: Compare + left: Constant + value: str = %y + kind: NoneType = None + ops: list + element: In + comparators: list + element: Name + id: str = f + ctx: Load + body: list + element: Assign + targets: list + element: Name + id: str = f + ctx: Store + value: Call + func: Attribute + value: Name + id: str = f + ctx: Load + attr: str = replace + ctx: Load + args: list + element: Constant + value: str = %y + kind: NoneType = None + element: Subscript + value: Call + func: Name + id: str = str + ctx: Load + args: list + element: Subscript + value: Name + id: str = t + ctx: Load + slice: Constant + value: int = 0 + kind: NoneType = None + ctx: Load + keywords: list + slice: Slice + lower: UnaryOp + op: USub + operand: Constant + value: int = 2 + kind: NoneType = None + upper: NoneType = None + step: NoneType = None + ctx: Load + keywords: list + type_comment: NoneType = None + orelse: list + element: If + test: Compare + left: Constant + value: str = %I + kind: NoneType = None + ops: list + element: In + comparators: list + element: Name + id: str = f + ctx: Load + body: list + element: Assign + targets: list + element: Name + id: str = v + ctx: Store + value: Subscript + value: Name + id: str = t + ctx: Load + slice: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: If + test: Compare + left: Name + id: str = v + ctx: Load + ops: list + element: Eq + comparators: list + element: Constant + value: int = 0 + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = v + ctx: Store + value: Constant + value: int = 12 + kind: NoneType = None + type_comment: NoneType = None + orelse: list + element: If + test: Compare + left: Name + id: str = v + ctx: Load + ops: list + element: Gt + comparators: list + element: Constant + value: int = 12 + kind: NoneType = None + body: list + element: Assign + targets: list + element: Name + id: str = v + ctx: Store + value: BinOp + left: Name + id: str = v + ctx: Load + op: Sub + right: Constant + value: int = 12 + kind: NoneType = None + type_comment: NoneType = None + orelse: list + element: Assign + targets: list + element: Name + id: str = f + ctx: Store + value: Call + func: Attribute + value: Name + id: str = f + ctx: Load + attr: str = replace + ctx: Load + args: list + element: Constant + value: str = %I + kind: NoneType = None + element: Call + func: Name + id: str = zf2 + ctx: Load + args: list + element: Name + id: str = v + ctx: Load + keywords: list + keywords: list + type_comment: NoneType = None + orelse: list + element: Return + value: Name + id: str = f + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/truthyness.js b/transcrypt/development/automated_tests/transcrypt/__target__39/truthyness.js new file mode 100644 index 000000000..e5a5159c0 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/truthyness.js @@ -0,0 +1,128 @@ +// Transcrypt'ed from Python, 2021-05-14 15:01:24 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get run () {return run;}, set run (value) {run = value;}}); +var __name__ = 'truthyness'; +export var run = function (autoTester) { + autoTester.check (len (dict ({1: 2}))); + autoTester.check ('Select nonemtpy container, if any
'); + autoTester.check (__t__ (0) || tuple ([1, 2, 3])); + autoTester.check (__t__ (tuple ([])) || tuple ([1, 2, 3])); + autoTester.check (__t__ (tuple ([])) || tuple ([])); + autoTester.check (__t__ (-__t__ ((1))) || __t__ (0) || tuple ([1, 2, 3])); + autoTester.check (__t__ (tuple ([])) || __t__ (0) || tuple ([1, 2, 3])); + autoTester.check (__t__ (tuple ([])) || __t__ (tuple ([])) || tuple ([1, 2, 3])); + autoTester.check (__t__ (tuple ([])) || __t__ (tuple ([])) || tuple ([])); + autoTester.check (__t__ ([0]) || [1, 2, 3]); + autoTester.check (__t__ ([]) || [1, 2, 3]); + autoTester.check (__t__ ([]) || []); + autoTester.check (__t__ ([-__t__ ((1))]) || __t__ ([0]) || [1, 2, 3]); + autoTester.check (__t__ ([]) || __t__ ([0]) || [1, 2, 3]); + autoTester.check (__t__ ([]) || __t__ ([]) || [1, 2, 3]); + autoTester.check (__t__ ([]) || __t__ ([]) || []); + autoTester.check (__t__ (new set ([0])) || new set ([1, 2, 3, 4])); + autoTester.check (__t__ (set ()) || new set ([1, 2, 3, 4])); + autoTester.check (__t__ (set ()) || set ()); + autoTester.check (__t__ (new set ([-__t__ ((1))])) || __t__ (new set ([0])) || new set ([1, 2, 3, 5])); + autoTester.check (__t__ (set ()) || __t__ (new set ([0])) || new set ([1, 2, 3, 6])); + autoTester.check (__t__ (set ()) || __t__ (set ()) || new set ([1, 2, 3, 7])); + autoTester.check (__t__ (set ()) || __t__ (set ()) || set ()); + autoTester.check (__t__ (dict ({0: 10})) || dict ({1: 11, 2: 12, 3: 13})); + autoTester.check (__t__ (dict ({})) || new set ([1, 2, 3, 8])); + autoTester.check (__t__ (dict ({})) || dict ({})); + autoTester.check (__t__ (dict ([[-__t__ ((1)), -__t__ ((11))]])) || __t__ (dict ({0: 10})) || dict ({1: 11, 2: 12, 3: 13})); + autoTester.check (__t__ (dict ({})) || __t__ (dict ({0: 10})) || dict ({1: 11, 2: 12, 3: 13})); + autoTester.check (__t__ (dict ({})) || __t__ (dict ({})) || dict ({1: 11, 2: 12, 3: 13})); + autoTester.check (__t__ (dict ({})) || __t__ (dict ({})) || dict ({})); + autoTester.check ('

'); + autoTester.check ('Boolean evaluations'); + for (var expression of tuple (['
-- falsy --
', tuple ([]), [], set (), dict ({}), 0, '', 3 > 5, false, '
-- truthy --
', tuple ([1, 2, 3]), [1, 2, 3], new set ([1, 2, 3]), dict ({'a': 1, 'b': 2, 'c': 3}), 3, 'hello', 5 > 3, true])) { + if (__t__ (__in__ (expression, tuple (['
-- falsy --
', '
-- truthy --
'])))) { + autoTester.check (expression); + } + else { + autoTester.check (expression, ' . . . '); + autoTester.check ('operators'); + autoTester.check (!__t__ ((!__t__ ((expression))))); + autoTester.check (!__t__ ((!__t__ ((__t__ (true) && expression))))); + autoTester.check (!__t__ ((!__t__ ((__t__ (false) || expression))))); + autoTester.check (!__t__ ((!__t__ ((__t__ (expression) && true))))); + autoTester.check (!__t__ ((!__t__ ((__t__ (expression) && false))))); + autoTester.check ('if'); + if (__t__ (expression)) { + autoTester.check (true); + } + else { + autoTester.check (false); + } + if (__t__ (__t__ (expression) || expression)) { + autoTester.check (true); + } + else { + autoTester.check (false); + } + if (__t__ (false)) { + autoTester.check ('if'); + } + else if (__t__ (expression)) { + autoTester.check ('elif'); + } + else { + autoTester.check ('else'); + } + autoTester.check ('while'); + while (__t__ (expression)) { + autoTester.check (true); + break; + } + autoTester.check ('condex'); + autoTester.check ((__t__ (expression) ? true : false)); + } + } + if (__t__ (0.0)) { + autoTester.check ('0.0'); + } + else if (__t__ (0.1)) { + autoTester.check ('0.1'); + } + else { + autoTester.check ("Shouldn't be here..."); + } + var A = __class__ ('A', [object], { + __module__: __name__, + }); + var B = __class__ ('B', [object], { + __module__: __name__, + get __bool__ () {return __get__ (this, function (self) { + return false; + });} + }); + var C = __class__ ('C', [object], { + __module__: __name__, + get __bool__ () {return __get__ (this, function (self) { + return true; + });}, + get __len__ () {return __get__ (this, function (self) { + return 0; + });} + }); + var D = __class__ ('D', [object], { + __module__: __name__, + get __len__ () {return __get__ (this, function (self) { + return 0; + });} + }); + var E = __class__ ('E', [object], { + __module__: __name__, + get __len__ () {return __get__ (this, function (self) { + return 1; + });} + }); + autoTester.check ('instances of custom classes'); + autoTester.check (!__t__ ((!__t__ ((A ()))))); + autoTester.check (!__t__ ((!__t__ ((B ()))))); + autoTester.check (!__t__ ((!__t__ ((C ()))))); + autoTester.check (!__t__ ((!__t__ ((D ()))))); + autoTester.check (!__t__ ((!__t__ ((E ()))))); +}; + +//# sourceMappingURL=truthyness.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/truthyness.tree b/transcrypt/development/automated_tests/transcrypt/__target__39/truthyness.tree new file mode 100644 index 000000000..f6acf51d1 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/truthyness.tree @@ -0,0 +1,1791 @@ +file: Module + body: list + element: ImportFrom + module: str = org.transcrypt.stubs.browser + names: list + element: alias + name: str = __pragma__ + asname: NoneType = None + level: int = 0 + element: Expr + value: Call + func: Name + id: str = __pragma__ + ctx: Load + args: list + element: Constant + value: str = tconv + kind: NoneType = None + keywords: list + element: FunctionDef + name: str = run + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = autoTester + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Call + func: Name + id: str = len + ctx: Load + args: list + element: Dict + keys: list + element: Constant + value: int = 1 + kind: NoneType = None + values: list + element: Constant + value: int = 2 + kind: NoneType = None + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Select nonemtpy container, if any
+ kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BoolOp + op: Or + values: list + element: Constant + value: int = 0 + kind: NoneType = None + element: Tuple + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BoolOp + op: Or + values: list + element: Tuple + elts: list + ctx: Load + element: Tuple + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BoolOp + op: Or + values: list + element: Tuple + elts: list + ctx: Load + element: Tuple + elts: list + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BoolOp + op: Or + values: list + element: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 0 + kind: NoneType = None + element: Tuple + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BoolOp + op: Or + values: list + element: Tuple + elts: list + ctx: Load + element: Constant + value: int = 0 + kind: NoneType = None + element: Tuple + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BoolOp + op: Or + values: list + element: Tuple + elts: list + ctx: Load + element: Tuple + elts: list + ctx: Load + element: Tuple + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BoolOp + op: Or + values: list + element: Tuple + elts: list + ctx: Load + element: Tuple + elts: list + ctx: Load + element: Tuple + elts: list + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BoolOp + op: Or + values: list + element: List + elts: list + element: Constant + value: int = 0 + kind: NoneType = None + ctx: Load + element: List + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BoolOp + op: Or + values: list + element: List + elts: list + ctx: Load + element: List + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BoolOp + op: Or + values: list + element: List + elts: list + ctx: Load + element: List + elts: list + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BoolOp + op: Or + values: list + element: List + elts: list + element: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + ctx: Load + element: List + elts: list + element: Constant + value: int = 0 + kind: NoneType = None + ctx: Load + element: List + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BoolOp + op: Or + values: list + element: List + elts: list + ctx: Load + element: List + elts: list + element: Constant + value: int = 0 + kind: NoneType = None + ctx: Load + element: List + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BoolOp + op: Or + values: list + element: List + elts: list + ctx: Load + element: List + elts: list + ctx: Load + element: List + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BoolOp + op: Or + values: list + element: List + elts: list + ctx: Load + element: List + elts: list + ctx: Load + element: List + elts: list + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BoolOp + op: Or + values: list + element: Set + elts: list + element: Constant + value: int = 0 + kind: NoneType = None + element: Set + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + element: Constant + value: int = 4 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BoolOp + op: Or + values: list + element: Call + func: Name + id: str = set + ctx: Load + args: list + keywords: list + element: Set + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + element: Constant + value: int = 4 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BoolOp + op: Or + values: list + element: Call + func: Name + id: str = set + ctx: Load + args: list + keywords: list + element: Call + func: Name + id: str = set + ctx: Load + args: list + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BoolOp + op: Or + values: list + element: Set + elts: list + element: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + element: Set + elts: list + element: Constant + value: int = 0 + kind: NoneType = None + element: Set + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + element: Constant + value: int = 5 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BoolOp + op: Or + values: list + element: Call + func: Name + id: str = set + ctx: Load + args: list + keywords: list + element: Set + elts: list + element: Constant + value: int = 0 + kind: NoneType = None + element: Set + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + element: Constant + value: int = 6 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BoolOp + op: Or + values: list + element: Call + func: Name + id: str = set + ctx: Load + args: list + keywords: list + element: Call + func: Name + id: str = set + ctx: Load + args: list + keywords: list + element: Set + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + element: Constant + value: int = 7 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BoolOp + op: Or + values: list + element: Call + func: Name + id: str = set + ctx: Load + args: list + keywords: list + element: Call + func: Name + id: str = set + ctx: Load + args: list + keywords: list + element: Call + func: Name + id: str = set + ctx: Load + args: list + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BoolOp + op: Or + values: list + element: Dict + keys: list + element: Constant + value: int = 0 + kind: NoneType = None + values: list + element: Constant + value: int = 10 + kind: NoneType = None + element: Dict + keys: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + values: list + element: Constant + value: int = 11 + kind: NoneType = None + element: Constant + value: int = 12 + kind: NoneType = None + element: Constant + value: int = 13 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BoolOp + op: Or + values: list + element: Dict + keys: list + values: list + element: Set + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + element: Constant + value: int = 8 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BoolOp + op: Or + values: list + element: Dict + keys: list + values: list + element: Dict + keys: list + values: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BoolOp + op: Or + values: list + element: Dict + keys: list + element: UnaryOp + op: USub + operand: Constant + value: int = 1 + kind: NoneType = None + values: list + element: UnaryOp + op: USub + operand: Constant + value: int = 11 + kind: NoneType = None + element: Dict + keys: list + element: Constant + value: int = 0 + kind: NoneType = None + values: list + element: Constant + value: int = 10 + kind: NoneType = None + element: Dict + keys: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + values: list + element: Constant + value: int = 11 + kind: NoneType = None + element: Constant + value: int = 12 + kind: NoneType = None + element: Constant + value: int = 13 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BoolOp + op: Or + values: list + element: Dict + keys: list + values: list + element: Dict + keys: list + element: Constant + value: int = 0 + kind: NoneType = None + values: list + element: Constant + value: int = 10 + kind: NoneType = None + element: Dict + keys: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + values: list + element: Constant + value: int = 11 + kind: NoneType = None + element: Constant + value: int = 12 + kind: NoneType = None + element: Constant + value: int = 13 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BoolOp + op: Or + values: list + element: Dict + keys: list + values: list + element: Dict + keys: list + values: list + element: Dict + keys: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + values: list + element: Constant + value: int = 11 + kind: NoneType = None + element: Constant + value: int = 12 + kind: NoneType = None + element: Constant + value: int = 13 + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: BoolOp + op: Or + values: list + element: Dict + keys: list + values: list + element: Dict + keys: list + values: list + element: Dict + keys: list + values: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str =

+ kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Boolean evaluations + kind: NoneType = None + keywords: list + element: For + target: Name + id: str = expression + ctx: Store + iter: Tuple + elts: list + element: Constant + value: str =
-- falsy --
+ kind: NoneType = None + element: Tuple + elts: list + ctx: Load + element: List + elts: list + ctx: Load + element: Call + func: Name + id: str = set + ctx: Load + args: list + keywords: list + element: Dict + keys: list + values: list + element: Constant + value: int = 0 + kind: NoneType = None + element: Constant + value: str = + kind: NoneType = None + element: Compare + left: Constant + value: int = 3 + kind: NoneType = None + ops: list + element: Gt + comparators: list + element: Constant + value: int = 5 + kind: NoneType = None + element: Constant + value: bool = False + kind: NoneType = None + element: Constant + value: str =
-- truthy --
+ kind: NoneType = None + element: Tuple + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + element: List + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + ctx: Load + element: Set + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + element: Dict + keys: list + element: Constant + value: str = a + kind: NoneType = None + element: Constant + value: str = b + kind: NoneType = None + element: Constant + value: str = c + kind: NoneType = None + values: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + element: Constant + value: int = 3 + kind: NoneType = None + element: Constant + value: str = hello + kind: NoneType = None + element: Compare + left: Constant + value: int = 5 + kind: NoneType = None + ops: list + element: Gt + comparators: list + element: Constant + value: int = 3 + kind: NoneType = None + element: Constant + value: bool = True + kind: NoneType = None + ctx: Load + body: list + element: If + test: Compare + left: Name + id: str = expression + ctx: Load + ops: list + element: In + comparators: list + element: Tuple + elts: list + element: Constant + value: str =
-- falsy --
+ kind: NoneType = None + element: Constant + value: str =
-- truthy --
+ kind: NoneType = None + ctx: Load + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = expression + ctx: Load + keywords: list + orelse: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = expression + ctx: Load + element: Constant + value: str = . . . + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = operators + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: UnaryOp + op: Not + operand: UnaryOp + op: Not + operand: Name + id: str = expression + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: UnaryOp + op: Not + operand: UnaryOp + op: Not + operand: BoolOp + op: And + values: list + element: Constant + value: bool = True + kind: NoneType = None + element: Name + id: str = expression + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: UnaryOp + op: Not + operand: UnaryOp + op: Not + operand: BoolOp + op: Or + values: list + element: Constant + value: bool = False + kind: NoneType = None + element: Name + id: str = expression + ctx: Load + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: UnaryOp + op: Not + operand: UnaryOp + op: Not + operand: BoolOp + op: And + values: list + element: Name + id: str = expression + ctx: Load + element: Constant + value: bool = True + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: UnaryOp + op: Not + operand: UnaryOp + op: Not + operand: BoolOp + op: And + values: list + element: Name + id: str = expression + ctx: Load + element: Constant + value: bool = False + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = if + kind: NoneType = None + keywords: list + element: If + test: Name + id: str = expression + ctx: Load + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: bool = True + kind: NoneType = None + keywords: list + orelse: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: bool = False + kind: NoneType = None + keywords: list + element: If + test: BoolOp + op: Or + values: list + element: Name + id: str = expression + ctx: Load + element: Name + id: str = expression + ctx: Load + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: bool = True + kind: NoneType = None + keywords: list + orelse: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: bool = False + kind: NoneType = None + keywords: list + element: If + test: Constant + value: bool = False + kind: NoneType = None + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = if + kind: NoneType = None + keywords: list + orelse: list + element: If + test: Name + id: str = expression + ctx: Load + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = elif + kind: NoneType = None + keywords: list + orelse: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = else + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = while + kind: NoneType = None + keywords: list + element: While + test: Name + id: str = expression + ctx: Load + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: bool = True + kind: NoneType = None + keywords: list + element: Break + orelse: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = condex + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: IfExp + test: Name + id: str = expression + ctx: Load + body: Constant + value: bool = True + kind: NoneType = None + orelse: Constant + value: bool = False + kind: NoneType = None + keywords: list + orelse: list + type_comment: NoneType = None + element: If + test: Constant + value: float = 0.0 + kind: NoneType = None + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = 0.0 + kind: NoneType = None + keywords: list + orelse: list + element: If + test: Constant + value: float = 0.1 + kind: NoneType = None + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = 0.1 + kind: NoneType = None + keywords: list + orelse: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = Shouldn't be here... + kind: NoneType = None + keywords: list + element: ClassDef + name: str = A + bases: list + keywords: list + body: list + element: Pass + decorator_list: list + element: ClassDef + name: str = B + bases: list + keywords: list + body: list + element: FunctionDef + name: str = __bool__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Constant + value: bool = False + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: ClassDef + name: str = C + bases: list + keywords: list + body: list + element: FunctionDef + name: str = __bool__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Constant + value: bool = True + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = __len__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Constant + value: int = 0 + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: ClassDef + name: str = D + bases: list + keywords: list + body: list + element: FunctionDef + name: str = __len__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Constant + value: int = 0 + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: ClassDef + name: str = E + bases: list + keywords: list + body: list + element: FunctionDef + name: str = __len__ + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = self + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Constant + value: int = 1 + kind: NoneType = None + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + decorator_list: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Constant + value: str = instances of custom classes + kind: NoneType = None + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: UnaryOp + op: Not + operand: UnaryOp + op: Not + operand: Call + func: Name + id: str = A + ctx: Load + args: list + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: UnaryOp + op: Not + operand: UnaryOp + op: Not + operand: Call + func: Name + id: str = B + ctx: Load + args: list + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: UnaryOp + op: Not + operand: UnaryOp + op: Not + operand: Call + func: Name + id: str = C + ctx: Load + args: list + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: UnaryOp + op: Not + operand: UnaryOp + op: Not + operand: Call + func: Name + id: str = D + ctx: Load + args: list + keywords: list + keywords: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: UnaryOp + op: Not + operand: UnaryOp + op: Not + operand: Call + func: Name + id: str = E + ctx: Load + args: list + keywords: list + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/tuple_assignment.js b/transcrypt/development/automated_tests/transcrypt/__target__39/tuple_assignment.js new file mode 100644 index 000000000..856bb3780 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/tuple_assignment.js @@ -0,0 +1,46 @@ +// Transcrypt'ed from Python, 2021-05-14 15:01:24 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get run () {return run;}, set run (value) {run = value;}}); +var __name__ = 'tuple_assignment'; +export var run = function (autoTester) { + var __left0__ = tuple ([tuple ([1, 2]), 'santa-claus', new set ([3, 4]), 5]); + var a = __left0__ [0][0]; + var b = __left0__ [0][1]; + var santa = __left0__ [1]; + var c = __left0__ [2][0]; + var d = __left0__ [2][1]; + var e = __left0__ [3]; + autoTester.check (a, b, c, d, e, santa); + for (var [i, x] of enumerate (tuple ([0.5, 1.5, 2.5, 3.5]))) { + autoTester.check (i, x); + } + var __left0__ = tuple ([3.14, 2.74]); + var e = __left0__ [0]; + var pi = __left0__ [1]; + var __left0__ = tuple ([pi, e]); + var e = __left0__ [0]; + var pi = __left0__ [1]; + autoTester.check (e, pi); + var f = function () { + return (function () { + var __accu0__ = []; + for (var i = 7000; i < 10000; i += 1000) { + __accu0__.append (tuple ([i, 2 * i])); + } + return __accu0__; + }) (); + }; + var g = function () { + return f; + }; + var __left0__ = g () (); + var k = __left0__ [0][0]; + var l = __left0__ [0][1]; + var m = __left0__ [1][0]; + var n = __left0__ [1][1]; + var o = __left0__ [2][0]; + var p = __left0__ [2][1]; + autoTester.check (k, l, m, n, o, p); +}; + +//# sourceMappingURL=tuple_assignment.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/tuple_assignment.tree b/transcrypt/development/automated_tests/transcrypt/__target__39/tuple_assignment.tree new file mode 100644 index 000000000..b032d62ed --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/tuple_assignment.tree @@ -0,0 +1,353 @@ +file: Module + body: list + element: FunctionDef + name: str = run + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = autoTester + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Assign + targets: list + element: Tuple + elts: list + element: Tuple + elts: list + element: Name + id: str = a + ctx: Store + element: Name + id: str = b + ctx: Store + ctx: Store + element: Name + id: str = santa + ctx: Store + element: List + elts: list + element: Name + id: str = c + ctx: Store + element: Name + id: str = d + ctx: Store + ctx: Store + element: Name + id: str = e + ctx: Store + ctx: Store + value: Tuple + elts: list + element: Tuple + elts: list + element: Constant + value: int = 1 + kind: NoneType = None + element: Constant + value: int = 2 + kind: NoneType = None + ctx: Load + element: Constant + value: str = santa-claus + kind: NoneType = None + element: Set + elts: list + element: Constant + value: int = 3 + kind: NoneType = None + element: Constant + value: int = 4 + kind: NoneType = None + element: Constant + value: int = 5 + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = a + ctx: Load + element: Name + id: str = b + ctx: Load + element: Name + id: str = c + ctx: Load + element: Name + id: str = d + ctx: Load + element: Name + id: str = e + ctx: Load + element: Name + id: str = santa + ctx: Load + keywords: list + element: For + target: Tuple + elts: list + element: Name + id: str = i + ctx: Store + element: Name + id: str = x + ctx: Store + ctx: Store + iter: Call + func: Name + id: str = enumerate + ctx: Load + args: list + element: Tuple + elts: list + element: Constant + value: float = 0.5 + kind: NoneType = None + element: Constant + value: float = 1.5 + kind: NoneType = None + element: Constant + value: float = 2.5 + kind: NoneType = None + element: Constant + value: float = 3.5 + kind: NoneType = None + ctx: Load + keywords: list + body: list + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = i + ctx: Load + element: Name + id: str = x + ctx: Load + keywords: list + orelse: list + type_comment: NoneType = None + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = e + ctx: Store + element: Name + id: str = pi + ctx: Store + ctx: Store + value: Tuple + elts: list + element: Constant + value: float = 3.14 + kind: NoneType = None + element: Constant + value: float = 2.74 + kind: NoneType = None + ctx: Load + type_comment: NoneType = None + element: Assign + targets: list + element: Tuple + elts: list + element: Name + id: str = e + ctx: Store + element: Name + id: str = pi + ctx: Store + ctx: Store + value: Tuple + elts: list + element: Name + id: str = pi + ctx: Load + element: Name + id: str = e + ctx: Load + ctx: Load + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = e + ctx: Load + element: Name + id: str = pi + ctx: Load + keywords: list + element: FunctionDef + name: str = f + args: arguments + posonlyargs: list + args: list + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: ListComp + elt: Tuple + elts: list + element: Name + id: str = i + ctx: Load + element: BinOp + left: Constant + value: int = 2 + kind: NoneType = None + op: Mult + right: Name + id: str = i + ctx: Load + ctx: Load + generators: list + element: comprehension + target: Name + id: str = i + ctx: Store + iter: Call + func: Name + id: str = range + ctx: Load + args: list + element: Constant + value: int = 7000 + kind: NoneType = None + element: Constant + value: int = 10000 + kind: NoneType = None + element: Constant + value: int = 1000 + kind: NoneType = None + keywords: list + ifs: list + is_async: int = 0 + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: FunctionDef + name: str = g + args: arguments + posonlyargs: list + args: list + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Name + id: str = f + ctx: Load + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + element: Assign + targets: list + element: Tuple + elts: list + element: List + elts: list + element: Name + id: str = k + ctx: Store + element: Name + id: str = l + ctx: Store + ctx: Store + element: List + elts: list + element: Name + id: str = m + ctx: Store + element: Name + id: str = n + ctx: Store + ctx: Store + element: Tuple + elts: list + element: Name + id: str = o + ctx: Store + element: Name + id: str = p + ctx: Store + ctx: Store + ctx: Store + value: Call + func: Call + func: Name + id: str = g + ctx: Load + args: list + keywords: list + args: list + keywords: list + type_comment: NoneType = None + element: Expr + value: Call + func: Attribute + value: Name + id: str = autoTester + ctx: Load + attr: str = check + ctx: Load + args: list + element: Name + id: str = k + ctx: Load + element: Name + id: str = l + ctx: Load + element: Name + id: str = m + ctx: Load + element: Name + id: str = n + ctx: Load + element: Name + id: str = o + ctx: Load + element: Name + id: str = p + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/typing.js b/transcrypt/development/automated_tests/transcrypt/__target__39/typing.js new file mode 100644 index 000000000..6383cccdc --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/typing.js @@ -0,0 +1,7 @@ +// Transcrypt'ed from Python, 2021-05-14 15:01:26 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +var __all__ = dict ({get ClassVar () {return ClassVar;}, set ClassVar (value) {ClassVar = value;}, get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}}); +var __name__ = 'typing'; +export var ClassVar = 'ClassVar'; + +//# sourceMappingURL=typing.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/typing.tree b/transcrypt/development/automated_tests/transcrypt/__target__39/typing.tree new file mode 100644 index 000000000..a176b968f --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/typing.tree @@ -0,0 +1,12 @@ +file: Module + body: list + element: Assign + targets: list + element: Name + id: str = ClassVar + ctx: Store + value: Constant + value: str = ClassVar + kind: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/unicodedata.js b/transcrypt/development/automated_tests/transcrypt/__target__39/unicodedata.js new file mode 100644 index 000000000..6a90f42df --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/unicodedata.js @@ -0,0 +1,9 @@ +// Transcrypt'ed from Python, 2021-05-14 15:01:24 +import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __conj__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, complex, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js'; +var __all__ = dict ({get __name__ () {return __name__;}, set __name__ (value) {__name__ = value;}, get normalize () {return normalize;}, set normalize (value) {normalize = value;}}); +var __name__ = 'unicodedata'; +export var normalize = function (form, unistr) { + return String.prototype.normalize.call (unistr, form); +}; + +//# sourceMappingURL=unicodedata.map \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/__target__39/unicodedata.tree b/transcrypt/development/automated_tests/transcrypt/__target__39/unicodedata.tree new file mode 100644 index 000000000..ca034c41f --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/__target__39/unicodedata.tree @@ -0,0 +1,47 @@ +file: Module + body: list + element: FunctionDef + name: str = normalize + args: arguments + posonlyargs: list + args: list + element: arg + arg: str = form + annotation: NoneType = None + type_comment: NoneType = None + element: arg + arg: str = unistr + annotation: NoneType = None + type_comment: NoneType = None + vararg: NoneType = None + kwonlyargs: list + kw_defaults: list + kwarg: NoneType = None + defaults: list + body: list + element: Return + value: Call + func: Attribute + value: Attribute + value: Attribute + value: Name + id: str = String + ctx: Load + attr: str = prototype + ctx: Load + attr: str = normalize + ctx: Load + attr: str = call + ctx: Load + args: list + element: Name + id: str = unistr + ctx: Load + element: Name + id: str = form + ctx: Load + keywords: list + decorator_list: list + returns: NoneType = None + type_comment: NoneType = None + type_ignores: list \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/autotest.py b/transcrypt/development/automated_tests/transcrypt/autotest.py index 74dd4764c..5b587e09e 100644 --- a/transcrypt/development/automated_tests/transcrypt/autotest.py +++ b/transcrypt/development/automated_tests/transcrypt/autotest.py @@ -38,6 +38,7 @@ if __pragma__ ('defined', 'undefined'): import module_collections +import module_copy import module_datetime import module_itertools import module_math @@ -56,6 +57,7 @@ import truthyness import tuple_assignment +import transducers autoTester = org.transcrypt.autotester.AutoTester () autoTester.run (arguments, 'arguments') @@ -95,6 +97,7 @@ if __pragma__ ('defined', 'undefined'): autoTester.run (module_collections, 'module_collections') +autoTester.run (module_copy, 'module_copy') autoTester.run (module_datetime, 'module_datetime') autoTester.run (module_itertools, 'module_itertools') autoTester.run (module_math, 'module_math') @@ -113,5 +116,6 @@ autoTester.run (truthyness, 'truthyness') autoTester.run (tuple_assignment, 'tuple_assignment') +autoTester.run (transducers, 'transducers') autoTester.done () diff --git a/transcrypt/development/automated_tests/transcrypt/dictionaries/__init__.py b/transcrypt/development/automated_tests/transcrypt/dictionaries/__init__.py index 8479f8a5c..7bd79057f 100644 --- a/transcrypt/development/automated_tests/transcrypt/dictionaries/__init__.py +++ b/transcrypt/development/automated_tests/transcrypt/dictionaries/__init__.py @@ -79,17 +79,66 @@ def run (autoTester): tel = {'guido': 123} tel.update({'edsger': 42}) + autoTester.check (tel) autoTester.check (tel.setdefault ('linus', 456)) autoTester.check (tel ['linus']) autoTester.check (tel.setdefault ('guido', 789)) + autoTester.check (tel.setdefault ('dennis', None)) + autoTester.check (tel.setdefault ('brian')) + autoTester.check (tel) autoTester.check (tel.pop ('guido', 1)) autoTester.check (tel.pop ('guido', 1)) autoTester.check (tel.pop ('edsger', 2)) autoTester.check (tel.pop ('foo', 'bar')) autoTester.check (tel.pop ('foo', None)) + autoTester.check (tel.get ('baz', 111)) + autoTester.check (tel.get ('baz')) + autoTester.check (tel.get ('baz', None)) + autoTester.check (tel) + autoTester.check (tel.popitem()) + autoTester.check (tel.popitem()) + autoTester.check (tel.popitem()) + autoTester.check (tel) + autoTester.check ("dictionary is empty", + autoTester.expectException ( lambda: tel.popitem() ) + ) + + d1 = {'c': 2, 'a': 3, 'd': 4, 'b': 1} + autoTester.check(d1) + d2 = d1.copy() + autoTester.check(d2) + d1['a'] = 5 + d2['c'] = 6 + autoTester.check(d1) + autoTester.check(d2) + d1['d'] = [3, 1, 2] + autoTester.check(d1) + d3 = d1.copy() + autoTester.check(d3) + d3['d'][1] = 9 + autoTester.check(d1) + autoTester.check(d3) + d4 = {} + d5 = d4.copy() + autoTester.check(d5) + + autoTester.check(dict.fromkeys(['b', 'c', 'a'])) + autoTester.check(dict.fromkeys(['b', 'c', 'a'], '42')) + autoTester.check(dict.fromkeys('bca')) + autoTester.check(d1.fromkeys('bca')) + autoTester.check(d1.fromkeys(['b', 'c', 'a'])) + autoTester.check(d1.fromkeys(['b', 'c', 'a'], '42')) + autoTester.check({}.fromkeys(['b', 'c', 'a'])) + + autoTester.check ("not iterable", autoTester.expectException ( lambda: dict.fromkeys(42) )) + autoTester.check ("missing argument", autoTester.expectException ( lambda: dict.fromkeys() )) + + # Check pop of None value (issue 827) + a = {'hello': None} + value = a.pop('hello', '') + autoTester.check('value = ', value, '; a = ', a) # Check compound keys (issue 281) - d = {} d ['a'] = 3777 d [(1, 2)] = 4777 @@ -99,9 +148,19 @@ def run (autoTester): d = {} d ['a'] = 3777 d [(1, 2)] = 4777 + # autoTester.check (d) # Test fails - JS only supports string keys autoTester.check (d ['a'], d [(1, 2)]) __pragma__ ('noopov') - + + # Check dict.popitem (issue 306) + dict_306 = {'Abraham': 'Lincoln', 'Barack': 'O\'Bama', 'Thomas': 'Jefferson'} + results = [] + try: + while True: + results.append (list(dict_306.popitem ())) + except Exception as exception: + autoTester.check (sorted (results)) + # Check exceptions knights = {'robin': 'the brave', 'gallahad': 'the pure'} autoTester.check ( diff --git a/transcrypt/development/automated_tests/transcrypt/div_issues/__init__.py b/transcrypt/development/automated_tests/transcrypt/div_issues/__init__.py index 1d1157050..ac954b9dc 100644 --- a/transcrypt/development/automated_tests/transcrypt/div_issues/__init__.py +++ b/transcrypt/development/automated_tests/transcrypt/div_issues/__init__.py @@ -264,16 +264,6 @@ def filter_word (word0, word1): autoTester.check (filter_word ('_in_', 'kind')) autoTester.check (filter_word ('min_', 'kind')) - autoTester.check ('Issue 306') - dict_306 = {'Abraham': 'Lincoln', 'Barack': 'O\'Bama', 'Thomas': 'Jefferson'} - results = [] - try: - while True: - results.append (dict_306.popitem ()) - except Exception as exception: - autoTester.check (sorted (results)) - autoTester.check ('That\'s it') - autoTester.check ('Issue 314') try: autoTester.check (int (float (123))) diff --git a/transcrypt/development/automated_tests/transcrypt/div_pulls/__init__.py b/transcrypt/development/automated_tests/transcrypt/div_pulls/__init__.py index 271246fbc..9003239ba 100644 --- a/transcrypt/development/automated_tests/transcrypt/div_pulls/__init__.py +++ b/transcrypt/development/automated_tests/transcrypt/div_pulls/__init__.py @@ -40,10 +40,6 @@ def run (autoTester): autoTester.check (s [2:]) autoTester.check (s [::2]) - autoTester.check ('Pull 59') - autoTester.check (list (filter (lambda x: x % 2 == 0, range (10)))) - autoTester.check (list (map (lambda x: x*x, range (0, 31, 3)))) - autoTester.check ('Pull 561') def brackets (word): autoTester.check ('sideeffect') diff --git a/transcrypt/development/automated_tests/transcrypt/general_functions/__init__.py b/transcrypt/development/automated_tests/transcrypt/general_functions/__init__.py index 9c40a1ca7..4f1c2cf22 100644 --- a/transcrypt/development/automated_tests/transcrypt/general_functions/__init__.py +++ b/transcrypt/development/automated_tests/transcrypt/general_functions/__init__.py @@ -35,12 +35,36 @@ def run (autoTester): autoTester.check (len (collection)) autoTester.check ('sort and sorted
') - a = [1, 5, 3, 2, -1] + a = [11, 7, 23, 4, -1] b = ['sun', 'earth', 'moon'] - + c = [{'name': 'Defg', 'qty': 99}, {'name': 'Abcd', 'qty': 42}, {'name': 'Hijk', 'qty': 11}] + d = [[21, 19, 54], [22, 7, 12, 37]] + + autoTester.check (a) autoTester.check (sorted (a)) + autoTester.check (a) + autoTester.check (sorted (a, key=str)) + autoTester.check (sorted (a, key=int)) autoTester.check (sorted (b)) - + + autoTester.check (sorted(c, key=lambda k: k['qty'])) + autoTester.check (sorted(c, key=lambda k: k['name'])) + autoTester.check (sorted(c, key=lambda k: k['name'], reverse=True)) + + autoTester.check (sorted(d)) + autoTester.check (sorted(d, key=sum)) + + # Make sure sorted is doing a proper shallow copy (issue 866) + e = sorted(d) + autoTester.check(e) + d[1][1] = 9 + autoTester.check(d) + autoTester.check(e) + d[1] = [22,14,36] + autoTester.check(d) + autoTester.check(e) + + a.sort () autoTester.check (a) @@ -53,6 +77,9 @@ def run (autoTester): a.sort (reverse = True) autoTester.check (a) + a.sort (key=int) + autoTester.check (a) + b.sort (reverse = True) autoTester.check (b) diff --git a/transcrypt/development/automated_tests/transcrypt/indices_and_slices/__init__.py b/transcrypt/development/automated_tests/transcrypt/indices_and_slices/__init__.py index 2ea2509a5..824087eff 100644 --- a/transcrypt/development/automated_tests/transcrypt/indices_and_slices/__init__.py +++ b/transcrypt/development/automated_tests/transcrypt/indices_and_slices/__init__.py @@ -1,3 +1,6 @@ +from org.transcrypt.stubs.browser import __pragma__ +from copy import copy + def run (autoTester): # Right hand side slices all = range (32) @@ -21,3 +24,189 @@ def run (autoTester): aList [ : : 2] = [x + 0.001 for x in range (10) if x % 2] autoTester.check (aList) + + allLists = [[], ['a', 'b', 'c', 'd', 'e', 'f', 'g'], ['a', 'b', 'c', 'd'], 'abcdefg', 'abc'] + for aList in allLists: + autoTester.check(aList) + autoTester.check(aList[:]) + autoTester.check(aList[None:None]) + autoTester.check(aList[::]) + autoTester.check(aList[::-1]) + autoTester.check(aList[-1:-8:-1]) + autoTester.check(aList[::2]) + autoTester.check(aList[::-2]) + autoTester.check(aList[:4:1]) + autoTester.check(aList[:4:-1]) + autoTester.check(aList[4:]) + autoTester.check(aList[4::]) + autoTester.check(aList[4::1]) + autoTester.check(aList[4::-1]) + autoTester.check(aList[1:4]) + autoTester.check(aList[1:4:1]) + autoTester.check(aList[1:4:2]) + autoTester.check(aList[1:4:-2]) + autoTester.check(aList[4:1:-2]) + autoTester.check(aList[4:1]) + autoTester.check(aList[-1:-4]) + autoTester.check(aList[-4:-1]) + autoTester.check(aList[-4:-1:2]) + autoTester.check(aList[-4:-1:-2]) + autoTester.check(aList[9:-9:1]) + autoTester.check(aList[-9:9:1]) + autoTester.check(aList[9:-9:-1]) + autoTester.check(aList[-9:9:-1]) + autoTester.check(aList[-9:9:-1]) + autoTester.check('zero step slice', autoTester.expectException(lambda: print(aList[::0]))) + + + sample_list = ['a', 'b', 'c', 'd', 'e', 'f', 'g'] + + autoTester.check("old:", sample_list) + new1 = sample_list.copy() + autoTester.check("new1:", new1) + new2 = sample_list[:] + autoTester.check("new2:", new2) + new3 = list(sample_list) + autoTester.check("new3:", new3) + # new4 = [*sample_list] # Does not work properly + # autoTester.check("new4:", new4) + new1[1] = 'x' + new2[2] = 'y' + new3[3] = 'z' + autoTester.check("updated:", sample_list, new1, new2, new3) + + aList = copy(sample_list) + aList[1:3] = ['x', 'y', 'z'] + autoTester.check(aList) + + aList = copy(sample_list) + aList[1:1] = ['x', 'y', 'z'] + autoTester.check(aList) + + aList = copy(sample_list) + aList[:] = ['x', 'y', 'z'] + autoTester.check(aList) + + aList = copy(sample_list) + aList[1:5] = ['x', 'y', 'z'] + autoTester.check(aList) + + aList = copy(sample_list) + aList[1:5] = 'xyz' + autoTester.check(aList) + + aList = copy(sample_list) + aList[0:5:2] = ['x', 'y', 'z'] + autoTester.check(aList) + + aList = copy(sample_list) + def aTest1(test_list): + test_list[1:5:2] = ['x', 'y', 'z'] # ValueError: attempt to assign sequence of size 3 to extended slice of size 2 + autoTester.check('Invalid slice assignment', autoTester.expectException(lambda: aTest1(aList))) + + aList = copy(sample_list) + aList[5:2:-1] = ['x', 'y', 'z'] + autoTester.check(aList) + + aList = copy(sample_list) + aList[5:0:-2] = ['x', 'y', 'z'] + autoTester.check(aList) + + aList = copy(sample_list) + aList[1:5] = [] + autoTester.check(aList) + + aList = copy(sample_list) + aList[1:5:1] = [] + autoTester.check(aList) + + aList = copy(sample_list) + def aTest3(test_list): + test_list[5:1:-1] = [] # ValueError: attempt to assign sequence of size 0 to extended slice of size 4 + autoTester.check('Invalid slice assignment', autoTester.expectException(lambda: aTest3(aList))) + + aList = copy(sample_list) + def aTest4(test_list): + test_list[5:1:-1] = ['x', 'y', 'z'] # ValueError: attempt to assign sequence of size 3 to extended slice of size 4 + autoTester.check('Invalid slice assignment', autoTester.expectException(lambda: aTest4(aList))) + + aList = copy(sample_list) + aList[1:5:-1] = [] + autoTester.check(aList) + + aList = copy(sample_list) + def aTest2(test_list): + test_list[0:5:-1] = ['x', 'y', 'z'] # ValueError: attempt to assign sequence of size 3 to extended slice of size 0 + autoTester.check('Invalid slice assignment', autoTester.expectException(lambda: aTest2(aList))) + + aList = copy(sample_list) + aList[0:7:3] = ['x', 'y', 'z'] + autoTester.check(aList) + + aList = copy(sample_list) + def aTest5(test_list): + test_list[1:7:3] = ['x', 'y', 'z'] # ValueError: attempt to assign sequence of size 3 to extended slice of size 2 + autoTester.check('Invalid slice assignment', autoTester.expectException(lambda: aTest5(aList))) + + aList = copy(sample_list) + def aTest6(test_list): + test_list[7:0:-3] = ['x', 'y', 'z'] # ValueError: attempt to assign sequence of size 3 to extended slice of size 2 + autoTester.check('Invalid slice assignment', autoTester.expectException(lambda: aTest6(aList))) + + aList = copy(sample_list) + aList[7:0:-3] = ['x', 'y'] + autoTester.check(aList) + + aList = copy(sample_list) + def aTest7(test_list): + test_list[7:0:0] = ['x', 'y', 'z'] # ValueError: slice step cannot be zero + autoTester.check('zero step slice', autoTester.expectException(lambda: aTest7(aList))) + + aList = ['a', 'b', 'c'] + aList.remove('b') + autoTester.check(aList) + aList.remove('a') + autoTester.check(aList) + autoTester.check('not in list', autoTester.expectException(lambda: aList.remove('d'))) + autoTester.check(aList) + aList.remove('c') + autoTester.check(aList) + autoTester.check('not in list', autoTester.expectException(lambda: aList.remove('c'))) + autoTester.check(aList) + + aList = ['a', 'b', 'c', 'd', 'e', 'f'] + aList.pop(2) + autoTester.check(aList) + aList.pop(0) + autoTester.check(aList) + aList.pop(-3) + autoTester.check(aList) + aList.pop(-1) + autoTester.check(aList) + autoTester.check('out of range', autoTester.expectException(lambda: aList.pop(-3))) + autoTester.check('out of range', autoTester.expectException(lambda: aList.pop(3))) + aList.pop() + autoTester.check(aList) + aList.pop() + autoTester.check(aList) + autoTester.check('empty list', autoTester.expectException(lambda: aList.pop())) + + # Check pop of empty list (issue 854) + autoTester.check('empty list', autoTester.expectException(lambda: aList.pop(-1))) + autoTester.check('empty list', autoTester.expectException(lambda: aList.pop(0))) + autoTester.check('empty list', autoTester.expectException(lambda: aList.pop(1))) + + # Check for invalid list index (issue 637) + allLists = [['a', 'b', 'c'], 'abc'] + for aList in allLists: + __pragma__('opov') + autoTester.check('valid index', autoTester.expectException(lambda: aList[1])) + autoTester.check(aList[1]) + autoTester.check('valid index', autoTester.expectException(lambda: aList[-2])) + autoTester.check(aList[-2]) + autoTester.check('invalid index', autoTester.expectException(lambda: aList[3])) + autoTester.check('invalid index', autoTester.expectException(lambda: aList[-4])) + __pragma__('noopov') + autoTester.check(aList[1]) + # autoTester.check('invalid index', autoTester.expectException(lambda: aList[-4])) # test differs from CPython without opov + diff --git a/transcrypt/development/automated_tests/transcrypt/iterators_and_generators/__init__.py b/transcrypt/development/automated_tests/transcrypt/iterators_and_generators/__init__.py index 9fa7c195e..9b0009b96 100644 --- a/transcrypt/development/automated_tests/transcrypt/iterators_and_generators/__init__.py +++ b/transcrypt/development/automated_tests/transcrypt/iterators_and_generators/__init__.py @@ -23,8 +23,8 @@ def __next__ (self): # Should be auto-wrapped in a next (self) by the compile def __iter__ (self): return self -def exhaustableGenerator (i): - for i in range (5): +def exhaustableGenerator (n): + for i in range (n): yield 2 * i def run (autoTester): @@ -63,7 +63,24 @@ def run (autoTester): autoTester.check ('[4]') for n in iterable: autoTester.check (n) - + + iterables = [['a', 'b', 'c', 'd', 'e'], 'abcde', ('a', 'b', 'c', 'd', 'e')] + for iterable in iterables: + # JS does not have tuples so coerce to list of lists + autoTester.check("enumerate", + [list(item) for item in enumerate(iterable)], + [list(item) for item in enumerate(iterable, 1)], + [list(item) for item in enumerate(iterable, start=2)] + ) + + # issue #618 + for iterable in iterables: + autoTester.check('[5]') + for i, n in enumerate(iterable): + toto = str(i) + '-' + str(n) + autoTester.check(toto) + + # BEGIN issue 196: for loop over iter (), runs OK but needs JavaScript 6. This should be clearly in the docs. a = 0 @@ -136,4 +153,8 @@ def mainCoroutine (): m = mainCoroutine () for i in range (5): m.send (None) - \ No newline at end of file + + + gen3 = iter(range(2)) + autoTester.check('next', next(gen3), next(gen3), next(gen3, 8), next(gen3, 9), next(gen3, None)) + autoTester.check('StopIteration', autoTester.expectException(lambda: next(gen3))) diff --git a/transcrypt/development/automated_tests/transcrypt/module_builtin/__init__.py b/transcrypt/development/automated_tests/transcrypt/module_builtin/__init__.py index d7fc29c31..c82fb1d64 100644 --- a/transcrypt/development/automated_tests/transcrypt/module_builtin/__init__.py +++ b/transcrypt/development/automated_tests/transcrypt/module_builtin/__init__.py @@ -1,110 +1,218 @@ -# coding: utf-8 - -from org.transcrypt.stubs.browser import __envir__ - -def canonizeString (aString): - if __envir__.executor_name == 'transcrypt': - return aString.replace ('\t', '\\t') .replace ('\n', '\\n') - else: - return aString - -def canonizeStringList (stringList): - return [canonizeString (aString) for aString in stringList] - -def run (autoTester): - autoTester.check ('min', min (-1.1, -1, -3)) - autoTester.check ('max', max (-1.1, -1, -3)) - autoTester.check ('abs', abs (-1), abs (1), abs (0), abs (-0.1), abs (0.1)) - autoTester.check ('ord', ord ('a'), ord ('e´'[0])) # This is the 2 codepoint version - - autoTester.check ('round', - round (4.006), - round (4.006, 2), - round (4060, -2), - - round (-4.006), - round (-4.006, 2), - round (-4060, -2), - - round (1/2.), - round (1/2., 1), - round (1/2, 1), - round (1/3., 2), - - round (-1/2.), - round (-1/2., 1), - round (-1/2, 1), - round (-1/3., 2), - - round (0.5), - round (0.51), - round (1.5), - round (1.51), - round (1.51), - round (2.5), - round (2.59), - round (3.5), - round (3.59), - - round (-0.5), - round (-0.51), - round (-1.5), - round (-1.51), - round (-1.51), - round (-2.5), - round (-2.59), - round (-3.5), - round (-3.59) - ) - - strings = [ - 'der des dem den die der den die das des dem das', - 'an auf hinter ueber neben vor zwischen', - ''' - durch - fuer - ohne - um - bis - gegen - entlang - ''', - 'eins,zwei,drie,vier,fuenf,sechs,sieben' - ] - - autoTester.check ('

split') - for aString in strings: - autoTester.check ( - canonizeString (aString), - canonizeStringList (aString.split ()), - canonizeStringList (aString.split (' ')), - canonizeStringList (aString.split (' ', 4)), - canonizeStringList (aString.split ('\t')), - canonizeStringList (aString.split ('\t', 4)), - canonizeStringList (aString.split ('\n')), - canonizeStringList (aString.split ('\n', 4)), - canonizeStringList (aString.split (',')), - canonizeStringList (aString.split (',', 4)), - '
' - ) - - autoTester.check ('
rsplit') - for aString in strings: - autoTester.check ( - canonizeString (aString), - canonizeStringList (aString.rsplit ()), - canonizeStringList (aString.rsplit (' ')), - canonizeStringList (aString.rsplit (' ', 4)), - canonizeStringList (aString.rsplit ('\t')), - canonizeStringList (aString.rsplit ('\t', 4)), - canonizeStringList (aString.rsplit ('\n')), - canonizeStringList (aString.rsplit ('\n', 4)), - canonizeStringList (aString.rsplit (',')), - canonizeStringList (aString.rsplit (',', 4)), - '
' - ) - - autoTester.check("".isalpha()) - autoTester.check("123".isalpha()) - autoTester.check("abc".isalpha()) - autoTester.check("abc123".isalpha()) +# coding: utf-8 + +from org.transcrypt.stubs.browser import __envir__ + +def canonizeString (aString): + if __envir__.executor_name == 'transcrypt': + return aString.replace ('\t', '\\t').replace ('\n', '\\n').replace ('\r', '\\r') + else: + return aString + +def canonizeStringList (stringList): + return [canonizeString (aString) for aString in stringList] + +def run (autoTester): + autoTester.check ('min', + min (-1.1, -1, -3), + min ([-1.1, -1, -3]), + min ((-1.1, -1, -3)), + min ('abc', 'ABC', 'xyz', 'XYZ'), + min ('abc', 'ABC', 'xyz', 'XYZ', key=lambda v: v[1]), + min (['abc', 'ABC', 'xyz', 'XYZ']), + min([5,6,7,8,9],[1,2,3,4],key=len), + min([[5,6,7,8,9],[1,2,3,4]],default=[1,1,1],key=len), + min ([], default='zzz'), + ) + + autoTester.check ('max', + max (-1.1, -1, -3), + max ([-1.1, -1, -3]), + max ((-1.1, -1, -3)), + max ('abc', 'ABC', 'xyz', 'XYZ'), + max ('abc', 'ABC', 'xyz', 'XYZ', key=lambda v: v[1]), + max (['abc', 'ABC', 'xyz', 'XYZ']), + max([5,6,7,8,9],[1,2,3,4],key=len), + max([[5,6,7,8,9],[1,2,3,4]],default=[1,1,1],key=len), + max ([], default='zzz'), + ) + autoTester.check ('max', autoTester.expectException(lambda: max () )) + autoTester.check ('max', autoTester.expectException(lambda: max (1,2,3,4, default=5) )) + autoTester.check ('max', autoTester.expectException(lambda: max (default=5))) + autoTester.check ('max', autoTester.expectException(lambda: max ([]))) + autoTester.check ('max', autoTester.expectException(lambda: max([5,6,7,8,9],[1,2,3,4],default=[1,1,1],key=len) )) + # autoTester.check ('max', autoTester.expectException(lambda: max ([4, 5, 'xyz', 'XYZ']) )) # exception not currently implemented + + autoTester.check ('abs', abs (-1), abs (1), abs (0), abs (-0.1), abs (0.1)) + autoTester.check ('pow', pow (2, 2), pow(0, 0), pow(1, 0), pow(2, 1), f"{pow(4, 0.5):g}") + + autoTester.check ('ord', ord ('a'), ord ('e´'[0])) # This is the 2 codepoint version + autoTester.check ('chr', chr (97), chr (122), chr (65), chr (90)) # a z A Z + + autoTester.check ('round', + round (4.006), + round (4.006, 2), + round (4060, -2), + + round (-4.006), + round (-4.006, 2), + round (-4060, -2), + + round (1/2.), + round (1/2., 1), + round (1/2, 1), + round (1/3., 2), + + round (-1/2.), + round (-1/2., 1), + round (-1/2, 1), + round (-1/3., 2), + + round (0.5), + round (0.51), + round (1.5), + round (1.51), + round (1.51), + round (2.5), + round (2.59), + round (3.5), + round (3.59), + + round (-0.5), + round (-0.51), + round (-1.5), + round (-1.51), + round (-1.51), + round (-2.5), + round (-2.59), + round (-3.5), + round (-3.59) + ) + + strings = [ + 'der des dem den die der den die das des dem das', + 'an auf hinter ueber neben vor zwischen', + ''' + durch + fuer + ohne + um + bis + gegen + entlang + ''', + 'eins,zwei,drie,vier,fuenf,sechs,sieben' + ] + + autoTester.check ('

split') + for aString in strings: + autoTester.check ( + canonizeString (aString), + canonizeStringList (aString.split ()), + canonizeStringList (aString.split (' ')), + canonizeStringList (aString.split (' ', 4)), + canonizeStringList (aString.split ('\t')), + canonizeStringList (aString.split ('\t', 4)), + canonizeStringList (aString.split ('\n')), + canonizeStringList (aString.split ('\n', 4)), + canonizeStringList (aString.split (',')), + canonizeStringList (aString.split (',', 4)), + '
' + ) + + autoTester.check ('
rsplit') + for aString in strings: + autoTester.check ( + canonizeString (aString), + canonizeStringList (aString.rsplit ()), + canonizeStringList (aString.rsplit (' ')), + canonizeStringList (aString.rsplit (' ', 4)), + canonizeStringList (aString.rsplit ('\t')), + canonizeStringList (aString.rsplit ('\t', 4)), + canonizeStringList (aString.rsplit ('\n')), + canonizeStringList (aString.rsplit ('\n', 4)), + canonizeStringList (aString.rsplit (',')), + canonizeStringList (aString.rsplit (',', 4)), + '
' + ) + + lines_to_split = ['', '\n', + 'abc\n', + 'abc\ndef', + 'abc\rdef', + 'abc\r\ndef', + '\nabc', + '\nabc\n', + 'abc\ndef\r\nghi\rjkl\n', + 'abc\ndef\n\nghi\njkl' + ] + autoTester.check ('
splitlines') + for line in lines_to_split: + autoTester.check ( + canonizeStringList(line.splitlines ()), + canonizeStringList(line.splitlines (True)), + ) + + autoTester.check("isalpha", + "".isalpha(), + "123".isalpha(), + "abc".isalpha(), + "abc123".isalpha(), + ) + + replace_test = "abcabcabcabc" + autoTester.check("replace", + replace_test.replace("c", "x"), + replace_test.replace("c", "x", -1), + replace_test.replace("c", "x", 0), + replace_test.replace("c", "x", 1), + replace_test.replace("c", "x", 2), + replace_test.replace("c", "x", 10), + ) + + autoTester.check("bin-oct-hex", + bin(42), + oct(42), + hex(42), + bin(0), + oct(0), + hex(0), + bin(-42), + oct(-42), + hex(-42), + ) + + string_test = "abcdefghijkl" + autoTester.check("startswith", + string_test.startswith(""), + string_test.startswith("abcd"), + string_test.startswith("efgh"), + string_test.startswith("efgh", 2), + string_test.startswith("efgh", 4), + string_test.startswith("abcd", 0, 3), + string_test.startswith("abcd", 0, 5), + string_test.startswith("efgh", 4, -2), + string_test.startswith("efgh", 4, -6), + string_test.startswith(("abc",)), + string_test.startswith(("abc", "de", "gh")), + string_test.startswith(("abc", "de", "gh"), 2), + string_test.startswith(("abc", "de", "gh"), 3), + string_test.startswith(("abc", "defgh"), 3, 9), + string_test.startswith(("abc", "defgh"), 3, 6), + ) + + autoTester.check("endswith", + string_test.endswith(""), + string_test.endswith("ijkl"), + string_test.endswith("efgh"), + string_test.endswith("efgh", 2), + string_test.endswith("abcd", 0, 3), + string_test.endswith("abcd", 0, 4), + string_test.endswith("efgh", 4, -2), + string_test.endswith("efgh", 4, -4), + string_test.endswith(("ijkl",)), + string_test.endswith(("abc", "de", "gh")), + string_test.endswith(("abc", "de", "gh"), 3, -4), + string_test.endswith(("abc", "de", "gh"), -6, -4), + string_test.endswith(("abc", "defgh"), -3, 8), + string_test.endswith(("abc", "defgh"), -9, 8), + ) diff --git a/transcrypt/development/automated_tests/transcrypt/module_copy/__init__.py b/transcrypt/development/automated_tests/transcrypt/module_copy/__init__.py new file mode 100644 index 000000000..ca8a58600 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/module_copy/__init__.py @@ -0,0 +1,23 @@ +import copy + +def run (autoTester): + a = {'a': 1, 'b': 2, 'c': 3} + b = copy.copy(a) + c = [[1,2,3],[4,5,6]] + d = copy.copy(c) + e = copy.deepcopy(c) + + autoTester.check ('copy') + autoTester.check (b) + autoTester.check (a) + a['b'] = 9 + autoTester.check (a) + autoTester.check (b) + + autoTester.check ('deepcopy') + autoTester.check (d) + autoTester.check (e) + c[1][1] = 9 + autoTester.check (c) + autoTester.check (d) + autoTester.check (e) diff --git a/transcrypt/development/automated_tests/transcrypt/module_datetime/__init__.py b/transcrypt/development/automated_tests/transcrypt/module_datetime/__init__.py index e62f2d7ca..bad0e4db7 100644 --- a/transcrypt/development/automated_tests/transcrypt/module_datetime/__init__.py +++ b/transcrypt/development/automated_tests/transcrypt/module_datetime/__init__.py @@ -42,7 +42,8 @@ def run (autoTester): autoTester.check (d.day) autoTester.check (d.weekday ()) autoTester.check (d.isoweekday ()) - autoTester.check (d.isocalendar ()) + # !!! autoTester.check (d.isocalendar ()) Format changed in Python 3.9! + # Autotest: module_datetime/__init__.py:45 datetime.IsoCalendarDate(year=2021, week=19, weekday=5) (2021, 19, 5) module_datetime.js:108 autoTester.check (d.ctime ()) d = d.replace (day=28) autoTester.check (d.day) diff --git a/transcrypt/development/automated_tests/transcrypt/module_math/__init__.py b/transcrypt/development/automated_tests/transcrypt/module_math/__init__.py index d67de7414..e4c376002 100644 --- a/transcrypt/development/automated_tests/transcrypt/module_math/__init__.py +++ b/transcrypt/development/automated_tests/transcrypt/module_math/__init__.py @@ -50,8 +50,37 @@ def run (autoTester): check (floor (3.5)) check (ceil (3.5)) check (trunc (3.5)) + + # Format float since python adds .0 and JS does not + autoTester.check('{0:g}'.format(copysign(42.0, 99.0))) + autoTester.check('{0:g}'.format(copysign(-42, 99.0))) + autoTester.check('{0:g}'.format(copysign(42, -99.0))) + autoTester.check('{0:g}'.format(copysign(-42.0, -99.0))) + + autoTester.check( + isclose(2.123456, 2.123457), + isclose(2.12, 2.123457), + isclose(2.1234567891, 2.1234567892), + isclose(2.1, 2, rel_tol=0.05), + isclose(2.15, 2, rel_tol=0.05), + isclose(1, 1), + isclose(1, 1.000000002), + isclose(1, 1.0000000002), + isclose(1.0, 1.02, rel_tol=0.02), + isclose(1.0, 1.02, rel_tol=0.0, abs_tol=0.02), + isclose(0.000000001, 0.0, rel_tol=0.000000001), + isclose(0.000000001, 0.0, rel_tol=0.0, abs_tol=0.000000000999), + isclose(0.000000001, 0.0, rel_tol=0.0, abs_tol=0.000000001), + isclose(0.0, 0.000000001, rel_tol=0.0, abs_tol=0.000000001), + ) + + autoTester.check (isnan (3)) + autoTester.check (isnan (nan)) - check (isnan (3)) - check (isnan (nan)) - - + # from issue #529 regarding returned type for pow() + autoTester.check('2 ** 2 = {}'.format(2 ** 2)) + autoTester.check('2.0 ** 2 = {:g}'.format(2.0 ** 2)) # type limitation: JS outputs int instead of float + autoTester.check('math.pow(2, 2) = {:g}'.format(pow(2, 2))) # type limitation: JS outputs int instead of float + autoTester.check('math.pow(3, 2.9) = {}'.format(pow(3, 2.9))) + autoTester.check('math.pow(3, 2.0) = {:g}'.format(pow(3, 2.0))) # type limitation: JS outputs int instead of float + autoTester.check('math.pow(3.1, 2.0) = {}'.format(pow(3.1, 2.0))) \ No newline at end of file diff --git a/transcrypt/development/automated_tests/transcrypt/run b/transcrypt/development/automated_tests/transcrypt/run index 29031231d..2e80a3701 100644 --- a/transcrypt/development/automated_tests/transcrypt/run +++ b/transcrypt/development/automated_tests/transcrypt/run @@ -1,3 +1,3 @@ py38 ../../../__main__.py -r -xr -n -b -da -xg -c -sf autotest -py38 ../../../__main__.py -xr -n -b -da -xg -c -sf autotest +py38 ../../../__main__.py -xt -xr -n -b -da -xg -c -sf autotest py38 -m http.server diff --git a/transcrypt/development/automated_tests/transcrypt/run38 b/transcrypt/development/automated_tests/transcrypt/run38 new file mode 100644 index 000000000..855512b9a --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/run38 @@ -0,0 +1,3 @@ +py38 ../../../__main__.py -r -xr -n -b -da -xg -c -sf autotest +py38 ../../../__main__.py -dt -xr -n -b -da -xg -c -sf autotest +py38 -m http.server diff --git a/transcrypt/development/automated_tests/transcrypt/run39 b/transcrypt/development/automated_tests/transcrypt/run39 new file mode 100644 index 000000000..2d537d483 --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/run39 @@ -0,0 +1,3 @@ +py39 ../../../__main__.py -r -xr -n -b -da -xg -c -sf autotest +py39 ../../../__main__.py -dt -xr -n -b -da -xg -c -sf autotest +py39 -m http.server diff --git a/transcrypt/development/automated_tests/transcrypt/transducers/__init__.py b/transcrypt/development/automated_tests/transcrypt/transducers/__init__.py new file mode 100644 index 000000000..22f2f8d6f --- /dev/null +++ b/transcrypt/development/automated_tests/transcrypt/transducers/__init__.py @@ -0,0 +1,11 @@ + +def run (autoTester): + autoTester.check ('filter', + list (filter (lambda x: x % 2 == 0, range (10))), + ) + + autoTester.check ('map', + list (map (lambda x: x* x, range(0, 31, 3))), + list (map (lambda x, y: x * y, range(0, 31, 3), [1, 2, 3])), + list (map (lambda x, y, z: x * y + z, range(0, 31, 3), [1, 2, 3, 4], (2, 4, 6))), + ) diff --git a/transcrypt/development/continuous_integration/run.sh b/transcrypt/development/continuous_integration/run.sh index d71f55f06..e1bcb839f 100644 --- a/transcrypt/development/continuous_integration/run.sh +++ b/transcrypt/development/continuous_integration/run.sh @@ -1,25 +1,25 @@ -# Create symlink for chromedriver - -ln -s /usr/lib/chromium-browser/chromedriver ~/bin/chromedriver - -# Install Python modules - -pip install mypy -pip install selenium - -# Show where we are and what's there - -pwd -ls -a -l - -# Make everything executable and the rest - -chmod -R 777 . - -# Enable shipment_test.py to find run_python - -export PATH=$PATH:./transcrypt - -# Run the shipment test - -python ./transcrypt/development/shipment/shipment_test.py --unattended +# Create symlink for chromedriver + +ln -s /usr/lib/chromium-browser/chromedriver ~/bin/chromedriver + +# Install Python modules + +pip install mypy +pip install selenium + +# Show where we are and what's there + +pwd +ls -a -l + +# Make everything executable and the rest + +chmod -R 777 . + +# Enable shipment_test.py to find run_python + +export PATH=$PATH:./transcrypt + +# Run the shipment test + +python ./transcrypt/development/shipment/shipment_test.py --unattended --transcom ts_travis diff --git a/transcrypt/development/manual_tests/async_await/test.py b/transcrypt/development/manual_tests/async_await/test.py index 6b179886b..a6ff69408 100644 --- a/transcrypt/development/manual_tests/async_await/test.py +++ b/transcrypt/development/manual_tests/async_await/test.py @@ -1,5 +1,17 @@ from org.transcrypt.stubs.browser import __pragma__, __envir__ +print ('Correct output:') +print ('f0') +print ('g0') +print ('g0') +print ('f0') +print ('f1') +print ('g1') +print ('g1') +print ('f1') +print () +print ('Actual output:') + # Note that CPython will ignore all pragma's diff --git a/transcrypt/development/manual_tests/import_export_aliases/test.py b/transcrypt/development/manual_tests/import_export_aliases/test.py index 8d2013c08..d06f4ade5 100644 --- a/transcrypt/development/manual_tests/import_export_aliases/test.py +++ b/transcrypt/development/manual_tests/import_export_aliases/test.py @@ -6,6 +6,14 @@ from test__dot__modules__dot__a.specific_module_a import the__S__S__S__Function from test_modules_b.specific_module_b import theBFunction as aBFunction + +print ('Correct output:') +print ('3') +print ('The $$$ function called') +print ('The b function called') + +print () +print ('Actual output:') the__S__Variable = 3 print (the__S__Variable) diff --git a/transcrypt/development/manual_tests/module_random/module_random.py b/transcrypt/development/manual_tests/module_random/module_random.py index 2c52c0a2f..f253f18db 100644 --- a/transcrypt/development/manual_tests/module_random/module_random.py +++ b/transcrypt/development/manual_tests/module_random/module_random.py @@ -13,7 +13,7 @@ def output (any): output ('------ {} ------'.format ('fixed seed' if fixedSeed else 'auto seed')) - output ('--- randint ---') + output ('--- randint in [10, 20] ---') for i in range (20): output (randint (10, 20)) diff --git a/transcrypt/development/shipment/package-lock.json b/transcrypt/development/shipment/package-lock.json new file mode 100644 index 000000000..a44056408 --- /dev/null +++ b/transcrypt/development/shipment/package-lock.json @@ -0,0 +1,232 @@ +{ + "name": "shipment", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "dependencies": { + "@cycle/dom": "^22.8.0", + "@cycle/run": "^5.5.0", + "@cycle/rx-adapter": "^3.1.0", + "xstream": "^11.14.0" + } + }, + "node_modules/@cycle/dom": { + "version": "22.8.0", + "resolved": "https://registry.npmjs.org/@cycle/dom/-/dom-22.8.0.tgz", + "integrity": "sha512-YnB4zUGOXVdPFXaVzYEUHXNqJlz1190Qfj1UpEBSiiJMPw+jskrNPrlhzqpE1MVjtpNlBJVoe+Vq73d2MnP3Bw==", + "dependencies": { + "@cycle/run": "^5.2.0", + "snabbdom": "^0.7.4", + "snabbdom-selector": "^4.2.0", + "xstream": "*" + }, + "engines": { + "node": ">=0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/cyclejs" + } + }, + "node_modules/@cycle/run": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@cycle/run/-/run-5.5.0.tgz", + "integrity": "sha512-RZ7Zfai1zfxa0ZP2I4Pu72UgZrRyG3PnivFCe/yYfQBcFHSlUy1biwUTnPB4+k/SE6/cOMTiFqwqu/Y3M+fh1g==", + "dependencies": { + "quicktask": "1.1.0", + "xstream": "10.x || 11.x" + }, + "engines": { + "node": ">=0.12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/cyclejs" + } + }, + "node_modules/@cycle/rx-adapter": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@cycle/rx-adapter/-/rx-adapter-3.1.0.tgz", + "integrity": "sha1-zLkqGXHHi5SLHhqQEOVIkJWKDSI=", + "deprecated": "no longer supported. see release notes for Cycle Unified", + "peerDependencies": { + "rx": "*" + } + }, + "node_modules/define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dependencies": { + "object-keys": "^1.0.12" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/globalthis": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.2.tgz", + "integrity": "sha512-ZQnSFO1la8P7auIOQECnm0sSuoMeaSq0EEdXMBFF2QJO4uNcwbyhSgG3MruWNbFTqCLmxVwGOl7LZ9kASvHdeQ==", + "dependencies": { + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/quicktask": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/quicktask/-/quicktask-1.1.0.tgz", + "integrity": "sha512-b3w19IEXnt5auacLAbePVsqPyVQUwmuhJQrrWnVhm4pP8PAMg2U9vFHbAD9XYXXbMDjdLJs0x5NLqwTV8uFK4g==" + }, + "node_modules/rx": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/rx/-/rx-4.1.0.tgz", + "integrity": "sha1-pfE/957zt0D+MKqAP7CfmIBdR4I=", + "peer": true + }, + "node_modules/snabbdom": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/snabbdom/-/snabbdom-0.7.4.tgz", + "integrity": "sha512-nnN+7uZ2NTIiu7EPMNwSDhmrYXqwlfCP/j72RdzvDPujXyvQxOW7Jl9yuLayzxMHDNWQR7FM6Pcn4wnDpKRe6Q==" + }, + "node_modules/snabbdom-selector": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/snabbdom-selector/-/snabbdom-selector-4.2.0.tgz", + "integrity": "sha512-hNIg1xDMxssUeMC/4r3OGxXhm8pbyJ0KIG0pXrA3J5ZQK+FkPa+WA9DYw4ROMLq5/LrfurMNMvy3IMm+0CzcnA==", + "dependencies": { + "tree-selector": "^2.1.0" + }, + "peerDependencies": { + "snabbdom": "*" + } + }, + "node_modules/symbol-observable": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-2.0.3.tgz", + "integrity": "sha512-sQV7phh2WCYAn81oAkakC5qjq2Ml0g8ozqz03wOGnx9dDlG1de6yrF+0RAzSJD8fPUow3PTSMf2SAbOGxb93BA==", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/tree-selector": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/tree-selector/-/tree-selector-2.1.1.tgz", + "integrity": "sha512-NVFYU6YzyUHSMS7+qbhdHlBHG5P9IPjycQa+8MnIBDpq/UWEkMD+lAL/56x7Fty+mAq9SWgtg9D4flZfuOZdDg==" + }, + "node_modules/xstream": { + "version": "11.14.0", + "resolved": "https://registry.npmjs.org/xstream/-/xstream-11.14.0.tgz", + "integrity": "sha512-1bLb+kKKtKPbgTK6i/BaoAn03g47PpFstlbe1BA+y3pNS/LfvcaghS5BFf9+EE1J+KwSQsEpfJvFN5GqFtiNmw==", + "dependencies": { + "globalthis": "^1.0.1", + "symbol-observable": "^2.0.3" + } + } + }, + "dependencies": { + "@cycle/dom": { + "version": "22.8.0", + "resolved": "https://registry.npmjs.org/@cycle/dom/-/dom-22.8.0.tgz", + "integrity": "sha512-YnB4zUGOXVdPFXaVzYEUHXNqJlz1190Qfj1UpEBSiiJMPw+jskrNPrlhzqpE1MVjtpNlBJVoe+Vq73d2MnP3Bw==", + "requires": { + "@cycle/run": "^5.2.0", + "snabbdom": "^0.7.4", + "snabbdom-selector": "^4.2.0", + "xstream": "*" + } + }, + "@cycle/run": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@cycle/run/-/run-5.5.0.tgz", + "integrity": "sha512-RZ7Zfai1zfxa0ZP2I4Pu72UgZrRyG3PnivFCe/yYfQBcFHSlUy1biwUTnPB4+k/SE6/cOMTiFqwqu/Y3M+fh1g==", + "requires": { + "quicktask": "1.1.0", + "xstream": "10.x || 11.x" + } + }, + "@cycle/rx-adapter": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@cycle/rx-adapter/-/rx-adapter-3.1.0.tgz", + "integrity": "sha1-zLkqGXHHi5SLHhqQEOVIkJWKDSI=", + "requires": {} + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "requires": { + "object-keys": "^1.0.12" + } + }, + "globalthis": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.2.tgz", + "integrity": "sha512-ZQnSFO1la8P7auIOQECnm0sSuoMeaSq0EEdXMBFF2QJO4uNcwbyhSgG3MruWNbFTqCLmxVwGOl7LZ9kASvHdeQ==", + "requires": { + "define-properties": "^1.1.3" + } + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" + }, + "quicktask": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/quicktask/-/quicktask-1.1.0.tgz", + "integrity": "sha512-b3w19IEXnt5auacLAbePVsqPyVQUwmuhJQrrWnVhm4pP8PAMg2U9vFHbAD9XYXXbMDjdLJs0x5NLqwTV8uFK4g==" + }, + "rx": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/rx/-/rx-4.1.0.tgz", + "integrity": "sha1-pfE/957zt0D+MKqAP7CfmIBdR4I=", + "peer": true + }, + "snabbdom": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/snabbdom/-/snabbdom-0.7.4.tgz", + "integrity": "sha512-nnN+7uZ2NTIiu7EPMNwSDhmrYXqwlfCP/j72RdzvDPujXyvQxOW7Jl9yuLayzxMHDNWQR7FM6Pcn4wnDpKRe6Q==" + }, + "snabbdom-selector": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/snabbdom-selector/-/snabbdom-selector-4.2.0.tgz", + "integrity": "sha512-hNIg1xDMxssUeMC/4r3OGxXhm8pbyJ0KIG0pXrA3J5ZQK+FkPa+WA9DYw4ROMLq5/LrfurMNMvy3IMm+0CzcnA==", + "requires": { + "tree-selector": "^2.1.0" + } + }, + "symbol-observable": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-2.0.3.tgz", + "integrity": "sha512-sQV7phh2WCYAn81oAkakC5qjq2Ml0g8ozqz03wOGnx9dDlG1de6yrF+0RAzSJD8fPUow3PTSMf2SAbOGxb93BA==" + }, + "tree-selector": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/tree-selector/-/tree-selector-2.1.1.tgz", + "integrity": "sha512-NVFYU6YzyUHSMS7+qbhdHlBHG5P9IPjycQa+8MnIBDpq/UWEkMD+lAL/56x7Fty+mAq9SWgtg9D4flZfuOZdDg==" + }, + "xstream": { + "version": "11.14.0", + "resolved": "https://registry.npmjs.org/xstream/-/xstream-11.14.0.tgz", + "integrity": "sha512-1bLb+kKKtKPbgTK6i/BaoAn03g47PpFstlbe1BA+y3pNS/LfvcaghS5BFf9+EE1J+KwSQsEpfJvFN5GqFtiNmw==", + "requires": { + "globalthis": "^1.0.1", + "symbol-observable": "^2.0.3" + } + } + } +} diff --git a/transcrypt/development/shipment/package.json b/transcrypt/development/shipment/package.json new file mode 100644 index 000000000..d69b83928 --- /dev/null +++ b/transcrypt/development/shipment/package.json @@ -0,0 +1,8 @@ +{ + "dependencies": { + "@cycle/dom": "^22.8.0", + "@cycle/run": "^5.5.0", + "@cycle/rx-adapter": "^3.1.0", + "xstream": "^11.14.0" + } +} diff --git a/transcrypt/development/shipment/shipment_test.py b/transcrypt/development/shipment/shipment_test.py index 74677c902..183a6a207 100644 --- a/transcrypt/development/shipment/shipment_test.py +++ b/transcrypt/development/shipment/shipment_test.py @@ -1,308 +1,329 @@ -import os -import os.path -import sys -import datetime -import webbrowser -import argparse -import time -import traceback -import selenium -import selenium.webdriver.chrome.options -import pathlib - -# ======== Command args singleton - -class CommandArgs: - def __init__ (self): - self.argParser = argparse.ArgumentParser () - - self.argParser.add_argument ('-de', '--dextex', help = "show extended exception reports", action = 'store_true') - self.argParser.add_argument ('-f', '--fcall', help = 'test fast calls', action = 'store_true') - - self.argParser.add_argument ('-i', '--inst', help = 'installed version rather than new one', action = 'store_true') - self.argParser.add_argument ('-b', '--blind', help = 'don\'t start browser', action = 'store_true') - - self.argParser.add_argument ('-u', '--unattended', help = 'unattended mode', action = 'store_true') - - self.__dict__.update (self.argParser.parse_args () .__dict__) - -commandArgs = CommandArgs () - -# ======== Browser controller singleton - -class BrowserController: - def __init__ (self): - self.options = selenium.webdriver.chrome.options.Options () - - self.options.add_argument ('start-maximized') - - if commandArgs.unattended: - self.options.add_argument ('--headless') # Runs Chrome in headless mode. - self.options.add_argument ('--no-sandbox') # Bypass OS security model - self.options.add_argument ('--disable-gpu') # Applicable to windows OS only - self.options.add_argument ('disable-infobars') - self.options.add_argument ('--disable-extensions') - self.options.add ('--disable-web-security') - - self.webDriver = selenium.webdriver.Chrome (options = self.options) - self.nrOfTabs = 0 - - def waitForNewTab (self): - while len (self.webDriver.window_handles) <= self.nrOfTabs: - time.sleep (0.5) - self.nrOfTabs = len (self.webDriver.window_handles) - - def open (self, url, run): - print (f'Browser controller is opening URL: {url}') - - try: - if self.nrOfTabs > 0: - - if commandArgs.unattended: - - # ---- Show in existing tab - - self.webDriver.execute_script (f'window.location.href = "{url}";') - else: - - # ---- Open new tab - - self.webDriver.execute_script (f'window.open ("{url}","_blank");') # !!! Avoid redundant open command - self.waitForNewTab () - self.webDriver.switch_to.window (self.webDriver.window_handles [-1]) - else: - - # ---- Open browser and default tab - - self.webDriver.get (url) - self.waitForNewTab () - except: - self.webDriver.switch_to.alert.accept(); - - if run: - while (True): - self.message = self.webDriver.find_element_by_id ('message') - if 'failed' in self.message.text or 'succeeded' in self.message.text: - break - time.sleep (0.5) - - print () - print ('=========================================================================') - print (f'Back to back autotest, result: {self.message.text.upper ()}') - print ('=========================================================================') - print () - - if 'succeeded' in self.message.text: - return True - else: - return False - else: - print () - print ('=========================================================================') - print ('No back to back autotest') - print ('=========================================================================') - print () - - return True - -browserController = BrowserController () - -# ======== Preparations - -relSourcePrepathsOfErrors = [] - -host = 'http://localhost:' - -pythonServerPort = '8000' -parcelServerPort = '8001' -nodeServerPort = '8002' - -pythonServerUrl = host + pythonServerPort -parcelServerUrl = host + parcelServerPort -nodeServerUrl = host + nodeServerPort - -shipDir = os.path.dirname (os.path.abspath (__file__)) .replace ('\\', '/') -appRootDir = '/'.join (shipDir.split ('/')[ : -2]) - -transpileCommand = 'transcrypt' if commandArgs.inst else f'/{appRootDir}/run_transcrypt' - -print (f'\nApplication root directory: {appRootDir}\n') - -def getAbsPath (relPath): - return '{}/{}'.format (appRootDir, relPath) - -os.system ('cls' if os.name == 'nt' else 'clear') - -# ---- Start an http server in the Transcryp/transcrypt directory - -print (appRootDir) - -if not commandArgs.blind: - command = f'python -m http.server --directory {appRootDir}' - - if commandArgs.unattended: - os.system (f'{command} &') - else: - os.system (f'konsole --new-tab --hold -e "bash -ic \'{command}\'" &') - - ''' - If 'Address already in use' do: - ps -fA | grep python - kill - ''' - -# ---- Allow visual check of all command line options - -os.system (f'{transpileCommand} -h') - -# ======== Individual test function - -def test (relSourcePrepath, run, extraSwitches, messagePrename = '', nodeJs = False, parcelJs = False, build = True, pause = 0, needsAttention = False): - if commandArgs.unattended and needsAttention: - return # This test shouldn't be done, since it can't run unattended - - print (f'\n\n******** BEGIN TEST {relSourcePrepath} ********\n') - - time.sleep (pause) - - # ---- Compute some slugs - - sourcePrepath = getAbsPath (relSourcePrepath) - sourcePrepathSplit = sourcePrepath.split ("/") - sourceDir = '/'.join (sourcePrepathSplit [:-1]) - moduleName = sourcePrepathSplit [-1] - targetDir = f'{sourceDir}/__target__' - targetPrepath = f'{targetDir}/{moduleName}' - messagePrepath = f'{targetDir}/{messagePrename}' - - # ---- If there are relevant console messages of the compilation process, - # like with the static typechecking tests, write them into a file that can be served for a visual check - - if not os.path.exists (targetDir): - os.makedirs (targetDir) # Transcrypt will make targetDir too late, so it has to happen here - redirect = f' > {messagePrepath}.out' if messagePrename else '' - - # ---- Default switches - - defaultSwitches = '-da -sf -de -m -n ' - if commandArgs.dextex: - defaultSwitches += '-de ' - if build: - defaultSwitches += '-b ' - - # ---- Run with CPython to generate HTML file with back to back reference info - - if run: - os.system (f'{transpileCommand} -r {defaultSwitches}{extraSwitches}{sourcePrepath}') - - # ---- Compile with Transcrypt - - if parcelJs: - origDir = os.getcwd () - os.chdir (sourceDir) - os.system (f'start cmd /k node test {parcelServerPort}') - os.chdir (origDir) - else: - os.system (f'{transpileCommand} {defaultSwitches}{extraSwitches}{sourcePrepath}{redirect}') - - # ---- If it has to run on node, apply rollup to obtain monolith, since node doesn't support named imports and exports - - if nodeJs: - os.system (f'rollup {targetPrepath}.js --o {targetPrepath}.bundle.js --f cjs') - - # --- Compute appropriate URL and wait a while if needed - - if not commandArgs.blind: - if parcelJs: - time.sleep (20) - url = parcelServerUrl - elif nodeJs: - os.system (f'start cmd /k node {targetPrepath}.bundle.js {nodeServerPort}') - time.sleep (5) - url = nodeServerUrl - else: - time.sleep (5) - url = f'{pythonServerUrl}/{relSourcePrepath}.html' - - success = browserController.open (url, run) - - if commandArgs.unattended and not success: - relSourcePrepathsOfErrors.append (relSourcePrepath) - - print (f'\n******** END TEST {relSourcePrepath} ********\n\n') - -# ======== Perform individual tests - -for switches in (('', '-f ') if commandArgs.fcall else ('',)): - test ('development/automated_tests/hello/autotest', True, switches) - test ('development/automated_tests/transcrypt/autotest', True, switches + '-c -xr -xg ') - - test ('development/automated_tests/time/autotest', True, switches, needsAttention = True) - test ('development/automated_tests/re/autotest', True, switches) - - test ('development/manual_tests/async_await/test', False, switches) - test ('development/manual_tests/import_export_aliases/test', False, switches + '-am ') - test ('development/manual_tests/module_random/module_random', False, switches) - test ('development/manual_tests/static_types/static_types', False, switches + '-ds -dc ', messagePrename = 'static_types') - test ('development/manual_tests/transcrypt_and_python_results_differ/results', False, switches) - test ('development/manual_tests/transcrypt_only/transcrypt_only', False, switches) - - test ('demos/nodejs_demo/nodejs_demo', False, switches, nodeJs = True) - test ('demos/parcel_demo/test_shipment', False, switches, parcelJs = True) - test ('demos/terminal_demo/terminal_demo', False, switches, needsAttention = True) - test ('demos/hello/hello', False, switches, needsAttention = False) - test ('demos/jquery_demo/jquery_demo', False, switches) - test ('demos/d3js_demo/d3js_demo', False, switches) - test ('demos/ios_app/ios_app', False, switches) - test ('demos/react_demo/react_demo', False, switches) - test ('demos/riot_demo/riot_demo', False, switches) - test ('demos/plotly_demo/plotly_demo', False, switches) - test ('demos/three_demo/three_demo', False, switches) - test ('demos/pong/pong', False, switches) - test ('demos/pysteroids_demo/pysteroids', False, switches) - - test ('demos/turtle_demos/star', False, switches, pause = 2) - test ('demos/turtle_demos/snowflake', False, switches, pause = 2) - test ('demos/turtle_demos/mondrian', False, switches, pause = 2) - test ('demos/turtle_demos/mandala', False, switches, pause = 2) - - # test ('demos/cyclejs_demo/cyclejs_demo', False, switches) - test ('demos/cyclejs_demo/cyclejs_http_demo', False, switches) - test ('demos/cyclejs_demo/component_demos/isolated_bmi_slider/bmi', False, switches) - test ('demos/cyclejs_demo/component_demos/labeled_slider/labeled_slider', False, switches) - - test ('tutorials/baseline/bl_010_hello_world/hello_world', False, switches) - test ('tutorials/baseline/bl_020_assign/assign', False, switches) - test ('tutorials/baseline/bl_030_if_else_prompt/if_else_prompt', False, switches, needsAttention = True) - test ('tutorials/baseline/bl_035_if_else_event/if_else_event', False, switches, needsAttention = True) - test ('tutorials/baseline/bl_040_for_simple/for_simple', False, switches) - test ('tutorials/baseline/bl_042_for_nested/for_nested', False, switches) - test ('tutorials/baseline/bl_045_while_simple/while_simple', False, switches, needsAttention = True) - - test ('tutorials/static_typing/static_typing', False, switches + '-c -ds ', messagePrename = 'static_typing') - - if relSourcePrepathsOfErrors: - print ('\n\n!!!!!!!!!!!!!!!!!!!!\n') - for relSourcePrepathOfError in relSourcePrepathsOfErrors: - print (f'SHIPMENT TEST ERROR: {relSourcePrepathOfError}') - print ('\n!!!!!!!!!!!!!!!!!!!!\n\n') - - print ('\nSHIPMENT TEST FAILED\n') - sys.exit (1) - - else: - - # ---- Make docs, the resulting files are untracked - - if not commandArgs.unattended: - origDir = os.getcwd () - sphinxDir = '/'.join ([appRootDir, 'docs/sphinx']) - os.chdir (sphinxDir) - os.system ('touch *.rst') - os.system ('make html') - os.chdir (origDir) - - # ---- Terminate - - print ('\nSHIPMENT TEST SUCCEEDED\n') - sys.exit (0) +import os +import os.path +import sys +import datetime +import webbrowser +import argparse +import time +import traceback +import selenium +import selenium.webdriver.chrome.options +import pathlib +import subprocess + +from selenium.webdriver.common.by import By + + +# ======== Command args singleton + +class CommandArgs: + def __init__ (self): + self.argParser = argparse.ArgumentParser () + + self.argParser.add_argument ('-de', '--dextex', help = "show extended exception reports", action = 'store_true') + self.argParser.add_argument ('-f', '--fcall', help = 'test fast calls', action = 'store_true') + + self.argParser.add_argument ('-i', '--inst', help = 'installed version rather than new one', action = 'store_true') + self.argParser.add_argument ('-b', '--blind', help = 'don\'t start browser', action = 'store_true') + + self.argParser.add_argument ('-u', '--unattended', help = 'unattended mode', action = 'store_true') + self.argParser.add_argument ('-t', '--transcom', help = 'transpile command') + + self.__dict__.update (self.argParser.parse_args () .__dict__) + +commandArgs = CommandArgs () + +# ======== Browser controller singleton + +class BrowserController: + def __init__ (self): + self.options = selenium.webdriver.chrome.options.Options () + + self.options.add_argument ('start-maximized') + + if commandArgs.unattended: + self.options.add_argument ('--headless') # Runs Chrome in headless mode. + self.options.add_argument ('--no-sandbox') # Bypass OS security model + self.options.add_argument ('--disable-gpu') # Applicable to windows OS only + self.options.add_argument ('disable-infobars') + self.options.add_argument ('--disable-extensions') + self.options.add_argument ('--disable-web-security') + + self.webDriver = selenium.webdriver.Chrome (options = self.options) + self.nrOfTabs = 0 + + def waitForNewTab (self): + while len (self.webDriver.window_handles) <= self.nrOfTabs: + time.sleep (0.5) + self.nrOfTabs = len (self.webDriver.window_handles) + + def open (self, url, run): + print (f'Browser controller is opening URL: {url}') + + try: + if self.nrOfTabs > 0: + + if commandArgs.unattended: + + # ---- Show in existing tab + + self.webDriver.execute_script (f'window.location.href = "{url}";') + else: + + # ---- Open new tab + + self.webDriver.execute_script (f'window.open ("{url}","_blank");') # !!! Avoid redundant open command + self.waitForNewTab () + self.webDriver.switch_to.window (self.webDriver.window_handles [-1]) + else: + + # ---- Open browser and default tab + + self.webDriver.get (url) + self.waitForNewTab () + except: + self.webDriver.switch_to.alert.accept(); + + if run: + while (True): + self.message = self.webDriver.find_element(By.ID, 'message') + if 'failed' in self.message.text or 'succeeded' in self.message.text: + break + time.sleep (0.5) + + print () + print ('=========================================================================') + print (f'Back to back autotest, result: {self.message.text.upper ()}') + print ('=========================================================================') + print () + + if 'succeeded' in self.message.text: + return True + else: + return False + else: + print () + print ('=========================================================================') + print ('No back to back autotest') + print ('=========================================================================') + print () + + return True + +browserController = BrowserController () + +# ======== Preparations + +relSourcePrepathsOfErrors = [] + +host = 'http://localhost:' + +pythonServerPort = '8000' +parcelServerPort = '8001' +nodeServerPort = '8002' + +pythonServerUrl = host + pythonServerPort +parcelServerUrl = host + parcelServerPort +nodeServerUrl = host + nodeServerPort + +shipDir = os.path.dirname (os.path.abspath (__file__)) .replace ('\\', '/') +appRootDir = '/'.join (shipDir.split ('/')[ : -2]) + +transpileCommand = commandArgs.transcom if commandArgs.transcom else 'ts' if commandArgs.inst else f'/{appRootDir}/ts' + +print (f'\nApplication root directory: {appRootDir}\n') + +def getAbsPath (relPath): + return '{}/{}'.format (appRootDir, relPath) + +os.system ('cls' if os.name == 'nt' else 'clear') +os.system (f'killall node') + +# ---- Start an http server in the Transcryp/transcrypt directory + +print (appRootDir) + +if not commandArgs.blind: + # command = f'python -m http.server --directory {appRootDir}' + command = f'python3 -m http.server --directory {appRootDir}' + + if commandArgs.unattended: + os.system (f'{command} &') + else: + os.system (f'konsole --new-tab --hold -e "bash -ic \'{command}\'" &') + + ''' + If 'Address already in use' do: + ps -fA | grep python + kill + ''' + +# ---- Allow visual check of all command line options + +os.system (f'{transpileCommand} -h') + +# ======== Individual test function + +def test (relSourcePrepath, run, extraSwitches, outputPrename = '', nodeJs = False, parcelJs = False, build = True, pause = 0, needsAttention = False): + if commandArgs.unattended and needsAttention: + return # This test shouldn't be done, since it can't run unattended + + print (f'\n\n******** BEGIN TEST {relSourcePrepath} ********\n') + + time.sleep (pause) + + # ---- Compute some slugs + + sourcePrepath = getAbsPath (relSourcePrepath) + sourcePrepathSplit = sourcePrepath.split ("/") + sourceDir = '/'.join (sourcePrepathSplit [:-1]) + moduleName = sourcePrepathSplit [-1] + targetDir = f'{sourceDir}/__target__' + targetPrepath = f'{targetDir}/{moduleName}' + outputPath = f'{targetDir}/{outputPrename}.out' + + # ---- If there are relevant console messages of the compilation process, + # like with the static typechecking tests, write them into a file that can be served for a visual check + + if not os.path.exists (targetDir): + os.makedirs (targetDir) # Transcrypt will make targetDir too late, so it has to happen heree + + # ---- Default switches + + defaultSwitches = '-da -sf -de -m -n ' + if commandArgs.dextex: + defaultSwitches += '-de ' + if build: + defaultSwitches += '-b ' + + # ---- Run with CPython to generate HTML file with back to back reference info + + if run: + os.system (f'{transpileCommand} -r {defaultSwitches}{extraSwitches}{sourcePrepath}') + + # ---- Compile with Transcrypt + + if parcelJs: + origDir = os.getcwd () + os.chdir (sourceDir) + os.system (f'node test {parcelServerPort} &') + os.chdir (origDir) + else: + command = f'{transpileCommand} {defaultSwitches}{extraSwitches}{sourcePrepath}' + if outputPrename: + ''' + Calling subprocess.check_output while outputFile opened in __target__ folder + fails without raising an exception, probably a bug in Python. + So we use variable 'output' as intermediate storage. + ''' + output = subprocess.check_output (command, universal_newlines = True, shell = True) + with open (outputPath, 'w') as outputFile: + print (output, file = outputFile) + else: + subprocess.run (command, shell = True) + + + # ---- If it has to run on node, apply rollup to obtain monolith, since node doesn't support named imports and exports + + if nodeJs: + os.system (f'rollup {targetPrepath}.js --o {targetPrepath}.bundle.js --f cjs') + + # --- Compute appropriate URL and wait a while if needed + + if not commandArgs.blind: + if parcelJs: + time.sleep (20) + url = parcelServerUrl + elif nodeJs: + os.system (f'chmod 777 {targetPrepath}.bundle.js') + os.system (f'node {targetPrepath}.bundle.js {nodeServerPort} &') + time.sleep (5) + url = nodeServerUrl + else: + time.sleep (5) + url = f'{pythonServerUrl}/{relSourcePrepath}.html' + + success = browserController.open (url, run) + + if commandArgs.unattended and not success: + relSourcePrepathsOfErrors.append (relSourcePrepath) + + print (f'\n******** END TEST {relSourcePrepath} ********\n\n') + +# ======== Perform individual tests + +for switches in (('', '-f ') if commandArgs.fcall else ('',)): + test ('development/automated_tests/hello/autotest', True, switches) + test ('development/automated_tests/transcrypt/autotest', True, switches + '-c -xr -xg ') + + test ('development/automated_tests/time/autotest', True, switches, needsAttention = True) + test ('development/automated_tests/re/autotest', True, switches) + + test ('development/manual_tests/async_await/test', False, switches) + test ('development/manual_tests/import_export_aliases/test', False, switches + '-am ') + test ('development/manual_tests/module_random/module_random', False, switches) + test ('development/manual_tests/static_types/static_types', False, switches + '-ds -dc ', outputPrename = 'static_types') + test ('development/manual_tests/transcrypt_and_python_results_differ/results', False, switches) + test ('development/manual_tests/transcrypt_only/transcrypt_only', False, switches) + + # test ('demos/parcel_demo/test_shipment', False, switches, parcelJs = True) # ??? Must be before nodejs_demo, why? # BROKEN - needs update to Parcel V2 + test ('demos/nodejs_demo/nodejs_demo', False, switches, nodeJs = True) + + test ('demos/terminal_demo/terminal_demo', False, switches, needsAttention = True) + test ('demos/hello/hello', False, switches, needsAttention = False) + test ('demos/jquery_demo/jquery_demo', False, switches) + test ('demos/d3js_demo/d3js_demo', False, switches) + test ('demos/ios_app/ios_app', False, switches) + test ('demos/react_demo/react_demo', False, switches) + test ('demos/riot_demo/riot_demo', False, switches) + test ('demos/plotly_demo/plotly_demo', False, switches) + test ('demos/three_demo/three_demo', False, switches) + test ('demos/pong/pong', False, switches) + test ('demos/pysteroids_demo/pysteroids', False, switches) + + test ('demos/turtle_demos/star', False, switches, pause = 2) + test ('demos/turtle_demos/snowflake', False, switches, pause = 2) + test ('demos/turtle_demos/mondrian', False, switches, pause = 2) + test ('demos/turtle_demos/mandala', False, switches, pause = 2) + + # test ('demos/cyclejs_demo/cyclejs_demo', False, switches) # Broken + test ('demos/cyclejs_demo/cyclejs_http_demo', False, switches) + test ('demos/cyclejs_demo/component_demos/isolated_bmi_slider/bmi', False, switches) + test ('demos/cyclejs_demo/component_demos/labeled_slider/labeled_slider', False, switches) + + test ('tutorials/baseline/bl_010_hello_world/hello_world', False, switches) + test ('tutorials/baseline/bl_020_assign/assign', False, switches) + test ('tutorials/baseline/bl_030_if_else_prompt/if_else_prompt', False, switches, needsAttention = True) + test ('tutorials/baseline/bl_035_if_else_event/if_else_event', False, switches, needsAttention = True) + test ('tutorials/baseline/bl_040_for_simple/for_simple', False, switches) + test ('tutorials/baseline/bl_042_for_nested/for_nested', False, switches) + test ('tutorials/baseline/bl_045_while_simple/while_simple', False, switches, needsAttention = True) + + test ('tutorials/static_typing/static_typing', False, switches + '-c -ds ', outputPrename = 'static_typing') + + if relSourcePrepathsOfErrors: + print ('\n\n!!!!!!!!!!!!!!!!!!!!\n') + for relSourcePrepathOfError in relSourcePrepathsOfErrors: + print (f'SHIPMENT TEST ERROR: {relSourcePrepathOfError}') + print ('\n!!!!!!!!!!!!!!!!!!!!\n\n') + + print ('\nSHIPMENT TEST FAILED\n') + sys.exit (1) + + else: + + # ---- Make docs, the resulting files are untracked + + if not commandArgs.unattended: + origDir = os.getcwd () + sphinxDir = '/'.join ([appRootDir, 'docs/sphinx']) + os.chdir (sphinxDir) + os.system ('touch *.rst') + os.system ('make html') + os.chdir (origDir) + + # ---- Terminate + + print ('\nSHIPMENT TEST SUCCEEDED\n') + sys.exit (0) + \ No newline at end of file diff --git a/transcrypt/docs/div/notes.txt b/transcrypt/docs/div/notes.txt index a10e27e5a..ff7b2e312 100644 --- a/transcrypt/docs/div/notes.txt +++ b/transcrypt/docs/div/notes.txt @@ -2,4 +2,4 @@ - chromium --disable-web-security --user-data-dir="~/aaa" - There are some $$$ in the control_structures testlet. - Some (dirty?) hacks in __runtime__.py and/or __builtin__.js, marked by ???. Look for better solutions? - +- Adapt local config in parcel demo to be location/version independent diff --git a/transcrypt/docs/sphinx/_static/ajax-loader.gif b/transcrypt/docs/sphinx/_static/ajax-loader.gif new file mode 100644 index 000000000..61faf8cab Binary files /dev/null and b/transcrypt/docs/sphinx/_static/ajax-loader.gif differ diff --git a/transcrypt/docs/sphinx/_static/basic.css b/transcrypt/docs/sphinx/_static/basic.css new file mode 100644 index 000000000..9fa77d886 --- /dev/null +++ b/transcrypt/docs/sphinx/_static/basic.css @@ -0,0 +1,599 @@ +/* + * basic.css + * ~~~~~~~~~ + * + * Sphinx stylesheet -- basic theme. + * + * :copyright: Copyright 2007-2015 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +/* -- main layout ----------------------------------------------------------- */ + +div.clearer { + clear: both; +} + +/* -- relbar ---------------------------------------------------------------- */ + +div.related { + width: 100%; + font-size: 90%; +} + +div.related h3 { + display: none; +} + +div.related ul { + margin: 0; + padding: 0 0 0 10px; + list-style: none; +} + +div.related li { + display: inline; +} + +div.related li.right { + float: right; + margin-right: 5px; +} + +/* -- sidebar --------------------------------------------------------------- */ + +div.sphinxsidebarwrapper { + padding: 10px 5px 0 10px; +} + +div.sphinxsidebar { + float: left; + width: 230px; + margin-left: -100%; + font-size: 90%; +} + +div.sphinxsidebar ul { + list-style: none; +} + +div.sphinxsidebar ul ul, +div.sphinxsidebar ul.want-points { + margin-left: 20px; + list-style: square; +} + +div.sphinxsidebar ul ul { + margin-top: 0; + margin-bottom: 0; +} + +div.sphinxsidebar form { + margin-top: 10px; +} + +div.sphinxsidebar input { + border: 1px solid #98dbcc; + font-family: sans-serif; + font-size: 1em; +} + +div.sphinxsidebar #searchbox input[type="text"] { + width: 170px; +} + +div.sphinxsidebar #searchbox input[type="submit"] { + width: 30px; +} + +img { + border: 0; + max-width: 100%; +} + +/* -- search page ----------------------------------------------------------- */ + +ul.search { + margin: 10px 0 0 20px; + padding: 0; +} + +ul.search li { + padding: 5px 0 5px 20px; + background-image: url(file.png); + background-repeat: no-repeat; + background-position: 0 7px; +} + +ul.search li a { + font-weight: bold; +} + +ul.search li div.context { + color: #888; + margin: 2px 0 0 30px; + text-align: left; +} + +ul.keywordmatches li.goodmatch a { + font-weight: bold; +} + +/* -- index page ------------------------------------------------------------ */ + +table.contentstable { + width: 90%; +} + +table.contentstable p.biglink { + line-height: 150%; +} + +a.biglink { + font-size: 1.3em; +} + +span.linkdescr { + font-style: italic; + padding-top: 5px; + font-size: 90%; +} + +/* -- general index --------------------------------------------------------- */ + +table.indextable { + width: 100%; +} + +table.indextable td { + text-align: left; + vertical-align: top; +} + +table.indextable dl, table.indextable dd { + margin-top: 0; + margin-bottom: 0; +} + +table.indextable tr.pcap { + height: 10px; +} + +table.indextable tr.cap { + margin-top: 10px; + background-color: #f2f2f2; +} + +img.toggler { + margin-right: 3px; + margin-top: 3px; + cursor: pointer; +} + +div.modindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +div.genindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +/* -- general body styles --------------------------------------------------- */ + +a.headerlink { + visibility: hidden; +} + +h1:hover > a.headerlink, +h2:hover > a.headerlink, +h3:hover > a.headerlink, +h4:hover > a.headerlink, +h5:hover > a.headerlink, +h6:hover > a.headerlink, +dt:hover > a.headerlink, +caption:hover > a.headerlink, +p.caption:hover > a.headerlink, +div.code-block-caption:hover > a.headerlink { + visibility: visible; +} + +div.body p.caption { + text-align: inherit; +} + +div.body td { + text-align: left; +} + +.field-list ul { + padding-left: 1em; +} + +.first { + margin-top: 0 !important; +} + +p.rubric { + margin-top: 30px; + font-weight: bold; +} + +img.align-left, .figure.align-left, object.align-left { + clear: left; + float: left; + margin-right: 1em; +} + +img.align-right, .figure.align-right, object.align-right { + clear: right; + float: right; + margin-left: 1em; +} + +img.align-center, .figure.align-center, object.align-center { + display: block; + margin-left: auto; + margin-right: auto; +} + +.align-left { + text-align: left; +} + +.align-center { + text-align: center; +} + +.align-right { + text-align: right; +} + +/* -- sidebars -------------------------------------------------------------- */ + +div.sidebar { + margin: 0 0 0.5em 1em; + border: 1px solid #ddb; + padding: 7px 7px 0 7px; + background-color: #ffe; + width: 40%; + float: right; +} + +p.sidebar-title { + font-weight: bold; +} + +/* -- topics ---------------------------------------------------------------- */ + +div.topic { + border: 1px solid #ccc; + padding: 7px 7px 0 7px; + margin: 10px 0 10px 0; +} + +p.topic-title { + font-size: 1.1em; + font-weight: bold; + margin-top: 10px; +} + +/* -- admonitions ----------------------------------------------------------- */ + +div.admonition { + margin-top: 10px; + margin-bottom: 10px; + padding: 7px; +} + +div.admonition dt { + font-weight: bold; +} + +div.admonition dl { + margin-bottom: 0; +} + +p.admonition-title { + margin: 0px 10px 5px 0px; + font-weight: bold; +} + +div.body p.centered { + text-align: center; + margin-top: 25px; +} + +/* -- tables ---------------------------------------------------------------- */ + +table.docutils { + border: 0; + border-collapse: collapse; +} + +table caption span.caption-number { + font-style: italic; +} + +table caption span.caption-text { +} + +table.docutils td, table.docutils th { + padding: 1px 8px 1px 5px; + border-top: 0; + border-left: 0; + border-right: 0; + border-bottom: 1px solid #aaa; +} + +table.field-list td, table.field-list th { + border: 0 !important; +} + +table.footnote td, table.footnote th { + border: 0 !important; +} + +th { + text-align: left; + padding-right: 5px; +} + +table.citation { + border-left: solid 1px gray; + margin-left: 1px; +} + +table.citation td { + border-bottom: none; +} + +/* -- figures --------------------------------------------------------------- */ + +div.figure { + margin: 0.5em; + padding: 0.5em; +} + +div.figure p.caption { + padding: 0.3em; +} + +div.figure p.caption span.caption-number { + font-style: italic; +} + +div.figure p.caption span.caption-text { +} + + +/* -- other body styles ----------------------------------------------------- */ + +ol.arabic { + list-style: decimal; +} + +ol.loweralpha { + list-style: lower-alpha; +} + +ol.upperalpha { + list-style: upper-alpha; +} + +ol.lowerroman { + list-style: lower-roman; +} + +ol.upperroman { + list-style: upper-roman; +} + +dl { + margin-bottom: 15px; +} + +dd p { + margin-top: 0px; +} + +dd ul, dd table { + margin-bottom: 10px; +} + +dd { + margin-top: 3px; + margin-bottom: 10px; + margin-left: 30px; +} + +dt:target, .highlighted { + background-color: #fbe54e; +} + +dl.glossary dt { + font-weight: bold; + font-size: 1.1em; +} + +.field-list ul { + margin: 0; + padding-left: 1em; +} + +.field-list p { + margin: 0; +} + +.optional { + font-size: 1.3em; +} + +.sig-paren { + font-size: larger; +} + +.versionmodified { + font-style: italic; +} + +.system-message { + background-color: #fda; + padding: 5px; + border: 3px solid red; +} + +.footnote:target { + background-color: #ffa; +} + +.line-block { + display: block; + margin-top: 1em; + margin-bottom: 1em; +} + +.line-block .line-block { + margin-top: 0; + margin-bottom: 0; + margin-left: 1.5em; +} + +.guilabel, .menuselection { + font-family: sans-serif; +} + +.accelerator { + text-decoration: underline; +} + +.classifier { + font-style: oblique; +} + +abbr, acronym { + border-bottom: dotted 1px; + cursor: help; +} + +/* -- code displays --------------------------------------------------------- */ + +pre { + overflow: auto; + overflow-y: hidden; /* fixes display issues on Chrome browsers */ +} + +td.linenos pre { + padding: 5px 0px; + border: 0; + background-color: transparent; + color: #aaa; +} + +table.highlighttable { + margin-left: 0.5em; +} + +table.highlighttable td { + padding: 0 0.5em 0 0.5em; +} + +div.code-block-caption { + padding: 2px 5px; + font-size: small; +} + +div.code-block-caption code { + background-color: transparent; +} + +div.code-block-caption + div > div.highlight > pre { + margin-top: 0; +} + +div.code-block-caption span.caption-number { + padding: 0.1em 0.3em; + font-style: italic; +} + +div.code-block-caption span.caption-text { +} + +div.literal-block-wrapper { + padding: 1em 1em 0; +} + +div.literal-block-wrapper div.highlight { + margin: 0; +} + +code.descname { + background-color: transparent; + font-weight: bold; + font-size: 1.2em; +} + +code.descclassname { + background-color: transparent; +} + +code.xref, a code { + background-color: transparent; + font-weight: bold; +} + +h1 code, h2 code, h3 code, h4 code, h5 code, h6 code { + background-color: transparent; +} + +.viewcode-link { + float: right; +} + +.viewcode-back { + float: right; + font-family: sans-serif; +} + +div.viewcode-block:target { + margin: -1px -10px; + padding: 0 10px; +} + +/* -- math display ---------------------------------------------------------- */ + +img.math { + vertical-align: middle; +} + +div.body div.math p { + text-align: center; +} + +span.eqno { + float: right; +} + +/* -- printout stylesheet --------------------------------------------------- */ + +@media print { + div.document, + div.documentwrapper, + div.bodywrapper { + margin: 0 !important; + width: 100%; + } + + div.sphinxsidebar, + div.related, + div.footer, + #top-link { + display: none; + } +} \ No newline at end of file diff --git a/transcrypt/docs/sphinx/_static/classic.css b/transcrypt/docs/sphinx/_static/classic.css new file mode 100644 index 000000000..2da923464 --- /dev/null +++ b/transcrypt/docs/sphinx/_static/classic.css @@ -0,0 +1,261 @@ +/* + * default.css_t + * ~~~~~~~~~~~~~ + * + * Sphinx stylesheet -- default theme. + * + * :copyright: Copyright 2007-2015 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +@import url("basic.css"); + +/* -- page layout ----------------------------------------------------------- */ + +body { + font-family: sans-serif; + font-size: 100%; + background-color: #11303d; + color: #000; + margin: 0; + padding: 0; +} + +div.document { + background-color: #1c4e63; +} + +div.documentwrapper { + float: left; + width: 100%; +} + +div.bodywrapper { + margin: 0 0 0 230px; +} + +div.body { + background-color: #ffffff; + color: #000000; + padding: 0 20px 30px 20px; +} + +div.footer { + color: #ffffff; + width: 100%; + padding: 9px 0 9px 0; + text-align: center; + font-size: 75%; +} + +div.footer a { + color: #ffffff; + text-decoration: underline; +} + +div.related { + background-color: #133f52; + line-height: 30px; + color: #ffffff; +} + +div.related a { + color: #ffffff; +} + +div.sphinxsidebar { +} + +div.sphinxsidebar h3 { + font-family: 'Trebuchet MS', sans-serif; + color: #ffffff; + font-size: 1.4em; + font-weight: normal; + margin: 0; + padding: 0; +} + +div.sphinxsidebar h3 a { + color: #ffffff; +} + +div.sphinxsidebar h4 { + font-family: 'Trebuchet MS', sans-serif; + color: #ffffff; + font-size: 1.3em; + font-weight: normal; + margin: 5px 0 0 0; + padding: 0; +} + +div.sphinxsidebar p { + color: #ffffff; +} + +div.sphinxsidebar p.topless { + margin: 5px 10px 10px 10px; +} + +div.sphinxsidebar ul { + margin: 10px; + padding: 0; + color: #ffffff; +} + +div.sphinxsidebar a { + color: #98dbcc; +} + +div.sphinxsidebar input { + border: 1px solid #98dbcc; + font-family: sans-serif; + font-size: 1em; +} + + + +/* -- hyperlink styles ------------------------------------------------------ */ + +a { + color: #355f7c; + text-decoration: none; +} + +a:visited { + color: #355f7c; + text-decoration: none; +} + +a:hover { + text-decoration: underline; +} + + + +/* -- body styles ----------------------------------------------------------- */ + +div.body h1, +div.body h2, +div.body h3, +div.body h4, +div.body h5, +div.body h6 { + font-family: 'Trebuchet MS', sans-serif; + background-color: #f2f2f2; + font-weight: normal; + color: #20435c; + border-bottom: 1px solid #ccc; + margin: 20px -20px 10px -20px; + padding: 3px 0 3px 10px; +} + +div.body h1 { margin-top: 0; font-size: 200%; } +div.body h2 { font-size: 160%; } +div.body h3 { font-size: 140%; } +div.body h4 { font-size: 120%; } +div.body h5 { font-size: 110%; } +div.body h6 { font-size: 100%; } + +a.headerlink { + color: #c60f0f; + font-size: 0.8em; + padding: 0 4px 0 4px; + text-decoration: none; +} + +a.headerlink:hover { + background-color: #c60f0f; + color: white; +} + +div.body p, div.body dd, div.body li { + text-align: justify; + line-height: 130%; +} + +div.admonition p.admonition-title + p { + display: inline; +} + +div.admonition p { + margin-bottom: 5px; +} + +div.admonition pre { + margin-bottom: 5px; +} + +div.admonition ul, div.admonition ol { + margin-bottom: 5px; +} + +div.note { + background-color: #eee; + border: 1px solid #ccc; +} + +div.seealso { + background-color: #ffc; + border: 1px solid #ff6; +} + +div.topic { + background-color: #eee; +} + +div.warning { + background-color: #ffe4e4; + border: 1px solid #f66; +} + +p.admonition-title { + display: inline; +} + +p.admonition-title:after { + content: ":"; +} + +pre { + padding: 5px; + background-color: #eeffcc; + color: #333333; + line-height: 120%; + border: 1px solid #ac9; + border-left: none; + border-right: none; +} + +code { + background-color: #ecf0f3; + padding: 0 1px 0 1px; + font-size: 0.95em; +} + +th { + background-color: #ede; +} + +.warning code { + background: #efc2c2; +} + +.note code { + background: #d6d6d6; +} + +.viewcode-back { + font-family: sans-serif; +} + +div.viewcode-block:target { + background-color: #f4debf; + border-top: 1px solid #ac9; + border-bottom: 1px solid #ac9; +} + +div.code-block-caption { + color: #efefef; + background-color: #1c4e63; +} \ No newline at end of file diff --git a/transcrypt/docs/sphinx/_static/comment-bright.png b/transcrypt/docs/sphinx/_static/comment-bright.png new file mode 100644 index 000000000..551517b8c Binary files /dev/null and b/transcrypt/docs/sphinx/_static/comment-bright.png differ diff --git a/transcrypt/docs/sphinx/_static/comment-close.png b/transcrypt/docs/sphinx/_static/comment-close.png new file mode 100644 index 000000000..09b54be46 Binary files /dev/null and b/transcrypt/docs/sphinx/_static/comment-close.png differ diff --git a/transcrypt/docs/sphinx/_static/comment.png b/transcrypt/docs/sphinx/_static/comment.png new file mode 100644 index 000000000..92feb52b8 Binary files /dev/null and b/transcrypt/docs/sphinx/_static/comment.png differ diff --git a/transcrypt/docs/sphinx/_static/default.css b/transcrypt/docs/sphinx/_static/default.css new file mode 100644 index 000000000..5f1399abd --- /dev/null +++ b/transcrypt/docs/sphinx/_static/default.css @@ -0,0 +1,256 @@ +/* + * default.css_t + * ~~~~~~~~~~~~~ + * + * Sphinx stylesheet -- default theme. + * + * :copyright: Copyright 2007-2014 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +@import url("basic.css"); + +/* -- page layout ----------------------------------------------------------- */ + +body { + font-family: sans-serif; + font-size: 100%; + background-color: #11303d; + color: #000; + margin: 0; + padding: 0; +} + +div.document { + background-color: #1c4e63; +} + +div.documentwrapper { + float: left; + width: 100%; +} + +div.bodywrapper { + margin: 0 0 0 230px; +} + +div.body { + background-color: #ffffff; + color: #000000; + padding: 0 20px 30px 20px; +} + +div.footer { + color: #ffffff; + width: 100%; + padding: 9px 0 9px 0; + text-align: center; + font-size: 75%; +} + +div.footer a { + color: #ffffff; + text-decoration: underline; +} + +div.related { + background-color: #133f52; + line-height: 30px; + color: #ffffff; +} + +div.related a { + color: #ffffff; +} + +div.sphinxsidebar { +} + +div.sphinxsidebar h3 { + font-family: 'Trebuchet MS', sans-serif; + color: #ffffff; + font-size: 1.4em; + font-weight: normal; + margin: 0; + padding: 0; +} + +div.sphinxsidebar h3 a { + color: #ffffff; +} + +div.sphinxsidebar h4 { + font-family: 'Trebuchet MS', sans-serif; + color: #ffffff; + font-size: 1.3em; + font-weight: normal; + margin: 5px 0 0 0; + padding: 0; +} + +div.sphinxsidebar p { + color: #ffffff; +} + +div.sphinxsidebar p.topless { + margin: 5px 10px 10px 10px; +} + +div.sphinxsidebar ul { + margin: 10px; + padding: 0; + color: #ffffff; +} + +div.sphinxsidebar a { + color: #98dbcc; +} + +div.sphinxsidebar input { + border: 1px solid #98dbcc; + font-family: sans-serif; + font-size: 1em; +} + + + +/* -- hyperlink styles ------------------------------------------------------ */ + +a { + color: #355f7c; + text-decoration: none; +} + +a:visited { + color: #355f7c; + text-decoration: none; +} + +a:hover { + text-decoration: underline; +} + + + +/* -- body styles ----------------------------------------------------------- */ + +div.body h1, +div.body h2, +div.body h3, +div.body h4, +div.body h5, +div.body h6 { + font-family: 'Trebuchet MS', sans-serif; + background-color: #f2f2f2; + font-weight: normal; + color: #20435c; + border-bottom: 1px solid #ccc; + margin: 20px -20px 10px -20px; + padding: 3px 0 3px 10px; +} + +div.body h1 { margin-top: 0; font-size: 200%; } +div.body h2 { font-size: 160%; } +div.body h3 { font-size: 140%; } +div.body h4 { font-size: 120%; } +div.body h5 { font-size: 110%; } +div.body h6 { font-size: 100%; } + +a.headerlink { + color: #c60f0f; + font-size: 0.8em; + padding: 0 4px 0 4px; + text-decoration: none; +} + +a.headerlink:hover { + background-color: #c60f0f; + color: white; +} + +div.body p, div.body dd, div.body li { + text-align: justify; + line-height: 130%; +} + +div.admonition p.admonition-title + p { + display: inline; +} + +div.admonition p { + margin-bottom: 5px; +} + +div.admonition pre { + margin-bottom: 5px; +} + +div.admonition ul, div.admonition ol { + margin-bottom: 5px; +} + +div.note { + background-color: #eee; + border: 1px solid #ccc; +} + +div.seealso { + background-color: #ffc; + border: 1px solid #ff6; +} + +div.topic { + background-color: #eee; +} + +div.warning { + background-color: #ffe4e4; + border: 1px solid #f66; +} + +p.admonition-title { + display: inline; +} + +p.admonition-title:after { + content: ":"; +} + +pre { + padding: 5px; + background-color: #eeffcc; + color: #333333; + line-height: 120%; + border: 1px solid #ac9; + border-left: none; + border-right: none; +} + +tt { + background-color: #ecf0f3; + padding: 0 1px 0 1px; + font-size: 0.95em; +} + +th { + background-color: #ede; +} + +.warning tt { + background: #efc2c2; +} + +.note tt { + background: #d6d6d6; +} + +.viewcode-back { + font-family: sans-serif; +} + +div.viewcode-block:target { + background-color: #f4debf; + border-top: 1px solid #ac9; + border-bottom: 1px solid #ac9; +} \ No newline at end of file diff --git a/transcrypt/docs/sphinx/_static/doctools.js b/transcrypt/docs/sphinx/_static/doctools.js new file mode 100644 index 000000000..c7bfe760a --- /dev/null +++ b/transcrypt/docs/sphinx/_static/doctools.js @@ -0,0 +1,263 @@ +/* + * doctools.js + * ~~~~~~~~~~~ + * + * Sphinx JavaScript utilities for all documentation. + * + * :copyright: Copyright 2007-2015 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +/** + * select a different prefix for underscore + */ +$u = _.noConflict(); + +/** + * make the code below compatible with browsers without + * an installed firebug like debugger +if (!window.console || !console.firebug) { + var names = ["log", "debug", "info", "warn", "error", "assert", "dir", + "dirxml", "group", "groupEnd", "time", "timeEnd", "count", "trace", + "profile", "profileEnd"]; + window.console = {}; + for (var i = 0; i < names.length; ++i) + window.console[names[i]] = function() {}; +} + */ + +/** + * small helper function to urldecode strings + */ +jQuery.urldecode = function(x) { + return decodeURIComponent(x).replace(/\+/g, ' '); +}; + +/** + * small helper function to urlencode strings + */ +jQuery.urlencode = encodeURIComponent; + +/** + * This function returns the parsed url parameters of the + * current request. Multiple values per key are supported, + * it will always return arrays of strings for the value parts. + */ +jQuery.getQueryParameters = function(s) { + if (typeof s == 'undefined') + s = document.location.search; + var parts = s.substr(s.indexOf('?') + 1).split('&'); + var result = {}; + for (var i = 0; i < parts.length; i++) { + var tmp = parts[i].split('=', 2); + var key = jQuery.urldecode(tmp[0]); + var value = jQuery.urldecode(tmp[1]); + if (key in result) + result[key].push(value); + else + result[key] = [value]; + } + return result; +}; + +/** + * highlight a given string on a jquery object by wrapping it in + * span elements with the given class name. + */ +jQuery.fn.highlightText = function(text, className) { + function highlight(node) { + if (node.nodeType == 3) { + var val = node.nodeValue; + var pos = val.toLowerCase().indexOf(text); + if (pos >= 0 && !jQuery(node.parentNode).hasClass(className)) { + var span = document.createElement("span"); + span.className = className; + span.appendChild(document.createTextNode(val.substr(pos, text.length))); + node.parentNode.insertBefore(span, node.parentNode.insertBefore( + document.createTextNode(val.substr(pos + text.length)), + node.nextSibling)); + node.nodeValue = val.substr(0, pos); + } + } + else if (!jQuery(node).is("button, select, textarea")) { + jQuery.each(node.childNodes, function() { + highlight(this); + }); + } + } + return this.each(function() { + highlight(this); + }); +}; + +/* + * backward compatibility for jQuery.browser + * This will be supported until firefox bug is fixed. + */ +if (!jQuery.browser) { + jQuery.uaMatch = function(ua) { + ua = ua.toLowerCase(); + + var match = /(chrome)[ \/]([\w.]+)/.exec(ua) || + /(webkit)[ \/]([\w.]+)/.exec(ua) || + /(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) || + /(msie) ([\w.]+)/.exec(ua) || + ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) || + []; + + return { + browser: match[ 1 ] || "", + version: match[ 2 ] || "0" + }; + }; + jQuery.browser = {}; + jQuery.browser[jQuery.uaMatch(navigator.userAgent).browser] = true; +} + +/** + * Small JavaScript module for the documentation. + */ +var Documentation = { + + init : function() { + this.fixFirefoxAnchorBug(); + this.highlightSearchWords(); + this.initIndexTable(); + }, + + /** + * i18n support + */ + TRANSLATIONS : {}, + PLURAL_EXPR : function(n) { return n == 1 ? 0 : 1; }, + LOCALE : 'unknown', + + // gettext and ngettext don't access this so that the functions + // can safely bound to a different name (_ = Documentation.gettext) + gettext : function(string) { + var translated = Documentation.TRANSLATIONS[string]; + if (typeof translated == 'undefined') + return string; + return (typeof translated == 'string') ? translated : translated[0]; + }, + + ngettext : function(singular, plural, n) { + var translated = Documentation.TRANSLATIONS[singular]; + if (typeof translated == 'undefined') + return (n == 1) ? singular : plural; + return translated[Documentation.PLURALEXPR(n)]; + }, + + addTranslations : function(catalog) { + for (var key in catalog.messages) + this.TRANSLATIONS[key] = catalog.messages[key]; + this.PLURAL_EXPR = new Function('n', 'return +(' + catalog.plural_expr + ')'); + this.LOCALE = catalog.locale; + }, + + /** + * add context elements like header anchor links + */ + addContextElements : function() { + $('div[id] > :header:first').each(function() { + $('\u00B6'). + attr('href', '#' + this.id). + attr('title', _('Permalink to this headline')). + appendTo(this); + }); + $('dt[id]').each(function() { + $('\u00B6'). + attr('href', '#' + this.id). + attr('title', _('Permalink to this definition')). + appendTo(this); + }); + }, + + /** + * workaround a firefox stupidity + * see: https://bugzilla.mozilla.org/show_bug.cgi?id=645075 + */ + fixFirefoxAnchorBug : function() { + if (document.location.hash) + window.setTimeout(function() { + document.location.href += ''; + }, 10); + }, + + /** + * highlight the search words provided in the url in the text + */ + highlightSearchWords : function() { + var params = $.getQueryParameters(); + var terms = (params.highlight) ? params.highlight[0].split(/\s+/) : []; + if (terms.length) { + var body = $('div.body'); + if (!body.length) { + body = $('body'); + } + window.setTimeout(function() { + $.each(terms, function() { + body.highlightText(this.toLowerCase(), 'highlighted'); + }); + }, 10); + $('') + .appendTo($('#searchbox')); + } + }, + + /** + * init the domain index toggle buttons + */ + initIndexTable : function() { + var togglers = $('img.toggler').click(function() { + var src = $(this).attr('src'); + var idnum = $(this).attr('id').substr(7); + $('tr.cg-' + idnum).toggle(); + if (src.substr(-9) == 'minus.png') + $(this).attr('src', src.substr(0, src.length-9) + 'plus.png'); + else + $(this).attr('src', src.substr(0, src.length-8) + 'minus.png'); + }).css('display', ''); + if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) { + togglers.click(); + } + }, + + /** + * helper function to hide the search marks again + */ + hideSearchWords : function() { + $('#searchbox .highlight-link').fadeOut(300); + $('span.highlighted').removeClass('highlighted'); + }, + + /** + * make the url absolute + */ + makeURL : function(relativeURL) { + return DOCUMENTATION_OPTIONS.URL_ROOT + '/' + relativeURL; + }, + + /** + * get the current relative url + */ + getCurrentURL : function() { + var path = document.location.pathname; + var parts = path.split(/\//); + $.each(DOCUMENTATION_OPTIONS.URL_ROOT.split(/\//), function() { + if (this == '..') + parts.pop(); + }); + var url = parts.join('/'); + return path.substring(url.lastIndexOf('/') + 1, path.length - 1); + } +}; + +// quick alias for translations +_ = Documentation.gettext; + +$(document).ready(function() { + Documentation.init(); +}); diff --git a/transcrypt/docs/sphinx/_static/down-pressed.png b/transcrypt/docs/sphinx/_static/down-pressed.png new file mode 100644 index 000000000..7c30d004b Binary files /dev/null and b/transcrypt/docs/sphinx/_static/down-pressed.png differ diff --git a/transcrypt/docs/sphinx/_static/down.png b/transcrypt/docs/sphinx/_static/down.png new file mode 100644 index 000000000..f48098a43 Binary files /dev/null and b/transcrypt/docs/sphinx/_static/down.png differ diff --git a/transcrypt/docs/sphinx/_static/file.png b/transcrypt/docs/sphinx/_static/file.png new file mode 100644 index 000000000..254c60bfb Binary files /dev/null and b/transcrypt/docs/sphinx/_static/file.png differ diff --git a/transcrypt/docs/sphinx/_static/jquery-1.11.1.js b/transcrypt/docs/sphinx/_static/jquery-1.11.1.js new file mode 100644 index 000000000..d4b67f7e6 --- /dev/null +++ b/transcrypt/docs/sphinx/_static/jquery-1.11.1.js @@ -0,0 +1,10308 @@ +/*! + * jQuery JavaScript Library v1.11.1 + * http://jquery.com/ + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * + * Copyright 2005, 2014 jQuery Foundation, Inc. and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2014-05-01T17:42Z + */ + +(function( global, factory ) { + + if ( typeof module === "object" && typeof module.exports === "object" ) { + // For CommonJS and CommonJS-like environments where a proper window is present, + // execute the factory and get jQuery + // For environments that do not inherently posses a window with a document + // (such as Node.js), expose a jQuery-making factory as module.exports + // This accentuates the need for the creation of a real window + // e.g. var jQuery = require("jquery")(window); + // See ticket #14549 for more info + module.exports = global.document ? + factory( global, true ) : + function( w ) { + if ( !w.document ) { + throw new Error( "jQuery requires a window with a document" ); + } + return factory( w ); + }; + } else { + factory( global ); + } + +// Pass this if window is not defined yet +}(typeof window !== "undefined" ? window : this, function( window, noGlobal ) { + +// Can't do this because several apps including ASP.NET trace +// the stack via arguments.caller.callee and Firefox dies if +// you try to trace through "use strict" call chains. (#13335) +// Support: Firefox 18+ +// + +var deletedIds = []; + +var slice = deletedIds.slice; + +var concat = deletedIds.concat; + +var push = deletedIds.push; + +var indexOf = deletedIds.indexOf; + +var class2type = {}; + +var toString = class2type.toString; + +var hasOwn = class2type.hasOwnProperty; + +var support = {}; + + + +var + version = "1.11.1", + + // Define a local copy of jQuery + jQuery = function( selector, context ) { + // The jQuery object is actually just the init constructor 'enhanced' + // Need init if jQuery is called (just allow error to be thrown if not included) + return new jQuery.fn.init( selector, context ); + }, + + // Support: Android<4.1, IE<9 + // Make sure we trim BOM and NBSP + rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, + + // Matches dashed string for camelizing + rmsPrefix = /^-ms-/, + rdashAlpha = /-([\da-z])/gi, + + // Used by jQuery.camelCase as callback to replace() + fcamelCase = function( all, letter ) { + return letter.toUpperCase(); + }; + +jQuery.fn = jQuery.prototype = { + // The current version of jQuery being used + jquery: version, + + constructor: jQuery, + + // Start with an empty selector + selector: "", + + // The default length of a jQuery object is 0 + length: 0, + + toArray: function() { + return slice.call( this ); + }, + + // Get the Nth element in the matched element set OR + // Get the whole matched element set as a clean array + get: function( num ) { + return num != null ? + + // Return just the one element from the set + ( num < 0 ? this[ num + this.length ] : this[ num ] ) : + + // Return all the elements in a clean array + slice.call( this ); + }, + + // Take an array of elements and push it onto the stack + // (returning the new matched element set) + pushStack: function( elems ) { + + // Build a new jQuery matched element set + var ret = jQuery.merge( this.constructor(), elems ); + + // Add the old object onto the stack (as a reference) + ret.prevObject = this; + ret.context = this.context; + + // Return the newly-formed element set + return ret; + }, + + // Execute a callback for every element in the matched set. + // (You can seed the arguments with an array of args, but this is + // only used internally.) + each: function( callback, args ) { + return jQuery.each( this, callback, args ); + }, + + map: function( callback ) { + return this.pushStack( jQuery.map(this, function( elem, i ) { + return callback.call( elem, i, elem ); + })); + }, + + slice: function() { + return this.pushStack( slice.apply( this, arguments ) ); + }, + + first: function() { + return this.eq( 0 ); + }, + + last: function() { + return this.eq( -1 ); + }, + + eq: function( i ) { + var len = this.length, + j = +i + ( i < 0 ? len : 0 ); + return this.pushStack( j >= 0 && j < len ? [ this[j] ] : [] ); + }, + + end: function() { + return this.prevObject || this.constructor(null); + }, + + // For internal use only. + // Behaves like an Array's method, not like a jQuery method. + push: push, + sort: deletedIds.sort, + splice: deletedIds.splice +}; + +jQuery.extend = jQuery.fn.extend = function() { + var src, copyIsArray, copy, name, options, clone, + target = arguments[0] || {}, + i = 1, + length = arguments.length, + deep = false; + + // Handle a deep copy situation + if ( typeof target === "boolean" ) { + deep = target; + + // skip the boolean and the target + target = arguments[ i ] || {}; + i++; + } + + // Handle case when target is a string or something (possible in deep copy) + if ( typeof target !== "object" && !jQuery.isFunction(target) ) { + target = {}; + } + + // extend jQuery itself if only one argument is passed + if ( i === length ) { + target = this; + i--; + } + + for ( ; i < length; i++ ) { + // Only deal with non-null/undefined values + if ( (options = arguments[ i ]) != null ) { + // Extend the base object + for ( name in options ) { + src = target[ name ]; + copy = options[ name ]; + + // Prevent never-ending loop + if ( target === copy ) { + continue; + } + + // Recurse if we're merging plain objects or arrays + if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) { + if ( copyIsArray ) { + copyIsArray = false; + clone = src && jQuery.isArray(src) ? src : []; + + } else { + clone = src && jQuery.isPlainObject(src) ? src : {}; + } + + // Never move original objects, clone them + target[ name ] = jQuery.extend( deep, clone, copy ); + + // Don't bring in undefined values + } else if ( copy !== undefined ) { + target[ name ] = copy; + } + } + } + } + + // Return the modified object + return target; +}; + +jQuery.extend({ + // Unique for each copy of jQuery on the page + expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ), + + // Assume jQuery is ready without the ready module + isReady: true, + + error: function( msg ) { + throw new Error( msg ); + }, + + noop: function() {}, + + // See test/unit/core.js for details concerning isFunction. + // Since version 1.3, DOM methods and functions like alert + // aren't supported. They return false on IE (#2968). + isFunction: function( obj ) { + return jQuery.type(obj) === "function"; + }, + + isArray: Array.isArray || function( obj ) { + return jQuery.type(obj) === "array"; + }, + + isWindow: function( obj ) { + /* jshint eqeqeq: false */ + return obj != null && obj == obj.window; + }, + + isNumeric: function( obj ) { + // parseFloat NaNs numeric-cast false positives (null|true|false|"") + // ...but misinterprets leading-number strings, particularly hex literals ("0x...") + // subtraction forces infinities to NaN + return !jQuery.isArray( obj ) && obj - parseFloat( obj ) >= 0; + }, + + isEmptyObject: function( obj ) { + var name; + for ( name in obj ) { + return false; + } + return true; + }, + + isPlainObject: function( obj ) { + var key; + + // Must be an Object. + // Because of IE, we also have to check the presence of the constructor property. + // Make sure that DOM nodes and window objects don't pass through, as well + if ( !obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) { + return false; + } + + try { + // Not own constructor property must be Object + if ( obj.constructor && + !hasOwn.call(obj, "constructor") && + !hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) { + return false; + } + } catch ( e ) { + // IE8,9 Will throw exceptions on certain host objects #9897 + return false; + } + + // Support: IE<9 + // Handle iteration over inherited properties before own properties. + if ( support.ownLast ) { + for ( key in obj ) { + return hasOwn.call( obj, key ); + } + } + + // Own properties are enumerated firstly, so to speed up, + // if last one is own, then all properties are own. + for ( key in obj ) {} + + return key === undefined || hasOwn.call( obj, key ); + }, + + type: function( obj ) { + if ( obj == null ) { + return obj + ""; + } + return typeof obj === "object" || typeof obj === "function" ? + class2type[ toString.call(obj) ] || "object" : + typeof obj; + }, + + // Evaluates a script in a global context + // Workarounds based on findings by Jim Driscoll + // http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context + globalEval: function( data ) { + if ( data && jQuery.trim( data ) ) { + // We use execScript on Internet Explorer + // We use an anonymous function so that context is window + // rather than jQuery in Firefox + ( window.execScript || function( data ) { + window[ "eval" ].call( window, data ); + } )( data ); + } + }, + + // Convert dashed to camelCase; used by the css and data modules + // Microsoft forgot to hump their vendor prefix (#9572) + camelCase: function( string ) { + return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); + }, + + nodeName: function( elem, name ) { + return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); + }, + + // args is for internal usage only + each: function( obj, callback, args ) { + var value, + i = 0, + length = obj.length, + isArray = isArraylike( obj ); + + if ( args ) { + if ( isArray ) { + for ( ; i < length; i++ ) { + value = callback.apply( obj[ i ], args ); + + if ( value === false ) { + break; + } + } + } else { + for ( i in obj ) { + value = callback.apply( obj[ i ], args ); + + if ( value === false ) { + break; + } + } + } + + // A special, fast, case for the most common use of each + } else { + if ( isArray ) { + for ( ; i < length; i++ ) { + value = callback.call( obj[ i ], i, obj[ i ] ); + + if ( value === false ) { + break; + } + } + } else { + for ( i in obj ) { + value = callback.call( obj[ i ], i, obj[ i ] ); + + if ( value === false ) { + break; + } + } + } + } + + return obj; + }, + + // Support: Android<4.1, IE<9 + trim: function( text ) { + return text == null ? + "" : + ( text + "" ).replace( rtrim, "" ); + }, + + // results is for internal usage only + makeArray: function( arr, results ) { + var ret = results || []; + + if ( arr != null ) { + if ( isArraylike( Object(arr) ) ) { + jQuery.merge( ret, + typeof arr === "string" ? + [ arr ] : arr + ); + } else { + push.call( ret, arr ); + } + } + + return ret; + }, + + inArray: function( elem, arr, i ) { + var len; + + if ( arr ) { + if ( indexOf ) { + return indexOf.call( arr, elem, i ); + } + + len = arr.length; + i = i ? i < 0 ? Math.max( 0, len + i ) : i : 0; + + for ( ; i < len; i++ ) { + // Skip accessing in sparse arrays + if ( i in arr && arr[ i ] === elem ) { + return i; + } + } + } + + return -1; + }, + + merge: function( first, second ) { + var len = +second.length, + j = 0, + i = first.length; + + while ( j < len ) { + first[ i++ ] = second[ j++ ]; + } + + // Support: IE<9 + // Workaround casting of .length to NaN on otherwise arraylike objects (e.g., NodeLists) + if ( len !== len ) { + while ( second[j] !== undefined ) { + first[ i++ ] = second[ j++ ]; + } + } + + first.length = i; + + return first; + }, + + grep: function( elems, callback, invert ) { + var callbackInverse, + matches = [], + i = 0, + length = elems.length, + callbackExpect = !invert; + + // Go through the array, only saving the items + // that pass the validator function + for ( ; i < length; i++ ) { + callbackInverse = !callback( elems[ i ], i ); + if ( callbackInverse !== callbackExpect ) { + matches.push( elems[ i ] ); + } + } + + return matches; + }, + + // arg is for internal usage only + map: function( elems, callback, arg ) { + var value, + i = 0, + length = elems.length, + isArray = isArraylike( elems ), + ret = []; + + // Go through the array, translating each of the items to their new values + if ( isArray ) { + for ( ; i < length; i++ ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret.push( value ); + } + } + + // Go through every key on the object, + } else { + for ( i in elems ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret.push( value ); + } + } + } + + // Flatten any nested arrays + return concat.apply( [], ret ); + }, + + // A global GUID counter for objects + guid: 1, + + // Bind a function to a context, optionally partially applying any + // arguments. + proxy: function( fn, context ) { + var args, proxy, tmp; + + if ( typeof context === "string" ) { + tmp = fn[ context ]; + context = fn; + fn = tmp; + } + + // Quick check to determine if target is callable, in the spec + // this throws a TypeError, but we will just return undefined. + if ( !jQuery.isFunction( fn ) ) { + return undefined; + } + + // Simulated bind + args = slice.call( arguments, 2 ); + proxy = function() { + return fn.apply( context || this, args.concat( slice.call( arguments ) ) ); + }; + + // Set the guid of unique handler to the same of original handler, so it can be removed + proxy.guid = fn.guid = fn.guid || jQuery.guid++; + + return proxy; + }, + + now: function() { + return +( new Date() ); + }, + + // jQuery.support is not used in Core but other projects attach their + // properties to it so it needs to exist. + support: support +}); + +// Populate the class2type map +jQuery.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(i, name) { + class2type[ "[object " + name + "]" ] = name.toLowerCase(); +}); + +function isArraylike( obj ) { + var length = obj.length, + type = jQuery.type( obj ); + + if ( type === "function" || jQuery.isWindow( obj ) ) { + return false; + } + + if ( obj.nodeType === 1 && length ) { + return true; + } + + return type === "array" || length === 0 || + typeof length === "number" && length > 0 && ( length - 1 ) in obj; +} +var Sizzle = +/*! + * Sizzle CSS Selector Engine v1.10.19 + * http://sizzlejs.com/ + * + * Copyright 2013 jQuery Foundation, Inc. and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2014-04-18 + */ +(function( window ) { + +var i, + support, + Expr, + getText, + isXML, + tokenize, + compile, + select, + outermostContext, + sortInput, + hasDuplicate, + + // Local document vars + setDocument, + document, + docElem, + documentIsHTML, + rbuggyQSA, + rbuggyMatches, + matches, + contains, + + // Instance-specific data + expando = "sizzle" + -(new Date()), + preferredDoc = window.document, + dirruns = 0, + done = 0, + classCache = createCache(), + tokenCache = createCache(), + compilerCache = createCache(), + sortOrder = function( a, b ) { + if ( a === b ) { + hasDuplicate = true; + } + return 0; + }, + + // General-purpose constants + strundefined = typeof undefined, + MAX_NEGATIVE = 1 << 31, + + // Instance methods + hasOwn = ({}).hasOwnProperty, + arr = [], + pop = arr.pop, + push_native = arr.push, + push = arr.push, + slice = arr.slice, + // Use a stripped-down indexOf if we can't use a native one + indexOf = arr.indexOf || function( elem ) { + var i = 0, + len = this.length; + for ( ; i < len; i++ ) { + if ( this[i] === elem ) { + return i; + } + } + return -1; + }, + + booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped", + + // Regular expressions + + // Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace + whitespace = "[\\x20\\t\\r\\n\\f]", + // http://www.w3.org/TR/css3-syntax/#characters + characterEncoding = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+", + + // Loosely modeled on CSS identifier characters + // An unquoted value should be a CSS identifier http://www.w3.org/TR/css3-selectors/#attribute-selectors + // Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier + identifier = characterEncoding.replace( "w", "w#" ), + + // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors + attributes = "\\[" + whitespace + "*(" + characterEncoding + ")(?:" + whitespace + + // Operator (capture 2) + "*([*^$|!~]?=)" + whitespace + + // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]" + "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace + + "*\\]", + + pseudos = ":(" + characterEncoding + ")(?:\\((" + + // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments: + // 1. quoted (capture 3; capture 4 or capture 5) + "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" + + // 2. simple (capture 6) + "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" + + // 3. anything else (capture 2) + ".*" + + ")\\)|)", + + // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter + rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ), + + rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), + rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ), + + rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ), + + rpseudo = new RegExp( pseudos ), + ridentifier = new RegExp( "^" + identifier + "$" ), + + matchExpr = { + "ID": new RegExp( "^#(" + characterEncoding + ")" ), + "CLASS": new RegExp( "^\\.(" + characterEncoding + ")" ), + "TAG": new RegExp( "^(" + characterEncoding.replace( "w", "w*" ) + ")" ), + "ATTR": new RegExp( "^" + attributes ), + "PSEUDO": new RegExp( "^" + pseudos ), + "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace + + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + + "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), + "bool": new RegExp( "^(?:" + booleans + ")$", "i" ), + // For use in libraries implementing .is() + // We use this for POS matching in `select` + "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + + whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) + }, + + rinputs = /^(?:input|select|textarea|button)$/i, + rheader = /^h\d$/i, + + rnative = /^[^{]+\{\s*\[native \w/, + + // Easily-parseable/retrievable ID or TAG or CLASS selectors + rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, + + rsibling = /[+~]/, + rescape = /'|\\/g, + + // CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters + runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ), + funescape = function( _, escaped, escapedWhitespace ) { + var high = "0x" + escaped - 0x10000; + // NaN means non-codepoint + // Support: Firefox<24 + // Workaround erroneous numeric interpretation of +"0x" + return high !== high || escapedWhitespace ? + escaped : + high < 0 ? + // BMP codepoint + String.fromCharCode( high + 0x10000 ) : + // Supplemental Plane codepoint (surrogate pair) + String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); + }; + +// Optimize for push.apply( _, NodeList ) +try { + push.apply( + (arr = slice.call( preferredDoc.childNodes )), + preferredDoc.childNodes + ); + // Support: Android<4.0 + // Detect silently failing push.apply + arr[ preferredDoc.childNodes.length ].nodeType; +} catch ( e ) { + push = { apply: arr.length ? + + // Leverage slice if possible + function( target, els ) { + push_native.apply( target, slice.call(els) ); + } : + + // Support: IE<9 + // Otherwise append directly + function( target, els ) { + var j = target.length, + i = 0; + // Can't trust NodeList.length + while ( (target[j++] = els[i++]) ) {} + target.length = j - 1; + } + }; +} + +function Sizzle( selector, context, results, seed ) { + var match, elem, m, nodeType, + // QSA vars + i, groups, old, nid, newContext, newSelector; + + if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) { + setDocument( context ); + } + + context = context || document; + results = results || []; + + if ( !selector || typeof selector !== "string" ) { + return results; + } + + if ( (nodeType = context.nodeType) !== 1 && nodeType !== 9 ) { + return []; + } + + if ( documentIsHTML && !seed ) { + + // Shortcuts + if ( (match = rquickExpr.exec( selector )) ) { + // Speed-up: Sizzle("#ID") + if ( (m = match[1]) ) { + if ( nodeType === 9 ) { + elem = context.getElementById( m ); + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document (jQuery #6963) + if ( elem && elem.parentNode ) { + // Handle the case where IE, Opera, and Webkit return items + // by name instead of ID + if ( elem.id === m ) { + results.push( elem ); + return results; + } + } else { + return results; + } + } else { + // Context is not a document + if ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) && + contains( context, elem ) && elem.id === m ) { + results.push( elem ); + return results; + } + } + + // Speed-up: Sizzle("TAG") + } else if ( match[2] ) { + push.apply( results, context.getElementsByTagName( selector ) ); + return results; + + // Speed-up: Sizzle(".CLASS") + } else if ( (m = match[3]) && support.getElementsByClassName && context.getElementsByClassName ) { + push.apply( results, context.getElementsByClassName( m ) ); + return results; + } + } + + // QSA path + if ( support.qsa && (!rbuggyQSA || !rbuggyQSA.test( selector )) ) { + nid = old = expando; + newContext = context; + newSelector = nodeType === 9 && selector; + + // qSA works strangely on Element-rooted queries + // We can work around this by specifying an extra ID on the root + // and working up from there (Thanks to Andrew Dupont for the technique) + // IE 8 doesn't work on object elements + if ( nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) { + groups = tokenize( selector ); + + if ( (old = context.getAttribute("id")) ) { + nid = old.replace( rescape, "\\$&" ); + } else { + context.setAttribute( "id", nid ); + } + nid = "[id='" + nid + "'] "; + + i = groups.length; + while ( i-- ) { + groups[i] = nid + toSelector( groups[i] ); + } + newContext = rsibling.test( selector ) && testContext( context.parentNode ) || context; + newSelector = groups.join(","); + } + + if ( newSelector ) { + try { + push.apply( results, + newContext.querySelectorAll( newSelector ) + ); + return results; + } catch(qsaError) { + } finally { + if ( !old ) { + context.removeAttribute("id"); + } + } + } + } + } + + // All others + return select( selector.replace( rtrim, "$1" ), context, results, seed ); +} + +/** + * Create key-value caches of limited size + * @returns {Function(string, Object)} Returns the Object data after storing it on itself with + * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) + * deleting the oldest entry + */ +function createCache() { + var keys = []; + + function cache( key, value ) { + // Use (key + " ") to avoid collision with native prototype properties (see Issue #157) + if ( keys.push( key + " " ) > Expr.cacheLength ) { + // Only keep the most recent entries + delete cache[ keys.shift() ]; + } + return (cache[ key + " " ] = value); + } + return cache; +} + +/** + * Mark a function for special use by Sizzle + * @param {Function} fn The function to mark + */ +function markFunction( fn ) { + fn[ expando ] = true; + return fn; +} + +/** + * Support testing using an element + * @param {Function} fn Passed the created div and expects a boolean result + */ +function assert( fn ) { + var div = document.createElement("div"); + + try { + return !!fn( div ); + } catch (e) { + return false; + } finally { + // Remove from its parent by default + if ( div.parentNode ) { + div.parentNode.removeChild( div ); + } + // release memory in IE + div = null; + } +} + +/** + * Adds the same handler for all of the specified attrs + * @param {String} attrs Pipe-separated list of attributes + * @param {Function} handler The method that will be applied + */ +function addHandle( attrs, handler ) { + var arr = attrs.split("|"), + i = attrs.length; + + while ( i-- ) { + Expr.attrHandle[ arr[i] ] = handler; + } +} + +/** + * Checks document order of two siblings + * @param {Element} a + * @param {Element} b + * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b + */ +function siblingCheck( a, b ) { + var cur = b && a, + diff = cur && a.nodeType === 1 && b.nodeType === 1 && + ( ~b.sourceIndex || MAX_NEGATIVE ) - + ( ~a.sourceIndex || MAX_NEGATIVE ); + + // Use IE sourceIndex if available on both nodes + if ( diff ) { + return diff; + } + + // Check if b follows a + if ( cur ) { + while ( (cur = cur.nextSibling) ) { + if ( cur === b ) { + return -1; + } + } + } + + return a ? 1 : -1; +} + +/** + * Returns a function to use in pseudos for input types + * @param {String} type + */ +function createInputPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === type; + }; +} + +/** + * Returns a function to use in pseudos for buttons + * @param {String} type + */ +function createButtonPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return (name === "input" || name === "button") && elem.type === type; + }; +} + +/** + * Returns a function to use in pseudos for positionals + * @param {Function} fn + */ +function createPositionalPseudo( fn ) { + return markFunction(function( argument ) { + argument = +argument; + return markFunction(function( seed, matches ) { + var j, + matchIndexes = fn( [], seed.length, argument ), + i = matchIndexes.length; + + // Match elements found at the specified indexes + while ( i-- ) { + if ( seed[ (j = matchIndexes[i]) ] ) { + seed[j] = !(matches[j] = seed[j]); + } + } + }); + }); +} + +/** + * Checks a node for validity as a Sizzle context + * @param {Element|Object=} context + * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value + */ +function testContext( context ) { + return context && typeof context.getElementsByTagName !== strundefined && context; +} + +// Expose support vars for convenience +support = Sizzle.support = {}; + +/** + * Detects XML nodes + * @param {Element|Object} elem An element or a document + * @returns {Boolean} True iff elem is a non-HTML XML node + */ +isXML = Sizzle.isXML = function( elem ) { + // documentElement is verified for cases where it doesn't yet exist + // (such as loading iframes in IE - #4833) + var documentElement = elem && (elem.ownerDocument || elem).documentElement; + return documentElement ? documentElement.nodeName !== "HTML" : false; +}; + +/** + * Sets document-related variables once based on the current document + * @param {Element|Object} [doc] An element or document object to use to set the document + * @returns {Object} Returns the current document + */ +setDocument = Sizzle.setDocument = function( node ) { + var hasCompare, + doc = node ? node.ownerDocument || node : preferredDoc, + parent = doc.defaultView; + + // If no document and documentElement is available, return + if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) { + return document; + } + + // Set our document + document = doc; + docElem = doc.documentElement; + + // Support tests + documentIsHTML = !isXML( doc ); + + // Support: IE>8 + // If iframe document is assigned to "document" variable and if iframe has been reloaded, + // IE will throw "permission denied" error when accessing "document" variable, see jQuery #13936 + // IE6-8 do not support the defaultView property so parent will be undefined + if ( parent && parent !== parent.top ) { + // IE11 does not have attachEvent, so all must suffer + if ( parent.addEventListener ) { + parent.addEventListener( "unload", function() { + setDocument(); + }, false ); + } else if ( parent.attachEvent ) { + parent.attachEvent( "onunload", function() { + setDocument(); + }); + } + } + + /* Attributes + ---------------------------------------------------------------------- */ + + // Support: IE<8 + // Verify that getAttribute really returns attributes and not properties (excepting IE8 booleans) + support.attributes = assert(function( div ) { + div.className = "i"; + return !div.getAttribute("className"); + }); + + /* getElement(s)By* + ---------------------------------------------------------------------- */ + + // Check if getElementsByTagName("*") returns only elements + support.getElementsByTagName = assert(function( div ) { + div.appendChild( doc.createComment("") ); + return !div.getElementsByTagName("*").length; + }); + + // Check if getElementsByClassName can be trusted + support.getElementsByClassName = rnative.test( doc.getElementsByClassName ) && assert(function( div ) { + div.innerHTML = "
"; + + // Support: Safari<4 + // Catch class over-caching + div.firstChild.className = "i"; + // Support: Opera<10 + // Catch gEBCN failure to find non-leading classes + return div.getElementsByClassName("i").length === 2; + }); + + // Support: IE<10 + // Check if getElementById returns elements by name + // The broken getElementById methods don't pick up programatically-set names, + // so use a roundabout getElementsByName test + support.getById = assert(function( div ) { + docElem.appendChild( div ).id = expando; + return !doc.getElementsByName || !doc.getElementsByName( expando ).length; + }); + + // ID find and filter + if ( support.getById ) { + Expr.find["ID"] = function( id, context ) { + if ( typeof context.getElementById !== strundefined && documentIsHTML ) { + var m = context.getElementById( id ); + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + return m && m.parentNode ? [ m ] : []; + } + }; + Expr.filter["ID"] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + return elem.getAttribute("id") === attrId; + }; + }; + } else { + // Support: IE6/7 + // getElementById is not reliable as a find shortcut + delete Expr.find["ID"]; + + Expr.filter["ID"] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + var node = typeof elem.getAttributeNode !== strundefined && elem.getAttributeNode("id"); + return node && node.value === attrId; + }; + }; + } + + // Tag + Expr.find["TAG"] = support.getElementsByTagName ? + function( tag, context ) { + if ( typeof context.getElementsByTagName !== strundefined ) { + return context.getElementsByTagName( tag ); + } + } : + function( tag, context ) { + var elem, + tmp = [], + i = 0, + results = context.getElementsByTagName( tag ); + + // Filter out possible comments + if ( tag === "*" ) { + while ( (elem = results[i++]) ) { + if ( elem.nodeType === 1 ) { + tmp.push( elem ); + } + } + + return tmp; + } + return results; + }; + + // Class + Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) { + if ( typeof context.getElementsByClassName !== strundefined && documentIsHTML ) { + return context.getElementsByClassName( className ); + } + }; + + /* QSA/matchesSelector + ---------------------------------------------------------------------- */ + + // QSA and matchesSelector support + + // matchesSelector(:active) reports false when true (IE9/Opera 11.5) + rbuggyMatches = []; + + // qSa(:focus) reports false when true (Chrome 21) + // We allow this because of a bug in IE8/9 that throws an error + // whenever `document.activeElement` is accessed on an iframe + // So, we allow :focus to pass through QSA all the time to avoid the IE error + // See http://bugs.jquery.com/ticket/13378 + rbuggyQSA = []; + + if ( (support.qsa = rnative.test( doc.querySelectorAll )) ) { + // Build QSA regex + // Regex strategy adopted from Diego Perini + assert(function( div ) { + // Select is set to empty string on purpose + // This is to test IE's treatment of not explicitly + // setting a boolean content attribute, + // since its presence should be enough + // http://bugs.jquery.com/ticket/12359 + div.innerHTML = ""; + + // Support: IE8, Opera 11-12.16 + // Nothing should be selected when empty strings follow ^= or $= or *= + // The test attribute must be unknown in Opera but "safe" for WinRT + // http://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section + if ( div.querySelectorAll("[msallowclip^='']").length ) { + rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" ); + } + + // Support: IE8 + // Boolean attributes and "value" are not treated correctly + if ( !div.querySelectorAll("[selected]").length ) { + rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" ); + } + + // Webkit/Opera - :checked should return selected option elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + // IE8 throws error here and will not see later tests + if ( !div.querySelectorAll(":checked").length ) { + rbuggyQSA.push(":checked"); + } + }); + + assert(function( div ) { + // Support: Windows 8 Native Apps + // The type and name attributes are restricted during .innerHTML assignment + var input = doc.createElement("input"); + input.setAttribute( "type", "hidden" ); + div.appendChild( input ).setAttribute( "name", "D" ); + + // Support: IE8 + // Enforce case-sensitivity of name attribute + if ( div.querySelectorAll("[name=d]").length ) { + rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" ); + } + + // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) + // IE8 throws error here and will not see later tests + if ( !div.querySelectorAll(":enabled").length ) { + rbuggyQSA.push( ":enabled", ":disabled" ); + } + + // Opera 10-11 does not throw on post-comma invalid pseudos + div.querySelectorAll("*,:x"); + rbuggyQSA.push(",.*:"); + }); + } + + if ( (support.matchesSelector = rnative.test( (matches = docElem.matches || + docElem.webkitMatchesSelector || + docElem.mozMatchesSelector || + docElem.oMatchesSelector || + docElem.msMatchesSelector) )) ) { + + assert(function( div ) { + // Check to see if it's possible to do matchesSelector + // on a disconnected node (IE 9) + support.disconnectedMatch = matches.call( div, "div" ); + + // This should fail with an exception + // Gecko does not error, returns false instead + matches.call( div, "[s!='']:x" ); + rbuggyMatches.push( "!=", pseudos ); + }); + } + + rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") ); + rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") ); + + /* Contains + ---------------------------------------------------------------------- */ + hasCompare = rnative.test( docElem.compareDocumentPosition ); + + // Element contains another + // Purposefully does not implement inclusive descendent + // As in, an element does not contain itself + contains = hasCompare || rnative.test( docElem.contains ) ? + function( a, b ) { + var adown = a.nodeType === 9 ? a.documentElement : a, + bup = b && b.parentNode; + return a === bup || !!( bup && bup.nodeType === 1 && ( + adown.contains ? + adown.contains( bup ) : + a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 + )); + } : + function( a, b ) { + if ( b ) { + while ( (b = b.parentNode) ) { + if ( b === a ) { + return true; + } + } + } + return false; + }; + + /* Sorting + ---------------------------------------------------------------------- */ + + // Document order sorting + sortOrder = hasCompare ? + function( a, b ) { + + // Flag for duplicate removal + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + // Sort on method existence if only one input has compareDocumentPosition + var compare = !a.compareDocumentPosition - !b.compareDocumentPosition; + if ( compare ) { + return compare; + } + + // Calculate position if both inputs belong to the same document + compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ? + a.compareDocumentPosition( b ) : + + // Otherwise we know they are disconnected + 1; + + // Disconnected nodes + if ( compare & 1 || + (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) { + + // Choose the first element that is related to our preferred document + if ( a === doc || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) { + return -1; + } + if ( b === doc || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) { + return 1; + } + + // Maintain original order + return sortInput ? + ( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) : + 0; + } + + return compare & 4 ? -1 : 1; + } : + function( a, b ) { + // Exit early if the nodes are identical + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + var cur, + i = 0, + aup = a.parentNode, + bup = b.parentNode, + ap = [ a ], + bp = [ b ]; + + // Parentless nodes are either documents or disconnected + if ( !aup || !bup ) { + return a === doc ? -1 : + b === doc ? 1 : + aup ? -1 : + bup ? 1 : + sortInput ? + ( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) : + 0; + + // If the nodes are siblings, we can do a quick check + } else if ( aup === bup ) { + return siblingCheck( a, b ); + } + + // Otherwise we need full lists of their ancestors for comparison + cur = a; + while ( (cur = cur.parentNode) ) { + ap.unshift( cur ); + } + cur = b; + while ( (cur = cur.parentNode) ) { + bp.unshift( cur ); + } + + // Walk down the tree looking for a discrepancy + while ( ap[i] === bp[i] ) { + i++; + } + + return i ? + // Do a sibling check if the nodes have a common ancestor + siblingCheck( ap[i], bp[i] ) : + + // Otherwise nodes in our document sort first + ap[i] === preferredDoc ? -1 : + bp[i] === preferredDoc ? 1 : + 0; + }; + + return doc; +}; + +Sizzle.matches = function( expr, elements ) { + return Sizzle( expr, null, null, elements ); +}; + +Sizzle.matchesSelector = function( elem, expr ) { + // Set document vars if needed + if ( ( elem.ownerDocument || elem ) !== document ) { + setDocument( elem ); + } + + // Make sure that attribute selectors are quoted + expr = expr.replace( rattributeQuotes, "='$1']" ); + + if ( support.matchesSelector && documentIsHTML && + ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) && + ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) { + + try { + var ret = matches.call( elem, expr ); + + // IE 9's matchesSelector returns false on disconnected nodes + if ( ret || support.disconnectedMatch || + // As well, disconnected nodes are said to be in a document + // fragment in IE 9 + elem.document && elem.document.nodeType !== 11 ) { + return ret; + } + } catch(e) {} + } + + return Sizzle( expr, document, null, [ elem ] ).length > 0; +}; + +Sizzle.contains = function( context, elem ) { + // Set document vars if needed + if ( ( context.ownerDocument || context ) !== document ) { + setDocument( context ); + } + return contains( context, elem ); +}; + +Sizzle.attr = function( elem, name ) { + // Set document vars if needed + if ( ( elem.ownerDocument || elem ) !== document ) { + setDocument( elem ); + } + + var fn = Expr.attrHandle[ name.toLowerCase() ], + // Don't get fooled by Object.prototype properties (jQuery #13807) + val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ? + fn( elem, name, !documentIsHTML ) : + undefined; + + return val !== undefined ? + val : + support.attributes || !documentIsHTML ? + elem.getAttribute( name ) : + (val = elem.getAttributeNode(name)) && val.specified ? + val.value : + null; +}; + +Sizzle.error = function( msg ) { + throw new Error( "Syntax error, unrecognized expression: " + msg ); +}; + +/** + * Document sorting and removing duplicates + * @param {ArrayLike} results + */ +Sizzle.uniqueSort = function( results ) { + var elem, + duplicates = [], + j = 0, + i = 0; + + // Unless we *know* we can detect duplicates, assume their presence + hasDuplicate = !support.detectDuplicates; + sortInput = !support.sortStable && results.slice( 0 ); + results.sort( sortOrder ); + + if ( hasDuplicate ) { + while ( (elem = results[i++]) ) { + if ( elem === results[ i ] ) { + j = duplicates.push( i ); + } + } + while ( j-- ) { + results.splice( duplicates[ j ], 1 ); + } + } + + // Clear input after sorting to release objects + // See https://github.com/jquery/sizzle/pull/225 + sortInput = null; + + return results; +}; + +/** + * Utility function for retrieving the text value of an array of DOM nodes + * @param {Array|Element} elem + */ +getText = Sizzle.getText = function( elem ) { + var node, + ret = "", + i = 0, + nodeType = elem.nodeType; + + if ( !nodeType ) { + // If no nodeType, this is expected to be an array + while ( (node = elem[i++]) ) { + // Do not traverse comment nodes + ret += getText( node ); + } + } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { + // Use textContent for elements + // innerText usage removed for consistency of new lines (jQuery #11153) + if ( typeof elem.textContent === "string" ) { + return elem.textContent; + } else { + // Traverse its children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + ret += getText( elem ); + } + } + } else if ( nodeType === 3 || nodeType === 4 ) { + return elem.nodeValue; + } + // Do not include comment or processing instruction nodes + + return ret; +}; + +Expr = Sizzle.selectors = { + + // Can be adjusted by the user + cacheLength: 50, + + createPseudo: markFunction, + + match: matchExpr, + + attrHandle: {}, + + find: {}, + + relative: { + ">": { dir: "parentNode", first: true }, + " ": { dir: "parentNode" }, + "+": { dir: "previousSibling", first: true }, + "~": { dir: "previousSibling" } + }, + + preFilter: { + "ATTR": function( match ) { + match[1] = match[1].replace( runescape, funescape ); + + // Move the given value to match[3] whether quoted or unquoted + match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape ); + + if ( match[2] === "~=" ) { + match[3] = " " + match[3] + " "; + } + + return match.slice( 0, 4 ); + }, + + "CHILD": function( match ) { + /* matches from matchExpr["CHILD"] + 1 type (only|nth|...) + 2 what (child|of-type) + 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...) + 4 xn-component of xn+y argument ([+-]?\d*n|) + 5 sign of xn-component + 6 x of xn-component + 7 sign of y-component + 8 y of y-component + */ + match[1] = match[1].toLowerCase(); + + if ( match[1].slice( 0, 3 ) === "nth" ) { + // nth-* requires argument + if ( !match[3] ) { + Sizzle.error( match[0] ); + } + + // numeric x and y parameters for Expr.filter.CHILD + // remember that false/true cast respectively to 0/1 + match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) ); + match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" ); + + // other types prohibit arguments + } else if ( match[3] ) { + Sizzle.error( match[0] ); + } + + return match; + }, + + "PSEUDO": function( match ) { + var excess, + unquoted = !match[6] && match[2]; + + if ( matchExpr["CHILD"].test( match[0] ) ) { + return null; + } + + // Accept quoted arguments as-is + if ( match[3] ) { + match[2] = match[4] || match[5] || ""; + + // Strip excess characters from unquoted arguments + } else if ( unquoted && rpseudo.test( unquoted ) && + // Get excess from tokenize (recursively) + (excess = tokenize( unquoted, true )) && + // advance to the next closing parenthesis + (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) { + + // excess is a negative index + match[0] = match[0].slice( 0, excess ); + match[2] = unquoted.slice( 0, excess ); + } + + // Return only captures needed by the pseudo filter method (type and argument) + return match.slice( 0, 3 ); + } + }, + + filter: { + + "TAG": function( nodeNameSelector ) { + var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase(); + return nodeNameSelector === "*" ? + function() { return true; } : + function( elem ) { + return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; + }; + }, + + "CLASS": function( className ) { + var pattern = classCache[ className + " " ]; + + return pattern || + (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) && + classCache( className, function( elem ) { + return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== strundefined && elem.getAttribute("class") || "" ); + }); + }, + + "ATTR": function( name, operator, check ) { + return function( elem ) { + var result = Sizzle.attr( elem, name ); + + if ( result == null ) { + return operator === "!="; + } + if ( !operator ) { + return true; + } + + result += ""; + + return operator === "=" ? result === check : + operator === "!=" ? result !== check : + operator === "^=" ? check && result.indexOf( check ) === 0 : + operator === "*=" ? check && result.indexOf( check ) > -1 : + operator === "$=" ? check && result.slice( -check.length ) === check : + operator === "~=" ? ( " " + result + " " ).indexOf( check ) > -1 : + operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" : + false; + }; + }, + + "CHILD": function( type, what, argument, first, last ) { + var simple = type.slice( 0, 3 ) !== "nth", + forward = type.slice( -4 ) !== "last", + ofType = what === "of-type"; + + return first === 1 && last === 0 ? + + // Shortcut for :nth-*(n) + function( elem ) { + return !!elem.parentNode; + } : + + function( elem, context, xml ) { + var cache, outerCache, node, diff, nodeIndex, start, + dir = simple !== forward ? "nextSibling" : "previousSibling", + parent = elem.parentNode, + name = ofType && elem.nodeName.toLowerCase(), + useCache = !xml && !ofType; + + if ( parent ) { + + // :(first|last|only)-(child|of-type) + if ( simple ) { + while ( dir ) { + node = elem; + while ( (node = node[ dir ]) ) { + if ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) { + return false; + } + } + // Reverse direction for :only-* (if we haven't yet done so) + start = dir = type === "only" && !start && "nextSibling"; + } + return true; + } + + start = [ forward ? parent.firstChild : parent.lastChild ]; + + // non-xml :nth-child(...) stores cache data on `parent` + if ( forward && useCache ) { + // Seek `elem` from a previously-cached index + outerCache = parent[ expando ] || (parent[ expando ] = {}); + cache = outerCache[ type ] || []; + nodeIndex = cache[0] === dirruns && cache[1]; + diff = cache[0] === dirruns && cache[2]; + node = nodeIndex && parent.childNodes[ nodeIndex ]; + + while ( (node = ++nodeIndex && node && node[ dir ] || + + // Fallback to seeking `elem` from the start + (diff = nodeIndex = 0) || start.pop()) ) { + + // When found, cache indexes on `parent` and break + if ( node.nodeType === 1 && ++diff && node === elem ) { + outerCache[ type ] = [ dirruns, nodeIndex, diff ]; + break; + } + } + + // Use previously-cached element index if available + } else if ( useCache && (cache = (elem[ expando ] || (elem[ expando ] = {}))[ type ]) && cache[0] === dirruns ) { + diff = cache[1]; + + // xml :nth-child(...) or :nth-last-child(...) or :nth(-last)?-of-type(...) + } else { + // Use the same loop as above to seek `elem` from the start + while ( (node = ++nodeIndex && node && node[ dir ] || + (diff = nodeIndex = 0) || start.pop()) ) { + + if ( ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) && ++diff ) { + // Cache the index of each encountered element + if ( useCache ) { + (node[ expando ] || (node[ expando ] = {}))[ type ] = [ dirruns, diff ]; + } + + if ( node === elem ) { + break; + } + } + } + } + + // Incorporate the offset, then check against cycle size + diff -= last; + return diff === first || ( diff % first === 0 && diff / first >= 0 ); + } + }; + }, + + "PSEUDO": function( pseudo, argument ) { + // pseudo-class names are case-insensitive + // http://www.w3.org/TR/selectors/#pseudo-classes + // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters + // Remember that setFilters inherits from pseudos + var args, + fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || + Sizzle.error( "unsupported pseudo: " + pseudo ); + + // The user may use createPseudo to indicate that + // arguments are needed to create the filter function + // just as Sizzle does + if ( fn[ expando ] ) { + return fn( argument ); + } + + // But maintain support for old signatures + if ( fn.length > 1 ) { + args = [ pseudo, pseudo, "", argument ]; + return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? + markFunction(function( seed, matches ) { + var idx, + matched = fn( seed, argument ), + i = matched.length; + while ( i-- ) { + idx = indexOf.call( seed, matched[i] ); + seed[ idx ] = !( matches[ idx ] = matched[i] ); + } + }) : + function( elem ) { + return fn( elem, 0, args ); + }; + } + + return fn; + } + }, + + pseudos: { + // Potentially complex pseudos + "not": markFunction(function( selector ) { + // Trim the selector passed to compile + // to avoid treating leading and trailing + // spaces as combinators + var input = [], + results = [], + matcher = compile( selector.replace( rtrim, "$1" ) ); + + return matcher[ expando ] ? + markFunction(function( seed, matches, context, xml ) { + var elem, + unmatched = matcher( seed, null, xml, [] ), + i = seed.length; + + // Match elements unmatched by `matcher` + while ( i-- ) { + if ( (elem = unmatched[i]) ) { + seed[i] = !(matches[i] = elem); + } + } + }) : + function( elem, context, xml ) { + input[0] = elem; + matcher( input, null, xml, results ); + return !results.pop(); + }; + }), + + "has": markFunction(function( selector ) { + return function( elem ) { + return Sizzle( selector, elem ).length > 0; + }; + }), + + "contains": markFunction(function( text ) { + return function( elem ) { + return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1; + }; + }), + + // "Whether an element is represented by a :lang() selector + // is based solely on the element's language value + // being equal to the identifier C, + // or beginning with the identifier C immediately followed by "-". + // The matching of C against the element's language value is performed case-insensitively. + // The identifier C does not have to be a valid language name." + // http://www.w3.org/TR/selectors/#lang-pseudo + "lang": markFunction( function( lang ) { + // lang value must be a valid identifier + if ( !ridentifier.test(lang || "") ) { + Sizzle.error( "unsupported lang: " + lang ); + } + lang = lang.replace( runescape, funescape ).toLowerCase(); + return function( elem ) { + var elemLang; + do { + if ( (elemLang = documentIsHTML ? + elem.lang : + elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) { + + elemLang = elemLang.toLowerCase(); + return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; + } + } while ( (elem = elem.parentNode) && elem.nodeType === 1 ); + return false; + }; + }), + + // Miscellaneous + "target": function( elem ) { + var hash = window.location && window.location.hash; + return hash && hash.slice( 1 ) === elem.id; + }, + + "root": function( elem ) { + return elem === docElem; + }, + + "focus": function( elem ) { + return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex); + }, + + // Boolean properties + "enabled": function( elem ) { + return elem.disabled === false; + }, + + "disabled": function( elem ) { + return elem.disabled === true; + }, + + "checked": function( elem ) { + // In CSS3, :checked should return both checked and selected elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + var nodeName = elem.nodeName.toLowerCase(); + return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected); + }, + + "selected": function( elem ) { + // Accessing this property makes selected-by-default + // options in Safari work properly + if ( elem.parentNode ) { + elem.parentNode.selectedIndex; + } + + return elem.selected === true; + }, + + // Contents + "empty": function( elem ) { + // http://www.w3.org/TR/selectors/#empty-pseudo + // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5), + // but not by others (comment: 8; processing instruction: 7; etc.) + // nodeType < 6 works because attributes (2) do not appear as children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + if ( elem.nodeType < 6 ) { + return false; + } + } + return true; + }, + + "parent": function( elem ) { + return !Expr.pseudos["empty"]( elem ); + }, + + // Element/input types + "header": function( elem ) { + return rheader.test( elem.nodeName ); + }, + + "input": function( elem ) { + return rinputs.test( elem.nodeName ); + }, + + "button": function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === "button" || name === "button"; + }, + + "text": function( elem ) { + var attr; + return elem.nodeName.toLowerCase() === "input" && + elem.type === "text" && + + // Support: IE<8 + // New HTML5 attribute values (e.g., "search") appear with elem.type === "text" + ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" ); + }, + + // Position-in-collection + "first": createPositionalPseudo(function() { + return [ 0 ]; + }), + + "last": createPositionalPseudo(function( matchIndexes, length ) { + return [ length - 1 ]; + }), + + "eq": createPositionalPseudo(function( matchIndexes, length, argument ) { + return [ argument < 0 ? argument + length : argument ]; + }), + + "even": createPositionalPseudo(function( matchIndexes, length ) { + var i = 0; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "odd": createPositionalPseudo(function( matchIndexes, length ) { + var i = 1; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "lt": createPositionalPseudo(function( matchIndexes, length, argument ) { + var i = argument < 0 ? argument + length : argument; + for ( ; --i >= 0; ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "gt": createPositionalPseudo(function( matchIndexes, length, argument ) { + var i = argument < 0 ? argument + length : argument; + for ( ; ++i < length; ) { + matchIndexes.push( i ); + } + return matchIndexes; + }) + } +}; + +Expr.pseudos["nth"] = Expr.pseudos["eq"]; + +// Add button/input type pseudos +for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { + Expr.pseudos[ i ] = createInputPseudo( i ); +} +for ( i in { submit: true, reset: true } ) { + Expr.pseudos[ i ] = createButtonPseudo( i ); +} + +// Easy API for creating new setFilters +function setFilters() {} +setFilters.prototype = Expr.filters = Expr.pseudos; +Expr.setFilters = new setFilters(); + +tokenize = Sizzle.tokenize = function( selector, parseOnly ) { + var matched, match, tokens, type, + soFar, groups, preFilters, + cached = tokenCache[ selector + " " ]; + + if ( cached ) { + return parseOnly ? 0 : cached.slice( 0 ); + } + + soFar = selector; + groups = []; + preFilters = Expr.preFilter; + + while ( soFar ) { + + // Comma and first run + if ( !matched || (match = rcomma.exec( soFar )) ) { + if ( match ) { + // Don't consume trailing commas as valid + soFar = soFar.slice( match[0].length ) || soFar; + } + groups.push( (tokens = []) ); + } + + matched = false; + + // Combinators + if ( (match = rcombinators.exec( soFar )) ) { + matched = match.shift(); + tokens.push({ + value: matched, + // Cast descendant combinators to space + type: match[0].replace( rtrim, " " ) + }); + soFar = soFar.slice( matched.length ); + } + + // Filters + for ( type in Expr.filter ) { + if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] || + (match = preFilters[ type ]( match ))) ) { + matched = match.shift(); + tokens.push({ + value: matched, + type: type, + matches: match + }); + soFar = soFar.slice( matched.length ); + } + } + + if ( !matched ) { + break; + } + } + + // Return the length of the invalid excess + // if we're just parsing + // Otherwise, throw an error or return tokens + return parseOnly ? + soFar.length : + soFar ? + Sizzle.error( selector ) : + // Cache the tokens + tokenCache( selector, groups ).slice( 0 ); +}; + +function toSelector( tokens ) { + var i = 0, + len = tokens.length, + selector = ""; + for ( ; i < len; i++ ) { + selector += tokens[i].value; + } + return selector; +} + +function addCombinator( matcher, combinator, base ) { + var dir = combinator.dir, + checkNonElements = base && dir === "parentNode", + doneName = done++; + + return combinator.first ? + // Check against closest ancestor/preceding element + function( elem, context, xml ) { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + return matcher( elem, context, xml ); + } + } + } : + + // Check against all ancestor/preceding elements + function( elem, context, xml ) { + var oldCache, outerCache, + newCache = [ dirruns, doneName ]; + + // We can't set arbitrary data on XML nodes, so they don't benefit from dir caching + if ( xml ) { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + if ( matcher( elem, context, xml ) ) { + return true; + } + } + } + } else { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + outerCache = elem[ expando ] || (elem[ expando ] = {}); + if ( (oldCache = outerCache[ dir ]) && + oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) { + + // Assign to newCache so results back-propagate to previous elements + return (newCache[ 2 ] = oldCache[ 2 ]); + } else { + // Reuse newcache so results back-propagate to previous elements + outerCache[ dir ] = newCache; + + // A match means we're done; a fail means we have to keep checking + if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) { + return true; + } + } + } + } + } + }; +} + +function elementMatcher( matchers ) { + return matchers.length > 1 ? + function( elem, context, xml ) { + var i = matchers.length; + while ( i-- ) { + if ( !matchers[i]( elem, context, xml ) ) { + return false; + } + } + return true; + } : + matchers[0]; +} + +function multipleContexts( selector, contexts, results ) { + var i = 0, + len = contexts.length; + for ( ; i < len; i++ ) { + Sizzle( selector, contexts[i], results ); + } + return results; +} + +function condense( unmatched, map, filter, context, xml ) { + var elem, + newUnmatched = [], + i = 0, + len = unmatched.length, + mapped = map != null; + + for ( ; i < len; i++ ) { + if ( (elem = unmatched[i]) ) { + if ( !filter || filter( elem, context, xml ) ) { + newUnmatched.push( elem ); + if ( mapped ) { + map.push( i ); + } + } + } + } + + return newUnmatched; +} + +function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { + if ( postFilter && !postFilter[ expando ] ) { + postFilter = setMatcher( postFilter ); + } + if ( postFinder && !postFinder[ expando ] ) { + postFinder = setMatcher( postFinder, postSelector ); + } + return markFunction(function( seed, results, context, xml ) { + var temp, i, elem, + preMap = [], + postMap = [], + preexisting = results.length, + + // Get initial elements from seed or context + elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ), + + // Prefilter to get matcher input, preserving a map for seed-results synchronization + matcherIn = preFilter && ( seed || !selector ) ? + condense( elems, preMap, preFilter, context, xml ) : + elems, + + matcherOut = matcher ? + // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results, + postFinder || ( seed ? preFilter : preexisting || postFilter ) ? + + // ...intermediate processing is necessary + [] : + + // ...otherwise use results directly + results : + matcherIn; + + // Find primary matches + if ( matcher ) { + matcher( matcherIn, matcherOut, context, xml ); + } + + // Apply postFilter + if ( postFilter ) { + temp = condense( matcherOut, postMap ); + postFilter( temp, [], context, xml ); + + // Un-match failing elements by moving them back to matcherIn + i = temp.length; + while ( i-- ) { + if ( (elem = temp[i]) ) { + matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem); + } + } + } + + if ( seed ) { + if ( postFinder || preFilter ) { + if ( postFinder ) { + // Get the final matcherOut by condensing this intermediate into postFinder contexts + temp = []; + i = matcherOut.length; + while ( i-- ) { + if ( (elem = matcherOut[i]) ) { + // Restore matcherIn since elem is not yet a final match + temp.push( (matcherIn[i] = elem) ); + } + } + postFinder( null, (matcherOut = []), temp, xml ); + } + + // Move matched elements from seed to results to keep them synchronized + i = matcherOut.length; + while ( i-- ) { + if ( (elem = matcherOut[i]) && + (temp = postFinder ? indexOf.call( seed, elem ) : preMap[i]) > -1 ) { + + seed[temp] = !(results[temp] = elem); + } + } + } + + // Add elements to results, through postFinder if defined + } else { + matcherOut = condense( + matcherOut === results ? + matcherOut.splice( preexisting, matcherOut.length ) : + matcherOut + ); + if ( postFinder ) { + postFinder( null, results, matcherOut, xml ); + } else { + push.apply( results, matcherOut ); + } + } + }); +} + +function matcherFromTokens( tokens ) { + var checkContext, matcher, j, + len = tokens.length, + leadingRelative = Expr.relative[ tokens[0].type ], + implicitRelative = leadingRelative || Expr.relative[" "], + i = leadingRelative ? 1 : 0, + + // The foundational matcher ensures that elements are reachable from top-level context(s) + matchContext = addCombinator( function( elem ) { + return elem === checkContext; + }, implicitRelative, true ), + matchAnyContext = addCombinator( function( elem ) { + return indexOf.call( checkContext, elem ) > -1; + }, implicitRelative, true ), + matchers = [ function( elem, context, xml ) { + return ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( + (checkContext = context).nodeType ? + matchContext( elem, context, xml ) : + matchAnyContext( elem, context, xml ) ); + } ]; + + for ( ; i < len; i++ ) { + if ( (matcher = Expr.relative[ tokens[i].type ]) ) { + matchers = [ addCombinator(elementMatcher( matchers ), matcher) ]; + } else { + matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches ); + + // Return special upon seeing a positional matcher + if ( matcher[ expando ] ) { + // Find the next relative operator (if any) for proper handling + j = ++i; + for ( ; j < len; j++ ) { + if ( Expr.relative[ tokens[j].type ] ) { + break; + } + } + return setMatcher( + i > 1 && elementMatcher( matchers ), + i > 1 && toSelector( + // If the preceding token was a descendant combinator, insert an implicit any-element `*` + tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" }) + ).replace( rtrim, "$1" ), + matcher, + i < j && matcherFromTokens( tokens.slice( i, j ) ), + j < len && matcherFromTokens( (tokens = tokens.slice( j )) ), + j < len && toSelector( tokens ) + ); + } + matchers.push( matcher ); + } + } + + return elementMatcher( matchers ); +} + +function matcherFromGroupMatchers( elementMatchers, setMatchers ) { + var bySet = setMatchers.length > 0, + byElement = elementMatchers.length > 0, + superMatcher = function( seed, context, xml, results, outermost ) { + var elem, j, matcher, + matchedCount = 0, + i = "0", + unmatched = seed && [], + setMatched = [], + contextBackup = outermostContext, + // We must always have either seed elements or outermost context + elems = seed || byElement && Expr.find["TAG"]( "*", outermost ), + // Use integer dirruns iff this is the outermost matcher + dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1), + len = elems.length; + + if ( outermost ) { + outermostContext = context !== document && context; + } + + // Add elements passing elementMatchers directly to results + // Keep `i` a string if there are no elements so `matchedCount` will be "00" below + // Support: IE<9, Safari + // Tolerate NodeList properties (IE: "length"; Safari: ) matching elements by id + for ( ; i !== len && (elem = elems[i]) != null; i++ ) { + if ( byElement && elem ) { + j = 0; + while ( (matcher = elementMatchers[j++]) ) { + if ( matcher( elem, context, xml ) ) { + results.push( elem ); + break; + } + } + if ( outermost ) { + dirruns = dirrunsUnique; + } + } + + // Track unmatched elements for set filters + if ( bySet ) { + // They will have gone through all possible matchers + if ( (elem = !matcher && elem) ) { + matchedCount--; + } + + // Lengthen the array for every element, matched or not + if ( seed ) { + unmatched.push( elem ); + } + } + } + + // Apply set filters to unmatched elements + matchedCount += i; + if ( bySet && i !== matchedCount ) { + j = 0; + while ( (matcher = setMatchers[j++]) ) { + matcher( unmatched, setMatched, context, xml ); + } + + if ( seed ) { + // Reintegrate element matches to eliminate the need for sorting + if ( matchedCount > 0 ) { + while ( i-- ) { + if ( !(unmatched[i] || setMatched[i]) ) { + setMatched[i] = pop.call( results ); + } + } + } + + // Discard index placeholder values to get only actual matches + setMatched = condense( setMatched ); + } + + // Add matches to results + push.apply( results, setMatched ); + + // Seedless set matches succeeding multiple successful matchers stipulate sorting + if ( outermost && !seed && setMatched.length > 0 && + ( matchedCount + setMatchers.length ) > 1 ) { + + Sizzle.uniqueSort( results ); + } + } + + // Override manipulation of globals by nested matchers + if ( outermost ) { + dirruns = dirrunsUnique; + outermostContext = contextBackup; + } + + return unmatched; + }; + + return bySet ? + markFunction( superMatcher ) : + superMatcher; +} + +compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) { + var i, + setMatchers = [], + elementMatchers = [], + cached = compilerCache[ selector + " " ]; + + if ( !cached ) { + // Generate a function of recursive functions that can be used to check each element + if ( !match ) { + match = tokenize( selector ); + } + i = match.length; + while ( i-- ) { + cached = matcherFromTokens( match[i] ); + if ( cached[ expando ] ) { + setMatchers.push( cached ); + } else { + elementMatchers.push( cached ); + } + } + + // Cache the compiled function + cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) ); + + // Save selector and tokenization + cached.selector = selector; + } + return cached; +}; + +/** + * A low-level selection function that works with Sizzle's compiled + * selector functions + * @param {String|Function} selector A selector or a pre-compiled + * selector function built with Sizzle.compile + * @param {Element} context + * @param {Array} [results] + * @param {Array} [seed] A set of elements to match against + */ +select = Sizzle.select = function( selector, context, results, seed ) { + var i, tokens, token, type, find, + compiled = typeof selector === "function" && selector, + match = !seed && tokenize( (selector = compiled.selector || selector) ); + + results = results || []; + + // Try to minimize operations if there is no seed and only one group + if ( match.length === 1 ) { + + // Take a shortcut and set the context if the root selector is an ID + tokens = match[0] = match[0].slice( 0 ); + if ( tokens.length > 2 && (token = tokens[0]).type === "ID" && + support.getById && context.nodeType === 9 && documentIsHTML && + Expr.relative[ tokens[1].type ] ) { + + context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0]; + if ( !context ) { + return results; + + // Precompiled matchers will still verify ancestry, so step up a level + } else if ( compiled ) { + context = context.parentNode; + } + + selector = selector.slice( tokens.shift().value.length ); + } + + // Fetch a seed set for right-to-left matching + i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length; + while ( i-- ) { + token = tokens[i]; + + // Abort if we hit a combinator + if ( Expr.relative[ (type = token.type) ] ) { + break; + } + if ( (find = Expr.find[ type ]) ) { + // Search, expanding context for leading sibling combinators + if ( (seed = find( + token.matches[0].replace( runescape, funescape ), + rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context + )) ) { + + // If seed is empty or no tokens remain, we can return early + tokens.splice( i, 1 ); + selector = seed.length && toSelector( tokens ); + if ( !selector ) { + push.apply( results, seed ); + return results; + } + + break; + } + } + } + } + + // Compile and execute a filtering function if one is not provided + // Provide `match` to avoid retokenization if we modified the selector above + ( compiled || compile( selector, match ) )( + seed, + context, + !documentIsHTML, + results, + rsibling.test( selector ) && testContext( context.parentNode ) || context + ); + return results; +}; + +// One-time assignments + +// Sort stability +support.sortStable = expando.split("").sort( sortOrder ).join("") === expando; + +// Support: Chrome<14 +// Always assume duplicates if they aren't passed to the comparison function +support.detectDuplicates = !!hasDuplicate; + +// Initialize against the default document +setDocument(); + +// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27) +// Detached nodes confoundingly follow *each other* +support.sortDetached = assert(function( div1 ) { + // Should return 1, but returns 4 (following) + return div1.compareDocumentPosition( document.createElement("div") ) & 1; +}); + +// Support: IE<8 +// Prevent attribute/property "interpolation" +// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx +if ( !assert(function( div ) { + div.innerHTML = ""; + return div.firstChild.getAttribute("href") === "#" ; +}) ) { + addHandle( "type|href|height|width", function( elem, name, isXML ) { + if ( !isXML ) { + return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 ); + } + }); +} + +// Support: IE<9 +// Use defaultValue in place of getAttribute("value") +if ( !support.attributes || !assert(function( div ) { + div.innerHTML = ""; + div.firstChild.setAttribute( "value", "" ); + return div.firstChild.getAttribute( "value" ) === ""; +}) ) { + addHandle( "value", function( elem, name, isXML ) { + if ( !isXML && elem.nodeName.toLowerCase() === "input" ) { + return elem.defaultValue; + } + }); +} + +// Support: IE<9 +// Use getAttributeNode to fetch booleans when getAttribute lies +if ( !assert(function( div ) { + return div.getAttribute("disabled") == null; +}) ) { + addHandle( booleans, function( elem, name, isXML ) { + var val; + if ( !isXML ) { + return elem[ name ] === true ? name.toLowerCase() : + (val = elem.getAttributeNode( name )) && val.specified ? + val.value : + null; + } + }); +} + +return Sizzle; + +})( window ); + + + +jQuery.find = Sizzle; +jQuery.expr = Sizzle.selectors; +jQuery.expr[":"] = jQuery.expr.pseudos; +jQuery.unique = Sizzle.uniqueSort; +jQuery.text = Sizzle.getText; +jQuery.isXMLDoc = Sizzle.isXML; +jQuery.contains = Sizzle.contains; + + + +var rneedsContext = jQuery.expr.match.needsContext; + +var rsingleTag = (/^<(\w+)\s*\/?>(?:<\/\1>|)$/); + + + +var risSimple = /^.[^:#\[\.,]*$/; + +// Implement the identical functionality for filter and not +function winnow( elements, qualifier, not ) { + if ( jQuery.isFunction( qualifier ) ) { + return jQuery.grep( elements, function( elem, i ) { + /* jshint -W018 */ + return !!qualifier.call( elem, i, elem ) !== not; + }); + + } + + if ( qualifier.nodeType ) { + return jQuery.grep( elements, function( elem ) { + return ( elem === qualifier ) !== not; + }); + + } + + if ( typeof qualifier === "string" ) { + if ( risSimple.test( qualifier ) ) { + return jQuery.filter( qualifier, elements, not ); + } + + qualifier = jQuery.filter( qualifier, elements ); + } + + return jQuery.grep( elements, function( elem ) { + return ( jQuery.inArray( elem, qualifier ) >= 0 ) !== not; + }); +} + +jQuery.filter = function( expr, elems, not ) { + var elem = elems[ 0 ]; + + if ( not ) { + expr = ":not(" + expr + ")"; + } + + return elems.length === 1 && elem.nodeType === 1 ? + jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] : + jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { + return elem.nodeType === 1; + })); +}; + +jQuery.fn.extend({ + find: function( selector ) { + var i, + ret = [], + self = this, + len = self.length; + + if ( typeof selector !== "string" ) { + return this.pushStack( jQuery( selector ).filter(function() { + for ( i = 0; i < len; i++ ) { + if ( jQuery.contains( self[ i ], this ) ) { + return true; + } + } + }) ); + } + + for ( i = 0; i < len; i++ ) { + jQuery.find( selector, self[ i ], ret ); + } + + // Needed because $( selector, context ) becomes $( context ).find( selector ) + ret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret ); + ret.selector = this.selector ? this.selector + " " + selector : selector; + return ret; + }, + filter: function( selector ) { + return this.pushStack( winnow(this, selector || [], false) ); + }, + not: function( selector ) { + return this.pushStack( winnow(this, selector || [], true) ); + }, + is: function( selector ) { + return !!winnow( + this, + + // If this is a positional/relative selector, check membership in the returned set + // so $("p:first").is("p:last") won't return true for a doc with two "p". + typeof selector === "string" && rneedsContext.test( selector ) ? + jQuery( selector ) : + selector || [], + false + ).length; + } +}); + + +// Initialize a jQuery object + + +// A central reference to the root jQuery(document) +var rootjQuery, + + // Use the correct document accordingly with window argument (sandbox) + document = window.document, + + // A simple way to check for HTML strings + // Prioritize #id over to avoid XSS via location.hash (#9521) + // Strict HTML recognition (#11290: must start with <) + rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/, + + init = jQuery.fn.init = function( selector, context ) { + var match, elem; + + // HANDLE: $(""), $(null), $(undefined), $(false) + if ( !selector ) { + return this; + } + + // Handle HTML strings + if ( typeof selector === "string" ) { + if ( selector.charAt(0) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 ) { + // Assume that strings that start and end with <> are HTML and skip the regex check + match = [ null, selector, null ]; + + } else { + match = rquickExpr.exec( selector ); + } + + // Match html or make sure no context is specified for #id + if ( match && (match[1] || !context) ) { + + // HANDLE: $(html) -> $(array) + if ( match[1] ) { + context = context instanceof jQuery ? context[0] : context; + + // scripts is true for back-compat + // Intentionally let the error be thrown if parseHTML is not present + jQuery.merge( this, jQuery.parseHTML( + match[1], + context && context.nodeType ? context.ownerDocument || context : document, + true + ) ); + + // HANDLE: $(html, props) + if ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) { + for ( match in context ) { + // Properties of context are called as methods if possible + if ( jQuery.isFunction( this[ match ] ) ) { + this[ match ]( context[ match ] ); + + // ...and otherwise set as attributes + } else { + this.attr( match, context[ match ] ); + } + } + } + + return this; + + // HANDLE: $(#id) + } else { + elem = document.getElementById( match[2] ); + + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + if ( elem && elem.parentNode ) { + // Handle the case where IE and Opera return items + // by name instead of ID + if ( elem.id !== match[2] ) { + return rootjQuery.find( selector ); + } + + // Otherwise, we inject the element directly into the jQuery object + this.length = 1; + this[0] = elem; + } + + this.context = document; + this.selector = selector; + return this; + } + + // HANDLE: $(expr, $(...)) + } else if ( !context || context.jquery ) { + return ( context || rootjQuery ).find( selector ); + + // HANDLE: $(expr, context) + // (which is just equivalent to: $(context).find(expr) + } else { + return this.constructor( context ).find( selector ); + } + + // HANDLE: $(DOMElement) + } else if ( selector.nodeType ) { + this.context = this[0] = selector; + this.length = 1; + return this; + + // HANDLE: $(function) + // Shortcut for document ready + } else if ( jQuery.isFunction( selector ) ) { + return typeof rootjQuery.ready !== "undefined" ? + rootjQuery.ready( selector ) : + // Execute immediately if ready is not present + selector( jQuery ); + } + + if ( selector.selector !== undefined ) { + this.selector = selector.selector; + this.context = selector.context; + } + + return jQuery.makeArray( selector, this ); + }; + +// Give the init function the jQuery prototype for later instantiation +init.prototype = jQuery.fn; + +// Initialize central reference +rootjQuery = jQuery( document ); + + +var rparentsprev = /^(?:parents|prev(?:Until|All))/, + // methods guaranteed to produce a unique set when starting from a unique set + guaranteedUnique = { + children: true, + contents: true, + next: true, + prev: true + }; + +jQuery.extend({ + dir: function( elem, dir, until ) { + var matched = [], + cur = elem[ dir ]; + + while ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) { + if ( cur.nodeType === 1 ) { + matched.push( cur ); + } + cur = cur[dir]; + } + return matched; + }, + + sibling: function( n, elem ) { + var r = []; + + for ( ; n; n = n.nextSibling ) { + if ( n.nodeType === 1 && n !== elem ) { + r.push( n ); + } + } + + return r; + } +}); + +jQuery.fn.extend({ + has: function( target ) { + var i, + targets = jQuery( target, this ), + len = targets.length; + + return this.filter(function() { + for ( i = 0; i < len; i++ ) { + if ( jQuery.contains( this, targets[i] ) ) { + return true; + } + } + }); + }, + + closest: function( selectors, context ) { + var cur, + i = 0, + l = this.length, + matched = [], + pos = rneedsContext.test( selectors ) || typeof selectors !== "string" ? + jQuery( selectors, context || this.context ) : + 0; + + for ( ; i < l; i++ ) { + for ( cur = this[i]; cur && cur !== context; cur = cur.parentNode ) { + // Always skip document fragments + if ( cur.nodeType < 11 && (pos ? + pos.index(cur) > -1 : + + // Don't pass non-elements to Sizzle + cur.nodeType === 1 && + jQuery.find.matchesSelector(cur, selectors)) ) { + + matched.push( cur ); + break; + } + } + } + + return this.pushStack( matched.length > 1 ? jQuery.unique( matched ) : matched ); + }, + + // Determine the position of an element within + // the matched set of elements + index: function( elem ) { + + // No argument, return index in parent + if ( !elem ) { + return ( this[0] && this[0].parentNode ) ? this.first().prevAll().length : -1; + } + + // index in selector + if ( typeof elem === "string" ) { + return jQuery.inArray( this[0], jQuery( elem ) ); + } + + // Locate the position of the desired element + return jQuery.inArray( + // If it receives a jQuery object, the first element is used + elem.jquery ? elem[0] : elem, this ); + }, + + add: function( selector, context ) { + return this.pushStack( + jQuery.unique( + jQuery.merge( this.get(), jQuery( selector, context ) ) + ) + ); + }, + + addBack: function( selector ) { + return this.add( selector == null ? + this.prevObject : this.prevObject.filter(selector) + ); + } +}); + +function sibling( cur, dir ) { + do { + cur = cur[ dir ]; + } while ( cur && cur.nodeType !== 1 ); + + return cur; +} + +jQuery.each({ + parent: function( elem ) { + var parent = elem.parentNode; + return parent && parent.nodeType !== 11 ? parent : null; + }, + parents: function( elem ) { + return jQuery.dir( elem, "parentNode" ); + }, + parentsUntil: function( elem, i, until ) { + return jQuery.dir( elem, "parentNode", until ); + }, + next: function( elem ) { + return sibling( elem, "nextSibling" ); + }, + prev: function( elem ) { + return sibling( elem, "previousSibling" ); + }, + nextAll: function( elem ) { + return jQuery.dir( elem, "nextSibling" ); + }, + prevAll: function( elem ) { + return jQuery.dir( elem, "previousSibling" ); + }, + nextUntil: function( elem, i, until ) { + return jQuery.dir( elem, "nextSibling", until ); + }, + prevUntil: function( elem, i, until ) { + return jQuery.dir( elem, "previousSibling", until ); + }, + siblings: function( elem ) { + return jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem ); + }, + children: function( elem ) { + return jQuery.sibling( elem.firstChild ); + }, + contents: function( elem ) { + return jQuery.nodeName( elem, "iframe" ) ? + elem.contentDocument || elem.contentWindow.document : + jQuery.merge( [], elem.childNodes ); + } +}, function( name, fn ) { + jQuery.fn[ name ] = function( until, selector ) { + var ret = jQuery.map( this, fn, until ); + + if ( name.slice( -5 ) !== "Until" ) { + selector = until; + } + + if ( selector && typeof selector === "string" ) { + ret = jQuery.filter( selector, ret ); + } + + if ( this.length > 1 ) { + // Remove duplicates + if ( !guaranteedUnique[ name ] ) { + ret = jQuery.unique( ret ); + } + + // Reverse order for parents* and prev-derivatives + if ( rparentsprev.test( name ) ) { + ret = ret.reverse(); + } + } + + return this.pushStack( ret ); + }; +}); +var rnotwhite = (/\S+/g); + + + +// String to Object options format cache +var optionsCache = {}; + +// Convert String-formatted options into Object-formatted ones and store in cache +function createOptions( options ) { + var object = optionsCache[ options ] = {}; + jQuery.each( options.match( rnotwhite ) || [], function( _, flag ) { + object[ flag ] = true; + }); + return object; +} + +/* + * Create a callback list using the following parameters: + * + * options: an optional list of space-separated options that will change how + * the callback list behaves or a more traditional option object + * + * By default a callback list will act like an event callback list and can be + * "fired" multiple times. + * + * Possible options: + * + * once: will ensure the callback list can only be fired once (like a Deferred) + * + * memory: will keep track of previous values and will call any callback added + * after the list has been fired right away with the latest "memorized" + * values (like a Deferred) + * + * unique: will ensure a callback can only be added once (no duplicate in the list) + * + * stopOnFalse: interrupt callings when a callback returns false + * + */ +jQuery.Callbacks = function( options ) { + + // Convert options from String-formatted to Object-formatted if needed + // (we check in cache first) + options = typeof options === "string" ? + ( optionsCache[ options ] || createOptions( options ) ) : + jQuery.extend( {}, options ); + + var // Flag to know if list is currently firing + firing, + // Last fire value (for non-forgettable lists) + memory, + // Flag to know if list was already fired + fired, + // End of the loop when firing + firingLength, + // Index of currently firing callback (modified by remove if needed) + firingIndex, + // First callback to fire (used internally by add and fireWith) + firingStart, + // Actual callback list + list = [], + // Stack of fire calls for repeatable lists + stack = !options.once && [], + // Fire callbacks + fire = function( data ) { + memory = options.memory && data; + fired = true; + firingIndex = firingStart || 0; + firingStart = 0; + firingLength = list.length; + firing = true; + for ( ; list && firingIndex < firingLength; firingIndex++ ) { + if ( list[ firingIndex ].apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) { + memory = false; // To prevent further calls using add + break; + } + } + firing = false; + if ( list ) { + if ( stack ) { + if ( stack.length ) { + fire( stack.shift() ); + } + } else if ( memory ) { + list = []; + } else { + self.disable(); + } + } + }, + // Actual Callbacks object + self = { + // Add a callback or a collection of callbacks to the list + add: function() { + if ( list ) { + // First, we save the current length + var start = list.length; + (function add( args ) { + jQuery.each( args, function( _, arg ) { + var type = jQuery.type( arg ); + if ( type === "function" ) { + if ( !options.unique || !self.has( arg ) ) { + list.push( arg ); + } + } else if ( arg && arg.length && type !== "string" ) { + // Inspect recursively + add( arg ); + } + }); + })( arguments ); + // Do we need to add the callbacks to the + // current firing batch? + if ( firing ) { + firingLength = list.length; + // With memory, if we're not firing then + // we should call right away + } else if ( memory ) { + firingStart = start; + fire( memory ); + } + } + return this; + }, + // Remove a callback from the list + remove: function() { + if ( list ) { + jQuery.each( arguments, function( _, arg ) { + var index; + while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { + list.splice( index, 1 ); + // Handle firing indexes + if ( firing ) { + if ( index <= firingLength ) { + firingLength--; + } + if ( index <= firingIndex ) { + firingIndex--; + } + } + } + }); + } + return this; + }, + // Check if a given callback is in the list. + // If no argument is given, return whether or not list has callbacks attached. + has: function( fn ) { + return fn ? jQuery.inArray( fn, list ) > -1 : !!( list && list.length ); + }, + // Remove all callbacks from the list + empty: function() { + list = []; + firingLength = 0; + return this; + }, + // Have the list do nothing anymore + disable: function() { + list = stack = memory = undefined; + return this; + }, + // Is it disabled? + disabled: function() { + return !list; + }, + // Lock the list in its current state + lock: function() { + stack = undefined; + if ( !memory ) { + self.disable(); + } + return this; + }, + // Is it locked? + locked: function() { + return !stack; + }, + // Call all callbacks with the given context and arguments + fireWith: function( context, args ) { + if ( list && ( !fired || stack ) ) { + args = args || []; + args = [ context, args.slice ? args.slice() : args ]; + if ( firing ) { + stack.push( args ); + } else { + fire( args ); + } + } + return this; + }, + // Call all the callbacks with the given arguments + fire: function() { + self.fireWith( this, arguments ); + return this; + }, + // To know if the callbacks have already been called at least once + fired: function() { + return !!fired; + } + }; + + return self; +}; + + +jQuery.extend({ + + Deferred: function( func ) { + var tuples = [ + // action, add listener, listener list, final state + [ "resolve", "done", jQuery.Callbacks("once memory"), "resolved" ], + [ "reject", "fail", jQuery.Callbacks("once memory"), "rejected" ], + [ "notify", "progress", jQuery.Callbacks("memory") ] + ], + state = "pending", + promise = { + state: function() { + return state; + }, + always: function() { + deferred.done( arguments ).fail( arguments ); + return this; + }, + then: function( /* fnDone, fnFail, fnProgress */ ) { + var fns = arguments; + return jQuery.Deferred(function( newDefer ) { + jQuery.each( tuples, function( i, tuple ) { + var fn = jQuery.isFunction( fns[ i ] ) && fns[ i ]; + // deferred[ done | fail | progress ] for forwarding actions to newDefer + deferred[ tuple[1] ](function() { + var returned = fn && fn.apply( this, arguments ); + if ( returned && jQuery.isFunction( returned.promise ) ) { + returned.promise() + .done( newDefer.resolve ) + .fail( newDefer.reject ) + .progress( newDefer.notify ); + } else { + newDefer[ tuple[ 0 ] + "With" ]( this === promise ? newDefer.promise() : this, fn ? [ returned ] : arguments ); + } + }); + }); + fns = null; + }).promise(); + }, + // Get a promise for this deferred + // If obj is provided, the promise aspect is added to the object + promise: function( obj ) { + return obj != null ? jQuery.extend( obj, promise ) : promise; + } + }, + deferred = {}; + + // Keep pipe for back-compat + promise.pipe = promise.then; + + // Add list-specific methods + jQuery.each( tuples, function( i, tuple ) { + var list = tuple[ 2 ], + stateString = tuple[ 3 ]; + + // promise[ done | fail | progress ] = list.add + promise[ tuple[1] ] = list.add; + + // Handle state + if ( stateString ) { + list.add(function() { + // state = [ resolved | rejected ] + state = stateString; + + // [ reject_list | resolve_list ].disable; progress_list.lock + }, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock ); + } + + // deferred[ resolve | reject | notify ] + deferred[ tuple[0] ] = function() { + deferred[ tuple[0] + "With" ]( this === deferred ? promise : this, arguments ); + return this; + }; + deferred[ tuple[0] + "With" ] = list.fireWith; + }); + + // Make the deferred a promise + promise.promise( deferred ); + + // Call given func if any + if ( func ) { + func.call( deferred, deferred ); + } + + // All done! + return deferred; + }, + + // Deferred helper + when: function( subordinate /* , ..., subordinateN */ ) { + var i = 0, + resolveValues = slice.call( arguments ), + length = resolveValues.length, + + // the count of uncompleted subordinates + remaining = length !== 1 || ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0, + + // the master Deferred. If resolveValues consist of only a single Deferred, just use that. + deferred = remaining === 1 ? subordinate : jQuery.Deferred(), + + // Update function for both resolve and progress values + updateFunc = function( i, contexts, values ) { + return function( value ) { + contexts[ i ] = this; + values[ i ] = arguments.length > 1 ? slice.call( arguments ) : value; + if ( values === progressValues ) { + deferred.notifyWith( contexts, values ); + + } else if ( !(--remaining) ) { + deferred.resolveWith( contexts, values ); + } + }; + }, + + progressValues, progressContexts, resolveContexts; + + // add listeners to Deferred subordinates; treat others as resolved + if ( length > 1 ) { + progressValues = new Array( length ); + progressContexts = new Array( length ); + resolveContexts = new Array( length ); + for ( ; i < length; i++ ) { + if ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) { + resolveValues[ i ].promise() + .done( updateFunc( i, resolveContexts, resolveValues ) ) + .fail( deferred.reject ) + .progress( updateFunc( i, progressContexts, progressValues ) ); + } else { + --remaining; + } + } + } + + // if we're not waiting on anything, resolve the master + if ( !remaining ) { + deferred.resolveWith( resolveContexts, resolveValues ); + } + + return deferred.promise(); + } +}); + + +// The deferred used on DOM ready +var readyList; + +jQuery.fn.ready = function( fn ) { + // Add the callback + jQuery.ready.promise().done( fn ); + + return this; +}; + +jQuery.extend({ + // Is the DOM ready to be used? Set to true once it occurs. + isReady: false, + + // A counter to track how many items to wait for before + // the ready event fires. See #6781 + readyWait: 1, + + // Hold (or release) the ready event + holdReady: function( hold ) { + if ( hold ) { + jQuery.readyWait++; + } else { + jQuery.ready( true ); + } + }, + + // Handle when the DOM is ready + ready: function( wait ) { + + // Abort if there are pending holds or we're already ready + if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { + return; + } + + // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443). + if ( !document.body ) { + return setTimeout( jQuery.ready ); + } + + // Remember that the DOM is ready + jQuery.isReady = true; + + // If a normal DOM Ready event fired, decrement, and wait if need be + if ( wait !== true && --jQuery.readyWait > 0 ) { + return; + } + + // If there are functions bound, to execute + readyList.resolveWith( document, [ jQuery ] ); + + // Trigger any bound ready events + if ( jQuery.fn.triggerHandler ) { + jQuery( document ).triggerHandler( "ready" ); + jQuery( document ).off( "ready" ); + } + } +}); + +/** + * Clean-up method for dom ready events + */ +function detach() { + if ( document.addEventListener ) { + document.removeEventListener( "DOMContentLoaded", completed, false ); + window.removeEventListener( "load", completed, false ); + + } else { + document.detachEvent( "onreadystatechange", completed ); + window.detachEvent( "onload", completed ); + } +} + +/** + * The ready event handler and self cleanup method + */ +function completed() { + // readyState === "complete" is good enough for us to call the dom ready in oldIE + if ( document.addEventListener || event.type === "load" || document.readyState === "complete" ) { + detach(); + jQuery.ready(); + } +} + +jQuery.ready.promise = function( obj ) { + if ( !readyList ) { + + readyList = jQuery.Deferred(); + + // Catch cases where $(document).ready() is called after the browser event has already occurred. + // we once tried to use readyState "interactive" here, but it caused issues like the one + // discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15 + if ( document.readyState === "complete" ) { + // Handle it asynchronously to allow scripts the opportunity to delay ready + setTimeout( jQuery.ready ); + + // Standards-based browsers support DOMContentLoaded + } else if ( document.addEventListener ) { + // Use the handy event callback + document.addEventListener( "DOMContentLoaded", completed, false ); + + // A fallback to window.onload, that will always work + window.addEventListener( "load", completed, false ); + + // If IE event model is used + } else { + // Ensure firing before onload, maybe late but safe also for iframes + document.attachEvent( "onreadystatechange", completed ); + + // A fallback to window.onload, that will always work + window.attachEvent( "onload", completed ); + + // If IE and not a frame + // continually check to see if the document is ready + var top = false; + + try { + top = window.frameElement == null && document.documentElement; + } catch(e) {} + + if ( top && top.doScroll ) { + (function doScrollCheck() { + if ( !jQuery.isReady ) { + + try { + // Use the trick by Diego Perini + // http://javascript.nwbox.com/IEContentLoaded/ + top.doScroll("left"); + } catch(e) { + return setTimeout( doScrollCheck, 50 ); + } + + // detach all dom ready events + detach(); + + // and execute any waiting functions + jQuery.ready(); + } + })(); + } + } + } + return readyList.promise( obj ); +}; + + +var strundefined = typeof undefined; + + + +// Support: IE<9 +// Iteration over object's inherited properties before its own +var i; +for ( i in jQuery( support ) ) { + break; +} +support.ownLast = i !== "0"; + +// Note: most support tests are defined in their respective modules. +// false until the test is run +support.inlineBlockNeedsLayout = false; + +// Execute ASAP in case we need to set body.style.zoom +jQuery(function() { + // Minified: var a,b,c,d + var val, div, body, container; + + body = document.getElementsByTagName( "body" )[ 0 ]; + if ( !body || !body.style ) { + // Return for frameset docs that don't have a body + return; + } + + // Setup + div = document.createElement( "div" ); + container = document.createElement( "div" ); + container.style.cssText = "position:absolute;border:0;width:0;height:0;top:0;left:-9999px"; + body.appendChild( container ).appendChild( div ); + + if ( typeof div.style.zoom !== strundefined ) { + // Support: IE<8 + // Check if natively block-level elements act like inline-block + // elements when setting their display to 'inline' and giving + // them layout + div.style.cssText = "display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1"; + + support.inlineBlockNeedsLayout = val = div.offsetWidth === 3; + if ( val ) { + // Prevent IE 6 from affecting layout for positioned elements #11048 + // Prevent IE from shrinking the body in IE 7 mode #12869 + // Support: IE<8 + body.style.zoom = 1; + } + } + + body.removeChild( container ); +}); + + + + +(function() { + var div = document.createElement( "div" ); + + // Execute the test only if not already executed in another module. + if (support.deleteExpando == null) { + // Support: IE<9 + support.deleteExpando = true; + try { + delete div.test; + } catch( e ) { + support.deleteExpando = false; + } + } + + // Null elements to avoid leaks in IE. + div = null; +})(); + + +/** + * Determines whether an object can have data + */ +jQuery.acceptData = function( elem ) { + var noData = jQuery.noData[ (elem.nodeName + " ").toLowerCase() ], + nodeType = +elem.nodeType || 1; + + // Do not set data on non-element DOM nodes because it will not be cleared (#8335). + return nodeType !== 1 && nodeType !== 9 ? + false : + + // Nodes accept data unless otherwise specified; rejection can be conditional + !noData || noData !== true && elem.getAttribute("classid") === noData; +}; + + +var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, + rmultiDash = /([A-Z])/g; + +function dataAttr( elem, key, data ) { + // If nothing was found internally, try to fetch any + // data from the HTML5 data-* attribute + if ( data === undefined && elem.nodeType === 1 ) { + + var name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase(); + + data = elem.getAttribute( name ); + + if ( typeof data === "string" ) { + try { + data = data === "true" ? true : + data === "false" ? false : + data === "null" ? null : + // Only convert to a number if it doesn't change the string + +data + "" === data ? +data : + rbrace.test( data ) ? jQuery.parseJSON( data ) : + data; + } catch( e ) {} + + // Make sure we set the data so it isn't changed later + jQuery.data( elem, key, data ); + + } else { + data = undefined; + } + } + + return data; +} + +// checks a cache object for emptiness +function isEmptyDataObject( obj ) { + var name; + for ( name in obj ) { + + // if the public data object is empty, the private is still empty + if ( name === "data" && jQuery.isEmptyObject( obj[name] ) ) { + continue; + } + if ( name !== "toJSON" ) { + return false; + } + } + + return true; +} + +function internalData( elem, name, data, pvt /* Internal Use Only */ ) { + if ( !jQuery.acceptData( elem ) ) { + return; + } + + var ret, thisCache, + internalKey = jQuery.expando, + + // We have to handle DOM nodes and JS objects differently because IE6-7 + // can't GC object references properly across the DOM-JS boundary + isNode = elem.nodeType, + + // Only DOM nodes need the global jQuery cache; JS object data is + // attached directly to the object so GC can occur automatically + cache = isNode ? jQuery.cache : elem, + + // Only defining an ID for JS objects if its cache already exists allows + // the code to shortcut on the same path as a DOM node with no cache + id = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey; + + // Avoid doing any more work than we need to when trying to get data on an + // object that has no data at all + if ( (!id || !cache[id] || (!pvt && !cache[id].data)) && data === undefined && typeof name === "string" ) { + return; + } + + if ( !id ) { + // Only DOM nodes need a new unique ID for each element since their data + // ends up in the global cache + if ( isNode ) { + id = elem[ internalKey ] = deletedIds.pop() || jQuery.guid++; + } else { + id = internalKey; + } + } + + if ( !cache[ id ] ) { + // Avoid exposing jQuery metadata on plain JS objects when the object + // is serialized using JSON.stringify + cache[ id ] = isNode ? {} : { toJSON: jQuery.noop }; + } + + // An object can be passed to jQuery.data instead of a key/value pair; this gets + // shallow copied over onto the existing cache + if ( typeof name === "object" || typeof name === "function" ) { + if ( pvt ) { + cache[ id ] = jQuery.extend( cache[ id ], name ); + } else { + cache[ id ].data = jQuery.extend( cache[ id ].data, name ); + } + } + + thisCache = cache[ id ]; + + // jQuery data() is stored in a separate object inside the object's internal data + // cache in order to avoid key collisions between internal data and user-defined + // data. + if ( !pvt ) { + if ( !thisCache.data ) { + thisCache.data = {}; + } + + thisCache = thisCache.data; + } + + if ( data !== undefined ) { + thisCache[ jQuery.camelCase( name ) ] = data; + } + + // Check for both converted-to-camel and non-converted data property names + // If a data property was specified + if ( typeof name === "string" ) { + + // First Try to find as-is property data + ret = thisCache[ name ]; + + // Test for null|undefined property data + if ( ret == null ) { + + // Try to find the camelCased property + ret = thisCache[ jQuery.camelCase( name ) ]; + } + } else { + ret = thisCache; + } + + return ret; +} + +function internalRemoveData( elem, name, pvt ) { + if ( !jQuery.acceptData( elem ) ) { + return; + } + + var thisCache, i, + isNode = elem.nodeType, + + // See jQuery.data for more information + cache = isNode ? jQuery.cache : elem, + id = isNode ? elem[ jQuery.expando ] : jQuery.expando; + + // If there is already no cache entry for this object, there is no + // purpose in continuing + if ( !cache[ id ] ) { + return; + } + + if ( name ) { + + thisCache = pvt ? cache[ id ] : cache[ id ].data; + + if ( thisCache ) { + + // Support array or space separated string names for data keys + if ( !jQuery.isArray( name ) ) { + + // try the string as a key before any manipulation + if ( name in thisCache ) { + name = [ name ]; + } else { + + // split the camel cased version by spaces unless a key with the spaces exists + name = jQuery.camelCase( name ); + if ( name in thisCache ) { + name = [ name ]; + } else { + name = name.split(" "); + } + } + } else { + // If "name" is an array of keys... + // When data is initially created, via ("key", "val") signature, + // keys will be converted to camelCase. + // Since there is no way to tell _how_ a key was added, remove + // both plain key and camelCase key. #12786 + // This will only penalize the array argument path. + name = name.concat( jQuery.map( name, jQuery.camelCase ) ); + } + + i = name.length; + while ( i-- ) { + delete thisCache[ name[i] ]; + } + + // If there is no data left in the cache, we want to continue + // and let the cache object itself get destroyed + if ( pvt ? !isEmptyDataObject(thisCache) : !jQuery.isEmptyObject(thisCache) ) { + return; + } + } + } + + // See jQuery.data for more information + if ( !pvt ) { + delete cache[ id ].data; + + // Don't destroy the parent cache unless the internal data object + // had been the only thing left in it + if ( !isEmptyDataObject( cache[ id ] ) ) { + return; + } + } + + // Destroy the cache + if ( isNode ) { + jQuery.cleanData( [ elem ], true ); + + // Use delete when supported for expandos or `cache` is not a window per isWindow (#10080) + /* jshint eqeqeq: false */ + } else if ( support.deleteExpando || cache != cache.window ) { + /* jshint eqeqeq: true */ + delete cache[ id ]; + + // When all else fails, null + } else { + cache[ id ] = null; + } +} + +jQuery.extend({ + cache: {}, + + // The following elements (space-suffixed to avoid Object.prototype collisions) + // throw uncatchable exceptions if you attempt to set expando properties + noData: { + "applet ": true, + "embed ": true, + // ...but Flash objects (which have this classid) *can* handle expandos + "object ": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" + }, + + hasData: function( elem ) { + elem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ]; + return !!elem && !isEmptyDataObject( elem ); + }, + + data: function( elem, name, data ) { + return internalData( elem, name, data ); + }, + + removeData: function( elem, name ) { + return internalRemoveData( elem, name ); + }, + + // For internal use only. + _data: function( elem, name, data ) { + return internalData( elem, name, data, true ); + }, + + _removeData: function( elem, name ) { + return internalRemoveData( elem, name, true ); + } +}); + +jQuery.fn.extend({ + data: function( key, value ) { + var i, name, data, + elem = this[0], + attrs = elem && elem.attributes; + + // Special expections of .data basically thwart jQuery.access, + // so implement the relevant behavior ourselves + + // Gets all values + if ( key === undefined ) { + if ( this.length ) { + data = jQuery.data( elem ); + + if ( elem.nodeType === 1 && !jQuery._data( elem, "parsedAttrs" ) ) { + i = attrs.length; + while ( i-- ) { + + // Support: IE11+ + // The attrs elements can be null (#14894) + if ( attrs[ i ] ) { + name = attrs[ i ].name; + if ( name.indexOf( "data-" ) === 0 ) { + name = jQuery.camelCase( name.slice(5) ); + dataAttr( elem, name, data[ name ] ); + } + } + } + jQuery._data( elem, "parsedAttrs", true ); + } + } + + return data; + } + + // Sets multiple values + if ( typeof key === "object" ) { + return this.each(function() { + jQuery.data( this, key ); + }); + } + + return arguments.length > 1 ? + + // Sets one value + this.each(function() { + jQuery.data( this, key, value ); + }) : + + // Gets one value + // Try to fetch any internally stored data first + elem ? dataAttr( elem, key, jQuery.data( elem, key ) ) : undefined; + }, + + removeData: function( key ) { + return this.each(function() { + jQuery.removeData( this, key ); + }); + } +}); + + +jQuery.extend({ + queue: function( elem, type, data ) { + var queue; + + if ( elem ) { + type = ( type || "fx" ) + "queue"; + queue = jQuery._data( elem, type ); + + // Speed up dequeue by getting out quickly if this is just a lookup + if ( data ) { + if ( !queue || jQuery.isArray(data) ) { + queue = jQuery._data( elem, type, jQuery.makeArray(data) ); + } else { + queue.push( data ); + } + } + return queue || []; + } + }, + + dequeue: function( elem, type ) { + type = type || "fx"; + + var queue = jQuery.queue( elem, type ), + startLength = queue.length, + fn = queue.shift(), + hooks = jQuery._queueHooks( elem, type ), + next = function() { + jQuery.dequeue( elem, type ); + }; + + // If the fx queue is dequeued, always remove the progress sentinel + if ( fn === "inprogress" ) { + fn = queue.shift(); + startLength--; + } + + if ( fn ) { + + // Add a progress sentinel to prevent the fx queue from being + // automatically dequeued + if ( type === "fx" ) { + queue.unshift( "inprogress" ); + } + + // clear up the last queue stop function + delete hooks.stop; + fn.call( elem, next, hooks ); + } + + if ( !startLength && hooks ) { + hooks.empty.fire(); + } + }, + + // not intended for public consumption - generates a queueHooks object, or returns the current one + _queueHooks: function( elem, type ) { + var key = type + "queueHooks"; + return jQuery._data( elem, key ) || jQuery._data( elem, key, { + empty: jQuery.Callbacks("once memory").add(function() { + jQuery._removeData( elem, type + "queue" ); + jQuery._removeData( elem, key ); + }) + }); + } +}); + +jQuery.fn.extend({ + queue: function( type, data ) { + var setter = 2; + + if ( typeof type !== "string" ) { + data = type; + type = "fx"; + setter--; + } + + if ( arguments.length < setter ) { + return jQuery.queue( this[0], type ); + } + + return data === undefined ? + this : + this.each(function() { + var queue = jQuery.queue( this, type, data ); + + // ensure a hooks for this queue + jQuery._queueHooks( this, type ); + + if ( type === "fx" && queue[0] !== "inprogress" ) { + jQuery.dequeue( this, type ); + } + }); + }, + dequeue: function( type ) { + return this.each(function() { + jQuery.dequeue( this, type ); + }); + }, + clearQueue: function( type ) { + return this.queue( type || "fx", [] ); + }, + // Get a promise resolved when queues of a certain type + // are emptied (fx is the type by default) + promise: function( type, obj ) { + var tmp, + count = 1, + defer = jQuery.Deferred(), + elements = this, + i = this.length, + resolve = function() { + if ( !( --count ) ) { + defer.resolveWith( elements, [ elements ] ); + } + }; + + if ( typeof type !== "string" ) { + obj = type; + type = undefined; + } + type = type || "fx"; + + while ( i-- ) { + tmp = jQuery._data( elements[ i ], type + "queueHooks" ); + if ( tmp && tmp.empty ) { + count++; + tmp.empty.add( resolve ); + } + } + resolve(); + return defer.promise( obj ); + } +}); +var pnum = (/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/).source; + +var cssExpand = [ "Top", "Right", "Bottom", "Left" ]; + +var isHidden = function( elem, el ) { + // isHidden might be called from jQuery#filter function; + // in that case, element will be second argument + elem = el || elem; + return jQuery.css( elem, "display" ) === "none" || !jQuery.contains( elem.ownerDocument, elem ); + }; + + + +// Multifunctional method to get and set values of a collection +// The value/s can optionally be executed if it's a function +var access = jQuery.access = function( elems, fn, key, value, chainable, emptyGet, raw ) { + var i = 0, + length = elems.length, + bulk = key == null; + + // Sets many values + if ( jQuery.type( key ) === "object" ) { + chainable = true; + for ( i in key ) { + jQuery.access( elems, fn, i, key[i], true, emptyGet, raw ); + } + + // Sets one value + } else if ( value !== undefined ) { + chainable = true; + + if ( !jQuery.isFunction( value ) ) { + raw = true; + } + + if ( bulk ) { + // Bulk operations run against the entire set + if ( raw ) { + fn.call( elems, value ); + fn = null; + + // ...except when executing function values + } else { + bulk = fn; + fn = function( elem, key, value ) { + return bulk.call( jQuery( elem ), value ); + }; + } + } + + if ( fn ) { + for ( ; i < length; i++ ) { + fn( elems[i], key, raw ? value : value.call( elems[i], i, fn( elems[i], key ) ) ); + } + } + } + + return chainable ? + elems : + + // Gets + bulk ? + fn.call( elems ) : + length ? fn( elems[0], key ) : emptyGet; +}; +var rcheckableType = (/^(?:checkbox|radio)$/i); + + + +(function() { + // Minified: var a,b,c + var input = document.createElement( "input" ), + div = document.createElement( "div" ), + fragment = document.createDocumentFragment(); + + // Setup + div.innerHTML = "
a"; + + // IE strips leading whitespace when .innerHTML is used + support.leadingWhitespace = div.firstChild.nodeType === 3; + + // Make sure that tbody elements aren't automatically inserted + // IE will insert them into empty tables + support.tbody = !div.getElementsByTagName( "tbody" ).length; + + // Make sure that link elements get serialized correctly by innerHTML + // This requires a wrapper element in IE + support.htmlSerialize = !!div.getElementsByTagName( "link" ).length; + + // Makes sure cloning an html5 element does not cause problems + // Where outerHTML is undefined, this still works + support.html5Clone = + document.createElement( "nav" ).cloneNode( true ).outerHTML !== "<:nav>"; + + // Check if a disconnected checkbox will retain its checked + // value of true after appended to the DOM (IE6/7) + input.type = "checkbox"; + input.checked = true; + fragment.appendChild( input ); + support.appendChecked = input.checked; + + // Make sure textarea (and checkbox) defaultValue is properly cloned + // Support: IE6-IE11+ + div.innerHTML = ""; + support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; + + // #11217 - WebKit loses check when the name is after the checked attribute + fragment.appendChild( div ); + div.innerHTML = ""; + + // Support: Safari 5.1, iOS 5.1, Android 4.x, Android 2.3 + // old WebKit doesn't clone checked state correctly in fragments + support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked; + + // Support: IE<9 + // Opera does not clone events (and typeof div.attachEvent === undefined). + // IE9-10 clones events bound via attachEvent, but they don't trigger with .click() + support.noCloneEvent = true; + if ( div.attachEvent ) { + div.attachEvent( "onclick", function() { + support.noCloneEvent = false; + }); + + div.cloneNode( true ).click(); + } + + // Execute the test only if not already executed in another module. + if (support.deleteExpando == null) { + // Support: IE<9 + support.deleteExpando = true; + try { + delete div.test; + } catch( e ) { + support.deleteExpando = false; + } + } +})(); + + +(function() { + var i, eventName, + div = document.createElement( "div" ); + + // Support: IE<9 (lack submit/change bubble), Firefox 23+ (lack focusin event) + for ( i in { submit: true, change: true, focusin: true }) { + eventName = "on" + i; + + if ( !(support[ i + "Bubbles" ] = eventName in window) ) { + // Beware of CSP restrictions (https://developer.mozilla.org/en/Security/CSP) + div.setAttribute( eventName, "t" ); + support[ i + "Bubbles" ] = div.attributes[ eventName ].expando === false; + } + } + + // Null elements to avoid leaks in IE. + div = null; +})(); + + +var rformElems = /^(?:input|select|textarea)$/i, + rkeyEvent = /^key/, + rmouseEvent = /^(?:mouse|pointer|contextmenu)|click/, + rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, + rtypenamespace = /^([^.]*)(?:\.(.+)|)$/; + +function returnTrue() { + return true; +} + +function returnFalse() { + return false; +} + +function safeActiveElement() { + try { + return document.activeElement; + } catch ( err ) { } +} + +/* + * Helper functions for managing events -- not part of the public interface. + * Props to Dean Edwards' addEvent library for many of the ideas. + */ +jQuery.event = { + + global: {}, + + add: function( elem, types, handler, data, selector ) { + var tmp, events, t, handleObjIn, + special, eventHandle, handleObj, + handlers, type, namespaces, origType, + elemData = jQuery._data( elem ); + + // Don't attach events to noData or text/comment nodes (but allow plain objects) + if ( !elemData ) { + return; + } + + // Caller can pass in an object of custom data in lieu of the handler + if ( handler.handler ) { + handleObjIn = handler; + handler = handleObjIn.handler; + selector = handleObjIn.selector; + } + + // Make sure that the handler has a unique ID, used to find/remove it later + if ( !handler.guid ) { + handler.guid = jQuery.guid++; + } + + // Init the element's event structure and main handler, if this is the first + if ( !(events = elemData.events) ) { + events = elemData.events = {}; + } + if ( !(eventHandle = elemData.handle) ) { + eventHandle = elemData.handle = function( e ) { + // Discard the second event of a jQuery.event.trigger() and + // when an event is called after a page has unloaded + return typeof jQuery !== strundefined && (!e || jQuery.event.triggered !== e.type) ? + jQuery.event.dispatch.apply( eventHandle.elem, arguments ) : + undefined; + }; + // Add elem as a property of the handle fn to prevent a memory leak with IE non-native events + eventHandle.elem = elem; + } + + // Handle multiple events separated by a space + types = ( types || "" ).match( rnotwhite ) || [ "" ]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[t] ) || []; + type = origType = tmp[1]; + namespaces = ( tmp[2] || "" ).split( "." ).sort(); + + // There *must* be a type, no attaching namespace-only handlers + if ( !type ) { + continue; + } + + // If event changes its type, use the special event handlers for the changed type + special = jQuery.event.special[ type ] || {}; + + // If selector defined, determine special event api type, otherwise given type + type = ( selector ? special.delegateType : special.bindType ) || type; + + // Update special based on newly reset type + special = jQuery.event.special[ type ] || {}; + + // handleObj is passed to all event handlers + handleObj = jQuery.extend({ + type: type, + origType: origType, + data: data, + handler: handler, + guid: handler.guid, + selector: selector, + needsContext: selector && jQuery.expr.match.needsContext.test( selector ), + namespace: namespaces.join(".") + }, handleObjIn ); + + // Init the event handler queue if we're the first + if ( !(handlers = events[ type ]) ) { + handlers = events[ type ] = []; + handlers.delegateCount = 0; + + // Only use addEventListener/attachEvent if the special events handler returns false + if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) { + // Bind the global event handler to the element + if ( elem.addEventListener ) { + elem.addEventListener( type, eventHandle, false ); + + } else if ( elem.attachEvent ) { + elem.attachEvent( "on" + type, eventHandle ); + } + } + } + + if ( special.add ) { + special.add.call( elem, handleObj ); + + if ( !handleObj.handler.guid ) { + handleObj.handler.guid = handler.guid; + } + } + + // Add to the element's handler list, delegates in front + if ( selector ) { + handlers.splice( handlers.delegateCount++, 0, handleObj ); + } else { + handlers.push( handleObj ); + } + + // Keep track of which events have ever been used, for event optimization + jQuery.event.global[ type ] = true; + } + + // Nullify elem to prevent memory leaks in IE + elem = null; + }, + + // Detach an event or set of events from an element + remove: function( elem, types, handler, selector, mappedTypes ) { + var j, handleObj, tmp, + origCount, t, events, + special, handlers, type, + namespaces, origType, + elemData = jQuery.hasData( elem ) && jQuery._data( elem ); + + if ( !elemData || !(events = elemData.events) ) { + return; + } + + // Once for each type.namespace in types; type may be omitted + types = ( types || "" ).match( rnotwhite ) || [ "" ]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[t] ) || []; + type = origType = tmp[1]; + namespaces = ( tmp[2] || "" ).split( "." ).sort(); + + // Unbind all events (on this namespace, if provided) for the element + if ( !type ) { + for ( type in events ) { + jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); + } + continue; + } + + special = jQuery.event.special[ type ] || {}; + type = ( selector ? special.delegateType : special.bindType ) || type; + handlers = events[ type ] || []; + tmp = tmp[2] && new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ); + + // Remove matching events + origCount = j = handlers.length; + while ( j-- ) { + handleObj = handlers[ j ]; + + if ( ( mappedTypes || origType === handleObj.origType ) && + ( !handler || handler.guid === handleObj.guid ) && + ( !tmp || tmp.test( handleObj.namespace ) ) && + ( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) { + handlers.splice( j, 1 ); + + if ( handleObj.selector ) { + handlers.delegateCount--; + } + if ( special.remove ) { + special.remove.call( elem, handleObj ); + } + } + } + + // Remove generic event handler if we removed something and no more handlers exist + // (avoids potential for endless recursion during removal of special event handlers) + if ( origCount && !handlers.length ) { + if ( !special.teardown || special.teardown.call( elem, namespaces, elemData.handle ) === false ) { + jQuery.removeEvent( elem, type, elemData.handle ); + } + + delete events[ type ]; + } + } + + // Remove the expando if it's no longer used + if ( jQuery.isEmptyObject( events ) ) { + delete elemData.handle; + + // removeData also checks for emptiness and clears the expando if empty + // so use it instead of delete + jQuery._removeData( elem, "events" ); + } + }, + + trigger: function( event, data, elem, onlyHandlers ) { + var handle, ontype, cur, + bubbleType, special, tmp, i, + eventPath = [ elem || document ], + type = hasOwn.call( event, "type" ) ? event.type : event, + namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split(".") : []; + + cur = tmp = elem = elem || document; + + // Don't do events on text and comment nodes + if ( elem.nodeType === 3 || elem.nodeType === 8 ) { + return; + } + + // focus/blur morphs to focusin/out; ensure we're not firing them right now + if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { + return; + } + + if ( type.indexOf(".") >= 0 ) { + // Namespaced trigger; create a regexp to match event type in handle() + namespaces = type.split("."); + type = namespaces.shift(); + namespaces.sort(); + } + ontype = type.indexOf(":") < 0 && "on" + type; + + // Caller can pass in a jQuery.Event object, Object, or just an event type string + event = event[ jQuery.expando ] ? + event : + new jQuery.Event( type, typeof event === "object" && event ); + + // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true) + event.isTrigger = onlyHandlers ? 2 : 3; + event.namespace = namespaces.join("."); + event.namespace_re = event.namespace ? + new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ) : + null; + + // Clean up the event in case it is being reused + event.result = undefined; + if ( !event.target ) { + event.target = elem; + } + + // Clone any incoming data and prepend the event, creating the handler arg list + data = data == null ? + [ event ] : + jQuery.makeArray( data, [ event ] ); + + // Allow special events to draw outside the lines + special = jQuery.event.special[ type ] || {}; + if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) { + return; + } + + // Determine event propagation path in advance, per W3C events spec (#9951) + // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) + if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) { + + bubbleType = special.delegateType || type; + if ( !rfocusMorph.test( bubbleType + type ) ) { + cur = cur.parentNode; + } + for ( ; cur; cur = cur.parentNode ) { + eventPath.push( cur ); + tmp = cur; + } + + // Only add window if we got to document (e.g., not plain obj or detached DOM) + if ( tmp === (elem.ownerDocument || document) ) { + eventPath.push( tmp.defaultView || tmp.parentWindow || window ); + } + } + + // Fire handlers on the event path + i = 0; + while ( (cur = eventPath[i++]) && !event.isPropagationStopped() ) { + + event.type = i > 1 ? + bubbleType : + special.bindType || type; + + // jQuery handler + handle = ( jQuery._data( cur, "events" ) || {} )[ event.type ] && jQuery._data( cur, "handle" ); + if ( handle ) { + handle.apply( cur, data ); + } + + // Native handler + handle = ontype && cur[ ontype ]; + if ( handle && handle.apply && jQuery.acceptData( cur ) ) { + event.result = handle.apply( cur, data ); + if ( event.result === false ) { + event.preventDefault(); + } + } + } + event.type = type; + + // If nobody prevented the default action, do it now + if ( !onlyHandlers && !event.isDefaultPrevented() ) { + + if ( (!special._default || special._default.apply( eventPath.pop(), data ) === false) && + jQuery.acceptData( elem ) ) { + + // Call a native DOM method on the target with the same name name as the event. + // Can't use an .isFunction() check here because IE6/7 fails that test. + // Don't do default actions on window, that's where global variables be (#6170) + if ( ontype && elem[ type ] && !jQuery.isWindow( elem ) ) { + + // Don't re-trigger an onFOO event when we call its FOO() method + tmp = elem[ ontype ]; + + if ( tmp ) { + elem[ ontype ] = null; + } + + // Prevent re-triggering of the same event, since we already bubbled it above + jQuery.event.triggered = type; + try { + elem[ type ](); + } catch ( e ) { + // IE<9 dies on focus/blur to hidden element (#1486,#12518) + // only reproducible on winXP IE8 native, not IE9 in IE8 mode + } + jQuery.event.triggered = undefined; + + if ( tmp ) { + elem[ ontype ] = tmp; + } + } + } + } + + return event.result; + }, + + dispatch: function( event ) { + + // Make a writable jQuery.Event from the native event object + event = jQuery.event.fix( event ); + + var i, ret, handleObj, matched, j, + handlerQueue = [], + args = slice.call( arguments ), + handlers = ( jQuery._data( this, "events" ) || {} )[ event.type ] || [], + special = jQuery.event.special[ event.type ] || {}; + + // Use the fix-ed jQuery.Event rather than the (read-only) native event + args[0] = event; + event.delegateTarget = this; + + // Call the preDispatch hook for the mapped type, and let it bail if desired + if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { + return; + } + + // Determine handlers + handlerQueue = jQuery.event.handlers.call( this, event, handlers ); + + // Run delegates first; they may want to stop propagation beneath us + i = 0; + while ( (matched = handlerQueue[ i++ ]) && !event.isPropagationStopped() ) { + event.currentTarget = matched.elem; + + j = 0; + while ( (handleObj = matched.handlers[ j++ ]) && !event.isImmediatePropagationStopped() ) { + + // Triggered event must either 1) have no namespace, or + // 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace). + if ( !event.namespace_re || event.namespace_re.test( handleObj.namespace ) ) { + + event.handleObj = handleObj; + event.data = handleObj.data; + + ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler ) + .apply( matched.elem, args ); + + if ( ret !== undefined ) { + if ( (event.result = ret) === false ) { + event.preventDefault(); + event.stopPropagation(); + } + } + } + } + } + + // Call the postDispatch hook for the mapped type + if ( special.postDispatch ) { + special.postDispatch.call( this, event ); + } + + return event.result; + }, + + handlers: function( event, handlers ) { + var sel, handleObj, matches, i, + handlerQueue = [], + delegateCount = handlers.delegateCount, + cur = event.target; + + // Find delegate handlers + // Black-hole SVG instance trees (#13180) + // Avoid non-left-click bubbling in Firefox (#3861) + if ( delegateCount && cur.nodeType && (!event.button || event.type !== "click") ) { + + /* jshint eqeqeq: false */ + for ( ; cur != this; cur = cur.parentNode || this ) { + /* jshint eqeqeq: true */ + + // Don't check non-elements (#13208) + // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) + if ( cur.nodeType === 1 && (cur.disabled !== true || event.type !== "click") ) { + matches = []; + for ( i = 0; i < delegateCount; i++ ) { + handleObj = handlers[ i ]; + + // Don't conflict with Object.prototype properties (#13203) + sel = handleObj.selector + " "; + + if ( matches[ sel ] === undefined ) { + matches[ sel ] = handleObj.needsContext ? + jQuery( sel, this ).index( cur ) >= 0 : + jQuery.find( sel, this, null, [ cur ] ).length; + } + if ( matches[ sel ] ) { + matches.push( handleObj ); + } + } + if ( matches.length ) { + handlerQueue.push({ elem: cur, handlers: matches }); + } + } + } + } + + // Add the remaining (directly-bound) handlers + if ( delegateCount < handlers.length ) { + handlerQueue.push({ elem: this, handlers: handlers.slice( delegateCount ) }); + } + + return handlerQueue; + }, + + fix: function( event ) { + if ( event[ jQuery.expando ] ) { + return event; + } + + // Create a writable copy of the event object and normalize some properties + var i, prop, copy, + type = event.type, + originalEvent = event, + fixHook = this.fixHooks[ type ]; + + if ( !fixHook ) { + this.fixHooks[ type ] = fixHook = + rmouseEvent.test( type ) ? this.mouseHooks : + rkeyEvent.test( type ) ? this.keyHooks : + {}; + } + copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props; + + event = new jQuery.Event( originalEvent ); + + i = copy.length; + while ( i-- ) { + prop = copy[ i ]; + event[ prop ] = originalEvent[ prop ]; + } + + // Support: IE<9 + // Fix target property (#1925) + if ( !event.target ) { + event.target = originalEvent.srcElement || document; + } + + // Support: Chrome 23+, Safari? + // Target should not be a text node (#504, #13143) + if ( event.target.nodeType === 3 ) { + event.target = event.target.parentNode; + } + + // Support: IE<9 + // For mouse/key events, metaKey==false if it's undefined (#3368, #11328) + event.metaKey = !!event.metaKey; + + return fixHook.filter ? fixHook.filter( event, originalEvent ) : event; + }, + + // Includes some event props shared by KeyEvent and MouseEvent + props: "altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "), + + fixHooks: {}, + + keyHooks: { + props: "char charCode key keyCode".split(" "), + filter: function( event, original ) { + + // Add which for key events + if ( event.which == null ) { + event.which = original.charCode != null ? original.charCode : original.keyCode; + } + + return event; + } + }, + + mouseHooks: { + props: "button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "), + filter: function( event, original ) { + var body, eventDoc, doc, + button = original.button, + fromElement = original.fromElement; + + // Calculate pageX/Y if missing and clientX/Y available + if ( event.pageX == null && original.clientX != null ) { + eventDoc = event.target.ownerDocument || document; + doc = eventDoc.documentElement; + body = eventDoc.body; + + event.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 ); + event.pageY = original.clientY + ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - ( doc && doc.clientTop || body && body.clientTop || 0 ); + } + + // Add relatedTarget, if necessary + if ( !event.relatedTarget && fromElement ) { + event.relatedTarget = fromElement === event.target ? original.toElement : fromElement; + } + + // Add which for click: 1 === left; 2 === middle; 3 === right + // Note: button is not normalized, so don't use it + if ( !event.which && button !== undefined ) { + event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) ); + } + + return event; + } + }, + + special: { + load: { + // Prevent triggered image.load events from bubbling to window.load + noBubble: true + }, + focus: { + // Fire native event if possible so blur/focus sequence is correct + trigger: function() { + if ( this !== safeActiveElement() && this.focus ) { + try { + this.focus(); + return false; + } catch ( e ) { + // Support: IE<9 + // If we error on focus to hidden element (#1486, #12518), + // let .trigger() run the handlers + } + } + }, + delegateType: "focusin" + }, + blur: { + trigger: function() { + if ( this === safeActiveElement() && this.blur ) { + this.blur(); + return false; + } + }, + delegateType: "focusout" + }, + click: { + // For checkbox, fire native event so checked state will be right + trigger: function() { + if ( jQuery.nodeName( this, "input" ) && this.type === "checkbox" && this.click ) { + this.click(); + return false; + } + }, + + // For cross-browser consistency, don't fire native .click() on links + _default: function( event ) { + return jQuery.nodeName( event.target, "a" ); + } + }, + + beforeunload: { + postDispatch: function( event ) { + + // Support: Firefox 20+ + // Firefox doesn't alert if the returnValue field is not set. + if ( event.result !== undefined && event.originalEvent ) { + event.originalEvent.returnValue = event.result; + } + } + } + }, + + simulate: function( type, elem, event, bubble ) { + // Piggyback on a donor event to simulate a different one. + // Fake originalEvent to avoid donor's stopPropagation, but if the + // simulated event prevents default then we do the same on the donor. + var e = jQuery.extend( + new jQuery.Event(), + event, + { + type: type, + isSimulated: true, + originalEvent: {} + } + ); + if ( bubble ) { + jQuery.event.trigger( e, null, elem ); + } else { + jQuery.event.dispatch.call( elem, e ); + } + if ( e.isDefaultPrevented() ) { + event.preventDefault(); + } + } +}; + +jQuery.removeEvent = document.removeEventListener ? + function( elem, type, handle ) { + if ( elem.removeEventListener ) { + elem.removeEventListener( type, handle, false ); + } + } : + function( elem, type, handle ) { + var name = "on" + type; + + if ( elem.detachEvent ) { + + // #8545, #7054, preventing memory leaks for custom events in IE6-8 + // detachEvent needed property on element, by name of that event, to properly expose it to GC + if ( typeof elem[ name ] === strundefined ) { + elem[ name ] = null; + } + + elem.detachEvent( name, handle ); + } + }; + +jQuery.Event = function( src, props ) { + // Allow instantiation without the 'new' keyword + if ( !(this instanceof jQuery.Event) ) { + return new jQuery.Event( src, props ); + } + + // Event object + if ( src && src.type ) { + this.originalEvent = src; + this.type = src.type; + + // Events bubbling up the document may have been marked as prevented + // by a handler lower down the tree; reflect the correct value. + this.isDefaultPrevented = src.defaultPrevented || + src.defaultPrevented === undefined && + // Support: IE < 9, Android < 4.0 + src.returnValue === false ? + returnTrue : + returnFalse; + + // Event type + } else { + this.type = src; + } + + // Put explicitly provided properties onto the event object + if ( props ) { + jQuery.extend( this, props ); + } + + // Create a timestamp if incoming event doesn't have one + this.timeStamp = src && src.timeStamp || jQuery.now(); + + // Mark it as fixed + this[ jQuery.expando ] = true; +}; + +// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding +// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html +jQuery.Event.prototype = { + isDefaultPrevented: returnFalse, + isPropagationStopped: returnFalse, + isImmediatePropagationStopped: returnFalse, + + preventDefault: function() { + var e = this.originalEvent; + + this.isDefaultPrevented = returnTrue; + if ( !e ) { + return; + } + + // If preventDefault exists, run it on the original event + if ( e.preventDefault ) { + e.preventDefault(); + + // Support: IE + // Otherwise set the returnValue property of the original event to false + } else { + e.returnValue = false; + } + }, + stopPropagation: function() { + var e = this.originalEvent; + + this.isPropagationStopped = returnTrue; + if ( !e ) { + return; + } + // If stopPropagation exists, run it on the original event + if ( e.stopPropagation ) { + e.stopPropagation(); + } + + // Support: IE + // Set the cancelBubble property of the original event to true + e.cancelBubble = true; + }, + stopImmediatePropagation: function() { + var e = this.originalEvent; + + this.isImmediatePropagationStopped = returnTrue; + + if ( e && e.stopImmediatePropagation ) { + e.stopImmediatePropagation(); + } + + this.stopPropagation(); + } +}; + +// Create mouseenter/leave events using mouseover/out and event-time checks +jQuery.each({ + mouseenter: "mouseover", + mouseleave: "mouseout", + pointerenter: "pointerover", + pointerleave: "pointerout" +}, function( orig, fix ) { + jQuery.event.special[ orig ] = { + delegateType: fix, + bindType: fix, + + handle: function( event ) { + var ret, + target = this, + related = event.relatedTarget, + handleObj = event.handleObj; + + // For mousenter/leave call the handler if related is outside the target. + // NB: No relatedTarget if the mouse left/entered the browser window + if ( !related || (related !== target && !jQuery.contains( target, related )) ) { + event.type = handleObj.origType; + ret = handleObj.handler.apply( this, arguments ); + event.type = fix; + } + return ret; + } + }; +}); + +// IE submit delegation +if ( !support.submitBubbles ) { + + jQuery.event.special.submit = { + setup: function() { + // Only need this for delegated form submit events + if ( jQuery.nodeName( this, "form" ) ) { + return false; + } + + // Lazy-add a submit handler when a descendant form may potentially be submitted + jQuery.event.add( this, "click._submit keypress._submit", function( e ) { + // Node name check avoids a VML-related crash in IE (#9807) + var elem = e.target, + form = jQuery.nodeName( elem, "input" ) || jQuery.nodeName( elem, "button" ) ? elem.form : undefined; + if ( form && !jQuery._data( form, "submitBubbles" ) ) { + jQuery.event.add( form, "submit._submit", function( event ) { + event._submit_bubble = true; + }); + jQuery._data( form, "submitBubbles", true ); + } + }); + // return undefined since we don't need an event listener + }, + + postDispatch: function( event ) { + // If form was submitted by the user, bubble the event up the tree + if ( event._submit_bubble ) { + delete event._submit_bubble; + if ( this.parentNode && !event.isTrigger ) { + jQuery.event.simulate( "submit", this.parentNode, event, true ); + } + } + }, + + teardown: function() { + // Only need this for delegated form submit events + if ( jQuery.nodeName( this, "form" ) ) { + return false; + } + + // Remove delegated handlers; cleanData eventually reaps submit handlers attached above + jQuery.event.remove( this, "._submit" ); + } + }; +} + +// IE change delegation and checkbox/radio fix +if ( !support.changeBubbles ) { + + jQuery.event.special.change = { + + setup: function() { + + if ( rformElems.test( this.nodeName ) ) { + // IE doesn't fire change on a check/radio until blur; trigger it on click + // after a propertychange. Eat the blur-change in special.change.handle. + // This still fires onchange a second time for check/radio after blur. + if ( this.type === "checkbox" || this.type === "radio" ) { + jQuery.event.add( this, "propertychange._change", function( event ) { + if ( event.originalEvent.propertyName === "checked" ) { + this._just_changed = true; + } + }); + jQuery.event.add( this, "click._change", function( event ) { + if ( this._just_changed && !event.isTrigger ) { + this._just_changed = false; + } + // Allow triggered, simulated change events (#11500) + jQuery.event.simulate( "change", this, event, true ); + }); + } + return false; + } + // Delegated event; lazy-add a change handler on descendant inputs + jQuery.event.add( this, "beforeactivate._change", function( e ) { + var elem = e.target; + + if ( rformElems.test( elem.nodeName ) && !jQuery._data( elem, "changeBubbles" ) ) { + jQuery.event.add( elem, "change._change", function( event ) { + if ( this.parentNode && !event.isSimulated && !event.isTrigger ) { + jQuery.event.simulate( "change", this.parentNode, event, true ); + } + }); + jQuery._data( elem, "changeBubbles", true ); + } + }); + }, + + handle: function( event ) { + var elem = event.target; + + // Swallow native change events from checkbox/radio, we already triggered them above + if ( this !== elem || event.isSimulated || event.isTrigger || (elem.type !== "radio" && elem.type !== "checkbox") ) { + return event.handleObj.handler.apply( this, arguments ); + } + }, + + teardown: function() { + jQuery.event.remove( this, "._change" ); + + return !rformElems.test( this.nodeName ); + } + }; +} + +// Create "bubbling" focus and blur events +if ( !support.focusinBubbles ) { + jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) { + + // Attach a single capturing handler on the document while someone wants focusin/focusout + var handler = function( event ) { + jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true ); + }; + + jQuery.event.special[ fix ] = { + setup: function() { + var doc = this.ownerDocument || this, + attaches = jQuery._data( doc, fix ); + + if ( !attaches ) { + doc.addEventListener( orig, handler, true ); + } + jQuery._data( doc, fix, ( attaches || 0 ) + 1 ); + }, + teardown: function() { + var doc = this.ownerDocument || this, + attaches = jQuery._data( doc, fix ) - 1; + + if ( !attaches ) { + doc.removeEventListener( orig, handler, true ); + jQuery._removeData( doc, fix ); + } else { + jQuery._data( doc, fix, attaches ); + } + } + }; + }); +} + +jQuery.fn.extend({ + + on: function( types, selector, data, fn, /*INTERNAL*/ one ) { + var type, origFn; + + // Types can be a map of types/handlers + if ( typeof types === "object" ) { + // ( types-Object, selector, data ) + if ( typeof selector !== "string" ) { + // ( types-Object, data ) + data = data || selector; + selector = undefined; + } + for ( type in types ) { + this.on( type, selector, data, types[ type ], one ); + } + return this; + } + + if ( data == null && fn == null ) { + // ( types, fn ) + fn = selector; + data = selector = undefined; + } else if ( fn == null ) { + if ( typeof selector === "string" ) { + // ( types, selector, fn ) + fn = data; + data = undefined; + } else { + // ( types, data, fn ) + fn = data; + data = selector; + selector = undefined; + } + } + if ( fn === false ) { + fn = returnFalse; + } else if ( !fn ) { + return this; + } + + if ( one === 1 ) { + origFn = fn; + fn = function( event ) { + // Can use an empty set, since event contains the info + jQuery().off( event ); + return origFn.apply( this, arguments ); + }; + // Use same guid so caller can remove using origFn + fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); + } + return this.each( function() { + jQuery.event.add( this, types, fn, data, selector ); + }); + }, + one: function( types, selector, data, fn ) { + return this.on( types, selector, data, fn, 1 ); + }, + off: function( types, selector, fn ) { + var handleObj, type; + if ( types && types.preventDefault && types.handleObj ) { + // ( event ) dispatched jQuery.Event + handleObj = types.handleObj; + jQuery( types.delegateTarget ).off( + handleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType, + handleObj.selector, + handleObj.handler + ); + return this; + } + if ( typeof types === "object" ) { + // ( types-object [, selector] ) + for ( type in types ) { + this.off( type, selector, types[ type ] ); + } + return this; + } + if ( selector === false || typeof selector === "function" ) { + // ( types [, fn] ) + fn = selector; + selector = undefined; + } + if ( fn === false ) { + fn = returnFalse; + } + return this.each(function() { + jQuery.event.remove( this, types, fn, selector ); + }); + }, + + trigger: function( type, data ) { + return this.each(function() { + jQuery.event.trigger( type, data, this ); + }); + }, + triggerHandler: function( type, data ) { + var elem = this[0]; + if ( elem ) { + return jQuery.event.trigger( type, data, elem, true ); + } + } +}); + + +function createSafeFragment( document ) { + var list = nodeNames.split( "|" ), + safeFrag = document.createDocumentFragment(); + + if ( safeFrag.createElement ) { + while ( list.length ) { + safeFrag.createElement( + list.pop() + ); + } + } + return safeFrag; +} + +var nodeNames = "abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|" + + "header|hgroup|mark|meter|nav|output|progress|section|summary|time|video", + rinlinejQuery = / jQuery\d+="(?:null|\d+)"/g, + rnoshimcache = new RegExp("<(?:" + nodeNames + ")[\\s/>]", "i"), + rleadingWhitespace = /^\s+/, + rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi, + rtagName = /<([\w:]+)/, + rtbody = /\s*$/g, + + // We have to close these tags to support XHTML (#13200) + wrapMap = { + option: [ 1, "" ], + legend: [ 1, "
", "
" ], + area: [ 1, "", "" ], + param: [ 1, "", "" ], + thead: [ 1, "", "
" ], + tr: [ 2, "", "
" ], + col: [ 2, "", "
" ], + td: [ 3, "", "
" ], + + // IE6-8 can't serialize link, script, style, or any html5 (NoScope) tags, + // unless wrapped in a div with non-breaking characters in front of it. + _default: support.htmlSerialize ? [ 0, "", "" ] : [ 1, "X
", "
" ] + }, + safeFragment = createSafeFragment( document ), + fragmentDiv = safeFragment.appendChild( document.createElement("div") ); + +wrapMap.optgroup = wrapMap.option; +wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; +wrapMap.th = wrapMap.td; + +function getAll( context, tag ) { + var elems, elem, + i = 0, + found = typeof context.getElementsByTagName !== strundefined ? context.getElementsByTagName( tag || "*" ) : + typeof context.querySelectorAll !== strundefined ? context.querySelectorAll( tag || "*" ) : + undefined; + + if ( !found ) { + for ( found = [], elems = context.childNodes || context; (elem = elems[i]) != null; i++ ) { + if ( !tag || jQuery.nodeName( elem, tag ) ) { + found.push( elem ); + } else { + jQuery.merge( found, getAll( elem, tag ) ); + } + } + } + + return tag === undefined || tag && jQuery.nodeName( context, tag ) ? + jQuery.merge( [ context ], found ) : + found; +} + +// Used in buildFragment, fixes the defaultChecked property +function fixDefaultChecked( elem ) { + if ( rcheckableType.test( elem.type ) ) { + elem.defaultChecked = elem.checked; + } +} + +// Support: IE<8 +// Manipulating tables requires a tbody +function manipulationTarget( elem, content ) { + return jQuery.nodeName( elem, "table" ) && + jQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ? + + elem.getElementsByTagName("tbody")[0] || + elem.appendChild( elem.ownerDocument.createElement("tbody") ) : + elem; +} + +// Replace/restore the type attribute of script elements for safe DOM manipulation +function disableScript( elem ) { + elem.type = (jQuery.find.attr( elem, "type" ) !== null) + "/" + elem.type; + return elem; +} +function restoreScript( elem ) { + var match = rscriptTypeMasked.exec( elem.type ); + if ( match ) { + elem.type = match[1]; + } else { + elem.removeAttribute("type"); + } + return elem; +} + +// Mark scripts as having already been evaluated +function setGlobalEval( elems, refElements ) { + var elem, + i = 0; + for ( ; (elem = elems[i]) != null; i++ ) { + jQuery._data( elem, "globalEval", !refElements || jQuery._data( refElements[i], "globalEval" ) ); + } +} + +function cloneCopyEvent( src, dest ) { + + if ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) { + return; + } + + var type, i, l, + oldData = jQuery._data( src ), + curData = jQuery._data( dest, oldData ), + events = oldData.events; + + if ( events ) { + delete curData.handle; + curData.events = {}; + + for ( type in events ) { + for ( i = 0, l = events[ type ].length; i < l; i++ ) { + jQuery.event.add( dest, type, events[ type ][ i ] ); + } + } + } + + // make the cloned public data object a copy from the original + if ( curData.data ) { + curData.data = jQuery.extend( {}, curData.data ); + } +} + +function fixCloneNodeIssues( src, dest ) { + var nodeName, e, data; + + // We do not need to do anything for non-Elements + if ( dest.nodeType !== 1 ) { + return; + } + + nodeName = dest.nodeName.toLowerCase(); + + // IE6-8 copies events bound via attachEvent when using cloneNode. + if ( !support.noCloneEvent && dest[ jQuery.expando ] ) { + data = jQuery._data( dest ); + + for ( e in data.events ) { + jQuery.removeEvent( dest, e, data.handle ); + } + + // Event data gets referenced instead of copied if the expando gets copied too + dest.removeAttribute( jQuery.expando ); + } + + // IE blanks contents when cloning scripts, and tries to evaluate newly-set text + if ( nodeName === "script" && dest.text !== src.text ) { + disableScript( dest ).text = src.text; + restoreScript( dest ); + + // IE6-10 improperly clones children of object elements using classid. + // IE10 throws NoModificationAllowedError if parent is null, #12132. + } else if ( nodeName === "object" ) { + if ( dest.parentNode ) { + dest.outerHTML = src.outerHTML; + } + + // This path appears unavoidable for IE9. When cloning an object + // element in IE9, the outerHTML strategy above is not sufficient. + // If the src has innerHTML and the destination does not, + // copy the src.innerHTML into the dest.innerHTML. #10324 + if ( support.html5Clone && ( src.innerHTML && !jQuery.trim(dest.innerHTML) ) ) { + dest.innerHTML = src.innerHTML; + } + + } else if ( nodeName === "input" && rcheckableType.test( src.type ) ) { + // IE6-8 fails to persist the checked state of a cloned checkbox + // or radio button. Worse, IE6-7 fail to give the cloned element + // a checked appearance if the defaultChecked value isn't also set + + dest.defaultChecked = dest.checked = src.checked; + + // IE6-7 get confused and end up setting the value of a cloned + // checkbox/radio button to an empty string instead of "on" + if ( dest.value !== src.value ) { + dest.value = src.value; + } + + // IE6-8 fails to return the selected option to the default selected + // state when cloning options + } else if ( nodeName === "option" ) { + dest.defaultSelected = dest.selected = src.defaultSelected; + + // IE6-8 fails to set the defaultValue to the correct value when + // cloning other types of input fields + } else if ( nodeName === "input" || nodeName === "textarea" ) { + dest.defaultValue = src.defaultValue; + } +} + +jQuery.extend({ + clone: function( elem, dataAndEvents, deepDataAndEvents ) { + var destElements, node, clone, i, srcElements, + inPage = jQuery.contains( elem.ownerDocument, elem ); + + if ( support.html5Clone || jQuery.isXMLDoc(elem) || !rnoshimcache.test( "<" + elem.nodeName + ">" ) ) { + clone = elem.cloneNode( true ); + + // IE<=8 does not properly clone detached, unknown element nodes + } else { + fragmentDiv.innerHTML = elem.outerHTML; + fragmentDiv.removeChild( clone = fragmentDiv.firstChild ); + } + + if ( (!support.noCloneEvent || !support.noCloneChecked) && + (elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) { + + // We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2 + destElements = getAll( clone ); + srcElements = getAll( elem ); + + // Fix all IE cloning issues + for ( i = 0; (node = srcElements[i]) != null; ++i ) { + // Ensure that the destination node is not null; Fixes #9587 + if ( destElements[i] ) { + fixCloneNodeIssues( node, destElements[i] ); + } + } + } + + // Copy the events from the original to the clone + if ( dataAndEvents ) { + if ( deepDataAndEvents ) { + srcElements = srcElements || getAll( elem ); + destElements = destElements || getAll( clone ); + + for ( i = 0; (node = srcElements[i]) != null; i++ ) { + cloneCopyEvent( node, destElements[i] ); + } + } else { + cloneCopyEvent( elem, clone ); + } + } + + // Preserve script evaluation history + destElements = getAll( clone, "script" ); + if ( destElements.length > 0 ) { + setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); + } + + destElements = srcElements = node = null; + + // Return the cloned set + return clone; + }, + + buildFragment: function( elems, context, scripts, selection ) { + var j, elem, contains, + tmp, tag, tbody, wrap, + l = elems.length, + + // Ensure a safe fragment + safe = createSafeFragment( context ), + + nodes = [], + i = 0; + + for ( ; i < l; i++ ) { + elem = elems[ i ]; + + if ( elem || elem === 0 ) { + + // Add nodes directly + if ( jQuery.type( elem ) === "object" ) { + jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem ); + + // Convert non-html into a text node + } else if ( !rhtml.test( elem ) ) { + nodes.push( context.createTextNode( elem ) ); + + // Convert html into DOM nodes + } else { + tmp = tmp || safe.appendChild( context.createElement("div") ); + + // Deserialize a standard representation + tag = (rtagName.exec( elem ) || [ "", "" ])[ 1 ].toLowerCase(); + wrap = wrapMap[ tag ] || wrapMap._default; + + tmp.innerHTML = wrap[1] + elem.replace( rxhtmlTag, "<$1>" ) + wrap[2]; + + // Descend through wrappers to the right content + j = wrap[0]; + while ( j-- ) { + tmp = tmp.lastChild; + } + + // Manually add leading whitespace removed by IE + if ( !support.leadingWhitespace && rleadingWhitespace.test( elem ) ) { + nodes.push( context.createTextNode( rleadingWhitespace.exec( elem )[0] ) ); + } + + // Remove IE's autoinserted from table fragments + if ( !support.tbody ) { + + // String was a , *may* have spurious + elem = tag === "table" && !rtbody.test( elem ) ? + tmp.firstChild : + + // String was a bare or + wrap[1] === "
" && !rtbody.test( elem ) ? + tmp : + 0; + + j = elem && elem.childNodes.length; + while ( j-- ) { + if ( jQuery.nodeName( (tbody = elem.childNodes[j]), "tbody" ) && !tbody.childNodes.length ) { + elem.removeChild( tbody ); + } + } + } + + jQuery.merge( nodes, tmp.childNodes ); + + // Fix #12392 for WebKit and IE > 9 + tmp.textContent = ""; + + // Fix #12392 for oldIE + while ( tmp.firstChild ) { + tmp.removeChild( tmp.firstChild ); + } + + // Remember the top-level container for proper cleanup + tmp = safe.lastChild; + } + } + } + + // Fix #11356: Clear elements from fragment + if ( tmp ) { + safe.removeChild( tmp ); + } + + // Reset defaultChecked for any radios and checkboxes + // about to be appended to the DOM in IE 6/7 (#8060) + if ( !support.appendChecked ) { + jQuery.grep( getAll( nodes, "input" ), fixDefaultChecked ); + } + + i = 0; + while ( (elem = nodes[ i++ ]) ) { + + // #4087 - If origin and destination elements are the same, and this is + // that element, do not do anything + if ( selection && jQuery.inArray( elem, selection ) !== -1 ) { + continue; + } + + contains = jQuery.contains( elem.ownerDocument, elem ); + + // Append to fragment + tmp = getAll( safe.appendChild( elem ), "script" ); + + // Preserve script evaluation history + if ( contains ) { + setGlobalEval( tmp ); + } + + // Capture executables + if ( scripts ) { + j = 0; + while ( (elem = tmp[ j++ ]) ) { + if ( rscriptType.test( elem.type || "" ) ) { + scripts.push( elem ); + } + } + } + } + + tmp = null; + + return safe; + }, + + cleanData: function( elems, /* internal */ acceptData ) { + var elem, type, id, data, + i = 0, + internalKey = jQuery.expando, + cache = jQuery.cache, + deleteExpando = support.deleteExpando, + special = jQuery.event.special; + + for ( ; (elem = elems[i]) != null; i++ ) { + if ( acceptData || jQuery.acceptData( elem ) ) { + + id = elem[ internalKey ]; + data = id && cache[ id ]; + + if ( data ) { + if ( data.events ) { + for ( type in data.events ) { + if ( special[ type ] ) { + jQuery.event.remove( elem, type ); + + // This is a shortcut to avoid jQuery.event.remove's overhead + } else { + jQuery.removeEvent( elem, type, data.handle ); + } + } + } + + // Remove cache only if it was not already removed by jQuery.event.remove + if ( cache[ id ] ) { + + delete cache[ id ]; + + // IE does not allow us to delete expando properties from nodes, + // nor does it have a removeAttribute function on Document nodes; + // we must handle all of these cases + if ( deleteExpando ) { + delete elem[ internalKey ]; + + } else if ( typeof elem.removeAttribute !== strundefined ) { + elem.removeAttribute( internalKey ); + + } else { + elem[ internalKey ] = null; + } + + deletedIds.push( id ); + } + } + } + } + } +}); + +jQuery.fn.extend({ + text: function( value ) { + return access( this, function( value ) { + return value === undefined ? + jQuery.text( this ) : + this.empty().append( ( this[0] && this[0].ownerDocument || document ).createTextNode( value ) ); + }, null, value, arguments.length ); + }, + + append: function() { + return this.domManip( arguments, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + var target = manipulationTarget( this, elem ); + target.appendChild( elem ); + } + }); + }, + + prepend: function() { + return this.domManip( arguments, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + var target = manipulationTarget( this, elem ); + target.insertBefore( elem, target.firstChild ); + } + }); + }, + + before: function() { + return this.domManip( arguments, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this ); + } + }); + }, + + after: function() { + return this.domManip( arguments, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this.nextSibling ); + } + }); + }, + + remove: function( selector, keepData /* Internal Use Only */ ) { + var elem, + elems = selector ? jQuery.filter( selector, this ) : this, + i = 0; + + for ( ; (elem = elems[i]) != null; i++ ) { + + if ( !keepData && elem.nodeType === 1 ) { + jQuery.cleanData( getAll( elem ) ); + } + + if ( elem.parentNode ) { + if ( keepData && jQuery.contains( elem.ownerDocument, elem ) ) { + setGlobalEval( getAll( elem, "script" ) ); + } + elem.parentNode.removeChild( elem ); + } + } + + return this; + }, + + empty: function() { + var elem, + i = 0; + + for ( ; (elem = this[i]) != null; i++ ) { + // Remove element nodes and prevent memory leaks + if ( elem.nodeType === 1 ) { + jQuery.cleanData( getAll( elem, false ) ); + } + + // Remove any remaining nodes + while ( elem.firstChild ) { + elem.removeChild( elem.firstChild ); + } + + // If this is a select, ensure that it displays empty (#12336) + // Support: IE<9 + if ( elem.options && jQuery.nodeName( elem, "select" ) ) { + elem.options.length = 0; + } + } + + return this; + }, + + clone: function( dataAndEvents, deepDataAndEvents ) { + dataAndEvents = dataAndEvents == null ? false : dataAndEvents; + deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; + + return this.map(function() { + return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); + }); + }, + + html: function( value ) { + return access( this, function( value ) { + var elem = this[ 0 ] || {}, + i = 0, + l = this.length; + + if ( value === undefined ) { + return elem.nodeType === 1 ? + elem.innerHTML.replace( rinlinejQuery, "" ) : + undefined; + } + + // See if we can take a shortcut and just use innerHTML + if ( typeof value === "string" && !rnoInnerhtml.test( value ) && + ( support.htmlSerialize || !rnoshimcache.test( value ) ) && + ( support.leadingWhitespace || !rleadingWhitespace.test( value ) ) && + !wrapMap[ (rtagName.exec( value ) || [ "", "" ])[ 1 ].toLowerCase() ] ) { + + value = value.replace( rxhtmlTag, "<$1>" ); + + try { + for (; i < l; i++ ) { + // Remove element nodes and prevent memory leaks + elem = this[i] || {}; + if ( elem.nodeType === 1 ) { + jQuery.cleanData( getAll( elem, false ) ); + elem.innerHTML = value; + } + } + + elem = 0; + + // If using innerHTML throws an exception, use the fallback method + } catch(e) {} + } + + if ( elem ) { + this.empty().append( value ); + } + }, null, value, arguments.length ); + }, + + replaceWith: function() { + var arg = arguments[ 0 ]; + + // Make the changes, replacing each context element with the new content + this.domManip( arguments, function( elem ) { + arg = this.parentNode; + + jQuery.cleanData( getAll( this ) ); + + if ( arg ) { + arg.replaceChild( elem, this ); + } + }); + + // Force removal if there was no new content (e.g., from empty arguments) + return arg && (arg.length || arg.nodeType) ? this : this.remove(); + }, + + detach: function( selector ) { + return this.remove( selector, true ); + }, + + domManip: function( args, callback ) { + + // Flatten any nested arrays + args = concat.apply( [], args ); + + var first, node, hasScripts, + scripts, doc, fragment, + i = 0, + l = this.length, + set = this, + iNoClone = l - 1, + value = args[0], + isFunction = jQuery.isFunction( value ); + + // We can't cloneNode fragments that contain checked, in WebKit + if ( isFunction || + ( l > 1 && typeof value === "string" && + !support.checkClone && rchecked.test( value ) ) ) { + return this.each(function( index ) { + var self = set.eq( index ); + if ( isFunction ) { + args[0] = value.call( this, index, self.html() ); + } + self.domManip( args, callback ); + }); + } + + if ( l ) { + fragment = jQuery.buildFragment( args, this[ 0 ].ownerDocument, false, this ); + first = fragment.firstChild; + + if ( fragment.childNodes.length === 1 ) { + fragment = first; + } + + if ( first ) { + scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); + hasScripts = scripts.length; + + // Use the original fragment for the last item instead of the first because it can end up + // being emptied incorrectly in certain situations (#8070). + for ( ; i < l; i++ ) { + node = fragment; + + if ( i !== iNoClone ) { + node = jQuery.clone( node, true, true ); + + // Keep references to cloned scripts for later restoration + if ( hasScripts ) { + jQuery.merge( scripts, getAll( node, "script" ) ); + } + } + + callback.call( this[i], node, i ); + } + + if ( hasScripts ) { + doc = scripts[ scripts.length - 1 ].ownerDocument; + + // Reenable scripts + jQuery.map( scripts, restoreScript ); + + // Evaluate executable scripts on first document insertion + for ( i = 0; i < hasScripts; i++ ) { + node = scripts[ i ]; + if ( rscriptType.test( node.type || "" ) && + !jQuery._data( node, "globalEval" ) && jQuery.contains( doc, node ) ) { + + if ( node.src ) { + // Optional AJAX dependency, but won't run scripts if not present + if ( jQuery._evalUrl ) { + jQuery._evalUrl( node.src ); + } + } else { + jQuery.globalEval( ( node.text || node.textContent || node.innerHTML || "" ).replace( rcleanScript, "" ) ); + } + } + } + } + + // Fix #11809: Avoid leaking memory + fragment = first = null; + } + } + + return this; + } +}); + +jQuery.each({ + appendTo: "append", + prependTo: "prepend", + insertBefore: "before", + insertAfter: "after", + replaceAll: "replaceWith" +}, function( name, original ) { + jQuery.fn[ name ] = function( selector ) { + var elems, + i = 0, + ret = [], + insert = jQuery( selector ), + last = insert.length - 1; + + for ( ; i <= last; i++ ) { + elems = i === last ? this : this.clone(true); + jQuery( insert[i] )[ original ]( elems ); + + // Modern browsers can apply jQuery collections as arrays, but oldIE needs a .get() + push.apply( ret, elems.get() ); + } + + return this.pushStack( ret ); + }; +}); + + +var iframe, + elemdisplay = {}; + +/** + * Retrieve the actual display of a element + * @param {String} name nodeName of the element + * @param {Object} doc Document object + */ +// Called only from within defaultDisplay +function actualDisplay( name, doc ) { + var style, + elem = jQuery( doc.createElement( name ) ).appendTo( doc.body ), + + // getDefaultComputedStyle might be reliably used only on attached element + display = window.getDefaultComputedStyle && ( style = window.getDefaultComputedStyle( elem[ 0 ] ) ) ? + + // Use of this method is a temporary fix (more like optmization) until something better comes along, + // since it was removed from specification and supported only in FF + style.display : jQuery.css( elem[ 0 ], "display" ); + + // We don't have any data stored on the element, + // so use "detach" method as fast way to get rid of the element + elem.detach(); + + return display; +} + +/** + * Try to determine the default display value of an element + * @param {String} nodeName + */ +function defaultDisplay( nodeName ) { + var doc = document, + display = elemdisplay[ nodeName ]; + + if ( !display ) { + display = actualDisplay( nodeName, doc ); + + // If the simple way fails, read from inside an iframe + if ( display === "none" || !display ) { + + // Use the already-created iframe if possible + iframe = (iframe || jQuery( "