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,117 @@
|
|
|
1
|
+
# copyright 2003-2011 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 logilab-common.
|
|
5
|
+
#
|
|
6
|
+
# logilab-common is free software: you can redistribute it and/or modify it under
|
|
7
|
+
# the terms of the GNU Lesser General Public License as published by the Free
|
|
8
|
+
# Software Foundation, either version 2.1 of the License, or (at your option) any
|
|
9
|
+
# later version.
|
|
10
|
+
#
|
|
11
|
+
# logilab-common is distributed in the hope that it will be useful, but WITHOUT
|
|
12
|
+
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
|
13
|
+
# FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
|
|
14
|
+
# details.
|
|
15
|
+
#
|
|
16
|
+
# You should have received a copy of the GNU Lesser General Public License along
|
|
17
|
+
# with logilab-common. If not, see <http://www.gnu.org/licenses/>.
|
|
18
|
+
"""A set of utility function to ease the use of OmniORBpy.
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
"""
|
|
24
|
+
__docformat__ = "restructuredtext en"
|
|
25
|
+
|
|
26
|
+
from omniORB import CORBA, PortableServer
|
|
27
|
+
import CosNaming
|
|
28
|
+
|
|
29
|
+
orb = None
|
|
30
|
+
|
|
31
|
+
def get_orb():
|
|
32
|
+
"""
|
|
33
|
+
returns a reference to the ORB.
|
|
34
|
+
The first call to the method initialized the ORB
|
|
35
|
+
This method is mainly used internally in the module.
|
|
36
|
+
"""
|
|
37
|
+
|
|
38
|
+
global orb
|
|
39
|
+
if orb is None:
|
|
40
|
+
import sys
|
|
41
|
+
orb = CORBA.ORB_init(sys.argv, CORBA.ORB_ID)
|
|
42
|
+
return orb
|
|
43
|
+
|
|
44
|
+
def get_root_context():
|
|
45
|
+
"""
|
|
46
|
+
returns a reference to the NameService object.
|
|
47
|
+
This method is mainly used internally in the module.
|
|
48
|
+
"""
|
|
49
|
+
|
|
50
|
+
orb = get_orb()
|
|
51
|
+
nss = orb.resolve_initial_references("NameService")
|
|
52
|
+
rootContext = nss._narrow(CosNaming.NamingContext)
|
|
53
|
+
assert rootContext is not None, "Failed to narrow root naming context"
|
|
54
|
+
return rootContext
|
|
55
|
+
|
|
56
|
+
def register_object_name(object, namepath):
|
|
57
|
+
"""
|
|
58
|
+
Registers a object in the NamingService.
|
|
59
|
+
The name path is a list of 2-uples (id,kind) giving the path.
|
|
60
|
+
|
|
61
|
+
For instance if the path of an object is [('foo',''),('bar','')],
|
|
62
|
+
it is possible to get a reference to the object using the URL
|
|
63
|
+
'corbaname::hostname#foo/bar'.
|
|
64
|
+
[('logilab','rootmodule'),('chatbot','application'),('chatter','server')]
|
|
65
|
+
is mapped to
|
|
66
|
+
'corbaname::hostname#logilab.rootmodule/chatbot.application/chatter.server'
|
|
67
|
+
|
|
68
|
+
The get_object_reference() function can be used to resolve such a URL.
|
|
69
|
+
"""
|
|
70
|
+
context = get_root_context()
|
|
71
|
+
for id, kind in namepath[:-1]:
|
|
72
|
+
name = [CosNaming.NameComponent(id, kind)]
|
|
73
|
+
try:
|
|
74
|
+
context = context.bind_new_context(name)
|
|
75
|
+
except CosNaming.NamingContext.AlreadyBound, ex:
|
|
76
|
+
context = context.resolve(name)._narrow(CosNaming.NamingContext)
|
|
77
|
+
assert context is not None, \
|
|
78
|
+
'test context exists but is not a NamingContext'
|
|
79
|
+
|
|
80
|
+
id, kind = namepath[-1]
|
|
81
|
+
name = [CosNaming.NameComponent(id, kind)]
|
|
82
|
+
try:
|
|
83
|
+
context.bind(name, object._this())
|
|
84
|
+
except CosNaming.NamingContext.AlreadyBound, ex:
|
|
85
|
+
context.rebind(name, object._this())
|
|
86
|
+
|
|
87
|
+
def activate_POA():
|
|
88
|
+
"""
|
|
89
|
+
This methods activates the Portable Object Adapter.
|
|
90
|
+
You need to call it to enable the reception of messages in your code,
|
|
91
|
+
on both the client and the server.
|
|
92
|
+
"""
|
|
93
|
+
orb = get_orb()
|
|
94
|
+
poa = orb.resolve_initial_references('RootPOA')
|
|
95
|
+
poaManager = poa._get_the_POAManager()
|
|
96
|
+
poaManager.activate()
|
|
97
|
+
|
|
98
|
+
def run_orb():
|
|
99
|
+
"""
|
|
100
|
+
Enters the ORB mainloop on the server.
|
|
101
|
+
You should not call this method on the client.
|
|
102
|
+
"""
|
|
103
|
+
get_orb().run()
|
|
104
|
+
|
|
105
|
+
def get_object_reference(url):
|
|
106
|
+
"""
|
|
107
|
+
Resolves a corbaname URL to an object proxy.
|
|
108
|
+
See register_object_name() for examples URLs
|
|
109
|
+
"""
|
|
110
|
+
return get_orb().string_to_object(url)
|
|
111
|
+
|
|
112
|
+
def get_object_string(host, namepath):
|
|
113
|
+
"""given an host name and a name path as described in register_object_name,
|
|
114
|
+
return a corba string identifier
|
|
115
|
+
"""
|
|
116
|
+
strname = '/'.join(['.'.join(path_elt) for path_elt in namepath])
|
|
117
|
+
return 'corbaname::%s#%s' % (host, strname)
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
# copyright 2003-2011 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 logilab-common.
|
|
5
|
+
#
|
|
6
|
+
# logilab-common is free software: you can redistribute it and/or modify it under
|
|
7
|
+
# the terms of the GNU Lesser General Public License as published by the Free
|
|
8
|
+
# Software Foundation, either version 2.1 of the License, or (at your option) any
|
|
9
|
+
# later version.
|
|
10
|
+
#
|
|
11
|
+
# logilab-common is distributed in the hope that it will be useful, but WITHOUT
|
|
12
|
+
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
|
13
|
+
# FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
|
|
14
|
+
# details.
|
|
15
|
+
#
|
|
16
|
+
# You should have received a copy of the GNU Lesser General Public License along
|
|
17
|
+
# with logilab-common. If not, see <http://www.gnu.org/licenses/>.
|
|
18
|
+
"""A daemonize function (for Unices)"""
|
|
19
|
+
|
|
20
|
+
__docformat__ = "restructuredtext en"
|
|
21
|
+
|
|
22
|
+
import os
|
|
23
|
+
import errno
|
|
24
|
+
import signal
|
|
25
|
+
import sys
|
|
26
|
+
import time
|
|
27
|
+
import warnings
|
|
28
|
+
|
|
29
|
+
def setugid(user):
|
|
30
|
+
"""Change process user and group ID
|
|
31
|
+
|
|
32
|
+
Argument is a numeric user id or a user name"""
|
|
33
|
+
try:
|
|
34
|
+
from pwd import getpwuid
|
|
35
|
+
passwd = getpwuid(int(user))
|
|
36
|
+
except ValueError:
|
|
37
|
+
from pwd import getpwnam
|
|
38
|
+
passwd = getpwnam(user)
|
|
39
|
+
|
|
40
|
+
if hasattr(os, 'initgroups'): # python >= 2.7
|
|
41
|
+
os.initgroups(passwd.pw_name, passwd.pw_gid)
|
|
42
|
+
else:
|
|
43
|
+
import ctypes
|
|
44
|
+
if ctypes.CDLL(None).initgroups(passwd.pw_name, passwd.pw_gid) < 0:
|
|
45
|
+
err = ctypes.c_int.in_dll(ctypes.pythonapi,"errno").value
|
|
46
|
+
raise OSError(err, os.strerror(err), 'initgroups')
|
|
47
|
+
os.setgid(passwd.pw_gid)
|
|
48
|
+
os.setuid(passwd.pw_uid)
|
|
49
|
+
os.environ['HOME'] = passwd.pw_dir
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
def daemonize(pidfile=None, uid=None, umask=077):
|
|
53
|
+
"""daemonize a Unix process. Set paranoid umask by default.
|
|
54
|
+
|
|
55
|
+
Return 1 in the original process, 2 in the first fork, and None for the
|
|
56
|
+
second fork (eg daemon process).
|
|
57
|
+
"""
|
|
58
|
+
# http://www.faqs.org/faqs/unix-faq/programmer/faq/
|
|
59
|
+
#
|
|
60
|
+
# fork so the parent can exit
|
|
61
|
+
if os.fork(): # launch child and...
|
|
62
|
+
return 1
|
|
63
|
+
# disconnect from tty and create a new session
|
|
64
|
+
os.setsid()
|
|
65
|
+
# fork again so the parent, (the session group leader), can exit.
|
|
66
|
+
# as a non-session group leader, we can never regain a controlling
|
|
67
|
+
# terminal.
|
|
68
|
+
if os.fork(): # launch child again.
|
|
69
|
+
return 2
|
|
70
|
+
# move to the root to avoit mount pb
|
|
71
|
+
os.chdir('/')
|
|
72
|
+
# set umask if specified
|
|
73
|
+
if umask is not None:
|
|
74
|
+
os.umask(umask)
|
|
75
|
+
# redirect standard descriptors
|
|
76
|
+
null = os.open('/dev/null', os.O_RDWR)
|
|
77
|
+
for i in range(3):
|
|
78
|
+
try:
|
|
79
|
+
os.dup2(null, i)
|
|
80
|
+
except OSError, e:
|
|
81
|
+
if e.errno != errno.EBADF:
|
|
82
|
+
raise
|
|
83
|
+
os.close(null)
|
|
84
|
+
# filter warnings
|
|
85
|
+
warnings.filterwarnings('ignore')
|
|
86
|
+
# write pid in a file
|
|
87
|
+
if pidfile:
|
|
88
|
+
# ensure the directory where the pid-file should be set exists (for
|
|
89
|
+
# instance /var/run/cubicweb may be deleted on computer restart)
|
|
90
|
+
piddir = os.path.dirname(pidfile)
|
|
91
|
+
if not os.path.exists(piddir):
|
|
92
|
+
os.makedirs(piddir)
|
|
93
|
+
f = file(pidfile, 'w')
|
|
94
|
+
f.write(str(os.getpid()))
|
|
95
|
+
f.close()
|
|
96
|
+
os.chmod(pidfile, 0644)
|
|
97
|
+
# change process uid
|
|
98
|
+
if uid:
|
|
99
|
+
setugid(uid)
|
|
100
|
+
return None
|
|
@@ -0,0 +1,333 @@
|
|
|
1
|
+
# copyright 2003-2012 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 logilab-common.
|
|
5
|
+
#
|
|
6
|
+
# logilab-common is free software: you can redistribute it and/or modify it under
|
|
7
|
+
# the terms of the GNU Lesser General Public License as published by the Free
|
|
8
|
+
# Software Foundation, either version 2.1 of the License, or (at your option) any
|
|
9
|
+
# later version.
|
|
10
|
+
#
|
|
11
|
+
# logilab-common is distributed in the hope that it will be useful, but WITHOUT
|
|
12
|
+
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
|
13
|
+
# FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
|
|
14
|
+
# details.
|
|
15
|
+
#
|
|
16
|
+
# You should have received a copy of the GNU Lesser General Public License along
|
|
17
|
+
# with logilab-common. If not, see <http://www.gnu.org/licenses/>.
|
|
18
|
+
"""Date manipulation helper functions."""
|
|
19
|
+
from __future__ import division
|
|
20
|
+
|
|
21
|
+
__docformat__ = "restructuredtext en"
|
|
22
|
+
|
|
23
|
+
import math
|
|
24
|
+
import re
|
|
25
|
+
import sys
|
|
26
|
+
from locale import getlocale, LC_TIME
|
|
27
|
+
from datetime import date, time, datetime, timedelta
|
|
28
|
+
from time import strptime as time_strptime
|
|
29
|
+
from calendar import monthrange, timegm
|
|
30
|
+
|
|
31
|
+
try:
|
|
32
|
+
from mx.DateTime import RelativeDateTime, Date, DateTimeType
|
|
33
|
+
except ImportError:
|
|
34
|
+
endOfMonth = None
|
|
35
|
+
DateTimeType = datetime
|
|
36
|
+
else:
|
|
37
|
+
endOfMonth = RelativeDateTime(months=1, day=-1)
|
|
38
|
+
|
|
39
|
+
# NOTE: should we implement a compatibility layer between date representations
|
|
40
|
+
# as we have in lgc.db ?
|
|
41
|
+
|
|
42
|
+
FRENCH_FIXED_HOLIDAYS = {
|
|
43
|
+
'jour_an': '%s-01-01',
|
|
44
|
+
'fete_travail': '%s-05-01',
|
|
45
|
+
'armistice1945': '%s-05-08',
|
|
46
|
+
'fete_nat': '%s-07-14',
|
|
47
|
+
'assomption': '%s-08-15',
|
|
48
|
+
'toussaint': '%s-11-01',
|
|
49
|
+
'armistice1918': '%s-11-11',
|
|
50
|
+
'noel': '%s-12-25',
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
FRENCH_MOBILE_HOLIDAYS = {
|
|
54
|
+
'paques2004': '2004-04-12',
|
|
55
|
+
'ascension2004': '2004-05-20',
|
|
56
|
+
'pentecote2004': '2004-05-31',
|
|
57
|
+
|
|
58
|
+
'paques2005': '2005-03-28',
|
|
59
|
+
'ascension2005': '2005-05-05',
|
|
60
|
+
'pentecote2005': '2005-05-16',
|
|
61
|
+
|
|
62
|
+
'paques2006': '2006-04-17',
|
|
63
|
+
'ascension2006': '2006-05-25',
|
|
64
|
+
'pentecote2006': '2006-06-05',
|
|
65
|
+
|
|
66
|
+
'paques2007': '2007-04-09',
|
|
67
|
+
'ascension2007': '2007-05-17',
|
|
68
|
+
'pentecote2007': '2007-05-28',
|
|
69
|
+
|
|
70
|
+
'paques2008': '2008-03-24',
|
|
71
|
+
'ascension2008': '2008-05-01',
|
|
72
|
+
'pentecote2008': '2008-05-12',
|
|
73
|
+
|
|
74
|
+
'paques2009': '2009-04-13',
|
|
75
|
+
'ascension2009': '2009-05-21',
|
|
76
|
+
'pentecote2009': '2009-06-01',
|
|
77
|
+
|
|
78
|
+
'paques2010': '2010-04-05',
|
|
79
|
+
'ascension2010': '2010-05-13',
|
|
80
|
+
'pentecote2010': '2010-05-24',
|
|
81
|
+
|
|
82
|
+
'paques2011': '2011-04-25',
|
|
83
|
+
'ascension2011': '2011-06-02',
|
|
84
|
+
'pentecote2011': '2011-06-13',
|
|
85
|
+
|
|
86
|
+
'paques2012': '2012-04-09',
|
|
87
|
+
'ascension2012': '2012-05-17',
|
|
88
|
+
'pentecote2012': '2012-05-28',
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
# XXX this implementation cries for multimethod dispatching
|
|
92
|
+
|
|
93
|
+
def get_step(dateobj, nbdays=1):
|
|
94
|
+
# assume date is either a python datetime or a mx.DateTime object
|
|
95
|
+
if isinstance(dateobj, date):
|
|
96
|
+
return ONEDAY * nbdays
|
|
97
|
+
return nbdays # mx.DateTime is ok with integers
|
|
98
|
+
|
|
99
|
+
def datefactory(year, month, day, sampledate):
|
|
100
|
+
# assume date is either a python datetime or a mx.DateTime object
|
|
101
|
+
if isinstance(sampledate, datetime):
|
|
102
|
+
return datetime(year, month, day)
|
|
103
|
+
if isinstance(sampledate, date):
|
|
104
|
+
return date(year, month, day)
|
|
105
|
+
return Date(year, month, day)
|
|
106
|
+
|
|
107
|
+
def weekday(dateobj):
|
|
108
|
+
# assume date is either a python datetime or a mx.DateTime object
|
|
109
|
+
if isinstance(dateobj, date):
|
|
110
|
+
return dateobj.weekday()
|
|
111
|
+
return dateobj.day_of_week
|
|
112
|
+
|
|
113
|
+
def str2date(datestr, sampledate):
|
|
114
|
+
# NOTE: datetime.strptime is not an option until we drop py2.4 compat
|
|
115
|
+
year, month, day = [int(chunk) for chunk in datestr.split('-')]
|
|
116
|
+
return datefactory(year, month, day, sampledate)
|
|
117
|
+
|
|
118
|
+
def days_between(start, end):
|
|
119
|
+
if isinstance(start, date):
|
|
120
|
+
delta = end - start
|
|
121
|
+
# datetime.timedelta.days is always an integer (floored)
|
|
122
|
+
if delta.seconds:
|
|
123
|
+
return delta.days + 1
|
|
124
|
+
return delta.days
|
|
125
|
+
else:
|
|
126
|
+
return int(math.ceil((end - start).days))
|
|
127
|
+
|
|
128
|
+
def get_national_holidays(begin, end):
|
|
129
|
+
"""return french national days off between begin and end"""
|
|
130
|
+
begin = datefactory(begin.year, begin.month, begin.day, begin)
|
|
131
|
+
end = datefactory(end.year, end.month, end.day, end)
|
|
132
|
+
holidays = [str2date(datestr, begin)
|
|
133
|
+
for datestr in FRENCH_MOBILE_HOLIDAYS.values()]
|
|
134
|
+
for year in xrange(begin.year, end.year+1):
|
|
135
|
+
for datestr in FRENCH_FIXED_HOLIDAYS.values():
|
|
136
|
+
date = str2date(datestr % year, begin)
|
|
137
|
+
if date not in holidays:
|
|
138
|
+
holidays.append(date)
|
|
139
|
+
return [day for day in holidays if begin <= day < end]
|
|
140
|
+
|
|
141
|
+
def add_days_worked(start, days):
|
|
142
|
+
"""adds date but try to only take days worked into account"""
|
|
143
|
+
step = get_step(start)
|
|
144
|
+
weeks, plus = divmod(days, 5)
|
|
145
|
+
end = start + ((weeks * 7) + plus) * step
|
|
146
|
+
if weekday(end) >= 5: # saturday or sunday
|
|
147
|
+
end += (2 * step)
|
|
148
|
+
end += len([x for x in get_national_holidays(start, end + step)
|
|
149
|
+
if weekday(x) < 5]) * step
|
|
150
|
+
if weekday(end) >= 5: # saturday or sunday
|
|
151
|
+
end += (2 * step)
|
|
152
|
+
return end
|
|
153
|
+
|
|
154
|
+
def nb_open_days(start, end):
|
|
155
|
+
assert start <= end
|
|
156
|
+
step = get_step(start)
|
|
157
|
+
days = days_between(start, end)
|
|
158
|
+
weeks, plus = divmod(days, 7)
|
|
159
|
+
if weekday(start) > weekday(end):
|
|
160
|
+
plus -= 2
|
|
161
|
+
elif weekday(end) == 6:
|
|
162
|
+
plus -= 1
|
|
163
|
+
open_days = weeks * 5 + plus
|
|
164
|
+
nb_week_holidays = len([x for x in get_national_holidays(start, end+step)
|
|
165
|
+
if weekday(x) < 5 and x < end])
|
|
166
|
+
open_days -= nb_week_holidays
|
|
167
|
+
if open_days < 0:
|
|
168
|
+
return 0
|
|
169
|
+
return open_days
|
|
170
|
+
|
|
171
|
+
def date_range(begin, end, incday=None, incmonth=None):
|
|
172
|
+
"""yields each date between begin and end
|
|
173
|
+
|
|
174
|
+
:param begin: the start date
|
|
175
|
+
:param end: the end date
|
|
176
|
+
:param incr: the step to use to iterate over dates. Default is
|
|
177
|
+
one day.
|
|
178
|
+
:param include: None (means no exclusion) or a function taking a
|
|
179
|
+
date as parameter, and returning True if the date
|
|
180
|
+
should be included.
|
|
181
|
+
|
|
182
|
+
When using mx datetime, you should *NOT* use incmonth argument, use instead
|
|
183
|
+
oneDay, oneHour, oneMinute, oneSecond, oneWeek or endOfMonth (to enumerate
|
|
184
|
+
months) as `incday` argument
|
|
185
|
+
"""
|
|
186
|
+
assert not (incday and incmonth)
|
|
187
|
+
begin = todate(begin)
|
|
188
|
+
end = todate(end)
|
|
189
|
+
if incmonth:
|
|
190
|
+
while begin < end:
|
|
191
|
+
yield begin
|
|
192
|
+
begin = next_month(begin, incmonth)
|
|
193
|
+
else:
|
|
194
|
+
incr = get_step(begin, incday or 1)
|
|
195
|
+
while begin < end:
|
|
196
|
+
yield begin
|
|
197
|
+
begin += incr
|
|
198
|
+
|
|
199
|
+
# makes py datetime usable #####################################################
|
|
200
|
+
|
|
201
|
+
ONEDAY = timedelta(days=1)
|
|
202
|
+
ONEWEEK = timedelta(days=7)
|
|
203
|
+
|
|
204
|
+
try:
|
|
205
|
+
strptime = datetime.strptime
|
|
206
|
+
except AttributeError: # py < 2.5
|
|
207
|
+
from time import strptime as time_strptime
|
|
208
|
+
def strptime(value, format):
|
|
209
|
+
return datetime(*time_strptime(value, format)[:6])
|
|
210
|
+
|
|
211
|
+
def strptime_time(value, format='%H:%M'):
|
|
212
|
+
return time(*time_strptime(value, format)[3:6])
|
|
213
|
+
|
|
214
|
+
def todate(somedate):
|
|
215
|
+
"""return a date from a date (leaving unchanged) or a datetime"""
|
|
216
|
+
if isinstance(somedate, datetime):
|
|
217
|
+
return date(somedate.year, somedate.month, somedate.day)
|
|
218
|
+
assert isinstance(somedate, (date, DateTimeType)), repr(somedate)
|
|
219
|
+
return somedate
|
|
220
|
+
|
|
221
|
+
def totime(somedate):
|
|
222
|
+
"""return a time from a time (leaving unchanged), date or datetime"""
|
|
223
|
+
# XXX mx compat
|
|
224
|
+
if not isinstance(somedate, time):
|
|
225
|
+
return time(somedate.hour, somedate.minute, somedate.second)
|
|
226
|
+
assert isinstance(somedate, (time)), repr(somedate)
|
|
227
|
+
return somedate
|
|
228
|
+
|
|
229
|
+
def todatetime(somedate):
|
|
230
|
+
"""return a date from a date (leaving unchanged) or a datetime"""
|
|
231
|
+
# take care, datetime is a subclass of date
|
|
232
|
+
if isinstance(somedate, datetime):
|
|
233
|
+
return somedate
|
|
234
|
+
assert isinstance(somedate, (date, DateTimeType)), repr(somedate)
|
|
235
|
+
return datetime(somedate.year, somedate.month, somedate.day)
|
|
236
|
+
|
|
237
|
+
def datetime2ticks(somedate):
|
|
238
|
+
return timegm(somedate.timetuple()) * 1000
|
|
239
|
+
|
|
240
|
+
def ticks2datetime(ticks):
|
|
241
|
+
miliseconds, microseconds = divmod(ticks, 1000)
|
|
242
|
+
try:
|
|
243
|
+
return datetime.fromtimestamp(miliseconds)
|
|
244
|
+
except (ValueError, OverflowError):
|
|
245
|
+
epoch = datetime.fromtimestamp(0)
|
|
246
|
+
nb_days, seconds = divmod(int(miliseconds), 86400)
|
|
247
|
+
delta = timedelta(nb_days, seconds=seconds, microseconds=microseconds)
|
|
248
|
+
try:
|
|
249
|
+
return epoch + delta
|
|
250
|
+
except (ValueError, OverflowError):
|
|
251
|
+
raise
|
|
252
|
+
|
|
253
|
+
def days_in_month(somedate):
|
|
254
|
+
return monthrange(somedate.year, somedate.month)[1]
|
|
255
|
+
|
|
256
|
+
def days_in_year(somedate):
|
|
257
|
+
feb = date(somedate.year, 2, 1)
|
|
258
|
+
if days_in_month(feb) == 29:
|
|
259
|
+
return 366
|
|
260
|
+
else:
|
|
261
|
+
return 365
|
|
262
|
+
|
|
263
|
+
def previous_month(somedate, nbmonth=1):
|
|
264
|
+
while nbmonth:
|
|
265
|
+
somedate = first_day(somedate) - ONEDAY
|
|
266
|
+
nbmonth -= 1
|
|
267
|
+
return somedate
|
|
268
|
+
|
|
269
|
+
def next_month(somedate, nbmonth=1):
|
|
270
|
+
while nbmonth:
|
|
271
|
+
somedate = last_day(somedate) + ONEDAY
|
|
272
|
+
nbmonth -= 1
|
|
273
|
+
return somedate
|
|
274
|
+
|
|
275
|
+
def first_day(somedate):
|
|
276
|
+
return date(somedate.year, somedate.month, 1)
|
|
277
|
+
|
|
278
|
+
def last_day(somedate):
|
|
279
|
+
return date(somedate.year, somedate.month, days_in_month(somedate))
|
|
280
|
+
|
|
281
|
+
def ustrftime(somedate, fmt='%Y-%m-%d'):
|
|
282
|
+
"""like strftime, but returns a unicode string instead of an encoded
|
|
283
|
+
string which may be problematic with localized date.
|
|
284
|
+
"""
|
|
285
|
+
if sys.version_info >= (3, 3):
|
|
286
|
+
# datetime.date.strftime() supports dates since year 1 in Python >=3.3.
|
|
287
|
+
return somedate.strftime(fmt)
|
|
288
|
+
else:
|
|
289
|
+
try:
|
|
290
|
+
if sys.version_info < (3, 0):
|
|
291
|
+
encoding = getlocale(LC_TIME)[1] or 'ascii'
|
|
292
|
+
return unicode(somedate.strftime(str(fmt)), encoding)
|
|
293
|
+
else:
|
|
294
|
+
return somedate.strftime(fmt)
|
|
295
|
+
except ValueError, exc:
|
|
296
|
+
if somedate.year >= 1900:
|
|
297
|
+
raise
|
|
298
|
+
# datetime is not happy with dates before 1900
|
|
299
|
+
# we try to work around this, assuming a simple
|
|
300
|
+
# format string
|
|
301
|
+
fields = {'Y': somedate.year,
|
|
302
|
+
'm': somedate.month,
|
|
303
|
+
'd': somedate.day,
|
|
304
|
+
}
|
|
305
|
+
if isinstance(somedate, datetime):
|
|
306
|
+
fields.update({'H': somedate.hour,
|
|
307
|
+
'M': somedate.minute,
|
|
308
|
+
'S': somedate.second})
|
|
309
|
+
fmt = re.sub('%([YmdHMS])', r'%(\1)02d', fmt)
|
|
310
|
+
return unicode(fmt) % fields
|
|
311
|
+
|
|
312
|
+
def utcdatetime(dt):
|
|
313
|
+
if dt.tzinfo is None:
|
|
314
|
+
return dt
|
|
315
|
+
return datetime(*dt.utctimetuple()[:7])
|
|
316
|
+
|
|
317
|
+
def utctime(dt):
|
|
318
|
+
if dt.tzinfo is None:
|
|
319
|
+
return dt
|
|
320
|
+
return (dt + dt.utcoffset() + dt.dst()).replace(tzinfo=None)
|
|
321
|
+
|
|
322
|
+
def datetime_to_seconds(date):
|
|
323
|
+
"""return the number of seconds since the begining of the day for that date
|
|
324
|
+
"""
|
|
325
|
+
return date.second+60*date.minute + 3600*date.hour
|
|
326
|
+
|
|
327
|
+
def timedelta_to_days(delta):
|
|
328
|
+
"""return the time delta as a number of seconds"""
|
|
329
|
+
return delta.days + delta.seconds / (3600*24)
|
|
330
|
+
|
|
331
|
+
def timedelta_to_seconds(delta):
|
|
332
|
+
"""return the time delta as a fraction of days"""
|
|
333
|
+
return delta.days*(3600*24) + delta.seconds
|