exercism-analysis 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/exercism-analysis.gemspec +30 -0
- data/lib/exercism-analysis.rb +38 -0
- data/lib/exercism-analysis/adapters/adapter.rb +23 -0
- data/lib/exercism-analysis/adapters/clojure.rb +13 -0
- data/lib/exercism-analysis/adapters/go.rb +19 -0
- data/lib/exercism-analysis/adapters/javascript.rb +13 -0
- data/lib/exercism-analysis/adapters/python.rb +13 -0
- data/lib/exercism-analysis/adapters/ruby.rb +19 -0
- data/lib/exercism-analysis/analysis.rb +18 -0
- data/lib/exercism-analysis/analyzers/analyzer.rb +54 -0
- data/lib/exercism-analysis/analyzers/clojure/kibit.rb +25 -0
- data/lib/exercism-analysis/analyzers/go/golint.rb +23 -0
- data/lib/exercism-analysis/analyzers/javascript/jslint.rb +24 -0
- data/lib/exercism-analysis/analyzers/python/pylint.rb +24 -0
- data/lib/exercism-analysis/analyzers/ruby/control_flow.rb +21 -0
- data/lib/exercism-analysis/analyzers/ruby/enumerable_condition.rb +21 -0
- data/lib/exercism-analysis/analyzers/ruby/for_loop.rb +29 -0
- data/lib/exercism-analysis/analyzers/ruby/indentation.rb +21 -0
- data/lib/exercism-analysis/analyzers/ruby/iter_mutation.rb +37 -0
- data/lib/exercism-analysis/analyzers/ruby/output.rb +20 -0
- data/lib/exercism-analysis/analyzers/ruby/range.rb +28 -0
- data/lib/exercism-analysis/analyzers/ruby/roodi.rb +19 -0
- data/lib/exercism-analysis/analyzers/ruby/send.rb +25 -0
- data/lib/exercism-analysis/analyzers/ruby/shebang.rb +23 -0
- data/lib/exercism-analysis/analyzers/ruby/tab.rb +38 -0
- data/lib/exercism-analysis/processors/call_processor.rb +39 -0
- data/lib/exercism-analysis/processors/control_flow_processor.rb +27 -0
- data/lib/exercism-analysis/processors/enumerable_condition_processor.rb +31 -0
- data/lib/exercism-analysis/processors/for_loop_processor.rb +21 -0
- data/lib/exercism-analysis/processors/indentation_processor.rb +69 -0
- data/lib/exercism-analysis/processors/iter_mutation_processor.rb +50 -0
- data/lib/exercism-analysis/processors/processor.rb +34 -0
- data/lib/exercism-analysis/processors/range_processor.rb +23 -0
- data/lib/exercism-analysis/processors/send_processor.rb +23 -0
- data/lib/exercism-analysis/templates/each_to_map.rb +29 -0
- data/lib/exercism-analysis/templates/each_to_select.rb +31 -0
- data/lib/exercism-analysis/templates/range_exclusive.rb +19 -0
- data/lib/exercism-analysis/templates/template.rb +29 -0
- data/vendor/clojure/kibit-runner/LICENSE +214 -0
- data/vendor/clojure/kibit-runner/project.clj +10 -0
- data/vendor/clojure/kibit-runner/src/kibit_runner/core.clj +17 -0
- data/vendor/clojure/kibit-runner/target/kibit-runner-0.1.0-SNAPSHOT-standalone.jar +0 -0
- data/vendor/clojure/kibit-runner/target/kibit-runner-0.1.0-SNAPSHOT.jar +0 -0
- data/vendor/clojure/kibit-runner/target/stale/extract-native.dependencies +1 -0
- data/vendor/go/src/github.com/golang/lint/LICENSE +27 -0
- data/vendor/go/src/github.com/golang/lint/README +59 -0
- data/vendor/go/src/github.com/golang/lint/golint/golint.go +67 -0
- data/vendor/go/src/github.com/golang/lint/lint.go +1061 -0
- data/vendor/go/src/runner/golint_runner.go +23 -0
- data/vendor/javascript/jshint_runner.js +6 -0
- data/vendor/javascript/node_modules/jshint/README.md +47 -0
- data/vendor/javascript/node_modules/jshint/bin/apply +6 -0
- data/vendor/javascript/node_modules/jshint/bin/build +36 -0
- data/vendor/javascript/node_modules/jshint/bin/changelog +36 -0
- data/vendor/javascript/node_modules/jshint/bin/jshint +3 -0
- data/vendor/javascript/node_modules/jshint/bin/land +34 -0
- data/vendor/javascript/node_modules/jshint/data/ascii-identifier-data.js +22 -0
- data/vendor/javascript/node_modules/jshint/data/non-ascii-identifier-part-only.js +1570 -0
- data/vendor/javascript/node_modules/jshint/data/non-ascii-identifier-start.js +48477 -0
- data/vendor/javascript/node_modules/jshint/dist/jshint-rhino.js +60642 -0
- data/vendor/javascript/node_modules/jshint/dist/jshint.js +60525 -0
- data/vendor/javascript/node_modules/jshint/node_modules/cli/README.md +196 -0
- data/vendor/javascript/node_modules/jshint/node_modules/cli/cli.js +1139 -0
- data/vendor/javascript/node_modules/jshint/node_modules/cli/examples/cat.js +17 -0
- data/vendor/javascript/node_modules/jshint/node_modules/cli/examples/command.js +16 -0
- data/vendor/javascript/node_modules/jshint/node_modules/cli/examples/echo.js +54 -0
- data/vendor/javascript/node_modules/jshint/node_modules/cli/examples/glob.js +6 -0
- data/vendor/javascript/node_modules/jshint/node_modules/cli/examples/long_desc.js +20 -0
- data/vendor/javascript/node_modules/jshint/node_modules/cli/examples/progress.js +11 -0
- data/vendor/javascript/node_modules/jshint/node_modules/cli/examples/sort.js +18 -0
- data/vendor/javascript/node_modules/jshint/node_modules/cli/examples/spinner.js +9 -0
- data/vendor/javascript/node_modules/jshint/node_modules/cli/examples/static.coffee +27 -0
- data/vendor/javascript/node_modules/jshint/node_modules/cli/examples/static.js +25 -0
- data/vendor/javascript/node_modules/jshint/node_modules/cli/index.js +1 -0
- data/vendor/javascript/node_modules/jshint/node_modules/cli/node_modules/glob/LICENSE +27 -0
- data/vendor/javascript/node_modules/jshint/node_modules/cli/node_modules/glob/README.md +250 -0
- data/vendor/javascript/node_modules/jshint/node_modules/cli/node_modules/glob/examples/g.js +9 -0
- data/vendor/javascript/node_modules/jshint/node_modules/cli/node_modules/glob/examples/usr-local.js +9 -0
- data/vendor/javascript/node_modules/jshint/node_modules/cli/node_modules/glob/glob.js +728 -0
- data/vendor/javascript/node_modules/jshint/node_modules/cli/node_modules/glob/node_modules/inherits/LICENSE +16 -0
- data/vendor/javascript/node_modules/jshint/node_modules/cli/node_modules/glob/node_modules/inherits/README.md +42 -0
- data/vendor/javascript/node_modules/jshint/node_modules/cli/node_modules/glob/node_modules/inherits/inherits.js +1 -0
- data/vendor/javascript/node_modules/jshint/node_modules/cli/node_modules/glob/node_modules/inherits/inherits_browser.js +23 -0
- data/vendor/javascript/node_modules/jshint/node_modules/cli/node_modules/glob/node_modules/inherits/package.json +51 -0
- data/vendor/javascript/node_modules/jshint/node_modules/cli/node_modules/glob/node_modules/inherits/test.js +25 -0
- data/vendor/javascript/node_modules/jshint/node_modules/cli/node_modules/glob/package.json +58 -0
- data/vendor/javascript/node_modules/jshint/node_modules/cli/node_modules/glob/test/00-setup.js +176 -0
- data/vendor/javascript/node_modules/jshint/node_modules/cli/node_modules/glob/test/bash-comparison.js +63 -0
- data/vendor/javascript/node_modules/jshint/node_modules/cli/node_modules/glob/test/bash-results.json +351 -0
- data/vendor/javascript/node_modules/jshint/node_modules/cli/node_modules/glob/test/cwd-test.js +55 -0
- data/vendor/javascript/node_modules/jshint/node_modules/cli/node_modules/glob/test/globstar-match.js +19 -0
- data/vendor/javascript/node_modules/jshint/node_modules/cli/node_modules/glob/test/mark.js +118 -0
- data/vendor/javascript/node_modules/jshint/node_modules/cli/node_modules/glob/test/new-glob-optional-options.js +10 -0
- data/vendor/javascript/node_modules/jshint/node_modules/cli/node_modules/glob/test/nocase-nomagic.js +113 -0
- data/vendor/javascript/node_modules/jshint/node_modules/cli/node_modules/glob/test/pause-resume.js +73 -0
- data/vendor/javascript/node_modules/jshint/node_modules/cli/node_modules/glob/test/readme-issue.js +36 -0
- data/vendor/javascript/node_modules/jshint/node_modules/cli/node_modules/glob/test/root-nomount.js +39 -0
- data/vendor/javascript/node_modules/jshint/node_modules/cli/node_modules/glob/test/root.js +46 -0
- data/vendor/javascript/node_modules/jshint/node_modules/cli/node_modules/glob/test/stat.js +32 -0
- data/vendor/javascript/node_modules/jshint/node_modules/cli/node_modules/glob/test/zz-cleanup.js +11 -0
- data/vendor/javascript/node_modules/jshint/node_modules/cli/package.json +70 -0
- data/vendor/javascript/node_modules/jshint/node_modules/console-browserify/LICENCE +19 -0
- data/vendor/javascript/node_modules/jshint/node_modules/console-browserify/README.md +33 -0
- data/vendor/javascript/node_modules/jshint/node_modules/console-browserify/index.js +86 -0
- data/vendor/javascript/node_modules/jshint/node_modules/console-browserify/node_modules/date-now/LICENCE +19 -0
- data/vendor/javascript/node_modules/jshint/node_modules/console-browserify/node_modules/date-now/README.md +45 -0
- data/vendor/javascript/node_modules/jshint/node_modules/console-browserify/node_modules/date-now/index.js +5 -0
- data/vendor/javascript/node_modules/jshint/node_modules/console-browserify/node_modules/date-now/package.json +89 -0
- data/vendor/javascript/node_modules/jshint/node_modules/console-browserify/node_modules/date-now/seed.js +16 -0
- data/vendor/javascript/node_modules/jshint/node_modules/console-browserify/node_modules/date-now/test/index.js +28 -0
- data/vendor/javascript/node_modules/jshint/node_modules/console-browserify/node_modules/date-now/test/static/index.html +10 -0
- data/vendor/javascript/node_modules/jshint/node_modules/console-browserify/package.json +88 -0
- data/vendor/javascript/node_modules/jshint/node_modules/console-browserify/test/index.js +67 -0
- data/vendor/javascript/node_modules/jshint/node_modules/console-browserify/test/static/index.html +12 -0
- data/vendor/javascript/node_modules/jshint/node_modules/console-browserify/test/static/test-adapter.js +53 -0
- data/vendor/javascript/node_modules/jshint/node_modules/exit/Gruntfile.js +48 -0
- data/vendor/javascript/node_modules/jshint/node_modules/exit/LICENSE-MIT +22 -0
- data/vendor/javascript/node_modules/jshint/node_modules/exit/README.md +75 -0
- data/vendor/javascript/node_modules/jshint/node_modules/exit/lib/exit.js +41 -0
- data/vendor/javascript/node_modules/jshint/node_modules/exit/package.json +69 -0
- data/vendor/javascript/node_modules/jshint/node_modules/exit/test/exit_test.js +121 -0
- data/vendor/javascript/node_modules/jshint/node_modules/exit/test/fixtures/10-stderr.txt +10 -0
- data/vendor/javascript/node_modules/jshint/node_modules/exit/test/fixtures/10-stdout-stderr.txt +20 -0
- data/vendor/javascript/node_modules/jshint/node_modules/exit/test/fixtures/10-stdout.txt +10 -0
- data/vendor/javascript/node_modules/jshint/node_modules/exit/test/fixtures/100-stderr.txt +100 -0
- data/vendor/javascript/node_modules/jshint/node_modules/exit/test/fixtures/100-stdout-stderr.txt +200 -0
- data/vendor/javascript/node_modules/jshint/node_modules/exit/test/fixtures/100-stdout.txt +100 -0
- data/vendor/javascript/node_modules/jshint/node_modules/exit/test/fixtures/1000-stderr.txt +1000 -0
- data/vendor/javascript/node_modules/jshint/node_modules/exit/test/fixtures/1000-stdout-stderr.txt +2000 -0
- data/vendor/javascript/node_modules/jshint/node_modules/exit/test/fixtures/1000-stdout.txt +1000 -0
- data/vendor/javascript/node_modules/jshint/node_modules/exit/test/fixtures/create-files.sh +8 -0
- data/vendor/javascript/node_modules/jshint/node_modules/exit/test/fixtures/log-broken.js +23 -0
- data/vendor/javascript/node_modules/jshint/node_modules/exit/test/fixtures/log.js +25 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/LICENSE +18 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/README.md +83 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/lib/CollectingHandler.js +55 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/lib/FeedHandler.js +95 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/lib/Parser.js +337 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/lib/ProxyHandler.js +27 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/lib/Stream.js +35 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/lib/Tokenizer.js +891 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/lib/WritableStream.js +21 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/lib/index.js +68 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/domelementtype/LICENSE +11 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/domelementtype/index.js +14 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/domelementtype/package.json +40 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/domelementtype/readme.md +1 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/LICENSE +11 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/index.js +211 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/package.json +68 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/readme.md +102 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/01-basic.json +57 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/02-single_tag_1.json +21 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/03-single_tag_2.json +21 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/04-unescaped_in_script.json +27 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/05-tags_in_comment.json +18 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/06-comment_in_script.json +18 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/07-unescaped_in_style.json +20 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/08-extra_spaces_in_tag.json +20 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/09-unquoted_attrib.json +20 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/10-singular_attribute.json +15 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/11-text_outside_tags.json +40 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/12-text_only.json +11 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/13-comment_in_text.json +19 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/14-comment_in_text_in_script.json +18 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/15-non-verbose.json +22 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/16-normalize_whitespace.json +47 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/17-xml_namespace.json +18 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/18-enforce_empty_tags.json +16 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/19-ignore_empty_tags.json +20 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/20-template_script_tags.json +20 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/21-conditional_comments.json +15 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/22-lowercase_tags.json +41 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/23-dom-lvl1.json +121 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/tests.js +58 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/domutils/LICENSE +11 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/domutils/index.js +14 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/domutils/lib/helpers.js +141 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/domutils/lib/legacy.js +87 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/domutils/lib/manipulation.js +77 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/domutils/lib/querying.js +94 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/domutils/lib/stringify.js +93 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/domutils/lib/traversal.js +24 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/domutils/package.json +71 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/domutils/readme.md +1 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/domutils/test/fixture.js +6 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/domutils/test/tests/helpers.js +89 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/domutils/test/tests/legacy.js +119 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/domutils/test/utils.js +9 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/entities/LICENSE +11 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/entities/index.js +31 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/entities/lib/decode.js +72 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/entities/lib/decode_codepoint.js +26 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/entities/lib/encode.js +48 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/entities/maps/decode.json +1 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/entities/maps/entities.json +1 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/entities/maps/legacy.json +1 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/entities/maps/xml.json +1 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/entities/package.json +79 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/entities/readme.md +31 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/entities/test/mocha.opts +2 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/entities/test/test.js +150 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/LICENSE +18 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/README.md +15 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/duplex.js +1 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/float.patch +923 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/lib/_stream_duplex.js +89 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/lib/_stream_passthrough.js +46 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/lib/_stream_readable.js +944 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/lib/_stream_transform.js +209 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/lib/_stream_writable.js +472 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/node_modules/core-util-is/README.md +3 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/node_modules/core-util-is/float.patch +604 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/node_modules/core-util-is/lib/util.js +107 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/node_modules/core-util-is/package.json +53 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/node_modules/core-util-is/util.js +106 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/node_modules/inherits/LICENSE +16 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/node_modules/inherits/README.md +42 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/node_modules/inherits/inherits.js +1 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/node_modules/inherits/inherits_browser.js +23 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/node_modules/inherits/package.json +51 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/node_modules/inherits/test.js +25 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/node_modules/isarray/README.md +54 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/node_modules/isarray/build/build.js +209 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/node_modules/isarray/component.json +19 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/node_modules/isarray/index.js +3 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/node_modules/isarray/package.json +54 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/node_modules/string_decoder/LICENSE +20 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/node_modules/string_decoder/README.md +7 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/node_modules/string_decoder/index.js +200 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/node_modules/string_decoder/package.json +53 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/package.json +68 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/passthrough.js +1 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/readable.js +7 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/transform.js +1 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/writable.js +1 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/package.json +90 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/test/01-events.js +9 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/test/02-stream.js +23 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/test/03-feed.js +19 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/test/Documents/Atom_Example.xml +25 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/test/Documents/Attributes.html +16 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/test/Documents/Basic.html +1 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/test/Documents/RDF_Example.xml +63 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/test/Documents/RSS_Example.xml +48 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/test/Events/01-simple.json +44 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/test/Events/02-template.json +63 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/test/Events/03-lowercase_tags.json +46 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/test/Events/04-cdata.json +50 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/test/Events/05-cdata-special.json +35 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/test/Events/06-leading-lt.json +16 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/test/Events/07-self-closing.json +67 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/test/Events/08-implicit-close-tags.json +59 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/test/Events/09-attributes.json +68 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/test/Events/10-crazy-attrib.json +52 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/test/Events/11-script_in_script.json +54 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/test/Events/12-long-comment-end.json +20 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/test/Events/13-long-cdata-end.json +22 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/test/Events/14-implicit-open-tags.json +27 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/test/Events/15-lt-whitespace.json +16 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/test/Events/16-double_attribs.json +45 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/test/Events/17-numeric_entities.json +16 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/test/Events/18-legacy_entities.json +16 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/test/Events/19-named_entities.json +16 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/test/Events/20-xml_entities.json +16 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/test/Events/21-entity_in_attribute.json +38 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/test/Events/22-double_brackets.json +41 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/test/Events/23-legacy_entity_fail.json +16 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/test/Events/24-special_special.json +133 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/test/Events/25-empty_tag_name.json +13 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/test/Events/26-not-quite-closed.json +35 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/test/Events/27-entities_in_attributes.json +62 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/test/Events/28-cdata_in_html.json +9 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/test/Events/29-comment_edge-cases.json +18 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/test/Events/30-cdata_edge-cases.json +22 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/test/Feeds/01-rss.js +34 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/test/Feeds/02-atom.js +18 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/test/Feeds/03-rdf.js +20 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/test/Stream/01-basic.json +83 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/test/Stream/02-RSS.json +1093 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/test/Stream/03-Atom.json +644 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/test/Stream/04-RDF.json +1399 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/test/Stream/05-Attributes.json +354 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/test/api.js +63 -0
- data/vendor/javascript/node_modules/jshint/node_modules/htmlparser2/test/test-helper.js +83 -0
- data/vendor/javascript/node_modules/jshint/node_modules/minimatch/LICENSE +23 -0
- data/vendor/javascript/node_modules/jshint/node_modules/minimatch/README.md +218 -0
- data/vendor/javascript/node_modules/jshint/node_modules/minimatch/minimatch.js +1061 -0
- data/vendor/javascript/node_modules/jshint/node_modules/minimatch/node_modules/lru-cache/CONTRIBUTORS +14 -0
- data/vendor/javascript/node_modules/jshint/node_modules/minimatch/node_modules/lru-cache/LICENSE +23 -0
- data/vendor/javascript/node_modules/jshint/node_modules/minimatch/node_modules/lru-cache/README.md +97 -0
- data/vendor/javascript/node_modules/jshint/node_modules/minimatch/node_modules/lru-cache/lib/lru-cache.js +252 -0
- data/vendor/javascript/node_modules/jshint/node_modules/minimatch/node_modules/lru-cache/package.json +50 -0
- data/vendor/javascript/node_modules/jshint/node_modules/minimatch/node_modules/lru-cache/test/basic.js +369 -0
- data/vendor/javascript/node_modules/jshint/node_modules/minimatch/node_modules/lru-cache/test/foreach.js +52 -0
- data/vendor/javascript/node_modules/jshint/node_modules/minimatch/node_modules/lru-cache/test/memory-leak.js +50 -0
- data/vendor/javascript/node_modules/jshint/node_modules/minimatch/node_modules/sigmund/LICENSE +27 -0
- data/vendor/javascript/node_modules/jshint/node_modules/minimatch/node_modules/sigmund/README.md +53 -0
- data/vendor/javascript/node_modules/jshint/node_modules/minimatch/node_modules/sigmund/bench.js +283 -0
- data/vendor/javascript/node_modules/jshint/node_modules/minimatch/node_modules/sigmund/package.json +58 -0
- data/vendor/javascript/node_modules/jshint/node_modules/minimatch/node_modules/sigmund/sigmund.js +39 -0
- data/vendor/javascript/node_modules/jshint/node_modules/minimatch/node_modules/sigmund/test/basic.js +24 -0
- data/vendor/javascript/node_modules/jshint/node_modules/minimatch/package.json +57 -0
- data/vendor/javascript/node_modules/jshint/node_modules/minimatch/test/basic.js +399 -0
- data/vendor/javascript/node_modules/jshint/node_modules/minimatch/test/brace-expand.js +33 -0
- data/vendor/javascript/node_modules/jshint/node_modules/minimatch/test/caching.js +14 -0
- data/vendor/javascript/node_modules/jshint/node_modules/minimatch/test/defaults.js +274 -0
- data/vendor/javascript/node_modules/jshint/node_modules/minimatch/test/extglob-ending-with-state-char.js +8 -0
- data/vendor/javascript/node_modules/jshint/node_modules/shelljs/LICENSE +26 -0
- data/vendor/javascript/node_modules/jshint/node_modules/shelljs/README.md +569 -0
- data/vendor/javascript/node_modules/jshint/node_modules/shelljs/bin/shjs +51 -0
- data/vendor/javascript/node_modules/jshint/node_modules/shelljs/global.js +3 -0
- data/vendor/javascript/node_modules/jshint/node_modules/shelljs/make.js +47 -0
- data/vendor/javascript/node_modules/jshint/node_modules/shelljs/package.json +61 -0
- data/vendor/javascript/node_modules/jshint/node_modules/shelljs/scripts/generate-docs.js +21 -0
- data/vendor/javascript/node_modules/jshint/node_modules/shelljs/scripts/run-tests.js +50 -0
- data/vendor/javascript/node_modules/jshint/node_modules/shelljs/shell.js +157 -0
- data/vendor/javascript/node_modules/jshint/node_modules/shelljs/src/cat.js +43 -0
- data/vendor/javascript/node_modules/jshint/node_modules/shelljs/src/cd.js +19 -0
- data/vendor/javascript/node_modules/jshint/node_modules/shelljs/src/chmod.js +208 -0
- data/vendor/javascript/node_modules/jshint/node_modules/shelljs/src/common.js +203 -0
- data/vendor/javascript/node_modules/jshint/node_modules/shelljs/src/cp.js +201 -0
- data/vendor/javascript/node_modules/jshint/node_modules/shelljs/src/dirs.js +191 -0
- data/vendor/javascript/node_modules/jshint/node_modules/shelljs/src/echo.js +20 -0
- data/vendor/javascript/node_modules/jshint/node_modules/shelljs/src/error.js +10 -0
- data/vendor/javascript/node_modules/jshint/node_modules/shelljs/src/exec.js +181 -0
- data/vendor/javascript/node_modules/jshint/node_modules/shelljs/src/find.js +51 -0
- data/vendor/javascript/node_modules/jshint/node_modules/shelljs/src/grep.js +52 -0
- data/vendor/javascript/node_modules/jshint/node_modules/shelljs/src/ln.js +53 -0
- data/vendor/javascript/node_modules/jshint/node_modules/shelljs/src/ls.js +126 -0
- data/vendor/javascript/node_modules/jshint/node_modules/shelljs/src/mkdir.js +68 -0
- data/vendor/javascript/node_modules/jshint/node_modules/shelljs/src/mv.js +80 -0
- data/vendor/javascript/node_modules/jshint/node_modules/shelljs/src/popd.js +1 -0
- data/vendor/javascript/node_modules/jshint/node_modules/shelljs/src/pushd.js +1 -0
- data/vendor/javascript/node_modules/jshint/node_modules/shelljs/src/pwd.js +11 -0
- data/vendor/javascript/node_modules/jshint/node_modules/shelljs/src/rm.js +145 -0
- data/vendor/javascript/node_modules/jshint/node_modules/shelljs/src/sed.js +43 -0
- data/vendor/javascript/node_modules/jshint/node_modules/shelljs/src/tempdir.js +56 -0
- data/vendor/javascript/node_modules/jshint/node_modules/shelljs/src/test.js +85 -0
- data/vendor/javascript/node_modules/jshint/node_modules/shelljs/src/to.js +29 -0
- data/vendor/javascript/node_modules/jshint/node_modules/shelljs/src/toEnd.js +29 -0
- data/vendor/javascript/node_modules/jshint/node_modules/shelljs/src/which.js +83 -0
- data/vendor/javascript/node_modules/jshint/node_modules/strip-json-comments/cli.js +41 -0
- data/vendor/javascript/node_modules/jshint/node_modules/strip-json-comments/package.json +76 -0
- data/vendor/javascript/node_modules/jshint/node_modules/strip-json-comments/readme.md +74 -0
- data/vendor/javascript/node_modules/jshint/node_modules/strip-json-comments/strip-json-comments.js +64 -0
- data/vendor/javascript/node_modules/jshint/node_modules/underscore/LICENSE +23 -0
- data/vendor/javascript/node_modules/jshint/node_modules/underscore/README.md +22 -0
- data/vendor/javascript/node_modules/jshint/node_modules/underscore/package.json +66 -0
- data/vendor/javascript/node_modules/jshint/node_modules/underscore/underscore-min.js +6 -0
- data/vendor/javascript/node_modules/jshint/node_modules/underscore/underscore.js +1343 -0
- data/vendor/javascript/node_modules/jshint/package.json +80 -0
- data/vendor/javascript/node_modules/jshint/src/cli.js +731 -0
- data/vendor/javascript/node_modules/jshint/src/jshint.js +5023 -0
- data/vendor/javascript/node_modules/jshint/src/lex.js +1650 -0
- data/vendor/javascript/node_modules/jshint/src/messages.js +223 -0
- data/vendor/javascript/node_modules/jshint/src/platforms/rhino.js +115 -0
- data/vendor/javascript/node_modules/jshint/src/reg.js +38 -0
- data/vendor/javascript/node_modules/jshint/src/reporters/checkstyle.js +81 -0
- data/vendor/javascript/node_modules/jshint/src/reporters/default.js +34 -0
- data/vendor/javascript/node_modules/jshint/src/reporters/jslint_xml.js +57 -0
- data/vendor/javascript/node_modules/jshint/src/reporters/non_error.js +52 -0
- data/vendor/javascript/node_modules/jshint/src/state.js +28 -0
- data/vendor/javascript/node_modules/jshint/src/style.js +143 -0
- data/vendor/javascript/node_modules/jshint/src/vars.js +658 -0
- data/vendor/python/astroid/COPYING +339 -0
- data/vendor/python/astroid/COPYING.LESSER +510 -0
- data/vendor/python/astroid/ChangeLog +574 -0
- data/vendor/python/astroid/MANIFEST.in +9 -0
- data/vendor/python/astroid/README +56 -0
- data/vendor/python/astroid/README.Python3 +26 -0
- data/vendor/python/astroid/__init__.py +118 -0
- data/vendor/python/astroid/__init__.pyc +0 -0
- data/vendor/python/astroid/__pkginfo__.py +48 -0
- data/vendor/python/astroid/__pkginfo__.pyc +0 -0
- data/vendor/python/astroid/announce.txt +23 -0
- data/vendor/python/astroid/as_string.py +496 -0
- data/vendor/python/astroid/as_string.pyc +0 -0
- data/vendor/python/astroid/bases.py +618 -0
- data/vendor/python/astroid/bases.pyc +0 -0
- data/vendor/python/astroid/brain/py2gi.py +159 -0
- data/vendor/python/astroid/brain/py2gi.pyc +0 -0
- data/vendor/python/astroid/brain/py2mechanize.py +20 -0
- data/vendor/python/astroid/brain/py2mechanize.pyc +0 -0
- data/vendor/python/astroid/brain/py2qt4.py +25 -0
- data/vendor/python/astroid/brain/py2qt4.pyc +0 -0
- data/vendor/python/astroid/brain/py2stdlib.py +252 -0
- data/vendor/python/astroid/brain/py2stdlib.pyc +0 -0
- data/vendor/python/astroid/builder.py +238 -0
- data/vendor/python/astroid/builder.pyc +0 -0
- data/vendor/python/astroid/exceptions.py +51 -0
- data/vendor/python/astroid/exceptions.pyc +0 -0
- data/vendor/python/astroid/inference.py +393 -0
- data/vendor/python/astroid/inference.pyc +0 -0
- data/vendor/python/astroid/inspector.py +275 -0
- data/vendor/python/astroid/manager.py +336 -0
- data/vendor/python/astroid/manager.pyc +0 -0
- data/vendor/python/astroid/mixins.py +122 -0
- data/vendor/python/astroid/mixins.pyc +0 -0
- data/vendor/python/astroid/node_classes.py +928 -0
- data/vendor/python/astroid/node_classes.pyc +0 -0
- data/vendor/python/astroid/nodes.py +73 -0
- data/vendor/python/astroid/nodes.pyc +0 -0
- data/vendor/python/astroid/protocols.py +322 -0
- data/vendor/python/astroid/protocols.pyc +0 -0
- data/vendor/python/astroid/raw_building.py +361 -0
- data/vendor/python/astroid/raw_building.pyc +0 -0
- data/vendor/python/astroid/rebuilder.py +954 -0
- data/vendor/python/astroid/rebuilder.pyc +0 -0
- data/vendor/python/astroid/scoped_nodes.py +1118 -0
- data/vendor/python/astroid/scoped_nodes.pyc +0 -0
- data/vendor/python/astroid/setup.py +184 -0
- data/vendor/python/astroid/tox.ini +10 -0
- data/vendor/python/astroid/utils.py +236 -0
- data/vendor/python/astroid/utils.pyc +0 -0
- data/vendor/python/logilab/__init__.py +0 -0
- data/vendor/python/logilab/__init__.pyc +0 -0
- data/vendor/python/logilab/common/COPYING +339 -0
- data/vendor/python/logilab/common/COPYING.LESSER +510 -0
- data/vendor/python/logilab/common/ChangeLog +1517 -0
- data/vendor/python/logilab/common/MANIFEST.in +13 -0
- data/vendor/python/logilab/common/README +185 -0
- data/vendor/python/logilab/common/README.Python3 +29 -0
- data/vendor/python/logilab/common/__init__.py +171 -0
- data/vendor/python/logilab/common/__init__.pyc +0 -0
- data/vendor/python/logilab/common/__pkginfo__.py +53 -0
- data/vendor/python/logilab/common/__pkginfo__.pyc +0 -0
- data/vendor/python/logilab/common/announce.txt +25 -0
- data/vendor/python/logilab/common/bin/pytest +7 -0
- data/vendor/python/logilab/common/bin/pytest.bat +17 -0
- data/vendor/python/logilab/common/cache.py +114 -0
- data/vendor/python/logilab/common/changelog.py +236 -0
- data/vendor/python/logilab/common/changelog.pyc +0 -0
- data/vendor/python/logilab/common/clcommands.py +332 -0
- data/vendor/python/logilab/common/cli.py +208 -0
- data/vendor/python/logilab/common/compat.py +243 -0
- data/vendor/python/logilab/common/compat.pyc +0 -0
- data/vendor/python/logilab/common/configuration.py +1094 -0
- data/vendor/python/logilab/common/configuration.pyc +0 -0
- data/vendor/python/logilab/common/contexts.py +5 -0
- data/vendor/python/logilab/common/corbautils.py +117 -0
- data/vendor/python/logilab/common/daemon.py +100 -0
- data/vendor/python/logilab/common/date.py +333 -0
- data/vendor/python/logilab/common/dbf.py +229 -0
- data/vendor/python/logilab/common/debugger.py +210 -0
- data/vendor/python/logilab/common/decorators.py +281 -0
- data/vendor/python/logilab/common/decorators.pyc +0 -0
- data/vendor/python/logilab/common/deprecation.py +188 -0
- data/vendor/python/logilab/common/deprecation.pyc +0 -0
- data/vendor/python/logilab/common/fileutils.py +402 -0
- data/vendor/python/logilab/common/graph.py +276 -0
- data/vendor/python/logilab/common/graph.pyc +0 -0
- data/vendor/python/logilab/common/hg.py +130 -0
- data/vendor/python/logilab/common/interface.py +71 -0
- data/vendor/python/logilab/common/interface.pyc +0 -0
- data/vendor/python/logilab/common/logging_ext.py +193 -0
- data/vendor/python/logilab/common/modutils.py +695 -0
- data/vendor/python/logilab/common/modutils.pyc +0 -0
- data/vendor/python/logilab/common/optik_ext.py +391 -0
- data/vendor/python/logilab/common/optik_ext.pyc +0 -0
- data/vendor/python/logilab/common/optparser.py +90 -0
- data/vendor/python/logilab/common/proc.py +277 -0
- data/vendor/python/logilab/common/pyro_ext.py +180 -0
- data/vendor/python/logilab/common/pytest.py +1177 -0
- data/vendor/python/logilab/common/python-logilab-common.spec +184 -0
- data/vendor/python/logilab/common/registry.py +1113 -0
- data/vendor/python/logilab/common/setup.cfg +3 -0
- data/vendor/python/logilab/common/setup.py +189 -0
- data/vendor/python/logilab/common/shellutils.py +455 -0
- data/vendor/python/logilab/common/sphinx_ext.py +87 -0
- data/vendor/python/logilab/common/sphinxutils.py +122 -0
- data/vendor/python/logilab/common/table.py +925 -0
- data/vendor/python/logilab/common/tasksqueue.py +100 -0
- data/vendor/python/logilab/common/textutils.py +534 -0
- data/vendor/python/logilab/common/textutils.pyc +0 -0
- data/vendor/python/logilab/common/tree.py +369 -0
- data/vendor/python/logilab/common/tree.pyc +0 -0
- data/vendor/python/logilab/common/umessage.py +190 -0
- data/vendor/python/logilab/common/ureports/__init__.py +174 -0
- data/vendor/python/logilab/common/ureports/__init__.pyc +0 -0
- data/vendor/python/logilab/common/ureports/docbook_writer.py +139 -0
- data/vendor/python/logilab/common/ureports/html_writer.py +131 -0
- data/vendor/python/logilab/common/ureports/html_writer.pyc +0 -0
- data/vendor/python/logilab/common/ureports/nodes.py +201 -0
- data/vendor/python/logilab/common/ureports/nodes.pyc +0 -0
- data/vendor/python/logilab/common/ureports/text_writer.py +140 -0
- data/vendor/python/logilab/common/ureports/text_writer.pyc +0 -0
- data/vendor/python/logilab/common/urllib2ext.py +87 -0
- data/vendor/python/logilab/common/vcgutils.py +216 -0
- data/vendor/python/logilab/common/visitor.py +107 -0
- data/vendor/python/logilab/common/visitor.pyc +0 -0
- data/vendor/python/logilab/common/xmlrpcutils.py +131 -0
- data/vendor/python/logilab/common/xmlutils.py +61 -0
- data/vendor/python/pylint/CONTRIBUTORS.txt +38 -0
- data/vendor/python/pylint/COPYING +340 -0
- data/vendor/python/pylint/ChangeLog +1437 -0
- data/vendor/python/pylint/DEPENDS +3 -0
- data/vendor/python/pylint/MANIFEST.in +14 -0
- data/vendor/python/pylint/README +50 -0
- data/vendor/python/pylint/README.Python3 +37 -0
- data/vendor/python/pylint/__init__.py +44 -0
- data/vendor/python/pylint/__init__.pyc +0 -0
- data/vendor/python/pylint/__main__.py +3 -0
- data/vendor/python/pylint/__pkginfo__.py +74 -0
- data/vendor/python/pylint/__pkginfo__.pyc +0 -0
- data/vendor/python/pylint/bin/epylint +3 -0
- data/vendor/python/pylint/bin/epylint.bat +5 -0
- data/vendor/python/pylint/bin/pylint +3 -0
- data/vendor/python/pylint/bin/pylint-gui +3 -0
- data/vendor/python/pylint/bin/pylint-gui.bat +5 -0
- data/vendor/python/pylint/bin/pylint.bat +5 -0
- data/vendor/python/pylint/bin/pyreverse +3 -0
- data/vendor/python/pylint/bin/pyreverse.bat +5 -0
- data/vendor/python/pylint/bin/symilar +3 -0
- data/vendor/python/pylint/bin/symilar.bat +5 -0
- data/vendor/python/pylint/checkers/__init__.py +145 -0
- data/vendor/python/pylint/checkers/__init__.pyc +0 -0
- data/vendor/python/pylint/checkers/base.py +1141 -0
- data/vendor/python/pylint/checkers/base.pyc +0 -0
- data/vendor/python/pylint/checkers/classes.py +792 -0
- data/vendor/python/pylint/checkers/classes.pyc +0 -0
- data/vendor/python/pylint/checkers/design_analysis.py +367 -0
- data/vendor/python/pylint/checkers/design_analysis.pyc +0 -0
- data/vendor/python/pylint/checkers/exceptions.py +306 -0
- data/vendor/python/pylint/checkers/exceptions.pyc +0 -0
- data/vendor/python/pylint/checkers/format.py +943 -0
- data/vendor/python/pylint/checkers/format.pyc +0 -0
- data/vendor/python/pylint/checkers/imports.py +394 -0
- data/vendor/python/pylint/checkers/imports.pyc +0 -0
- data/vendor/python/pylint/checkers/logging.py +213 -0
- data/vendor/python/pylint/checkers/logging.pyc +0 -0
- data/vendor/python/pylint/checkers/misc.py +90 -0
- data/vendor/python/pylint/checkers/misc.pyc +0 -0
- data/vendor/python/pylint/checkers/newstyle.py +151 -0
- data/vendor/python/pylint/checkers/newstyle.pyc +0 -0
- data/vendor/python/pylint/checkers/raw_metrics.py +129 -0
- data/vendor/python/pylint/checkers/raw_metrics.pyc +0 -0
- data/vendor/python/pylint/checkers/similar.py +365 -0
- data/vendor/python/pylint/checkers/similar.pyc +0 -0
- data/vendor/python/pylint/checkers/stdlib.py +69 -0
- data/vendor/python/pylint/checkers/stdlib.pyc +0 -0
- data/vendor/python/pylint/checkers/strings.py +304 -0
- data/vendor/python/pylint/checkers/strings.pyc +0 -0
- data/vendor/python/pylint/checkers/typecheck.py +451 -0
- data/vendor/python/pylint/checkers/typecheck.pyc +0 -0
- data/vendor/python/pylint/checkers/utils.py +416 -0
- data/vendor/python/pylint/checkers/utils.pyc +0 -0
- data/vendor/python/pylint/checkers/variables.py +741 -0
- data/vendor/python/pylint/checkers/variables.pyc +0 -0
- data/vendor/python/pylint/config.py +156 -0
- data/vendor/python/pylint/config.pyc +0 -0
- data/vendor/python/pylint/epylint.py +175 -0
- data/vendor/python/pylint/gui.py +508 -0
- data/vendor/python/pylint/interfaces.py +72 -0
- data/vendor/python/pylint/interfaces.pyc +0 -0
- data/vendor/python/pylint/lint.py +1106 -0
- data/vendor/python/pylint/lint.pyc +0 -0
- data/vendor/python/pylint/pyreverse/__init__.py +5 -0
- data/vendor/python/pylint/pyreverse/diadefslib.py +233 -0
- data/vendor/python/pylint/pyreverse/diagrams.py +247 -0
- data/vendor/python/pylint/pyreverse/main.py +124 -0
- data/vendor/python/pylint/pyreverse/utils.py +131 -0
- data/vendor/python/pylint/pyreverse/writer.py +199 -0
- data/vendor/python/pylint/reporters/__init__.py +138 -0
- data/vendor/python/pylint/reporters/__init__.pyc +0 -0
- data/vendor/python/pylint/reporters/guireporter.py +28 -0
- data/vendor/python/pylint/reporters/guireporter.pyc +0 -0
- data/vendor/python/pylint/reporters/html.py +70 -0
- data/vendor/python/pylint/reporters/html.pyc +0 -0
- data/vendor/python/pylint/reporters/text.py +143 -0
- data/vendor/python/pylint/reporters/text.pyc +0 -0
- data/vendor/python/pylint/setup.cfg +3 -0
- data/vendor/python/pylint/setup.py +203 -0
- data/vendor/python/pylint/tox.ini +10 -0
- data/vendor/python/pylint/utils.py +744 -0
- data/vendor/python/pylint/utils.pyc +0 -0
- data/vendor/python/pylint_runner.py +22 -0
- metadata +675 -0
|
Binary file
|
|
@@ -0,0 +1,954 @@
|
|
|
1
|
+
# copyright 2003-2013 LOGILAB S.A. (Paris, FRANCE), all rights reserved.
|
|
2
|
+
# contact http://www.logilab.fr/ -- mailto:contact@logilab.fr
|
|
3
|
+
#
|
|
4
|
+
# This file is part of astroid.
|
|
5
|
+
#
|
|
6
|
+
# astroid is free software: you can redistribute it and/or modify it
|
|
7
|
+
# under the terms of the GNU Lesser General Public License as published by the
|
|
8
|
+
# Free Software Foundation, either version 2.1 of the License, or (at your
|
|
9
|
+
# option) any later version.
|
|
10
|
+
#
|
|
11
|
+
# astroid is distributed in the hope that it will be useful, but
|
|
12
|
+
# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
13
|
+
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
|
|
14
|
+
# for more details.
|
|
15
|
+
#
|
|
16
|
+
# You should have received a copy of the GNU Lesser General Public License along
|
|
17
|
+
# with astroid. If not, see <http://www.gnu.org/licenses/>.
|
|
18
|
+
"""this module contains utilities for rebuilding a _ast tree in
|
|
19
|
+
order to get a single Astroid representation
|
|
20
|
+
"""
|
|
21
|
+
|
|
22
|
+
import sys
|
|
23
|
+
from warnings import warn
|
|
24
|
+
from _ast import (Expr as Discard, Str, Name, Attribute,
|
|
25
|
+
# binary operators
|
|
26
|
+
Add, Div, FloorDiv, Mod, Mult, Pow, Sub, BitAnd, BitOr, BitXor,
|
|
27
|
+
LShift, RShift,
|
|
28
|
+
# logical operators
|
|
29
|
+
And, Or,
|
|
30
|
+
# unary operators
|
|
31
|
+
UAdd, USub, Not, Invert,
|
|
32
|
+
# comparison operators
|
|
33
|
+
Eq, Gt, GtE, In, Is, IsNot, Lt, LtE, NotEq, NotIn,
|
|
34
|
+
)
|
|
35
|
+
|
|
36
|
+
from astroid import nodes as new
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
_BIN_OP_CLASSES = {Add: '+',
|
|
40
|
+
BitAnd: '&',
|
|
41
|
+
BitOr: '|',
|
|
42
|
+
BitXor: '^',
|
|
43
|
+
Div: '/',
|
|
44
|
+
FloorDiv: '//',
|
|
45
|
+
Mod: '%',
|
|
46
|
+
Mult: '*',
|
|
47
|
+
Pow: '**',
|
|
48
|
+
Sub: '-',
|
|
49
|
+
LShift: '<<',
|
|
50
|
+
RShift: '>>'}
|
|
51
|
+
|
|
52
|
+
_BOOL_OP_CLASSES = {And: 'and',
|
|
53
|
+
Or: 'or'}
|
|
54
|
+
|
|
55
|
+
_UNARY_OP_CLASSES = {UAdd: '+',
|
|
56
|
+
USub: '-',
|
|
57
|
+
Not: 'not',
|
|
58
|
+
Invert: '~'}
|
|
59
|
+
|
|
60
|
+
_CMP_OP_CLASSES = {Eq: '==',
|
|
61
|
+
Gt: '>',
|
|
62
|
+
GtE: '>=',
|
|
63
|
+
In: 'in',
|
|
64
|
+
Is: 'is',
|
|
65
|
+
IsNot: 'is not',
|
|
66
|
+
Lt: '<',
|
|
67
|
+
LtE: '<=',
|
|
68
|
+
NotEq: '!=',
|
|
69
|
+
NotIn: 'not in'}
|
|
70
|
+
|
|
71
|
+
CONST_NAME_TRANSFORMS = {'None': None,
|
|
72
|
+
'True': True,
|
|
73
|
+
'False': False}
|
|
74
|
+
|
|
75
|
+
REDIRECT = {'arguments': 'Arguments',
|
|
76
|
+
'Attribute': 'Getattr',
|
|
77
|
+
'comprehension': 'Comprehension',
|
|
78
|
+
'Call': 'CallFunc',
|
|
79
|
+
'ClassDef': 'Class',
|
|
80
|
+
"ListCompFor": 'Comprehension',
|
|
81
|
+
"GenExprFor": 'Comprehension',
|
|
82
|
+
'excepthandler': 'ExceptHandler',
|
|
83
|
+
'Expr': 'Discard',
|
|
84
|
+
'FunctionDef': 'Function',
|
|
85
|
+
'GeneratorExp': 'GenExpr',
|
|
86
|
+
'ImportFrom': 'From',
|
|
87
|
+
'keyword': 'Keyword',
|
|
88
|
+
'Repr': 'Backquote',
|
|
89
|
+
}
|
|
90
|
+
PY3K = sys.version_info >= (3, 0)
|
|
91
|
+
PY34 = sys.version_info >= (3, 4)
|
|
92
|
+
|
|
93
|
+
def _init_set_doc(node, newnode):
|
|
94
|
+
newnode.doc = None
|
|
95
|
+
try:
|
|
96
|
+
if isinstance(node.body[0], Discard) and isinstance(node.body[0].value, Str):
|
|
97
|
+
newnode.tolineno = node.body[0].lineno
|
|
98
|
+
newnode.doc = node.body[0].value.s
|
|
99
|
+
node.body = node.body[1:]
|
|
100
|
+
|
|
101
|
+
except IndexError:
|
|
102
|
+
pass # ast built from scratch
|
|
103
|
+
|
|
104
|
+
def _lineno_parent(oldnode, newnode, parent):
|
|
105
|
+
newnode.parent = parent
|
|
106
|
+
if hasattr(oldnode, 'lineno'):
|
|
107
|
+
newnode.lineno = oldnode.lineno
|
|
108
|
+
if hasattr(oldnode, 'col_offset'):
|
|
109
|
+
newnode.col_offset = oldnode.col_offset
|
|
110
|
+
|
|
111
|
+
def _set_infos(oldnode, newnode, parent):
|
|
112
|
+
newnode.parent = parent
|
|
113
|
+
if hasattr(oldnode, 'lineno'):
|
|
114
|
+
newnode.lineno = oldnode.lineno
|
|
115
|
+
if hasattr(oldnode, 'col_offset'):
|
|
116
|
+
newnode.col_offset = oldnode.col_offset
|
|
117
|
+
newnode.set_line_info(newnode.last_child()) # set_line_info accepts None
|
|
118
|
+
|
|
119
|
+
def _infer_metaclass(node):
|
|
120
|
+
if isinstance(node, Name):
|
|
121
|
+
return node.id
|
|
122
|
+
elif isinstance(node, Attribute):
|
|
123
|
+
return node.attr
|
|
124
|
+
|
|
125
|
+
def _create_yield_node(node, parent, rebuilder, factory):
|
|
126
|
+
newnode = factory()
|
|
127
|
+
_lineno_parent(node, newnode, parent)
|
|
128
|
+
if node.value is not None:
|
|
129
|
+
newnode.value = rebuilder.visit(node.value, newnode)
|
|
130
|
+
newnode.set_line_info(newnode.last_child())
|
|
131
|
+
return newnode
|
|
132
|
+
|
|
133
|
+
|
|
134
|
+
class TreeRebuilder(object):
|
|
135
|
+
"""Rebuilds the _ast tree to become an Astroid tree"""
|
|
136
|
+
|
|
137
|
+
def __init__(self, manager):
|
|
138
|
+
self._manager = manager
|
|
139
|
+
self.asscontext = None
|
|
140
|
+
self._metaclass = ['']
|
|
141
|
+
self._global_names = []
|
|
142
|
+
self._from_nodes = []
|
|
143
|
+
self._delayed_assattr = []
|
|
144
|
+
self._visit_meths = {}
|
|
145
|
+
self._transform = manager.transform
|
|
146
|
+
|
|
147
|
+
def visit_module(self, node, modname, package):
|
|
148
|
+
"""visit a Module node by returning a fresh instance of it"""
|
|
149
|
+
newnode = new.Module(modname, None)
|
|
150
|
+
newnode.package = package
|
|
151
|
+
_lineno_parent(node, newnode, parent=None)
|
|
152
|
+
_init_set_doc(node, newnode)
|
|
153
|
+
newnode.body = [self.visit(child, newnode) for child in node.body]
|
|
154
|
+
newnode.set_line_info(newnode.last_child())
|
|
155
|
+
return self._transform(newnode)
|
|
156
|
+
|
|
157
|
+
def visit(self, node, parent):
|
|
158
|
+
cls = node.__class__
|
|
159
|
+
if cls in self._visit_meths:
|
|
160
|
+
visit_method = self._visit_meths[cls]
|
|
161
|
+
else:
|
|
162
|
+
cls_name = cls.__name__
|
|
163
|
+
visit_name = 'visit_' + REDIRECT.get(cls_name, cls_name).lower()
|
|
164
|
+
visit_method = getattr(self, visit_name)
|
|
165
|
+
self._visit_meths[cls] = visit_method
|
|
166
|
+
return self._transform(visit_method(node, parent))
|
|
167
|
+
|
|
168
|
+
def _save_assignment(self, node, name=None):
|
|
169
|
+
"""save assignement situation since node.parent is not available yet"""
|
|
170
|
+
if self._global_names and node.name in self._global_names[-1]:
|
|
171
|
+
node.root().set_local(node.name, node)
|
|
172
|
+
else:
|
|
173
|
+
node.parent.set_local(node.name, node)
|
|
174
|
+
|
|
175
|
+
|
|
176
|
+
def visit_arguments(self, node, parent):
|
|
177
|
+
"""visit a Arguments node by returning a fresh instance of it"""
|
|
178
|
+
newnode = new.Arguments()
|
|
179
|
+
_lineno_parent(node, newnode, parent)
|
|
180
|
+
self.asscontext = "Ass"
|
|
181
|
+
newnode.args = [self.visit(child, newnode) for child in node.args]
|
|
182
|
+
self.asscontext = None
|
|
183
|
+
newnode.defaults = [self.visit(child, newnode) for child in node.defaults]
|
|
184
|
+
newnode.kwonlyargs = []
|
|
185
|
+
newnode.kw_defaults = []
|
|
186
|
+
vararg, kwarg = node.vararg, node.kwarg
|
|
187
|
+
# change added in 82732 (7c5c678e4164), vararg and kwarg
|
|
188
|
+
# are instances of `_ast.arg`, not strings
|
|
189
|
+
if vararg and PY34:
|
|
190
|
+
vararg = vararg.arg
|
|
191
|
+
if kwarg and PY34:
|
|
192
|
+
kwarg = kwarg.arg
|
|
193
|
+
newnode.vararg = vararg
|
|
194
|
+
newnode.kwarg = kwarg
|
|
195
|
+
# save argument names in locals:
|
|
196
|
+
if vararg:
|
|
197
|
+
newnode.parent.set_local(vararg, newnode)
|
|
198
|
+
if kwarg:
|
|
199
|
+
newnode.parent.set_local(kwarg, newnode)
|
|
200
|
+
newnode.set_line_info(newnode.last_child())
|
|
201
|
+
return newnode
|
|
202
|
+
|
|
203
|
+
def visit_assattr(self, node, parent):
|
|
204
|
+
"""visit a AssAttr node by returning a fresh instance of it"""
|
|
205
|
+
assc, self.asscontext = self.asscontext, None
|
|
206
|
+
newnode = new.AssAttr()
|
|
207
|
+
_lineno_parent(node, newnode, parent)
|
|
208
|
+
newnode.expr = self.visit(node.expr, newnode)
|
|
209
|
+
self.asscontext = assc
|
|
210
|
+
self._delayed_assattr.append(newnode)
|
|
211
|
+
newnode.set_line_info(newnode.last_child())
|
|
212
|
+
return newnode
|
|
213
|
+
|
|
214
|
+
def visit_assert(self, node, parent):
|
|
215
|
+
"""visit a Assert node by returning a fresh instance of it"""
|
|
216
|
+
newnode = new.Assert()
|
|
217
|
+
_lineno_parent(node, newnode, parent)
|
|
218
|
+
newnode.test = self.visit(node.test, newnode)
|
|
219
|
+
if node.msg is not None:
|
|
220
|
+
newnode.fail = self.visit(node.msg, newnode)
|
|
221
|
+
newnode.set_line_info(newnode.last_child())
|
|
222
|
+
return newnode
|
|
223
|
+
|
|
224
|
+
def visit_assign(self, node, parent):
|
|
225
|
+
"""visit a Assign node by returning a fresh instance of it"""
|
|
226
|
+
newnode = new.Assign()
|
|
227
|
+
_lineno_parent(node, newnode, parent)
|
|
228
|
+
self.asscontext = "Ass"
|
|
229
|
+
newnode.targets = [self.visit(child, newnode) for child in node.targets]
|
|
230
|
+
self.asscontext = None
|
|
231
|
+
newnode.value = self.visit(node.value, newnode)
|
|
232
|
+
# set some function or metaclass infos XXX explain ?
|
|
233
|
+
klass = newnode.parent.frame()
|
|
234
|
+
if (isinstance(klass, new.Class)
|
|
235
|
+
and isinstance(newnode.value, new.CallFunc)
|
|
236
|
+
and isinstance(newnode.value.func, new.Name)):
|
|
237
|
+
func_name = newnode.value.func.name
|
|
238
|
+
for ass_node in newnode.targets:
|
|
239
|
+
try:
|
|
240
|
+
meth = klass[ass_node.name]
|
|
241
|
+
if isinstance(meth, new.Function):
|
|
242
|
+
if func_name in ('classmethod', 'staticmethod'):
|
|
243
|
+
meth.type = func_name
|
|
244
|
+
elif func_name == 'classproperty': # see lgc.decorators
|
|
245
|
+
meth.type = 'classmethod'
|
|
246
|
+
meth.extra_decorators.append(newnode.value)
|
|
247
|
+
except (AttributeError, KeyError):
|
|
248
|
+
continue
|
|
249
|
+
elif getattr(newnode.targets[0], 'name', None) == '__metaclass__':
|
|
250
|
+
# XXX check more...
|
|
251
|
+
self._metaclass[-1] = _infer_metaclass(node.value)
|
|
252
|
+
newnode.set_line_info(newnode.last_child())
|
|
253
|
+
return newnode
|
|
254
|
+
|
|
255
|
+
def visit_assname(self, node, parent, node_name=None):
|
|
256
|
+
'''visit a node and return a AssName node'''
|
|
257
|
+
newnode = new.AssName()
|
|
258
|
+
_set_infos(node, newnode, parent)
|
|
259
|
+
newnode.name = node_name
|
|
260
|
+
self._save_assignment(newnode)
|
|
261
|
+
return newnode
|
|
262
|
+
|
|
263
|
+
def visit_augassign(self, node, parent):
|
|
264
|
+
"""visit a AugAssign node by returning a fresh instance of it"""
|
|
265
|
+
newnode = new.AugAssign()
|
|
266
|
+
_lineno_parent(node, newnode, parent)
|
|
267
|
+
newnode.op = _BIN_OP_CLASSES[node.op.__class__] + "="
|
|
268
|
+
self.asscontext = "Ass"
|
|
269
|
+
newnode.target = self.visit(node.target, newnode)
|
|
270
|
+
self.asscontext = None
|
|
271
|
+
newnode.value = self.visit(node.value, newnode)
|
|
272
|
+
newnode.set_line_info(newnode.last_child())
|
|
273
|
+
return newnode
|
|
274
|
+
|
|
275
|
+
def visit_backquote(self, node, parent):
|
|
276
|
+
"""visit a Backquote node by returning a fresh instance of it"""
|
|
277
|
+
newnode = new.Backquote()
|
|
278
|
+
_lineno_parent(node, newnode, parent)
|
|
279
|
+
newnode.value = self.visit(node.value, newnode)
|
|
280
|
+
newnode.set_line_info(newnode.last_child())
|
|
281
|
+
return newnode
|
|
282
|
+
|
|
283
|
+
def visit_binop(self, node, parent):
|
|
284
|
+
"""visit a BinOp node by returning a fresh instance of it"""
|
|
285
|
+
newnode = new.BinOp()
|
|
286
|
+
_lineno_parent(node, newnode, parent)
|
|
287
|
+
newnode.left = self.visit(node.left, newnode)
|
|
288
|
+
newnode.right = self.visit(node.right, newnode)
|
|
289
|
+
newnode.op = _BIN_OP_CLASSES[node.op.__class__]
|
|
290
|
+
newnode.set_line_info(newnode.last_child())
|
|
291
|
+
return newnode
|
|
292
|
+
|
|
293
|
+
def visit_boolop(self, node, parent):
|
|
294
|
+
"""visit a BoolOp node by returning a fresh instance of it"""
|
|
295
|
+
newnode = new.BoolOp()
|
|
296
|
+
_lineno_parent(node, newnode, parent)
|
|
297
|
+
newnode.values = [self.visit(child, newnode) for child in node.values]
|
|
298
|
+
newnode.op = _BOOL_OP_CLASSES[node.op.__class__]
|
|
299
|
+
newnode.set_line_info(newnode.last_child())
|
|
300
|
+
return newnode
|
|
301
|
+
|
|
302
|
+
def visit_break(self, node, parent):
|
|
303
|
+
"""visit a Break node by returning a fresh instance of it"""
|
|
304
|
+
newnode = new.Break()
|
|
305
|
+
_set_infos(node, newnode, parent)
|
|
306
|
+
return newnode
|
|
307
|
+
|
|
308
|
+
def visit_callfunc(self, node, parent):
|
|
309
|
+
"""visit a CallFunc node by returning a fresh instance of it"""
|
|
310
|
+
newnode = new.CallFunc()
|
|
311
|
+
_lineno_parent(node, newnode, parent)
|
|
312
|
+
newnode.func = self.visit(node.func, newnode)
|
|
313
|
+
newnode.args = [self.visit(child, newnode) for child in node.args]
|
|
314
|
+
if node.starargs is not None:
|
|
315
|
+
newnode.starargs = self.visit(node.starargs, newnode)
|
|
316
|
+
if node.kwargs is not None:
|
|
317
|
+
newnode.kwargs = self.visit(node.kwargs, newnode)
|
|
318
|
+
newnode.args.extend(self.visit(child, newnode) for child in node.keywords)
|
|
319
|
+
newnode.set_line_info(newnode.last_child())
|
|
320
|
+
return newnode
|
|
321
|
+
|
|
322
|
+
def visit_class(self, node, parent):
|
|
323
|
+
"""visit a Class node to become astroid"""
|
|
324
|
+
self._metaclass.append(self._metaclass[-1])
|
|
325
|
+
newnode = new.Class(node.name, None)
|
|
326
|
+
_lineno_parent(node, newnode, parent)
|
|
327
|
+
_init_set_doc(node, newnode)
|
|
328
|
+
newnode.bases = [self.visit(child, newnode) for child in node.bases]
|
|
329
|
+
newnode.body = [self.visit(child, newnode) for child in node.body]
|
|
330
|
+
if 'decorator_list' in node._fields and node.decorator_list:# py >= 2.6
|
|
331
|
+
newnode.decorators = self.visit_decorators(node, newnode)
|
|
332
|
+
newnode.set_line_info(newnode.last_child())
|
|
333
|
+
metaclass = self._metaclass.pop()
|
|
334
|
+
if PY3K:
|
|
335
|
+
newnode._newstyle = True
|
|
336
|
+
else:
|
|
337
|
+
if not newnode.bases:
|
|
338
|
+
# no base classes, detect new / style old style according to
|
|
339
|
+
# current scope
|
|
340
|
+
newnode._newstyle = metaclass in ('type', 'ABCMeta')
|
|
341
|
+
newnode.parent.frame().set_local(newnode.name, newnode)
|
|
342
|
+
return newnode
|
|
343
|
+
|
|
344
|
+
def visit_const(self, node, parent):
|
|
345
|
+
"""visit a Const node by returning a fresh instance of it"""
|
|
346
|
+
newnode = new.Const(node.value)
|
|
347
|
+
_set_infos(node, newnode, parent)
|
|
348
|
+
return newnode
|
|
349
|
+
|
|
350
|
+
def visit_continue(self, node, parent):
|
|
351
|
+
"""visit a Continue node by returning a fresh instance of it"""
|
|
352
|
+
newnode = new.Continue()
|
|
353
|
+
_set_infos(node, newnode, parent)
|
|
354
|
+
return newnode
|
|
355
|
+
|
|
356
|
+
def visit_compare(self, node, parent):
|
|
357
|
+
"""visit a Compare node by returning a fresh instance of it"""
|
|
358
|
+
newnode = new.Compare()
|
|
359
|
+
_lineno_parent(node, newnode, parent)
|
|
360
|
+
newnode.left = self.visit(node.left, newnode)
|
|
361
|
+
newnode.ops = [(_CMP_OP_CLASSES[op.__class__], self.visit(expr, newnode))
|
|
362
|
+
for (op, expr) in zip(node.ops, node.comparators)]
|
|
363
|
+
newnode.set_line_info(newnode.last_child())
|
|
364
|
+
return newnode
|
|
365
|
+
|
|
366
|
+
def visit_comprehension(self, node, parent):
|
|
367
|
+
"""visit a Comprehension node by returning a fresh instance of it"""
|
|
368
|
+
newnode = new.Comprehension()
|
|
369
|
+
_lineno_parent(node, newnode, parent)
|
|
370
|
+
self.asscontext = "Ass"
|
|
371
|
+
newnode.target = self.visit(node.target, newnode)
|
|
372
|
+
self.asscontext = None
|
|
373
|
+
newnode.iter = self.visit(node.iter, newnode)
|
|
374
|
+
newnode.ifs = [self.visit(child, newnode) for child in node.ifs]
|
|
375
|
+
newnode.set_line_info(newnode.last_child())
|
|
376
|
+
return newnode
|
|
377
|
+
|
|
378
|
+
def visit_decorators(self, node, parent):
|
|
379
|
+
"""visit a Decorators node by returning a fresh instance of it"""
|
|
380
|
+
# /!\ node is actually a _ast.Function node while
|
|
381
|
+
# parent is a astroid.nodes.Function node
|
|
382
|
+
newnode = new.Decorators()
|
|
383
|
+
_lineno_parent(node, newnode, parent)
|
|
384
|
+
if 'decorators' in node._fields: # py < 2.6, i.e. 2.5
|
|
385
|
+
decorators = node.decorators
|
|
386
|
+
else:
|
|
387
|
+
decorators= node.decorator_list
|
|
388
|
+
newnode.nodes = [self.visit(child, newnode) for child in decorators]
|
|
389
|
+
newnode.set_line_info(newnode.last_child())
|
|
390
|
+
return newnode
|
|
391
|
+
|
|
392
|
+
def visit_delete(self, node, parent):
|
|
393
|
+
"""visit a Delete node by returning a fresh instance of it"""
|
|
394
|
+
newnode = new.Delete()
|
|
395
|
+
_lineno_parent(node, newnode, parent)
|
|
396
|
+
self.asscontext = "Del"
|
|
397
|
+
newnode.targets = [self.visit(child, newnode) for child in node.targets]
|
|
398
|
+
self.asscontext = None
|
|
399
|
+
newnode.set_line_info(newnode.last_child())
|
|
400
|
+
return newnode
|
|
401
|
+
|
|
402
|
+
def visit_dict(self, node, parent):
|
|
403
|
+
"""visit a Dict node by returning a fresh instance of it"""
|
|
404
|
+
newnode = new.Dict()
|
|
405
|
+
_lineno_parent(node, newnode, parent)
|
|
406
|
+
newnode.items = [(self.visit(key, newnode), self.visit(value, newnode))
|
|
407
|
+
for key, value in zip(node.keys, node.values)]
|
|
408
|
+
newnode.set_line_info(newnode.last_child())
|
|
409
|
+
return newnode
|
|
410
|
+
|
|
411
|
+
def visit_dictcomp(self, node, parent):
|
|
412
|
+
"""visit a DictComp node by returning a fresh instance of it"""
|
|
413
|
+
newnode = new.DictComp()
|
|
414
|
+
_lineno_parent(node, newnode, parent)
|
|
415
|
+
newnode.key = self.visit(node.key, newnode)
|
|
416
|
+
newnode.value = self.visit(node.value, newnode)
|
|
417
|
+
newnode.generators = [self.visit(child, newnode)
|
|
418
|
+
for child in node.generators]
|
|
419
|
+
newnode.set_line_info(newnode.last_child())
|
|
420
|
+
return newnode
|
|
421
|
+
|
|
422
|
+
def visit_discard(self, node, parent):
|
|
423
|
+
"""visit a Discard node by returning a fresh instance of it"""
|
|
424
|
+
newnode = new.Discard()
|
|
425
|
+
_lineno_parent(node, newnode, parent)
|
|
426
|
+
newnode.value = self.visit(node.value, newnode)
|
|
427
|
+
newnode.set_line_info(newnode.last_child())
|
|
428
|
+
return newnode
|
|
429
|
+
|
|
430
|
+
def visit_ellipsis(self, node, parent):
|
|
431
|
+
"""visit an Ellipsis node by returning a fresh instance of it"""
|
|
432
|
+
newnode = new.Ellipsis()
|
|
433
|
+
_set_infos(node, newnode, parent)
|
|
434
|
+
return newnode
|
|
435
|
+
|
|
436
|
+
def visit_emptynode(self, node, parent):
|
|
437
|
+
"""visit an EmptyNode node by returning a fresh instance of it"""
|
|
438
|
+
newnode = new.EmptyNode()
|
|
439
|
+
_set_infos(node, newnode, parent)
|
|
440
|
+
return newnode
|
|
441
|
+
|
|
442
|
+
def visit_excepthandler(self, node, parent):
|
|
443
|
+
"""visit an ExceptHandler node by returning a fresh instance of it"""
|
|
444
|
+
newnode = new.ExceptHandler()
|
|
445
|
+
_lineno_parent(node, newnode, parent)
|
|
446
|
+
if node.type is not None:
|
|
447
|
+
newnode.type = self.visit(node.type, newnode)
|
|
448
|
+
if node.name is not None:
|
|
449
|
+
# /!\ node.name can be a tuple
|
|
450
|
+
self.asscontext = "Ass"
|
|
451
|
+
newnode.name = self.visit(node.name, newnode)
|
|
452
|
+
self.asscontext = None
|
|
453
|
+
newnode.body = [self.visit(child, newnode) for child in node.body]
|
|
454
|
+
newnode.set_line_info(newnode.last_child())
|
|
455
|
+
return newnode
|
|
456
|
+
|
|
457
|
+
def visit_exec(self, node, parent):
|
|
458
|
+
"""visit an Exec node by returning a fresh instance of it"""
|
|
459
|
+
newnode = new.Exec()
|
|
460
|
+
_lineno_parent(node, newnode, parent)
|
|
461
|
+
newnode.expr = self.visit(node.body, newnode)
|
|
462
|
+
if node.globals is not None:
|
|
463
|
+
newnode.globals = self.visit(node.globals, newnode)
|
|
464
|
+
if node.locals is not None:
|
|
465
|
+
newnode.locals = self.visit(node.locals, newnode)
|
|
466
|
+
newnode.set_line_info(newnode.last_child())
|
|
467
|
+
return newnode
|
|
468
|
+
|
|
469
|
+
def visit_extslice(self, node, parent):
|
|
470
|
+
"""visit an ExtSlice node by returning a fresh instance of it"""
|
|
471
|
+
newnode = new.ExtSlice()
|
|
472
|
+
_lineno_parent(node, newnode, parent)
|
|
473
|
+
newnode.dims = [self.visit(dim, newnode) for dim in node.dims]
|
|
474
|
+
newnode.set_line_info(newnode.last_child())
|
|
475
|
+
return newnode
|
|
476
|
+
|
|
477
|
+
def visit_for(self, node, parent):
|
|
478
|
+
"""visit a For node by returning a fresh instance of it"""
|
|
479
|
+
newnode = new.For()
|
|
480
|
+
_lineno_parent(node, newnode, parent)
|
|
481
|
+
self.asscontext = "Ass"
|
|
482
|
+
newnode.target = self.visit(node.target, newnode)
|
|
483
|
+
self.asscontext = None
|
|
484
|
+
newnode.iter = self.visit(node.iter, newnode)
|
|
485
|
+
newnode.body = [self.visit(child, newnode) for child in node.body]
|
|
486
|
+
newnode.orelse = [self.visit(child, newnode) for child in node.orelse]
|
|
487
|
+
newnode.set_line_info(newnode.last_child())
|
|
488
|
+
return newnode
|
|
489
|
+
|
|
490
|
+
def visit_from(self, node, parent):
|
|
491
|
+
"""visit a From node by returning a fresh instance of it"""
|
|
492
|
+
names = [(alias.name, alias.asname) for alias in node.names]
|
|
493
|
+
newnode = new.From(node.module or '', names, node.level or None)
|
|
494
|
+
_set_infos(node, newnode, parent)
|
|
495
|
+
# store From names to add them to locals after building
|
|
496
|
+
self._from_nodes.append(newnode)
|
|
497
|
+
return newnode
|
|
498
|
+
|
|
499
|
+
def visit_function(self, node, parent):
|
|
500
|
+
"""visit an Function node to become astroid"""
|
|
501
|
+
self._global_names.append({})
|
|
502
|
+
newnode = new.Function(node.name, None)
|
|
503
|
+
_lineno_parent(node, newnode, parent)
|
|
504
|
+
_init_set_doc(node, newnode)
|
|
505
|
+
newnode.args = self.visit(node.args, newnode)
|
|
506
|
+
newnode.body = [self.visit(child, newnode) for child in node.body]
|
|
507
|
+
if 'decorators' in node._fields: # py < 2.6
|
|
508
|
+
attr = 'decorators'
|
|
509
|
+
else:
|
|
510
|
+
attr = 'decorator_list'
|
|
511
|
+
decorators = getattr(node, attr)
|
|
512
|
+
if decorators:
|
|
513
|
+
newnode.decorators = self.visit_decorators(node, newnode)
|
|
514
|
+
newnode.set_line_info(newnode.last_child())
|
|
515
|
+
self._global_names.pop()
|
|
516
|
+
frame = newnode.parent.frame()
|
|
517
|
+
if isinstance(frame, new.Class):
|
|
518
|
+
if newnode.name == '__new__':
|
|
519
|
+
newnode._type = 'classmethod'
|
|
520
|
+
else:
|
|
521
|
+
newnode._type = 'method'
|
|
522
|
+
if newnode.decorators is not None:
|
|
523
|
+
for decorator_expr in newnode.decorators.nodes:
|
|
524
|
+
if isinstance(decorator_expr, new.Name):
|
|
525
|
+
if decorator_expr.name in ('classmethod', 'staticmethod'):
|
|
526
|
+
newnode._type = decorator_expr.name
|
|
527
|
+
elif decorator_expr.name == 'classproperty':
|
|
528
|
+
newnode._type = 'classmethod'
|
|
529
|
+
frame.set_local(newnode.name, newnode)
|
|
530
|
+
return newnode
|
|
531
|
+
|
|
532
|
+
def visit_genexpr(self, node, parent):
|
|
533
|
+
"""visit a GenExpr node by returning a fresh instance of it"""
|
|
534
|
+
newnode = new.GenExpr()
|
|
535
|
+
_lineno_parent(node, newnode, parent)
|
|
536
|
+
newnode.elt = self.visit(node.elt, newnode)
|
|
537
|
+
newnode.generators = [self.visit(child, newnode) for child in node.generators]
|
|
538
|
+
newnode.set_line_info(newnode.last_child())
|
|
539
|
+
return newnode
|
|
540
|
+
|
|
541
|
+
def visit_getattr(self, node, parent):
|
|
542
|
+
"""visit a Getattr node by returning a fresh instance of it"""
|
|
543
|
+
if self.asscontext == "Del":
|
|
544
|
+
# FIXME : maybe we should reintroduce and visit_delattr ?
|
|
545
|
+
# for instance, deactivating asscontext
|
|
546
|
+
newnode = new.DelAttr()
|
|
547
|
+
elif self.asscontext == "Ass":
|
|
548
|
+
# FIXME : maybe we should call visit_assattr ?
|
|
549
|
+
newnode = new.AssAttr()
|
|
550
|
+
self._delayed_assattr.append(newnode)
|
|
551
|
+
else:
|
|
552
|
+
newnode = new.Getattr()
|
|
553
|
+
_lineno_parent(node, newnode, parent)
|
|
554
|
+
asscontext, self.asscontext = self.asscontext, None
|
|
555
|
+
newnode.expr = self.visit(node.value, newnode)
|
|
556
|
+
self.asscontext = asscontext
|
|
557
|
+
newnode.attrname = node.attr
|
|
558
|
+
newnode.set_line_info(newnode.last_child())
|
|
559
|
+
return newnode
|
|
560
|
+
|
|
561
|
+
def visit_global(self, node, parent):
|
|
562
|
+
"""visit an Global node to become astroid"""
|
|
563
|
+
newnode = new.Global(node.names)
|
|
564
|
+
_set_infos(node, newnode, parent)
|
|
565
|
+
if self._global_names: # global at the module level, no effect
|
|
566
|
+
for name in node.names:
|
|
567
|
+
self._global_names[-1].setdefault(name, []).append(newnode)
|
|
568
|
+
return newnode
|
|
569
|
+
|
|
570
|
+
def visit_if(self, node, parent):
|
|
571
|
+
"""visit a If node by returning a fresh instance of it"""
|
|
572
|
+
newnode = new.If()
|
|
573
|
+
_lineno_parent(node, newnode, parent)
|
|
574
|
+
newnode.test = self.visit(node.test, newnode)
|
|
575
|
+
newnode.body = [self.visit(child, newnode) for child in node.body]
|
|
576
|
+
newnode.orelse = [self.visit(child, newnode) for child in node.orelse]
|
|
577
|
+
newnode.set_line_info(newnode.last_child())
|
|
578
|
+
return newnode
|
|
579
|
+
|
|
580
|
+
def visit_ifexp(self, node, parent):
|
|
581
|
+
"""visit a IfExp node by returning a fresh instance of it"""
|
|
582
|
+
newnode = new.IfExp()
|
|
583
|
+
_lineno_parent(node, newnode, parent)
|
|
584
|
+
newnode.test = self.visit(node.test, newnode)
|
|
585
|
+
newnode.body = self.visit(node.body, newnode)
|
|
586
|
+
newnode.orelse = self.visit(node.orelse, newnode)
|
|
587
|
+
newnode.set_line_info(newnode.last_child())
|
|
588
|
+
return newnode
|
|
589
|
+
|
|
590
|
+
def visit_import(self, node, parent):
|
|
591
|
+
"""visit a Import node by returning a fresh instance of it"""
|
|
592
|
+
newnode = new.Import()
|
|
593
|
+
_set_infos(node, newnode, parent)
|
|
594
|
+
newnode.names = [(alias.name, alias.asname) for alias in node.names]
|
|
595
|
+
# save import names in parent's locals:
|
|
596
|
+
for (name, asname) in newnode.names:
|
|
597
|
+
name = asname or name
|
|
598
|
+
newnode.parent.set_local(name.split('.')[0], newnode)
|
|
599
|
+
return newnode
|
|
600
|
+
|
|
601
|
+
def visit_index(self, node, parent):
|
|
602
|
+
"""visit a Index node by returning a fresh instance of it"""
|
|
603
|
+
newnode = new.Index()
|
|
604
|
+
_lineno_parent(node, newnode, parent)
|
|
605
|
+
newnode.value = self.visit(node.value, newnode)
|
|
606
|
+
newnode.set_line_info(newnode.last_child())
|
|
607
|
+
return newnode
|
|
608
|
+
|
|
609
|
+
def visit_keyword(self, node, parent):
|
|
610
|
+
"""visit a Keyword node by returning a fresh instance of it"""
|
|
611
|
+
newnode = new.Keyword()
|
|
612
|
+
_lineno_parent(node, newnode, parent)
|
|
613
|
+
newnode.arg = node.arg
|
|
614
|
+
newnode.value = self.visit(node.value, newnode)
|
|
615
|
+
newnode.set_line_info(newnode.last_child())
|
|
616
|
+
return newnode
|
|
617
|
+
|
|
618
|
+
def visit_lambda(self, node, parent):
|
|
619
|
+
"""visit a Lambda node by returning a fresh instance of it"""
|
|
620
|
+
newnode = new.Lambda()
|
|
621
|
+
_lineno_parent(node, newnode, parent)
|
|
622
|
+
newnode.args = self.visit(node.args, newnode)
|
|
623
|
+
newnode.body = self.visit(node.body, newnode)
|
|
624
|
+
newnode.set_line_info(newnode.last_child())
|
|
625
|
+
return newnode
|
|
626
|
+
|
|
627
|
+
def visit_list(self, node, parent):
|
|
628
|
+
"""visit a List node by returning a fresh instance of it"""
|
|
629
|
+
newnode = new.List()
|
|
630
|
+
_lineno_parent(node, newnode, parent)
|
|
631
|
+
newnode.elts = [self.visit(child, newnode) for child in node.elts]
|
|
632
|
+
newnode.set_line_info(newnode.last_child())
|
|
633
|
+
return newnode
|
|
634
|
+
|
|
635
|
+
def visit_listcomp(self, node, parent):
|
|
636
|
+
"""visit a ListComp node by returning a fresh instance of it"""
|
|
637
|
+
newnode = new.ListComp()
|
|
638
|
+
_lineno_parent(node, newnode, parent)
|
|
639
|
+
newnode.elt = self.visit(node.elt, newnode)
|
|
640
|
+
newnode.generators = [self.visit(child, newnode)
|
|
641
|
+
for child in node.generators]
|
|
642
|
+
newnode.set_line_info(newnode.last_child())
|
|
643
|
+
return newnode
|
|
644
|
+
|
|
645
|
+
def visit_name(self, node, parent):
|
|
646
|
+
"""visit a Name node by returning a fresh instance of it"""
|
|
647
|
+
# True and False can be assigned to something in py2x, so we have to
|
|
648
|
+
# check first the asscontext
|
|
649
|
+
if self.asscontext == "Del":
|
|
650
|
+
newnode = new.DelName()
|
|
651
|
+
elif self.asscontext is not None: # Ass
|
|
652
|
+
assert self.asscontext == "Ass"
|
|
653
|
+
newnode = new.AssName()
|
|
654
|
+
elif node.id in CONST_NAME_TRANSFORMS:
|
|
655
|
+
newnode = new.Const(CONST_NAME_TRANSFORMS[node.id])
|
|
656
|
+
_set_infos(node, newnode, parent)
|
|
657
|
+
return newnode
|
|
658
|
+
else:
|
|
659
|
+
newnode = new.Name()
|
|
660
|
+
_lineno_parent(node, newnode, parent)
|
|
661
|
+
newnode.name = node.id
|
|
662
|
+
# XXX REMOVE me :
|
|
663
|
+
if self.asscontext in ('Del', 'Ass'): # 'Aug' ??
|
|
664
|
+
self._save_assignment(newnode)
|
|
665
|
+
newnode.set_line_info(newnode.last_child())
|
|
666
|
+
return newnode
|
|
667
|
+
|
|
668
|
+
def visit_bytes(self, node, parent):
|
|
669
|
+
"""visit a Bytes node by returning a fresh instance of Const"""
|
|
670
|
+
newnode = new.Const(node.s)
|
|
671
|
+
_set_infos(node, newnode, parent)
|
|
672
|
+
return newnode
|
|
673
|
+
|
|
674
|
+
def visit_num(self, node, parent):
|
|
675
|
+
"""visit a Num node by returning a fresh instance of Const"""
|
|
676
|
+
newnode = new.Const(node.n)
|
|
677
|
+
_set_infos(node, newnode, parent)
|
|
678
|
+
return newnode
|
|
679
|
+
|
|
680
|
+
def visit_pass(self, node, parent):
|
|
681
|
+
"""visit a Pass node by returning a fresh instance of it"""
|
|
682
|
+
newnode = new.Pass()
|
|
683
|
+
_set_infos(node, newnode, parent)
|
|
684
|
+
return newnode
|
|
685
|
+
|
|
686
|
+
def visit_str(self, node, parent):
|
|
687
|
+
"""visit a Str node by returning a fresh instance of Const"""
|
|
688
|
+
newnode = new.Const(node.s)
|
|
689
|
+
_set_infos(node, newnode, parent)
|
|
690
|
+
return newnode
|
|
691
|
+
|
|
692
|
+
def visit_print(self, node, parent):
|
|
693
|
+
"""visit a Print node by returning a fresh instance of it"""
|
|
694
|
+
newnode = new.Print()
|
|
695
|
+
_lineno_parent(node, newnode, parent)
|
|
696
|
+
newnode.nl = node.nl
|
|
697
|
+
if node.dest is not None:
|
|
698
|
+
newnode.dest = self.visit(node.dest, newnode)
|
|
699
|
+
newnode.values = [self.visit(child, newnode) for child in node.values]
|
|
700
|
+
newnode.set_line_info(newnode.last_child())
|
|
701
|
+
return newnode
|
|
702
|
+
|
|
703
|
+
def visit_raise(self, node, parent):
|
|
704
|
+
"""visit a Raise node by returning a fresh instance of it"""
|
|
705
|
+
newnode = new.Raise()
|
|
706
|
+
_lineno_parent(node, newnode, parent)
|
|
707
|
+
if node.type is not None:
|
|
708
|
+
newnode.exc = self.visit(node.type, newnode)
|
|
709
|
+
if node.inst is not None:
|
|
710
|
+
newnode.inst = self.visit(node.inst, newnode)
|
|
711
|
+
if node.tback is not None:
|
|
712
|
+
newnode.tback = self.visit(node.tback, newnode)
|
|
713
|
+
newnode.set_line_info(newnode.last_child())
|
|
714
|
+
return newnode
|
|
715
|
+
|
|
716
|
+
def visit_return(self, node, parent):
|
|
717
|
+
"""visit a Return node by returning a fresh instance of it"""
|
|
718
|
+
newnode = new.Return()
|
|
719
|
+
_lineno_parent(node, newnode, parent)
|
|
720
|
+
if node.value is not None:
|
|
721
|
+
newnode.value = self.visit(node.value, newnode)
|
|
722
|
+
newnode.set_line_info(newnode.last_child())
|
|
723
|
+
return newnode
|
|
724
|
+
|
|
725
|
+
def visit_set(self, node, parent):
|
|
726
|
+
"""visit a Set node by returning a fresh instance of it"""
|
|
727
|
+
newnode = new.Set()
|
|
728
|
+
_lineno_parent(node, newnode, parent)
|
|
729
|
+
newnode.elts = [self.visit(child, newnode) for child in node.elts]
|
|
730
|
+
newnode.set_line_info(newnode.last_child())
|
|
731
|
+
return newnode
|
|
732
|
+
|
|
733
|
+
def visit_setcomp(self, node, parent):
|
|
734
|
+
"""visit a SetComp node by returning a fresh instance of it"""
|
|
735
|
+
newnode = new.SetComp()
|
|
736
|
+
_lineno_parent(node, newnode, parent)
|
|
737
|
+
newnode.elt = self.visit(node.elt, newnode)
|
|
738
|
+
newnode.generators = [self.visit(child, newnode)
|
|
739
|
+
for child in node.generators]
|
|
740
|
+
newnode.set_line_info(newnode.last_child())
|
|
741
|
+
return newnode
|
|
742
|
+
|
|
743
|
+
def visit_slice(self, node, parent):
|
|
744
|
+
"""visit a Slice node by returning a fresh instance of it"""
|
|
745
|
+
newnode = new.Slice()
|
|
746
|
+
_lineno_parent(node, newnode, parent)
|
|
747
|
+
if node.lower is not None:
|
|
748
|
+
newnode.lower = self.visit(node.lower, newnode)
|
|
749
|
+
if node.upper is not None:
|
|
750
|
+
newnode.upper = self.visit(node.upper, newnode)
|
|
751
|
+
if node.step is not None:
|
|
752
|
+
newnode.step = self.visit(node.step, newnode)
|
|
753
|
+
newnode.set_line_info(newnode.last_child())
|
|
754
|
+
return newnode
|
|
755
|
+
|
|
756
|
+
def visit_subscript(self, node, parent):
|
|
757
|
+
"""visit a Subscript node by returning a fresh instance of it"""
|
|
758
|
+
newnode = new.Subscript()
|
|
759
|
+
_lineno_parent(node, newnode, parent)
|
|
760
|
+
subcontext, self.asscontext = self.asscontext, None
|
|
761
|
+
newnode.value = self.visit(node.value, newnode)
|
|
762
|
+
newnode.slice = self.visit(node.slice, newnode)
|
|
763
|
+
self.asscontext = subcontext
|
|
764
|
+
newnode.set_line_info(newnode.last_child())
|
|
765
|
+
return newnode
|
|
766
|
+
|
|
767
|
+
def visit_tryexcept(self, node, parent):
|
|
768
|
+
"""visit a TryExcept node by returning a fresh instance of it"""
|
|
769
|
+
newnode = new.TryExcept()
|
|
770
|
+
_lineno_parent(node, newnode, parent)
|
|
771
|
+
newnode.body = [self.visit(child, newnode) for child in node.body]
|
|
772
|
+
newnode.handlers = [self.visit(child, newnode) for child in node.handlers]
|
|
773
|
+
newnode.orelse = [self.visit(child, newnode) for child in node.orelse]
|
|
774
|
+
newnode.set_line_info(newnode.last_child())
|
|
775
|
+
return newnode
|
|
776
|
+
|
|
777
|
+
def visit_tryfinally(self, node, parent):
|
|
778
|
+
"""visit a TryFinally node by returning a fresh instance of it"""
|
|
779
|
+
newnode = new.TryFinally()
|
|
780
|
+
_lineno_parent(node, newnode, parent)
|
|
781
|
+
newnode.body = [self.visit(child, newnode) for child in node.body]
|
|
782
|
+
newnode.finalbody = [self.visit(n, newnode) for n in node.finalbody]
|
|
783
|
+
newnode.set_line_info(newnode.last_child())
|
|
784
|
+
return newnode
|
|
785
|
+
|
|
786
|
+
def visit_tuple(self, node, parent):
|
|
787
|
+
"""visit a Tuple node by returning a fresh instance of it"""
|
|
788
|
+
newnode = new.Tuple()
|
|
789
|
+
_lineno_parent(node, newnode, parent)
|
|
790
|
+
newnode.elts = [self.visit(child, newnode) for child in node.elts]
|
|
791
|
+
newnode.set_line_info(newnode.last_child())
|
|
792
|
+
return newnode
|
|
793
|
+
|
|
794
|
+
def visit_unaryop(self, node, parent):
|
|
795
|
+
"""visit a UnaryOp node by returning a fresh instance of it"""
|
|
796
|
+
newnode = new.UnaryOp()
|
|
797
|
+
_lineno_parent(node, newnode, parent)
|
|
798
|
+
newnode.operand = self.visit(node.operand, newnode)
|
|
799
|
+
newnode.op = _UNARY_OP_CLASSES[node.op.__class__]
|
|
800
|
+
newnode.set_line_info(newnode.last_child())
|
|
801
|
+
return newnode
|
|
802
|
+
|
|
803
|
+
def visit_while(self, node, parent):
|
|
804
|
+
"""visit a While node by returning a fresh instance of it"""
|
|
805
|
+
newnode = new.While()
|
|
806
|
+
_lineno_parent(node, newnode, parent)
|
|
807
|
+
newnode.test = self.visit(node.test, newnode)
|
|
808
|
+
newnode.body = [self.visit(child, newnode) for child in node.body]
|
|
809
|
+
newnode.orelse = [self.visit(child, newnode) for child in node.orelse]
|
|
810
|
+
newnode.set_line_info(newnode.last_child())
|
|
811
|
+
return newnode
|
|
812
|
+
|
|
813
|
+
def visit_with(self, node, parent):
|
|
814
|
+
newnode = new.With()
|
|
815
|
+
_lineno_parent(node, newnode, parent)
|
|
816
|
+
expr = self.visit(node.context_expr, newnode)
|
|
817
|
+
self.asscontext = "Ass"
|
|
818
|
+
if node.optional_vars is not None:
|
|
819
|
+
vars = self.visit(node.optional_vars, newnode)
|
|
820
|
+
else:
|
|
821
|
+
vars = None
|
|
822
|
+
self.asscontext = None
|
|
823
|
+
newnode.items = [(expr, vars)]
|
|
824
|
+
newnode.body = [self.visit(child, newnode) for child in node.body]
|
|
825
|
+
newnode.set_line_info(newnode.last_child())
|
|
826
|
+
return newnode
|
|
827
|
+
|
|
828
|
+
def visit_yield(self, node, parent):
|
|
829
|
+
"""visit a Yield node by returning a fresh instance of it"""
|
|
830
|
+
return _create_yield_node(node, parent, self, new.Yield)
|
|
831
|
+
|
|
832
|
+
class TreeRebuilder3k(TreeRebuilder):
|
|
833
|
+
"""extend and overwrite TreeRebuilder for python3k"""
|
|
834
|
+
|
|
835
|
+
def visit_arg(self, node, parent):
|
|
836
|
+
"""visit a arg node by returning a fresh AssName instance"""
|
|
837
|
+
# the <arg> node is coming from py>=3.0, but we use AssName in py2.x
|
|
838
|
+
# XXX or we should instead introduce a Arg node in astroid ?
|
|
839
|
+
return self.visit_assname(node, parent, node.arg)
|
|
840
|
+
|
|
841
|
+
def visit_nameconstant(self, node, parent):
|
|
842
|
+
# in Python 3.4 we have NameConstant for True / False / None
|
|
843
|
+
newnode = new.Const(node.value)
|
|
844
|
+
_set_infos(node, newnode, parent)
|
|
845
|
+
return newnode
|
|
846
|
+
|
|
847
|
+
def visit_arguments(self, node, parent):
|
|
848
|
+
newnode = super(TreeRebuilder3k, self).visit_arguments(node, parent)
|
|
849
|
+
self.asscontext = "Ass"
|
|
850
|
+
newnode.kwonlyargs = [self.visit(child, newnode) for child in node.kwonlyargs]
|
|
851
|
+
self.asscontext = None
|
|
852
|
+
newnode.kw_defaults = [self.visit(child, newnode) if child else None for child in node.kw_defaults]
|
|
853
|
+
return newnode
|
|
854
|
+
|
|
855
|
+
def visit_excepthandler(self, node, parent):
|
|
856
|
+
"""visit an ExceptHandler node by returning a fresh instance of it"""
|
|
857
|
+
newnode = new.ExceptHandler()
|
|
858
|
+
_lineno_parent(node, newnode, parent)
|
|
859
|
+
if node.type is not None:
|
|
860
|
+
newnode.type = self.visit(node.type, newnode)
|
|
861
|
+
if node.name is not None:
|
|
862
|
+
newnode.name = self.visit_assname(node, newnode, node.name)
|
|
863
|
+
newnode.body = [self.visit(child, newnode) for child in node.body]
|
|
864
|
+
newnode.set_line_info(newnode.last_child())
|
|
865
|
+
return newnode
|
|
866
|
+
|
|
867
|
+
def visit_nonlocal(self, node, parent):
|
|
868
|
+
"""visit a Nonlocal node and return a new instance of it"""
|
|
869
|
+
newnode = new.Nonlocal(node.names)
|
|
870
|
+
_set_infos(node, newnode, parent)
|
|
871
|
+
return newnode
|
|
872
|
+
|
|
873
|
+
def visit_raise(self, node, parent):
|
|
874
|
+
"""visit a Raise node by returning a fresh instance of it"""
|
|
875
|
+
newnode = new.Raise()
|
|
876
|
+
_lineno_parent(node, newnode, parent)
|
|
877
|
+
# no traceback; anyway it is not used in Pylint
|
|
878
|
+
if node.exc is not None:
|
|
879
|
+
newnode.exc = self.visit(node.exc, newnode)
|
|
880
|
+
if node.cause is not None:
|
|
881
|
+
newnode.cause = self.visit(node.cause, newnode)
|
|
882
|
+
newnode.set_line_info(newnode.last_child())
|
|
883
|
+
return newnode
|
|
884
|
+
|
|
885
|
+
def visit_starred(self, node, parent):
|
|
886
|
+
"""visit a Starred node and return a new instance of it"""
|
|
887
|
+
newnode = new.Starred()
|
|
888
|
+
_lineno_parent(node, newnode, parent)
|
|
889
|
+
newnode.value = self.visit(node.value, newnode)
|
|
890
|
+
newnode.set_line_info(newnode.last_child())
|
|
891
|
+
return newnode
|
|
892
|
+
|
|
893
|
+
def visit_try(self, node, parent):
|
|
894
|
+
# python 3.3 introduce a new Try node replacing TryFinally/TryExcept nodes
|
|
895
|
+
if node.finalbody:
|
|
896
|
+
newnode = new.TryFinally()
|
|
897
|
+
_lineno_parent(node, newnode, parent)
|
|
898
|
+
newnode.finalbody = [self.visit(n, newnode) for n in node.finalbody]
|
|
899
|
+
if node.handlers:
|
|
900
|
+
excnode = new.TryExcept()
|
|
901
|
+
_lineno_parent(node, excnode, newnode)
|
|
902
|
+
excnode.body = [self.visit(child, excnode) for child in node.body]
|
|
903
|
+
excnode.handlers = [self.visit(child, excnode) for child in node.handlers]
|
|
904
|
+
excnode.orelse = [self.visit(child, excnode) for child in node.orelse]
|
|
905
|
+
excnode.set_line_info(excnode.last_child())
|
|
906
|
+
newnode.body = [excnode]
|
|
907
|
+
else:
|
|
908
|
+
newnode.body = [self.visit(child, newnode) for child in node.body]
|
|
909
|
+
elif node.handlers:
|
|
910
|
+
newnode = new.TryExcept()
|
|
911
|
+
_lineno_parent(node, newnode, parent)
|
|
912
|
+
newnode.body = [self.visit(child, newnode) for child in node.body]
|
|
913
|
+
newnode.handlers = [self.visit(child, newnode) for child in node.handlers]
|
|
914
|
+
newnode.orelse = [self.visit(child, newnode) for child in node.orelse]
|
|
915
|
+
newnode.set_line_info(newnode.last_child())
|
|
916
|
+
return newnode
|
|
917
|
+
|
|
918
|
+
def visit_with(self, node, parent):
|
|
919
|
+
if 'items' not in node._fields:
|
|
920
|
+
# python < 3.3
|
|
921
|
+
return super(TreeRebuilder3k, self).visit_with(node, parent)
|
|
922
|
+
|
|
923
|
+
newnode = new.With()
|
|
924
|
+
_lineno_parent(node, newnode, parent)
|
|
925
|
+
def visit_child(child):
|
|
926
|
+
expr = self.visit(child.context_expr, newnode)
|
|
927
|
+
self.asscontext = 'Ass'
|
|
928
|
+
if child.optional_vars:
|
|
929
|
+
var = self.visit(child.optional_vars, newnode)
|
|
930
|
+
else:
|
|
931
|
+
var = None
|
|
932
|
+
self.asscontext = None
|
|
933
|
+
return expr, var
|
|
934
|
+
newnode.items = [visit_child(child)
|
|
935
|
+
for child in node.items]
|
|
936
|
+
newnode.body = [self.visit(child, newnode) for child in node.body]
|
|
937
|
+
newnode.set_line_info(newnode.last_child())
|
|
938
|
+
return newnode
|
|
939
|
+
|
|
940
|
+
def visit_yieldfrom(self, node, parent):
|
|
941
|
+
return _create_yield_node(node, parent, self, new.YieldFrom)
|
|
942
|
+
|
|
943
|
+
def visit_class(self, node, parent):
|
|
944
|
+
newnode = super(TreeRebuilder3k, self).visit_class(node, parent)
|
|
945
|
+
for keyword in node.keywords:
|
|
946
|
+
if keyword.arg == 'metaclass':
|
|
947
|
+
newnode._metaclass = self.visit(keyword, newnode).value
|
|
948
|
+
break
|
|
949
|
+
return newnode
|
|
950
|
+
|
|
951
|
+
if sys.version_info >= (3, 0):
|
|
952
|
+
TreeRebuilder = TreeRebuilder3k
|
|
953
|
+
|
|
954
|
+
|