[Python-modules-commits] [aiohttp-cors] 01/03: Import aiohttp-cors_0.5.3.orig.tar.gz
Brandon Weeks
bweeks-guest at moszumanska.debian.org
Mon Jul 24 08:06:50 UTC 2017
This is an automated email from the git hooks/post-receive script.
bweeks-guest pushed a commit to branch master
in repository aiohttp-cors.
commit 094f4e8aeb46fc6bb07936901e228cc4f38dbec6
Author: Brandon Weeks <bweeks at google.com>
Date: Mon Jul 24 00:42:02 2017 -0700
Import aiohttp-cors_0.5.3.orig.tar.gz
---
.gitignore | 50 +++
.jscs.json | 62 ++++
.jshintrc | 67 ++++
.pep8rc | 7 +
.pylintrc | 393 ++++++++++++++++++++
.travis.yml | 60 ++++
CHANGES.rst | 20 +-
PKG-INFO | 556 -----------------------------
README.rst | 52 +--
aiohttp_cors.egg-info/PKG-INFO | 556 -----------------------------
aiohttp_cors.egg-info/SOURCES.txt | 31 --
aiohttp_cors.egg-info/dependency_links.txt | 1 -
aiohttp_cors.egg-info/requires.txt | 4 -
aiohttp_cors.egg-info/top_level.txt | 1 -
aiohttp_cors/__about__.py | 4 +-
aiohttp_cors/__init__.py | 2 +-
appveyor.yml | 35 ++
conftest.py | 15 +
install_python_and_pip.ps1 | 103 ++++++
requirements-dev.txt | 11 +
setup.cfg | 6 -
setup.py | 20 +-
tests/integration/test_main.py | 34 +-
tests/integration/test_real_browser.py | 2 +-
tox.ini | 22 ++
25 files changed, 903 insertions(+), 1211 deletions(-)
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..e2859fe
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,50 @@
+# Byte-compiled / optimized / DLL files
+__pycache__/
+*.py[cod]
+
+# C extensions
+*.so
+
+# Distribution / packaging
+.Python
+/env/
+/build/
+develop-eggs/
+/dist/
+downloads/
+eggs/
+.eggs/
+lib/
+lib64/
+parts/
+sdist/
+var/
+*.egg-info/
+.installed.cfg
+/*.egg
+
+# PyInstaller
+# Usually these files are written by a python script from a template
+# before PyInstaller builds the exe, so as to inject date/other infos into it.
+*.manifest
+*.spec
+
+# Installer logs
+pip-log.txt
+pip-delete-this-directory.txt
+
+# Unit test / coverage reports
+htmlcov/
+/.tox/
+.coverage
+.coverage.*
+/.cache
+nosetests.xml
+coverage.xml
+*,cover
+
+# Sphinx documentation
+docs/_build/
+
+# PyBuilder
+target/
diff --git a/.jscs.json b/.jscs.json
new file mode 100644
index 0000000..73d5fdd
--- /dev/null
+++ b/.jscs.json
@@ -0,0 +1,62 @@
+{
+ "requireCurlyBraces": [
+ "if",
+ "else",
+ "for",
+ "while",
+ "do",
+ "try",
+ "catch"
+ ],
+ "requireOperatorBeforeLineBreak": true,
+ "requireCamelCaseOrUpperCaseIdentifiers": true,
+ "maximumLineLength": {
+ "value": 80,
+ "allowComments": true,
+ "allowRegex": true
+ },
+ "validateIndentation": 2,
+ "validateQuoteMarks": "'",
+
+ "disallowMultipleLineStrings": true,
+ "disallowMixedSpacesAndTabs": true,
+ "disallowTrailingWhitespace": true,
+ "disallowSpaceAfterPrefixUnaryOperators": true,
+ "disallowMultipleVarDecl": true,
+
+ "requireSpaceAfterKeywords": [
+ "if",
+ "else",
+ "for",
+ "while",
+ "do",
+ "switch",
+ "return",
+ "try",
+ "catch"
+ ],
+ "requireSpaceBeforeBinaryOperators": [
+ "=", "+=", "-=", "*=", "/=", "%=", "<<=", ">>=", ">>>=",
+ "&=", "|=", "^=", "+=",
+
+ "+", "-", "*", "/", "%", "<<", ">>", ">>>", "&",
+ "|", "^", "&&", "||", "===", "==", ">=",
+ "<=", "<", ">", "!=", "!=="
+ ],
+ "requireSpaceAfterBinaryOperators": true,
+ "requireSpacesInConditionalExpression": true,
+ "requireSpaceBeforeBlockStatements": true,
+ "requireSpacesInForStatement": true,
+ "requireLineFeedAtFileEnd": true,
+ "requireSpacesInFunctionExpression": {
+ "beforeOpeningCurlyBrace": true
+ },
+ "disallowSpacesInsideObjectBrackets": "all",
+ "disallowSpacesInsideArrayBrackets": "all",
+ "disallowSpacesInsideParentheses": true,
+
+ "disallowMultipleLineBreaks": true,
+ "disallowNewlineBeforeBlockStatements": [
+ "if", "else", "try", "catch", "finally", "do", "while", "for", "function"
+ ]
+}
diff --git a/.jshintrc b/.jshintrc
new file mode 100644
index 0000000..a2c474a
--- /dev/null
+++ b/.jshintrc
@@ -0,0 +1,67 @@
+{
+ "asi": false,
+ "bitwise": false,
+ "boss": false,
+ "browser": true,
+ "camelcase": true,
+ "couch": false,
+ "curly": true,
+ "debug": false,
+ "devel": true,
+ "dojo": false,
+ "eqeqeq": true,
+ "eqnull": true,
+ "es3": true,
+ "esnext": false,
+ "evil": false,
+ "expr": true,
+ "forin": false,
+ "funcscope": true,
+ "globalstrict": false,
+ "immed": true,
+ "iterator": false,
+ "jquery": false,
+ "lastsemic": false,
+ "latedef": false,
+ "laxbreak": true,
+ "laxcomma": false,
+ "loopfunc": true,
+ "mootools": false,
+ "multistr": false,
+ "newcap": true,
+ "noarg": true,
+ "node": false,
+ "noempty": false,
+ "nonew": true,
+ "nonstandard": false,
+ "nomen": false,
+ "onecase": false,
+ "onevar": false,
+ "passfail": false,
+ "plusplus": false,
+ "proto": false,
+ "prototypejs": false,
+ "regexdash": true,
+ "regexp": false,
+ "rhino": false,
+ "undef": true,
+ "unused": "strict",
+ "scripturl": true,
+ "shadow": false,
+ "smarttabs": true,
+ "strict": false,
+ "sub": false,
+ "supernew": false,
+ "trailing": true,
+ "validthis": true,
+ "withstmt": false,
+ "white": true,
+ "worker": false,
+ "wsh": false,
+ "yui": false,
+ "indent": 4,
+ "predef": ["require", "define", "JSON"],
+ "quotmark": "single",
+ "maxcomplexity": 10,
+ "esnext": true
+}
diff --git a/.pep8rc b/.pep8rc
new file mode 100644
index 0000000..dc9adae
--- /dev/null
+++ b/.pep8rc
@@ -0,0 +1,7 @@
+; TODO: This configuration currently not used in pytest-pep8, see
+; <https://bitbucket.org/pytest-dev/pytest-pep8/issues/11/add-option-to-use-pep8rc-configuration>
+
+[pep8]
+show-source = yes
+statistics = yes
+count = yes
diff --git a/.pylintrc b/.pylintrc
new file mode 100644
index 0000000..27e8cf7
--- /dev/null
+++ b/.pylintrc
@@ -0,0 +1,393 @@
+[MASTER]
+
+# Specify a configuration file.
+#rcfile=
+
+# Python code to execute, usually for sys.path manipulation such as
+# pygtk.require().
+#init-hook=
+
+# Profiled execution.
+profile=no
+
+# Add files or directories to the blacklist. They should be base names, not
+# paths.
+ignore=
+
+# Pickle collected data for later comparisons.
+persistent=yes
+
+# List of plugins (as comma separated values of python modules names) to load,
+# usually to register additional checkers.
+load-plugins=
+
+# Deprecated. It was used to include message's id in output. Use --msg-template
+# instead.
+#include-ids=no
+
+# Deprecated. It was used to include symbolic ids of messages in output. Use
+# --msg-template instead.
+#symbols=no
+
+# Use multiple processes to speed up Pylint.
+jobs=1
+
+# Allow loading of arbitrary C extensions. Extensions are imported into the
+# active Python interpreter and may run arbitrary code.
+unsafe-load-any-extension=no
+
+# A comma-separated list of package or module names from where C extensions may
+# be loaded. Extensions are loading into the active Python interpreter and may
+# run arbitrary code
+extension-pkg-whitelist=
+
+# Allow optimization of some AST trees. This will activate a peephole AST
+# optimizer, which will apply various small optimizations. For instance, it can
+# be used to obtain the result of joining multiple strings with the addition
+# operator. Joining a lot of strings can lead to a maximum recursion error in
+# Pylint and this flag can prevent that. It has one side effect, the resulting
+# AST will be different than the one from reality.
+optimize-ast=no
+
+
+[MESSAGES CONTROL]
+
+# Only show warnings with the listed confidence levels. Leave empty to show
+# all. Valid levels: HIGH, INFERENCE, INFERENCE_FAILURE, UNDEFINED
+confidence=
+
+# Enable the message, report, category or checker with the given id(s). You can
+# either give multiple identifier separated by comma (,) or put this option
+# multiple time. See also the "--disable" option for examples.
+#enable=
+
+# Disable the message, report, category or checker with the given id(s). You
+# can either give multiple identifiers separated by comma (,) or put this
+# option multiple times (only on the command line, not in the configuration
+# file where it should appear only once).You can also use "--disable=all" to
+# disable everything first and then reenable specific checks. For example, if
+# you want to run only the similarities checker, you can use "--disable=all
+# --enable=similarities". If you want to run only the classes checker, but have
+# no Warning level messages displayed, use"--disable=all --enable=classes
+# --disable=W"
+disable=E1604,W1629,W1605,I0020,W1609,W1615,W1610,W1618,W1608,W1622,W1640,E1603,W1635,W1636,W1634,W1628,W1614,E1601,W1601,I0021,E1605,W1611,W1612,W1619,W1616,W1638,W1626,W1630,W1607,E1602,W1623,W1613,W1606,W1625,W0704,W1639,W1603,W1632,E1606,W1602,W1637,W1624,W1620,E1608,W1627,E1607,W1633,W1604,W1617,W1621
+
+
+[REPORTS]
+
+# Set the output format. Available formats are text, parseable, colorized, msvs
+# (visual studio) and html. You can also give a reporter class, eg
+# mypackage.mymodule.MyReporterClass.
+output-format=text
+
+# Put messages in a separate file for each module / package specified on the
+# command line instead of printing them on stdout. Reports (if any) will be
+# written in a file name "pylint_global.[txt|html]".
+files-output=no
+
+# Tells whether to display a full report or only the messages
+reports=yes
+
+# Python expression which should return a note less than 10 (10 is the highest
+# note). You have access to the variables errors warning, statement which
+# respectively contain the number of errors / warnings messages and the total
+# number of statements analyzed. This is used by the global evaluation report
+# (RP0004).
+evaluation=10.0 - ((float(5 * error + warning + refactor + convention) / statement) * 10)
+
+# Add a comment according to your evaluation note. This is used by the global
+# evaluation report (RP0004).
+comment=no
+
+# Template used to display messages. This is a python new-style format string
+# used to format the message information. See doc for all details.
+# Path/line on separate added to allow IDE to parse error messages and
+# provide interactive link on the place of the error.
+msg-template={path}:{line}:
+ {C}:{msg_id}:{line:3d},{column:2d}: {msg} ({symbol})
+
+
+[LOGGING]
+
+# Logging modules to check that the string format arguments are in logging
+# function parameter format
+logging-modules=logging
+
+
+[FORMAT]
+
+# Maximum number of characters on a single line.
+max-line-length=100
+
+# Regexp for a line that is allowed to be longer than the limit.
+ignore-long-lines=^\s*(# )?<?https?://\S+>?$
+
+# Allow the body of an if to be on the same line as the test if there is no
+# else.
+single-line-if-stmt=no
+
+# List of optional constructs for which whitespace checking is disabled
+no-space-check=trailing-comma,dict-separator
+
+# Maximum number of lines in a module
+max-module-lines=1000
+
+# String used as indentation unit. This is usually " " (4 spaces) or "\t" (1
+# tab).
+indent-string=' '
+
+# Number of spaces of indent required inside a hanging or continued line.
+indent-after-paren=4
+
+# Expected format of line ending, e.g. empty (any line ending), LF or CRLF.
+expected-line-ending-format=
+
+
+[MISCELLANEOUS]
+
+# List of note tags to take in consideration, separated by a comma.
+notes=FIXME,XXX,TODO
+
+
+[VARIABLES]
+
+# Tells whether we should check for unused import in __init__ files.
+init-import=no
+
+# A regular expression matching the name of dummy variables (i.e. expectedly
+# not used).
+dummy-variables-rgx=_$|dummy
+
+# List of additional names supposed to be defined in builtins. Remember that
+# you should avoid to define new builtins when possible.
+additional-builtins=
+
+# List of strings which can identify a callback function by name. A callback
+# name must start or end with one of those strings.
+callbacks=cb_,_cb
+
+
+[BASIC]
+
+# Required attributes for module, separated by a comma
+required-attributes=
+
+# List of builtins function names that should not be used, separated by a comma
+bad-functions=map,filter
+
+# Good variable names which should always be accepted, separated by a comma
+good-names=i,j,k,ex,Run,_
+
+# Bad variable names which should always be refused, separated by a comma
+bad-names=foo,bar,baz,toto,tutu,tata
+
+# Colon-delimited sets of names that determine each other's naming style when
+# the name regexes allow several styles.
+name-group=
+
+# Include a hint for the correct naming format with invalid-name
+include-naming-hint=no
+
+# Regular expression matching correct module names
+module-rgx=(([a-z_][a-z0-9_]*)|([A-Z][a-zA-Z0-9]+))$
+
+# Naming hint for module names
+module-name-hint=(([a-z_][a-z0-9_]*)|([A-Z][a-zA-Z0-9]+))$
+
+# Regular expression matching correct method names
+method-rgx=[a-z_][a-z0-9_]{2,30}$
+
+# Naming hint for method names
+method-name-hint=[a-z_][a-z0-9_]{2,30}$
+
+# Regular expression matching correct class attribute names
+class-attribute-rgx=([A-Za-z_][A-Za-z0-9_]{2,30}|(__.*__))$
+
+# Naming hint for class attribute names
+class-attribute-name-hint=([A-Za-z_][A-Za-z0-9_]{2,30}|(__.*__))$
+
+# Regular expression matching correct class names
+class-rgx=[A-Z_][a-zA-Z0-9]+$
+
+# Naming hint for class names
+class-name-hint=[A-Z_][a-zA-Z0-9]+$
+
+# Regular expression matching correct function names
+function-rgx=[a-z_][a-z0-9_]{2,30}$
+
+# Naming hint for function names
+function-name-hint=[a-z_][a-z0-9_]{2,30}$
+
+# Regular expression matching correct inline iteration names
+inlinevar-rgx=[A-Za-z_][A-Za-z0-9_]*$
+
+# Naming hint for inline iteration names
+inlinevar-name-hint=[A-Za-z_][A-Za-z0-9_]*$
+
+# Regular expression matching correct constant names
+const-rgx=(([A-Z_][A-Z0-9_]*)|(__.*__))$
+
+# Naming hint for constant names
+const-name-hint=(([A-Z_][A-Z0-9_]*)|(__.*__))$
+
+# Regular expression matching correct argument names
+argument-rgx=[a-z_][a-z0-9_]{2,30}$
+
+# Naming hint for argument names
+argument-name-hint=[a-z_][a-z0-9_]{2,30}$
+
+# Regular expression matching correct attribute names
+attr-rgx=[a-z_][a-z0-9_]{2,30}$
+
+# Naming hint for attribute names
+attr-name-hint=[a-z_][a-z0-9_]{2,30}$
+
+# Regular expression matching correct variable names
+variable-rgx=[a-z_][a-z0-9_]{2,30}$
+
+# Naming hint for variable names
+variable-name-hint=[a-z_][a-z0-9_]{2,30}$
+
+# Regular expression which should only match function or class names that do
+# not require a docstring.
+no-docstring-rgx=__.*__
+
+# Minimum line length for functions/classes that require docstrings, shorter
+# ones are exempt.
+docstring-min-length=-1
+
+
+[TYPECHECK]
+
+# Tells whether missing members accessed in mixin class should be ignored. A
+# mixin class is detected if its name ends with "mixin" (case insensitive).
+ignore-mixin-members=yes
+
+# List of module names for which member attributes should not be checked
+# (useful for modules/projects where namespaces are manipulated during runtime
+# and thus existing member attributes cannot be deduced by static analysis
+ignored-modules=
+
+# List of classes names for which member attributes should not be checked
+# (useful for classes with attributes dynamically set).
+ignored-classes=SQLObject
+
+# When zope mode is activated, add a predefined set of Zope acquired attributes
+# to generated-members.
+zope=no
+
+# List of members which are set dynamically and missed by pylint inference
+# system, and so shouldn't trigger E0201 when accessed. Python regular
+# expressions are accepted.
+generated-members=REQUEST,acl_users,aq_parent
+
+
+[SPELLING]
+
+# Spelling dictionary name. Available dictionaries: none. To make it working
+# install python-enchant package.
+spelling-dict=
+
+# List of comma separated words that should not be checked.
+spelling-ignore-words=
+
+# A path to a file that contains private dictionary; one word per line.
+spelling-private-dict-file=
+
+# Tells whether to store unknown words to indicated private dictionary in
+# --spelling-private-dict-file option instead of raising a message.
+spelling-store-unknown-words=no
+
+
+[SIMILARITIES]
+
+# Minimum lines number of a similarity.
+min-similarity-lines=4
+
+# Ignore comments when computing similarities.
+ignore-comments=yes
+
+# Ignore docstrings when computing similarities.
+ignore-docstrings=yes
+
+# Ignore imports when computing similarities.
+ignore-imports=no
+
+
+[IMPORTS]
+
+# Deprecated modules which should not be used, separated by a comma
+deprecated-modules=stringprep,optparse
+
+# Create a graph of every (i.e. internal and external) dependencies in the
+# given file (report RP0402 must not be disabled)
+import-graph=
+
+# Create a graph of external dependencies in the given file (report RP0402 must
+# not be disabled)
+ext-import-graph=
+
+# Create a graph of internal dependencies in the given file (report RP0402 must
+# not be disabled)
+int-import-graph=
+
+
+[CLASSES]
+
+# List of interface methods to ignore, separated by a comma. This is used for
+# instance to not check methods defines in Zope's Interface base class.
+ignore-iface-methods=isImplementedBy,deferred,extends,names,namesAndDescriptions,queryDescriptionFor,getBases,getDescriptionFor,getDoc,getName,getTaggedValue,getTaggedValueTags,isEqualOrExtendedBy,setTaggedValue,isImplementedByInstancesOf,adaptWith,is_implemented_by
+
+# List of method names used to declare (i.e. assign) instance attributes.
+defining-attr-methods=__init__,__new__,setUp
+
+# List of valid names for the first argument in a class method.
+valid-classmethod-first-arg=cls
+
+# List of valid names for the first argument in a metaclass class method.
+valid-metaclass-classmethod-first-arg=mcs
+
+# List of member names, which should be excluded from the protected access
+# warning.
+exclude-protected=_asdict,_fields,_replace,_source,_make
+
+
+[DESIGN]
+
+# Maximum number of arguments for function / method
+max-args=5
+
+# Argument names that match this expression will be ignored. Default to name
+# with leading underscore
+ignored-argument-names=_.*
+
+# Maximum number of locals for function / method body
+max-locals=15
+
+# Maximum number of return / yield for function / method body
+max-returns=6
+
+# Maximum number of branch for function / method body
+max-branches=12
+
+# Maximum number of statements in function / method body
+max-statements=50
+
+# Maximum number of parents for a class (see R0901).
+max-parents=7
+
+# Maximum number of attributes for a class (see R0902).
+max-attributes=7
+
+# Minimum number of public methods for a class (see R0903).
+min-public-methods=2
+
+# Maximum number of public methods for a class (see R0904).
+max-public-methods=20
+
+
+[EXCEPTIONS]
+
+# Exceptions that will emit a warning when being caught. Defaults to
+# "Exception"
+overgeneral-exceptions=Exception
diff --git a/.travis.yml b/.travis.yml
new file mode 100644
index 0000000..b42cab6
--- /dev/null
+++ b/.travis.yml
@@ -0,0 +1,60 @@
+language: python
+dist: trusty
+python:
+- 3.4
+- 3.5
+- 3.6
+
+# TODO: Use Travis apt addon, when chromium-chromedriver will be supported
+# three: https://github.com/travis-ci/apt-package-whitelist/issues/574
+before_install:
+ - sudo apt-get -qq update
+ - sudo apt-get install -y chromium-browser chromium-chromedriver
+
+install:
+- pip install --upgrade pip setuptools wheel
+# aiohttp git repo has only *.pyx files, so install cython too.
+- '[ -z "$MASTER_AIOHTTP" ] || pip install -U cython git+https://github.com/KeepSafe/aiohttp.git'
+- pip install -Ur requirements-dev.txt
+
+before_script:
+ # Start X-server for Selenium tests.
+ - "export DISPLAY=:99.0"
+ - "sh -e /etc/init.d/xvfb start"
+ - sleep 3 # give xvfb some time to start
+
+script:
+- '[ "$TYPE" != "test" ] || python setup.py test --addopts -v --addopts -s'
+- '[ "$TYPE" != "lint" ] || python setup.py check'
+
+env:
+ global:
+ - WEBDRIVER_CHROMEDRIVER_PATH=/usr/lib/chromium-browser/chromedriver
+ matrix:
+ # PYTHONASYNCIODEBUG environment variable is considered as enabled if it
+ # is any non empty string.
+ - TYPE=test PYTHONASYNCIODEBUG= MASTER_AIOHTTP=
+ - TYPE=test PYTHONASYNCIODEBUG=x MASTER_AIOHTTP=
+ - TYPE=test PYTHONASYNCIODEBUG= MASTER_AIOHTTP=x
+ - TYPE=test PYTHONASYNCIODEBUG=x MASTER_AIOHTTP=x
+
+matrix:
+ include:
+ # Environment to deploy project on PyPI.
+ - python: "3.5"
+ env: DEPLOY_ENV=1
+
+ - python: "3.5"
+ env: TYPE=lint
+
+# Deploy on PyPI all tagged build on master branch.
+deploy:
+ provider: pypi
+ user: aiohttp-cors-deploy
+ password:
+ secure: KViGT/W2vWRWZkV5bZYLiI3v/qXVRGEFAs8G1OMx/OhLvHTj8vO6pZ+hlzLi9zTnBTVHG2xEOrwtjiuHxpJMcDPAul3rn0fwSXy9BRDAeR7B7RIlvLxegMRTnWtsj5x8/VkqQDrPW5YWmuXFb4tDJ+LEkadUrkF9YhJvtUnSQcEOOHVvJa4DekMhZEVM8AKA+7AT9FibWZbJ5s8bTjLke77/eyX7+1DdgC7G++ZesK2HKS1vlM7fN+cWPyUFofXwcEc42rwQwJ5FY2saqTvPN5GBOMpXdaBUmSyYT64447TVFoINbAFuCa3tUeY7ZQpC6B8bHVqEGq+UAujUGU7uhid29CHV03PTFeupTZRscVDkL+IEUjK6Ft+x/B9eStVpKh9d5Yh8INZkdoHVmybJo62k/YHwxAu7ftG+q1bUAHwgKkukXa+ZpmSD2v6BggVUBS6qFwv6tnKpuI0jRsneEUXPmJVUHpv6 [...]
+ distributions: sdist bdist_wheel
+ on:
+ tags: true
+ branch: master
+ condition: $DEPLOY_ENV = 1
diff --git a/CHANGES.rst b/CHANGES.rst
index e3ba630..3224364 100644
--- a/CHANGES.rst
+++ b/CHANGES.rst
@@ -1,10 +1,28 @@
CHANGES
=======
+0.5.3 (2017-04-21)
+------------------
+
+- Fix `typing` being installed on Python 3.6.
+
+0.5.2 (2017-03-28)
+------------------
+
+- Fix tests compatibility with ``aiohttp`` 2.0.
+ This release and release v0.5.0 should work on ``aiohttp`` 2.0.
+
+
+0.5.1 (2017-03-23)
+------------------
+
+- Enforce ``aiohttp`` version to be less than 2.0.
+ Newer ``aiohttp`` releases will be supported in the next release.
+
0.5.0 (2016-11-18)
------------------
-- Fix compatibility with aiohttp 1.1
+- Fix compatibility with ``aiohttp`` 1.1
0.4.0 (2016-04-04)
diff --git a/PKG-INFO b/PKG-INFO
deleted file mode 100644
index a469a44..0000000
--- a/PKG-INFO
+++ /dev/null
@@ -1,556 +0,0 @@
-Metadata-Version: 1.1
-Name: aiohttp-cors
-Version: 0.5.0
-Summary: CORS support for aiohttp
-Home-page: https://github.com/aio-libs/aiohttp-cors
-Author: Vladimir Rutsky
-Author-email: vladimir at rutsky.org
-License: Apache License, Version 2.0
-Description: CORS support for aiohttp
- ========================
-
- ``aiohttp_cors`` library implements
- `Cross Origin Resource Sharing (CORS) <cors_>`__
- support for `aiohttp <aiohttp_>`__
- asyncio-powered asynchronous HTTP server.
-
- Jump directly to `Usage`_ part to see how to use ``aiohttp_cors``.
-
- Same-origin policy
- ==================
-
- Web security model is tightly connected to
- `Same-origin policy (SOP) <sop_>`__.
- In short: web pages cannot *Read* resources which origin
- doesn't match origin of requested page, but can *Embed* (or *Execute*)
- resources and have limited ability to *Write* resources.
-
- Origin of a page is defined in the `Standard <cors_>`__ as tuple
- ``(schema, host, port)``
- (there is a notable exception with Internet Explorer: it doesn't use port to
- define origin, but uses it's own
- `Security Zones <https://msdn.microsoft.com/en-us/library/ms537183.aspx>`__).
-
- Can *Embed* means that resource from other origin can be embedded into
- the page,
- e.g. by using ``<script src="...">``, ``<img src="...">``,
- ``<iframe src="...">``.
-
- Cannot *Read* means that resource from other origin *source* cannot be
- obtained by page
- (*source* — any information that would allow to reconstruct resource).
- E.g. the page can *Embed* image with ``<img src="...">``,
- but it can't get information about specific pixels, so page can't reconstruct
- original image
- (though some information from the other resource may still be leaked:
- e.g. the page can read embedded image dimensions).
-
- Limited ability to *Write* means, that the page can send POST requests to
- other origin with limited set of ``Content-Type`` values and headers.
-
- Restriction to *Read* resource from other origin is related to authentication
- mechanism that is used by browsers:
- when browser reads (downloads) resource he automatically sends all security
- credentials that user previously authorized for that resource
- (e.g. cookies, HTTP Basic Authentication).
-
- For example, if *Read* would be allowed and user is authenticated
- in some internet banking,
- malicious page would be able to embed internet banking page with ``iframe``
- (since authentication is done by the browser it may be embedded as if
- user is directly navigated to internet banking page),
- then read user private information by reading *source* of the embedded page
- (which may be not only source code, but, for example,
- screenshot of the embedded internet banking page).
-
- Cross-origin resource sharing
- =============================
-
- `Cross-origin Resource Sharing (CORS) <cors_>`__ allows to override
- SOP for specific resources.
-
- In short, CORS works in the following way.
-
- When page ``https://client.example.com`` request (*Read*) resource
- ``https://server.example.com/resource`` that have other origin,
- browser implicitly appends ``Origin: https://client.example.com`` header
- to the HTTP request,
- effectively requesting server to give read permission for
- the resource to the ``https://client.example.com`` page::
-
- GET /resource HTTP/1.1
- Origin: https://client.example.com
- Host: server.example.com
-
- If server allows access from the page to the resource, it responds with
- resource with ``Access-Control-Allow-Origin: https://client.example.com``
- HTTP header
- (optionally allowing exposing custom server headers to the page and
- enabling use of the user credentials on the server resource)::
-
- Access-Control-Allow-Origin: https://client.example.com
- Access-Control-Allow-Credentials: true
- Access-Control-Expose-Headers: X-Server-Header
-
- Browser checks, if server responded with proper
- ``Access-Control-Allow-Origin`` header and accordingly allows or denies
- access for the obtained resource to the page.
-
- CORS specification designed in a way that servers that are not aware
- of CORS will not expose any additional information, except allowed by the
- SOP.
-
- To request resources with custom headers or using custom HTTP methods
- (e.g. ``PUT``, ``DELETE``) that are not allowed by SOP,
- CORS-enabled browser first send *preflight request* to the
- resource using ``OPTIONS`` method, in which he queries access to the resource
- with specific method and headers::
-
- OPTIONS / HTTP/1.1
- Origin: https://client.example.com
- Access-Control-Request-Method: PUT
- Access-Control-Request-Headers: X-Client-Header
-
- CORS-enabled server responds is requested method is allowed and which of
- the specified headers are allowed::
-
- Access-Control-Allow-Origin: https://client.example.com
- Access-Control-Allow-Credentials: true
- Access-Control-Allow-Methods: PUT
- Access-Control-Allow-Headers: X-Client-Header
- Access-Control-Max-Age: 3600
-
- Browser checks response to preflight request, and, if actual request allowed,
- does actual request.
-
- Installation
- ============
-
- You can install ``aiohttp_cors`` as a typical Python library from PyPI or
- from git:
-
- .. code-block:: bash
-
- $ pip install aiohttp_cors
-
- Note that ``aiohttp_cors`` requires versions of Python >= 3.4.1 and
- ``aiohttp`` >= 0.21.4.
-
- Usage
- =====
-
- To use ``aiohttp_cors`` you need to configure the application and
- enable CORS on
- `resources and routes <https://aiohttp.readthedocs.org/en/stable/web.html#resources-and-routes>`__
- that you want to expose:
-
- .. code-block:: python
-
- import asyncio
- from aiohttp import web
- import aiohttp_cors
-
- @asyncio.coroutine
- def handler(request):
- return web.Response(
- text="Hello!",
- headers={
- "X-Custom-Server-Header": "Custom data",
- })
-
- app = web.Application()
-
- # `aiohttp_cors.setup` returns `aiohttp_cors.CorsConfig` instance.
- # The `cors` instance will store CORS configuration for the
- # application.
- cors = aiohttp_cors.setup(app)
-
- # To enable CORS processing for specific route you need to add
- # that route to the CORS configuration object and specify its
- # CORS options.
- resource = cors.add(app.router.add_resource("/hello"))
- route = cors.add(
- resource.add_route("GET", handler), {
- "http://client.example.org": aiohttp_cors.ResourceOptions(
- allow_credentials=True,
- expose_headers=("X-Custom-Server-Header",),
- allow_headers=("X-Requested-With", "Content-Type"),
- max_age=3600,
- )
- })
-
- Each route has it's own CORS configuration passed in ``CorsConfig.add()``
- method.
-
- CORS configuration is a mapping from origins to options for that origins.
-
- In the example above CORS is configured for the resource under path ``/hello``
- and HTTP method ``GET``, and in the context of CORS:
-
- * This resource will be available using CORS only to
- ``http://client.example.org`` origin.
-
- * Passing of credentials to this resource will be allowed.
-
- * The resource will expose to the client ``X-Custom-Server-Header``
- server header.
-
- * The client will be allowed to pass ``X-Requested-With`` and
- ``Content-Type`` headers to the server.
-
- * Preflight requests will be allowed to be cached by client for ``3600``
- seconds.
-
- Resource will be available only to the explicitly specified origins.
- You can specify "all other origins" using special ``*`` origin:
-
- .. code-block:: python
-
- cors.add(route, {
- "*":
- aiohttp_cors.ResourceOptions(allow_credentials=False),
- "http://client.example.org":
- aiohttp_cors.ResourceOptions(allow_credentials=True),
- })
-
- Here the resource specified by ``route`` will be available to all origins with
- disallowed credentials passing, and with allowed credentials passing only to
- ``http://client.example.org``.
-
- By default ``ResourceOptions`` will be constructed without any allowed CORS
- options.
- This means, that resource will be available using CORS to specified origin,
- but client will not be allowed to send either credentials,
- or send non-simple headers, or read from server non-simple headers.
-
- To enable sending or receiving all headers you can specify special value
- ``*`` instead of sequence of headers:
-
- .. code-block:: python
-
- cors.add(route, {
- "http://client.example.org":
- aiohttp_cors.ResourceOptions(
- expose_headers="*",
- allow_headers="*"),
- })
-
- You can specify default CORS-enabled resource options using
- ``aiohttp_cors.setup()``'s ``defaults`` argument:
-
- .. code-block:: python
-
- cors = aiohttp_cors.setup(app, defaults={
- # Allow all to read all CORS-enabled resources from
- # http://client.example.org.
- "http://client.example.org": aiohttp_cors.ResourceOptions(),
- })
-
- # Enable CORS on routes.
-
- # According to defaults POST and PUT will be available only to
- # "http://client.example.org".
... 1478 lines suppressed ...
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/python-modules/packages/aiohttp-cors.git
More information about the Python-modules-commits
mailing list