Module ImportFrom alias ImportFrom alias ImportFrom alias ImportFrom alias ImportFrom alias Import alias Import alias ImportFrom alias Import alias ImportFrom alias ImportFrom alias alias ImportFrom alias alias alias alias ImportFrom alias ImportFrom alias alias alias alias ImportFrom alias alias alias alias alias ImportFrom alias ImportFrom alias Assign NameStore Num ClassDef bases NameLoad body Expr Str FunctionDef arguments args NameParam NameParam NameParam defaults body Assign AttributeStore NameLoad attr NameLoad Assign AttributeStore NameLoad attr NameLoad Assign AttributeStore NameLoad attr Call NameLoad NameLoad keyword Str Assign AttributeStore NameLoad attr Call NameLoad Call AttributeLoad NameLoad attr Str Str Assign TupleStore AttributeStore NameLoad attr AttributeStore NameLoad attr Call NameLoad NameLoad Call NameLoad keyword Str Assign AttributeStore NameLoad attr SubscriptLoad AttributeLoad NameLoad attr Index Num Expr Call AttributeLoad AttributeLoad NameLoad attr attr BinOpMod Str TupleLoad IfExp AttributeLoad NameLoad attr AttributeLoad NameLoad attr Str Assign AttributeStore NameLoad attr Call AttributeLoad NameLoad attr Str Str If BoolOpOr UnaryOpNot AttributeLoad NameLoad attr UnaryOpNot Call AttributeLoad AttributeLoad NameLoad attr attr Str body Expr Call AttributeLoad AttributeLoad NameLoad attr attr BinOpMod Str AttributeLoad NameLoad attr Assign AttributeStore NameLoad attr Str If UnaryOpNot Call AttributeLoad AttributeLoad NameLoad attr attr Str body Assign AttributeStore NameLoad attr BinOpAdd Str AttributeLoad NameLoad attr If UnaryOpNot Call AttributeLoad AttributeLoad NameLoad attr attr Str body AugAssignAdd AttributeStore NameLoad attr Str Assign AttributeStore NameLoad attr Call NameLoad Call AttributeLoad NameLoad attr Str NameLoad Assign AttributeStore NameLoad attr Call NameLoad Call AttributeLoad NameLoad attr Str Str Assign AttributeStore NameLoad attr Call AttributeLoad NameLoad attr Str Str Assign AttributeStore NameLoad attr Dict For NameStore NameLoad body If BoolOpOr Call AttributeLoad NameLoad attr Str Call AttributeLoad NameLoad attr Str body Assign TupleStore NameStore NameStore Call AttributeLoad SubscriptLoad Call AttributeLoad NameLoad attr Str Num Index Num attr Str If Call AttributeLoad NameLoad attr Str body AugAssignAdd NameStore BinOpMult Str BinOpMod Call NameLoad NameLoad Num Assign NameStore Call AttributeLoad NameLoad attr NameLoad AugAssignAdd NameStore BinOpMult Str BinOpMod Call NameLoad NameLoad Num Assign NameStore Call AttributeLoad NameLoad attr NameLoad Assign NameStore Call AttributeLoad SubscriptLoad NameLoad Index NameLoad attr If UnaryOpNot NameLoad body Raise Call NameLoad BinOpMod Str NameLoad Assign NameStore Call AttributeLoad NameLoad attr Num If BoolOpAnd NameLoad BoolOpOr CompareIn Str SubscriptLoad NameLoad Index Num CompareIn Str SubscriptLoad NameLoad Index Num body Assign NameStore Call AttributeLoad NameLoad attr orelse Assign NameStore BinOpMod Str TupleLoad AttributeLoad NameLoad attr NameLoad Assign SubscriptStore AttributeLoad NameLoad attr Index BinOpAdd BinOpAdd NameLoad Str NameLoad Dict Str Str Str NameLoad NameLoad NameLoad decorator_list FunctionDef arguments args NameParam NameParam NameParam defaults body Expr Str If BoolOpAnd AttributeLoad NameLoad attr Call AttributeLoad NameLoad attr Str NameLoad body Return Call AttributeLoad NameLoad attr NameLoad NameLoad If Call AttributeLoad Call AttributeLoad NameLoad attr Str Str attr AttributeLoad NameLoad attr body Return Call AttributeLoad NameLoad attr NameLoad NameLoad Assign NameStore Call AttributeLoad NameLoad attr Str Assign NameStore Call AttributeLoad NameLoad attr Str Call AttributeLoad NameLoad attr Str Assign NameStore Call AttributeLoad NameLoad attr Str If BoolOpOr NameLoad BoolOpAnd NameLoad Call AttributeLoad NameLoad attr AttributeLoad NameLoad attr body Assign NameStore Call AttributeLoad NameLoad attr NameLoad NameLoad If NameLoad body Assign NameStore Call AttributeLoad NameLoad attr NameLoad NameLoad If BoolOpAnd NameLoad NameLoad body AugAssignAdd NameStore BinOpAdd Str NameLoad If NameLoad body Assign NameStore BoolOpOr BoolOpAnd NameLoad SubscriptLoad Call AttributeLoad NameLoad attr Str Num Index Num Str Assign NameStore Call AttributeLoad NameLoad attr Str Expr Call AttributeLoad AttributeLoad NameLoad attr attr BinOpMod Str TupleLoad NameLoad IfExp NameLoad Str NameLoad NameLoad Assign SubscriptStore NameLoad Index Str NameLoad Assign SubscriptStore NameLoad Index Str AttributeLoad NameLoad attr Assign SubscriptStore NameLoad Index Str NameLoad If CompareIn Str NameLoad body Assign SubscriptStore NameLoad Index Str NameLoad orelse If BoolOpAnd AttributeLoad NameLoad attr UnaryOpNot NameLoad body Expr Call AttributeLoad AttributeLoad NameLoad attr attr Str TryExcept body Assign TupleStore NameStore NameStore NameStore Call NameLoad SubscriptLoad NameLoad Index Str Num Num NameLoad handlers ExceptHandler type NameLoad body Assign NameStore Str Return Call Call NameLoad keyword Dict Str BinOpMod Str NameLoad NameLoad NameLoad orelse If CompareNotIn Str NameLoad body Assign SubscriptStore NameLoad Index Str AttributeLoad NameLoad attr orelse If Call AttributeLoad NameLoad attr Call AttributeLoad NameLoad attr Str Str body Assign SubscriptStore NameLoad Index Str AttributeLoad NameLoad attr Assign SubscriptStore NameLoad Index Str NameLoad orelse If CompareEq AttributeLoad NameLoad attr Str body If CompareNotIn Str NameLoad body Assign SubscriptStore NameLoad Index Str AttributeLoad NameLoad attr Assign SubscriptStore NameLoad Index Str NameLoad orelse If CompareNotIn Str NameLoad body Assign SubscriptStore NameLoad Index Str AttributeLoad NameLoad attr Return Call AttributeLoad NameLoad attr NameLoad NameLoad decorator_list FunctionDef arguments args NameParam NameParam defaults body Expr Str TryExcept body Assign TupleStore NameStore NameStore NameStore Call NameLoad NameLoad Num Num NameLoad handlers ExceptHandler type NameLoad body Return NameLoad If NameLoad body Return Call NameLoad Call AttributeLoad NameLoad attr NameLoad Return NameLoad decorator_list FunctionDef arguments args NameParam defaults body Return Call NameLoad ListComp NameLoad comprehension NameStore AttributeLoad NameLoad attr CompareNotEq NameLoad Str decorator_list FunctionDef arguments args NameParam NameParam defaults body Expr Str If CompareIs NameLoad NameLoad body Return NameLoad For NameStore Call AttributeLoad NameLoad attr body If Call AttributeLoad NameLoad attr NameLoad body Return NameLoad If CompareIn Str AttributeLoad NameLoad attr body Return Str Return NameLoad decorator_list FunctionDef arguments args NameParam NameParam defaults body Expr Str Assign NameStore Call AttributeLoad NameLoad attr NameLoad Return BoolOpAnd CompareIsNot NameLoad NameLoad CompareEq SubscriptLoad NameLoad Index Call NameLoad NameLoad Str decorator_list FunctionDef arguments args NameParam NameParam NameParam NameParam defaults body Expr Str Assign NameStore ListLoad NameLoad NameLoad Expr Call AttributeLoad NameLoad attr SubscriptLoad SubscriptLoad AttributeLoad NameLoad attr Index NameLoad Index Str If CompareIn Str NameLoad body Expr Call AttributeLoad NameLoad attr Str For NameStore Call AttributeLoad NameLoad attr body Expr Call AttributeLoad NameLoad attr BinOpMod Str TupleLoad NameLoad NameLoad If CompareNotIn NameLoad NameLoad body Expr Call AttributeLoad NameLoad attr NameLoad Assign NameStore Call AttributeLoad Str attr NameLoad Return NameLoad decorator_list FunctionDef arguments args NameParam NameParam NameParam defaults body Expr Str Assign NameStore NameLoad Assign NameStore Call NameLoad NameLoad If UnaryOpNot NameLoad body Raise Call NameLoad Str Assign NameStore BinOpMod Str TupleLoad AttributeLoad NameLoad attr NameLoad Assign NameStore Call AttributeLoad NameLoad attr NameLoad If NameLoad body Assign TupleStore NameStore NameStore NameLoad If CompareLt NameLoad Call NameLoad body Assign NameStore NameLoad If Call AttributeLoad NameLoad attr Str body Assign TupleStore NameStore NameStore Call AttributeLoad SubscriptLoad Call AttributeLoad SubscriptLoad NameLoad Index Str attr Str Index Num attr Str Num If CompareNotIn NameLoad AttributeLoad NameLoad attr body Return NameLoad Assign TupleStore NameStore NameStore Call AttributeLoad NameLoad attr Str Num Assign NameStore SubscriptLoad Call AttributeLoad SubscriptLoad SubscriptLoad AttributeLoad NameLoad attr Index NameLoad Index Str attr Str Num Index Num Assign NameStore SubscriptLoad NameLoad Index Str Assign SubscriptStore NameLoad Index Str Call AttributeLoad NameLoad attr NameLoad NameLoad Num Assign NameStore Call AttributeLoad NameLoad attr Call NameLoad NameLoad Assign NameStore SubscriptLoad SubscriptLoad AttributeLoad NameLoad attr Index NameLoad Index Str Assign NameStore Call AttributeLoad Call AttributeLoad NameLoad attr Call AttributeLoad Call AttributeLoad NameLoad attr NameLoad NameLoad NameLoad attr attr If CompareNotEq NameLoad NameLoad body Return NameLoad Assign NameStore Call AttributeLoad NameLoad attr NameLoad NameLoad NameLoad Return NameLoad decorator_list FunctionDef arguments args NameParam NameParam defaults body Expr Str Assign NameStore Call NameLoad AttributeLoad NameLoad attr AttributeLoad NameLoad attr keyword Str TryExcept body Assign NameStore Call NameLoad NameLoad handlers ExceptHandler type NameLoad name NameStore body Expr Call AttributeLoad AttributeLoad NameLoad attr attr BinOpMod Str NameLoad Return NameLoad ExceptHandler type NameLoad name NameStore body Expr Call AttributeLoad AttributeLoad NameLoad attr attr BinOpMod Str NameLoad Return NameLoad Return NameLoad decorator_list FunctionDef arguments args NameParam NameParam defaults body Expr Str Assign NameStore Str Assign NameStore Call AttributeLoad AttributeLoad NameLoad attr attr NameLoad Assign NameStore Call NameLoad keyword Num keyword NameLoad If CompareIs NameLoad NameLoad body Return BinOpMod Str NameLoad Assign NameStore Call AttributeLoad Str attr For NameStore NameLoad body If CompareNotIn NameLoad NameLoad body Return BinOpMod Str NameLoad For NameStore NameLoad body If CompareNotIn NameLoad NameLoad body Continue If UnaryOpNot Call NameLoad SubscriptLoad NameLoad Index NameLoad NameLoad body Return BinOpMod Str NameLoad For NameStore SubscriptLoad NameLoad Index NameLoad body If UnaryOpNot Call NameLoad NameLoad AttributeLoad NameLoad attr body Return BinOpMod Str NameLoad Assign NameStore BinOpAdd Call NameLoad Str Str Assign SubscriptStore AttributeLoad NameLoad attr Index NameLoad Call AttributeLoad AttributeLoad NameLoad attr attr NameLoad Return NameLoad decorator_list FunctionDef arguments args NameParam NameParam defaults body Expr Str TryExcept body Assign TupleStore NameStore NameStore NameStore NameStore Call AttributeLoad NameLoad attr Num Num NameLoad handlers ExceptHandler type NameLoad body Expr Call AttributeLoad AttributeLoad NameLoad attr attr Str Return Call NameLoad keyword NameLoad If CompareIs Call AttributeLoad NameLoad attr NameLoad NameLoad body Expr Call AttributeLoad AttributeLoad NameLoad attr attr BinOpMod Str TupleLoad NameLoad Call AttributeLoad Str attr AttributeLoad NameLoad attr Return Call AttributeLoad NameLoad attr NameLoad Assign NameStore Call AttributeLoad AttributeLoad NameLoad attr attr Str If CompareIsNot NameLoad NameLoad body Assign NameStore Call AttributeLoad NameLoad attr NameLoad If NameLoad body Assign NameStore BinOpMod Str TupleLoad NameLoad NameLoad Assign NameStore ListLoad TupleLoad Str Str Return Call NameLoad keyword NameLoad keyword NameLoad keyword NameLoad Assign NameStore Call AttributeLoad BoolOpOr AttributeLoad NameLoad attr Str attr Str Assign NameStore IfExp CompareGt Call NameLoad NameLoad Num SubscriptLoad NameLoad Index Num NameLoad If BoolOpAnd CompareIn Str NameLoad CompareNotIn NameLoad AttributeLoad NameLoad attr UnaryOpNot Call AttributeLoad NameLoad attr NameLoad body Assign SubscriptStore AttributeLoad NameLoad attr Index Str NameLoad Expr Call AttributeLoad AttributeLoad NameLoad attr attr BinOpMod Str NameLoad Return NameLoad If BoolOpAnd CompareIn NameLoad NameLoad BoolOpOr CompareNotIn AttributeLoad NameLoad attr TupleLoad Str Str NameLoad body Assign NameStore Call AttributeLoad NameLoad attr NameLoad Assign NameStore Call AttributeLoad Call AttributeLoad AttributeLoad NameLoad attr attr NameLoad attr Str If BoolOpAnd NameLoad CompareIn NameLoad NameLoad body Assign SubscriptStore AttributeLoad NameLoad attr Index Str NameLoad Expr Call AttributeLoad AttributeLoad NameLoad attr attr BinOpMod Str TupleLoad NameLoad NameLoad Return NameLoad orelse If UnaryOpNot NameLoad body Assign SubscriptStore AttributeLoad NameLoad attr Index Str NameLoad Expr Call AttributeLoad AttributeLoad NameLoad attr attr BinOpMod Str NameLoad Return NameLoad If BoolOpAnd Call AttributeLoad AttributeLoad NameLoad attr attr Str CompareEq SubscriptLoad AttributeLoad NameLoad attr Index Str Call AttributeLoad AttributeLoad NameLoad attr attr Str NameLoad CompareIn Str AttributeLoad NameLoad attr body Expr Call AttributeLoad AttributeLoad NameLoad attr attr BinOpMod Str SubscriptLoad AttributeLoad NameLoad attr Index Str Return NameLoad If CompareEq AttributeLoad NameLoad attr Str body Expr Call AttributeLoad AttributeLoad NameLoad attr attr Str Return NameLoad Assign TupleStore NameStore NameStore Call NameLoad Call NameLoad NameLoad Str NameLoad If Call NameLoad AttributeLoad NameLoad attr NameLoad body If BoolOpOr NameLoad CompareIn Str NameLoad body Expr Call AttributeLoad AttributeLoad NameLoad attr attr BinOpMod Str AttributeLoad NameLoad attr Return NameLoad For NameStore NameLoad body If CompareIn NameLoad NameLoad body Expr Call AttributeLoad AttributeLoad NameLoad attr attr BinOpMod Str TupleLoad NameLoad NameLoad Return NameLoad Assign NameStore Call AttributeLoad NameLoad attr NameLoad If NameLoad body Assign NameStore Call NameLoad NameLoad If Call AttributeLoad NameLoad attr SubscriptLoad NameLoad Index Str body Assign SubscriptStore AttributeLoad NameLoad attr Index Str NameLoad Expr Call AttributeLoad AttributeLoad NameLoad attr attr BinOpMod Str NameLoad Return NameLoad If BoolOpAnd Call AttributeLoad NameLoad attr SubscriptLoad NameLoad Index Str BoolOpOr NameLoad CompareIn AttributeLoad NameLoad attr TupleLoad Str Str body Expr Call AttributeLoad AttributeLoad NameLoad attr attr BinOpMod Str NameLoad Return NameLoad If BoolOpAnd Call AttributeLoad NameLoad attr SubscriptLoad NameLoad Index Str CompareIn AttributeLoad NameLoad attr TupleLoad Str Str body Expr Call AttributeLoad AttributeLoad NameLoad attr attr BinOpMod Str NameLoad Return NameLoad Return Call AttributeLoad NameLoad attr NameLoad decorator_list FunctionDef arguments args NameParam NameParam defaults body Expr Str If AttributeLoad NameLoad attr body Expr Call AttributeLoad AttributeLoad NameLoad attr attr Str Return Call NameLoad keyword NameLoad orelse Expr Call AttributeLoad AttributeLoad NameLoad attr attr Str Return Call NameLoad keyword NameLoad decorator_list FunctionDef arguments args NameParam NameParam NameParam defaults body Expr Str TryExcept body Assign NameStore Call NameLoad NameLoad If AttributeLoad NameLoad attr body Expr Call AttributeLoad NameLoad attr Assign AttributeStore NameLoad attr Str Assign AttributeStore NameLoad attr NameLoad If BoolOpAnd CompareIn Str AttributeLoad NameLoad attr CompareNotIn Str AttributeLoad NameLoad attr body Assign SubscriptStore AttributeLoad NameLoad attr Index Str SubscriptLoad AttributeLoad NameLoad attr Index Str Return Call Call AttributeLoad NameLoad attr NameLoad NameLoad NameLoad handlers ExceptHandler type TupleLoad NameLoad NameLoad body Expr Call NameLoad BinOpMod Str TupleLoad Call NameLoad NameLoad Expr Call AttributeLoad AttributeLoad NameLoad attr attr Str Expr Call NameLoad Str ListLoad TupleLoad Str Str Return ListLoad Str decorator_list FunctionDef arguments args NameParam NameParam defaults body Expr Str Assign AttributeStore NameLoad attr Call NameLoad Assign NameStore NameLoad TryExcept body Assign TupleStore NameStore NameStore NameStore NameStore Call NameLoad AttributeLoad NameLoad attr Num Num NameLoad handlers ExceptHandler type NameLoad body Expr Call AttributeLoad AttributeLoad NameLoad attr attr Str Return Call NameLoad keyword NameLoad If CompareIn NameLoad TupleLoad Str Str Str body If CompareEq AttributeLoad NameLoad attr Str body Assign NameStore AttributeLoad NameLoad attr If UnaryOpNot NameLoad body Expr Call AttributeLoad AttributeLoad NameLoad attr attr Str Assign AttributeStore NameLoad attr Call NameLoad keyword NameLoad orelse Assign AttributeStore NameLoad attr Call NameLoad NameLoad Return AttributeLoad NameLoad attr decorator_list FunctionDef arguments args NameParam NameParam defaults body Expr Str TryExcept body Assign NameStore Call NameLoad AttributeLoad NameLoad attr Num Num NameLoad handlers ExceptHandler type NameLoad body Expr Call AttributeLoad AttributeLoad NameLoad attr attr Str Return Call NameLoad keyword NameLoad If BoolOpAnd CompareEq SubscriptLoad NameLoad Index Num Str CompareEq SubscriptLoad NameLoad Index Num Str body Assign NameStore SubscriptLoad NameLoad Index Num Assign NameStore Call AttributeLoad AttributeLoad NameLoad attr attr Str If UnaryOpNot NameLoad body Assign NameStore Call AttributeLoad AttributeLoad NameLoad attr attr Str If BoolOpOr UnaryOpNot NameLoad CompareNotIn Str NameLoad body Expr Call AttributeLoad AttributeLoad NameLoad attr attr Str Assign NameStore BinOpMod Str NameLoad Return Call NameLoad keyword NameLoad keyword Dict Str NameLoad Assign TupleStore NameStore NameStore Call AttributeLoad NameLoad attr Str Num If CompareNotEq NameLoad NameLoad body Expr Call AttributeLoad AttributeLoad NameLoad attr attr Str Assign NameStore BinOpMod Str NameLoad Return Call NameLoad keyword NameLoad keyword Dict Str NameLoad Assign NameStore Call AttributeLoad AttributeLoad NameLoad attr attr Str If UnaryOpNot NameLoad body Assign NameStore Call AttributeLoad AttributeLoad NameLoad attr attr Str orelse If CompareIn SubscriptLoad NameLoad Index Num TupleLoad Str Str body Assign NameStore Call AttributeLoad AttributeLoad NameLoad attr attr Str If UnaryOpNot NameLoad body Assign NameStore Call AttributeLoad AttributeLoad NameLoad attr attr Str If BoolOpOr UnaryOpNot NameLoad CompareNotIn Str NameLoad body Expr Call AttributeLoad AttributeLoad NameLoad attr attr Str Assign NameStore Str Return Call NameLoad keyword NameLoad keyword Dict Str NameLoad Assign TupleStore NameStore NameStore Call AttributeLoad NameLoad attr Str Num Assign NameStore Call AttributeLoad AttributeLoad NameLoad attr attr Str If UnaryOpNot NameLoad body Assign NameStore Call AttributeLoad AttributeLoad NameLoad attr attr Str orelse Return Call NameLoad keyword NameLoad If UnaryOpNot Call NameLoad TupleLoad NameLoad NameLoad NameLoad body Expr Call AttributeLoad AttributeLoad NameLoad attr attr Str Assign NameStore BoolOpOr NameLoad Str Return Call NameLoad keyword NameLoad keyword Dict Str BinOpMod Str NameLoad Assign NameStore BinOpAdd BinOpAdd NameLoad Str NameLoad If CompareNotIn NameLoad AttributeLoad NameLoad attr body Expr Call AttributeLoad AttributeLoad NameLoad attr attr Str Assign NameStore BinOpMod Str NameLoad Return Call NameLoad keyword NameLoad keyword Dict Str NameLoad If CompareNotEq SubscriptLoad SubscriptLoad AttributeLoad NameLoad attr Index NameLoad Index Str NameLoad body Expr Call AttributeLoad AttributeLoad NameLoad attr attr Str Assign NameStore Str Return Call NameLoad keyword NameLoad keyword Dict Str NameLoad Assign NameStore SubscriptLoad Call AttributeLoad SubscriptLoad SubscriptLoad AttributeLoad NameLoad attr Index NameLoad Index Str attr Str Num Index Num Assign NameStore Call NameLoad AttributeLoad NameLoad attr If UnaryOpNot NameLoad body Raise Call NameLoad Str Assign NameStore NameLoad Assign NameStore BinOpMod Str TupleLoad AttributeLoad NameLoad attr NameLoad Assign NameStore Call AttributeLoad NameLoad attr NameLoad If NameLoad body Assign NameStore BinOpMod Str TupleLoad AttributeLoad NameLoad attr NameLoad Assign NameStore Call AttributeLoad NameLoad attr NameLoad If NameLoad body Assign TupleStore NameStore NameStore NameLoad Assign NameStore Call AttributeLoad NameLoad attr Str Assign NameStore Call AttributeLoad NameLoad attr NameLoad NameLoad NameLoad If BoolOpAnd CompareGt NameLoad Call NameLoad CompareEq Call NameLoad NameLoad Call NameLoad Call AttributeLoad NameLoad attr Str body Assign NameStore NameLoad If UnaryOpNot NameLoad body Assign NameStore BinOpMod Str TupleLoad AttributeLoad NameLoad attr AttributeLoad Call NameLoad attr Assign NameStore BinOpAdd Call NameLoad AttributeLoad NameLoad attr Assign NameStore Call AttributeLoad NameLoad attr NameLoad NameLoad NameLoad Assign NameStore BinOpMod Str TupleLoad AttributeLoad NameLoad attr NameLoad Expr Call AttributeLoad NameLoad attr NameLoad TupleLoad NameLoad NameLoad keyword Call NameLoad BinOpSub NameLoad Call NameLoad Assign NameStore BinOpMod Str TupleLoad AttributeLoad NameLoad attr NameLoad Expr Call AttributeLoad NameLoad attr NameLoad NameLoad keyword Call NameLoad BinOpSub NameLoad Call NameLoad Assign NameStore Call NameLoad keyword NameLoad keyword Dict Str Str Str NameLoad NameLoad Call NameLoad Call NameLoad BinOpSub NameLoad Call NameLoad Assign NameStore Call AttributeLoad SubscriptLoad SubscriptLoad AttributeLoad NameLoad attr Index NameLoad Index Str attr Str AttributeLoad NameLoad attr If CompareNotEq AttributeLoad NameLoad attr Str body Assign NameStore BinOpAdd BinOpAdd AttributeLoad NameLoad attr Str SubscriptLoad Call AttributeLoad NameLoad attr Str Num Index Num Assign SubscriptStore AttributeLoad NameLoad attr Index Str NameLoad Return NameLoad decorator_list decorator_list FunctionDef arguments args NameParam defaults kwarg body Expr Str Assign NameStore Call AttributeLoad NameLoad attr Expr Call AttributeLoad NameLoad attr NameLoad Expr Call NameLoad Str keyword NameLoad FunctionDef arguments args NameParam defaults body Return Call NameLoad NameLoad NameLoad decorator_list Return NameLoad decorator_list
N/A __future__ print_function time time traceback format_exc uuid uuid4 hashlib sha1 N/A hmac N/A base64 eventlet Timeout N/A six six.moves.urllib.parse unquote swift.common.swob Response Request swift.common.swob HTTPBadRequest HTTPForbidden HTTPNotFound HTTPUnauthorized swift.common.request_helpers get_sys_meta_prefix swift.common.middleware.acl clean_acl parse_acl referrer_allowed acls_from_account_info swift.common.utils cache_from_env get_logger split_path config_true_value register_swift_info swift.common.utils config_read_reseller_options swift.proxy.controllers.base get_account_info N/A DEFAULT_TOKEN_LIFE 86400 TempAuth N/A object N/A N/A 
    Test authentication and authorization system.

    Add to your pipeline in proxy-server.conf, such as::

        [pipeline:main]
        pipeline = catch_errors cache tempauth proxy-server

    Set account auto creation to true in proxy-server.conf::

        [app:proxy-server]
        account_autocreate = true

    And add a tempauth filter section, such as::

        [filter:tempauth]
        use = egg:swift#tempauth
        user_admin_admin = admin .admin .reseller_admin
        user_test_tester = testing .admin
        user_test2_tester2 = testing2 .admin
        user_test_tester3 = testing3
        # To allow accounts/users with underscores you can base64 encode them.
        # Here is the account "under_score" and username "a_b" (note the lack
        # of padding equal signs):
        user64_dW5kZXJfc2NvcmU_YV9i = testing4


    See the proxy-server.conf-sample for more information.

    Multiple Reseller Prefix Items:

    The reseller prefix specifies which parts of the account namespace this
    middleware is responsible for managing authentication and authorization.
    By default, the prefix is 'AUTH' so accounts and tokens are prefixed
    by 'AUTH\_'. When a request's token and/or path start with 'AUTH\_', this
    middleware knows it is responsible.

    We allow the reseller prefix to be a list. In tempauth, the first item
    in the list is used as the prefix for tokens and user groups. The
    other prefixes provide alternate accounts that user's can access. For
    example if the reseller prefix list is 'AUTH, OTHER', a user with
    admin access to 'AUTH_account' also has admin access to
    'OTHER_account'.

    Required Group:

    The group .admin is normally needed to access an account (ACLs provide
    an additional way to access an account). You can specify the
    ``require_group`` parameter. This means that you also need the named group
    to access an account. If you have several reseller prefix items, prefix
    the ``require_group`` parameter with the appropriate prefix.

    X-Service-Token:

    If an X-Service-Token is presented in the request headers, the groups
    derived from the token are appended to the roles derived from
    X-Auth-Token. If X-Auth-Token is missing or invalid, X-Service-Token
    is not processed.

    The X-Service-Token is useful when combined with multiple reseller prefix
    items. In the following configuration, accounts prefixed 'SERVICE\_'
    are only accessible if X-Auth-Token is from the end-user and
    X-Service-Token is from the ``glance`` user::

       [filter:tempauth]
       use = egg:swift#tempauth
       reseller_prefix = AUTH, SERVICE
       SERVICE_require_group = .service
       user_admin_admin = admin .admin .reseller_admin
       user_joeacct_joe = joepw .admin
       user_maryacct_mary = marypw .admin
       user_glance_glance = glancepw .service

    The name .service is an example. Unlike .admin and .reseller_admin
    it is not a reserved name.

    Please note that ACLs can be set on service accounts and are matched
    against the identity validated by X-Auth-Token. As such ACLs can grant
    access to a service account's container without needing to provide a
    service token, just like any other cross-reseller request using ACLs.

    Account ACLs:
        If a swift_owner issues a POST or PUT to the account, with the
        X-Account-Access-Control header set in the request, then this may
        allow certain types of access for additional users.

        * Read-Only: Users with read-only access can list containers in the
          account, list objects in any container, retrieve objects, and view
          unprivileged account/container/object metadata.
        * Read-Write: Users with read-write access can (in addition to the
          read-only privileges) create objects, overwrite existing objects,
          create new containers, and set unprivileged container/object
          metadata.
        * Admin: Users with admin access are swift_owners and can perform
          any action, including viewing/setting privileged metadata (e.g.
          changing account ACLs).

    To generate headers for setting an account ACL::

        from swift.common.middleware.acl import format_acl
        acl_data = { 'admin': ['alice'], 'read-write': ['bob', 'carol'] }
        header_value = format_acl(version=2, acl_dict=acl_data)

    To generate a curl command line from the above::

        token=...
        storage_url=...
        python -c '
          from swift.common.middleware.acl import format_acl
          acl_data = { 'admin': ['alice'], 'read-write': ['bob', 'carol'] }
          headers = {'X-Account-Access-Control':
                     format_acl(version=2, acl_dict=acl_data)}
          header_str = ' '.join(["-H '%s: %s'" % (k, v)
                                 for k, v in headers.items()])
          print ('curl -D- -X POST -H "x-auth-token: $token" %s '
                 '$storage_url' % header_str)
        '

    :param app: The next WSGI app in the pipeline
    :param conf: The dict of configuration values from the Paste config file
     __init__ N/A N/A self app conf N/A N/A N/A N/A self app app N/A N/A self conf conf N/A N/A self logger N/A get_logger conf log_route tempauth N/A N/A self log_headers N/A config_true_value N/A N/A conf get log_headers f N/A N/A N/A self reseller_prefixes N/A self account_rules N/A config_read_reseller_options conf N/A dict require_group N/A N/A self reseller_prefix N/A N/A self reseller_prefixes N/A 0 N/A N/A N/A N/A self logger set_statsd_prefix N/A tempauth.%s N/A N/A N/A self reseller_prefix N/A self reseller_prefix NONE N/A N/A self auth_prefix N/A N/A conf get auth_prefix /auth/ N/A N/A N/A N/A self auth_prefix N/A N/A N/A N/A self auth_prefix strip / N/A N/A N/A N/A N/A self logger warning N/A Rewriting invalid auth prefix "%s" to "/auth/" (Non-empty auth prefix path is required) N/A self auth_prefix N/A N/A self auth_prefix /auth/ N/A N/A N/A N/A N/A self auth_prefix startswith / N/A N/A N/A self auth_prefix N/A / N/A self auth_prefix N/A N/A N/A N/A N/A self auth_prefix endswith / N/A N/A N/A self auth_prefix / N/A N/A self token_life N/A int N/A N/A conf get token_life DEFAULT_TOKEN_LIFE N/A N/A self allow_overrides N/A config_true_value N/A N/A conf get allow_overrides t N/A N/A self storage_url_scheme N/A N/A conf get storage_url_scheme default N/A N/A self users N/A N/A conf_key conf N/A N/A N/A N/A N/A conf_key startswith user_ N/A N/A conf_key startswith user64_ N/A N/A N/A account username N/A N/A N/A N/A N/A conf_key split _ 1 N/A 1 split _ N/A N/A N/A conf_key startswith user64_ N/A N/A account N/A = N/A N/A len account 4 N/A account N/A N/A base64 b64decode account N/A username N/A = N/A N/A len username 4 N/A username N/A N/A base64 b64decode username N/A values N/A N/A N/A conf N/A conf_key split N/A N/A values N/A N/A N/A ValueError N/A %s has no key set conf_key N/A key N/A N/A values pop 0 N/A N/A values N/A N/A :// N/A values N/A -1 N/A $HOST N/A values N/A -1 N/A N/A url N/A N/A values pop N/A N/A url N/A $HOST/v1/%s%s N/A N/A self reseller_prefix account N/A N/A N/A self users N/A N/A N/A account : username N/A key url groups key url values N/A __call__ N/A N/A self env start_response N/A N/A N/A 
        Accepts a standard WSGI application call, authenticating the request
        and installing callback hooks for authorization and ACL header
        validation. For an authenticated request, REMOTE_USER will be set to a
        comma separated list of the user's groups.

        With a non-empty reseller prefix, acts as the definitive auth service
        for just tokens and accounts that begin with that prefix, but will deny
        requests outside this prefix if no other auth middleware overrides it.

        With an empty reseller prefix, acts as the definitive auth service only
        for tokens that validate to a non-empty set of groups. For all other
        requests, acts as the fallback auth service when no other auth
        middleware overrides it.

        Alternatively, if the request matches the self.auth_prefix, the request
        will be routed through the internal auth request handler (self.handle).
        This is to handle granting tokens, etc.
         N/A N/A N/A self allow_overrides N/A N/A env get swift.authorize_override False N/A N/A N/A N/A self app env start_response N/A N/A N/A N/A N/A env get PATH_INFO startswith N/A self auth_prefix N/A N/A N/A N/A self handle env start_response N/A s3 N/A N/A env get HTTP_AUTHORIZATION N/A token N/A N/A env get HTTP_X_AUTH_TOKEN N/A N/A env get HTTP_X_STORAGE_TOKEN N/A service_token N/A N/A env get HTTP_X_SERVICE_TOKEN N/A N/A s3 N/A token N/A N/A token startswith N/A self reseller_prefix N/A N/A groups N/A N/A self get_groups env token N/A service_token N/A N/A service_groups N/A N/A self get_groups env service_token N/A N/A groups service_groups N/A N/A groups N/A , service_groups N/A groups N/A N/A user N/A N/A groups N/A N/A N/A groups split , 1 N/A 0 N/A trans_id N/A N/A env get swift.trans_id N/A N/A N/A N/A self logger debug N/A User: %s uses token %s (trans_id %s) N/A user N/A s3 s3 token trans_id N/A N/A env N/A REMOTE_USER groups N/A N/A env N/A swift.authorize N/A self authorize N/A N/A env N/A swift.clean_acl clean_acl N/A N/A .reseller_admin groups N/A N/A N/A env N/A reseller_request True N/A N/A N/A N/A self reseller_prefix N/A s3 N/A N/A N/A N/A N/A self logger increment unauthorized N/A N/A N/A N/A vrs realm rest N/A split_path N/A env N/A PATH_INFO 2 3 True N/A N/A N/A ValueError N/A N/A realm unknown N/A N/A N/A HTTPUnauthorized headers N/A Www-Authenticate N/A Swift realm="%s" realm env start_response N/A N/A N/A swift.authorize env N/A N/A N/A env N/A swift.authorize N/A self denied_response N/A N/A N/A N/A self _is_definitive_auth N/A N/A env get PATH_INFO N/A N/A N/A env N/A swift.authorize N/A self authorize N/A N/A env N/A swift.clean_acl clean_acl N/A N/A N/A N/A self reseller_prefix N/A N/A N/A swift.authorize env N/A N/A N/A env N/A swift.authorize N/A self authorize N/A N/A env N/A swift.clean_acl clean_acl N/A N/A N/A swift.authorize env N/A N/A N/A env N/A swift.authorize N/A self denied_response N/A N/A N/A self app env start_response N/A _is_definitive_auth N/A N/A self path N/A N/A N/A 
        Determine if we are the definitive auth

        Determines if we are the definitive auth for a given path.
        If the account name is prefixed with something matching one
        of the reseller_prefix items, then we are the auth (return True)
        Non-matching: we are not the auth.
        However, one of the reseller_prefix items can be blank. If
        so, we cannot always be definite so return False.

        :param path: A path (e.g., /v1/AUTH_joesaccount/c/o)
        :return:True if we are definitive auth
         N/A N/A N/A N/A version account rest N/A split_path path 1 3 True N/A N/A N/A ValueError N/A N/A False N/A account N/A N/A N/A bool N/A N/A self _get_account_prefix account N/A False N/A _non_empty_reseller_prefixes N/A N/A self N/A N/A N/A N/A iter N/A pre N/A pre N/A self reseller_prefixes N/A pre N/A _get_account_prefix N/A N/A self account N/A N/A N/A 
        Get the prefix of an account

        Determines which reseller prefix matches the account and returns
        that prefix. If account does not start with one of the known
        reseller prefixes, returns None.

        :param account: Account name (e.g., AUTH_joesaccount) or None
        :return: The prefix string (examples: 'AUTH_', 'SERVICE_', '')
                 If we can't match the prefix of the account, return None
         N/A N/A account None N/A N/A None N/A prefix N/A N/A self _non_empty_reseller_prefixes N/A N/A N/A N/A account startswith prefix N/A N/A prefix N/A N/A N/A self reseller_prefixes N/A N/A N/A None N/A _dot_account N/A N/A self account N/A N/A N/A 
        Detect if account starts with dot character after the prefix

        :param account: account in path (e.g., AUTH_joesaccount)
        :return:True if name starts with dot character
         N/A prefix N/A N/A self _get_account_prefix account N/A N/A N/A prefix None N/A N/A account N/A N/A len prefix . N/A _get_user_groups N/A N/A self account account_user account_id N/A N/A N/A 
        :param account: example: test
        :param account_user: example: test:tester
        :param account_id: example: AUTH_test
        :return: a comma separated string of group names. The group names are
                 as follows: account,account_user,groups...
                 If .admin is in the groups, this is replaced by all the
                 possible account ids. For example, for user joe, account acct
                 and resellers AUTH_, OTHER_, the returned string is as
                 follows: acct,acct:joe,AUTH_acct,OTHER_acct
         N/A groups N/A account account_user N/A N/A N/A groups extend N/A N/A N/A self users N/A account_user N/A groups N/A N/A .admin groups N/A N/A N/A N/A groups remove .admin N/A prefix N/A N/A self _non_empty_reseller_prefixes N/A N/A N/A N/A groups append N/A %s%s N/A prefix account N/A N/A account_id groups N/A N/A N/A N/A groups append account_id N/A groups N/A N/A , join groups N/A groups N/A get_groups N/A N/A self env token N/A N/A N/A 
        Get groups for the given token.

        :param env: The current WSGI environment dictionary.
        :param token: Token to validate and return a group string for.
        :returns: None if the token is invalid or a string containing a comma
                  separated list of groups the authenticated user is a member
                  of. The first group in the list is also considered a unique
                  identifier for that user.
         N/A groups None N/A memcache_client N/A cache_from_env env N/A N/A memcache_client N/A N/A N/A Exception Memcache required N/A memcache_token_key N/A %s/token/%s N/A N/A self reseller_prefix token N/A cached_auth_data N/A N/A memcache_client get memcache_token_key N/A cached_auth_data N/A N/A N/A expires groups cached_auth_data N/A N/A expires N/A time N/A N/A groups None N/A N/A N/A env get HTTP_AUTHORIZATION N/A N/A N/A account_user sign N/A N/A N/A N/A N/A N/A env N/A HTTP_AUTHORIZATION split N/A 1 rsplit : 1 N/A N/A account_user N/A self users N/A N/A None N/A N/A account user N/A N/A account_user split : 1 N/A account_id N/A N/A N/A N/A N/A N/A self users N/A account_user N/A url rsplit / 1 N/A -1 N/A path N/A env N/A PATH_INFO N/A N/A env N/A PATH_INFO N/A N/A path replace account_user account_id 1 N/A msg N/A N/A base64 urlsafe_b64decode N/A unquote token N/A key N/A N/A N/A self users N/A account_user N/A key N/A s N/A N/A N/A N/A base64 encodestring N/A N/A N/A N/A hmac new key msg sha1 digest strip N/A N/A s sign N/A N/A None N/A groups N/A N/A self _get_user_groups account account_user account_id N/A groups N/A account_acls N/A N/A self req N/A N/A N/A 
        Return a dict of ACL data from the account server via get_account_info.

        Auth systems may define their own format, serialization, structure,
        and capabilities implemented in the ACL headers and persisted in the
        sysmeta data.  However, auth systems are strongly encouraged to be
        interoperable with Tempauth.

        Account ACLs are set and retrieved via the header
           X-Account-Access-Control

        For header format and syntax, see:
         * :func:`swift.common.middleware.acl.parse_acl()`
         * :func:`swift.common.middleware.acl.format_acl()`
         N/A info N/A get_account_info N/A req environ N/A self app swift_source TA N/A N/A N/A acls N/A acls_from_account_info info N/A N/A N/A ValueError N/A e1 N/A N/A N/A N/A N/A self logger warning N/A Invalid ACL stored in metadata: %r e1 N/A None N/A N/A NotImplementedError N/A e2 N/A N/A N/A N/A N/A self logger warning N/A ACL version exceeds middleware version: %r e2 N/A None N/A acls N/A extract_acl_and_report_errors N/A N/A self req N/A N/A N/A 
        Return a user-readable string indicating the errors in the input ACL,
        or None if there are no errors.
         N/A acl_header x-account-access-control N/A acl_data N/A N/A N/A req headers get acl_header N/A result N/A parse_acl version 2 data acl_data N/A N/A result None N/A N/A N/A Syntax error in input (%r) acl_data N/A tempauth_acl_keys N/A N/A admin read-write read-only split N/A key result N/A N/A N/A key tempauth_acl_keys N/A N/A N/A Key '%s' not recognized key N/A key tempauth_acl_keys N/A N/A N/A key result N/A N/A N/A N/A N/A isinstance N/A result N/A key list N/A N/A N/A Value for key '%s' must be a list key N/A grantee N/A result N/A key N/A N/A N/A N/A isinstance grantee N/A six string_types N/A N/A N/A Elements of '%s' list must be strings key N/A internal_hdr N/A N/A get_sys_meta_prefix account core-access-control N/A N/A N/A req headers N/A internal_hdr N/A N/A N/A req headers pop acl_header N/A None N/A authorize N/A N/A self req N/A N/A N/A 
        Returns None if the request is authorized to continue or a standard
        WSGI response callable if not.
         N/A N/A N/A N/A _junk account container obj N/A N/A req split_path 1 4 True N/A N/A N/A ValueError N/A N/A N/A N/A N/A self logger increment errors N/A N/A HTTPNotFound request req N/A N/A N/A N/A self _get_account_prefix account None N/A N/A N/A N/A N/A self logger debug N/A Account name: %s doesn't start with reseller_prefix(s): %s. N/A account N/A N/A , join N/A self reseller_prefixes N/A N/A N/A self denied_response req N/A acl_data N/A N/A N/A req headers get x-account-access-control N/A N/A acl_data None N/A N/A error N/A N/A self extract_acl_and_report_errors req N/A error N/A N/A msg N/A X-Account-Access-Control invalid: %s

Input: %s
 N/A error acl_data N/A headers N/A N/A Content-Type text/plain; charset=UTF-8 N/A N/A HTTPBadRequest request req headers headers body msg N/A user_groups N/A N/A N/A N/A req remote_user split , N/A account_user N/A N/A N/A len user_groups 1 N/A user_groups N/A 1 None N/A N/A N/A .reseller_admin user_groups N/A account N/A self reseller_prefixes N/A N/A N/A self _dot_account account N/A N/A N/A N/A req environ N/A swift_owner True N/A N/A N/A N/A self logger debug N/A User %s has reseller admin authorizing. account_user N/A None N/A N/A N/A account user_groups N/A N/A N/A req method N/A DELETE PUT container N/A N/A account_prefix N/A N/A self _get_account_prefix account N/A require_group N/A N/A N/A N/A N/A self account_rules get account_prefix get require_group N/A N/A require_group N/A require_group user_groups N/A N/A N/A N/A req environ N/A swift_owner True N/A N/A N/A N/A self logger debug N/A User %s has admin and %s group. Authorizing. N/A account_user require_group N/A None N/A N/A N/A require_group N/A N/A N/A N/A req environ N/A swift_owner True N/A N/A N/A N/A self logger debug N/A User %s has admin authorizing. account_user N/A None N/A N/A N/A N/A N/A req environ get swift_sync_key N/A N/A N/A req environ N/A swift_sync_key N/A N/A N/A req headers get x-container-sync-key None N/A x-timestamp N/A req headers N/A N/A N/A N/A N/A self logger debug N/A Allow request with container sync-key: %s. N/A N/A req environ N/A swift_sync_key N/A None N/A N/A N/A req method OPTIONS N/A N/A N/A N/A N/A self logger debug Allow OPTIONS request. N/A None N/A N/A referrers groups N/A parse_acl N/A getattr req acl None N/A N/A referrer_allowed N/A req referer referrers N/A N/A N/A obj N/A .rlistings groups N/A N/A N/A N/A N/A self logger debug N/A Allow authorizing %s via referer ACL. N/A req referer N/A None N/A user_group user_groups N/A N/A N/A user_group groups N/A N/A N/A N/A N/A self logger debug N/A User %s allowed in ACL: %s authorizing. N/A account_user user_group N/A None N/A acct_acls N/A N/A self account_acls req N/A acct_acls N/A N/A user_group_set N/A set user_groups N/A N/A N/A user_group_set intersection N/A acct_acls N/A admin N/A N/A N/A N/A req environ N/A swift_owner True N/A N/A N/A N/A self logger debug N/A User %s allowed by X-Account-Access-Control (admin) account_user N/A None N/A N/A N/A N/A user_group_set intersection N/A acct_acls N/A read-write N/A container N/A N/A req method N/A GET HEAD N/A N/A N/A N/A N/A self logger debug N/A User %s allowed by X-Account-Access-Control (read-write) account_user N/A None N/A N/A N/A N/A user_group_set intersection N/A acct_acls N/A read-only N/A N/A req method N/A GET HEAD N/A N/A N/A N/A N/A self logger debug N/A User %s allowed by X-Account-Access-Control (read-only) account_user N/A None N/A N/A N/A self denied_response req N/A denied_response N/A N/A self req N/A N/A N/A 
        Returns a standard WSGI response callable with the status of 403 or 401
        depending on whether the REMOTE_USER is set or not.
         N/A N/A req remote_user N/A N/A N/A N/A N/A self logger increment forbidden N/A N/A HTTPForbidden request req N/A N/A N/A N/A N/A self logger increment unauthorized N/A N/A HTTPUnauthorized request req N/A handle N/A N/A self env start_response N/A N/A N/A 
        WSGI entry point for auth requests (ones that match the
        self.auth_prefix).
        Wraps env in swob.Request object and passes it down.

        :param env: WSGI environment dictionary
        :param start_response: WSGI callable
         N/A N/A N/A req N/A Request env N/A N/A self auth_prefix N/A N/A N/A N/A req path_info_pop N/A N/A req bytes_transferred - N/A N/A req client_disconnect False N/A N/A N/A x-storage-token N/A req headers N/A x-auth-token N/A req headers N/A N/A N/A N/A req headers N/A x-auth-token N/A N/A req headers N/A x-storage-token N/A N/A N/A N/A self handle_request req env start_response N/A N/A N/A N/A Exception Timeout N/A N/A N/A print N/A EXCEPTION IN handle: %s: %s N/A N/A format_exc env N/A N/A N/A N/A self logger increment errors N/A N/A start_response 500 Server Error N/A N/A Content-Type text/plain N/A N/A Internal server error.
 N/A handle_request N/A N/A self req N/A N/A N/A 
        Entry point for auth requests (ones that match the self.auth_prefix).
        Should return a WSGI-style callable (such as swob.Response).

        :param req: swob.Request object
         N/A N/A req start_time N/A time N/A handler None N/A N/A N/A N/A version account user _junk N/A split_path N/A req path_info 1 4 True N/A N/A N/A ValueError N/A N/A N/A N/A N/A self logger increment errors N/A N/A HTTPNotFound request req N/A N/A version N/A v1 v1.0 auth N/A N/A N/A N/A req method GET N/A N/A handler N/A self handle_get_token N/A N/A handler N/A N/A N/A N/A N/A self logger increment errors N/A N/A req response N/A HTTPBadRequest request req N/A N/A N/A req response N/A handler req N/A N/A req response N/A handle_get_token N/A N/A self req N/A N/A N/A 
        Handles the various `request for token and service end point(s)` calls.
        There are various formats to support the various auth servers in the
        past. Examples::

            GET <auth-prefix>/v1/<act>/auth
                X-Auth-User: <act>:<usr>  or  X-Storage-User: <usr>
                X-Auth-Key: <key>         or  X-Storage-Pass: <key>
            GET <auth-prefix>/auth
                X-Auth-User: <act>:<usr>  or  X-Storage-User: <act>:<usr>
                X-Auth-Key: <key>         or  X-Storage-Pass: <key>
            GET <auth-prefix>/v1.0
                X-Auth-User: <act>:<usr>  or  X-Storage-User: <act>:<usr>
                X-Auth-Key: <key>         or  X-Storage-Pass: <key>

        On successful authentication, the response will have X-Auth-Token and
        X-Storage-Token set to the token to use with Swift and X-Storage-URL
        set to the URL to the default Swift cluster to use.

        :param req: The swob.Request to process.
        :returns: swob.Response, 2xx on success with data set as explained
                  above.
         N/A N/A N/A pathsegs N/A split_path N/A req path_info 1 3 True N/A N/A N/A ValueError N/A N/A N/A N/A N/A self logger increment errors N/A N/A HTTPNotFound request req N/A N/A N/A N/A pathsegs N/A 0 v1 N/A N/A pathsegs N/A 2 auth N/A N/A account N/A pathsegs N/A 1 N/A user N/A N/A N/A req headers get x-storage-user N/A N/A user N/A N/A user N/A N/A N/A req headers get x-auth-user N/A N/A N/A user N/A : user N/A N/A N/A N/A N/A self logger increment token_denied N/A auth N/A Swift realm="%s" account N/A N/A HTTPUnauthorized request req headers N/A Www-Authenticate auth N/A N/A account2 user N/A N/A user split : 1 N/A N/A account account2 N/A N/A N/A N/A N/A self logger increment token_denied N/A auth N/A Swift realm="%s" account N/A N/A HTTPUnauthorized request req headers N/A Www-Authenticate auth N/A key N/A N/A N/A req headers get x-storage-pass N/A N/A key N/A N/A key N/A N/A N/A req headers get x-auth-key N/A N/A N/A N/A pathsegs N/A 0 N/A auth v1.0 N/A N/A user N/A N/A N/A req headers get x-auth-user N/A N/A user N/A N/A user N/A N/A N/A req headers get x-storage-user N/A N/A N/A user N/A : user N/A N/A N/A N/A N/A self logger increment token_denied N/A auth Swift realm="unknown" N/A N/A HTTPUnauthorized request req headers N/A Www-Authenticate auth N/A N/A account user N/A N/A user split : 1 N/A key N/A N/A N/A req headers get x-auth-key N/A N/A key N/A N/A key N/A N/A N/A req headers get x-storage-pass N/A N/A N/A HTTPBadRequest request req N/A N/A N/A all N/A account user key N/A N/A N/A N/A N/A self logger increment token_denied N/A realm N/A account unknown N/A N/A HTTPUnauthorized request req headers N/A Www-Authenticate N/A Swift realm="%s" realm N/A account_user N/A N/A account : user N/A N/A account_user N/A self users N/A N/A N/A N/A N/A self logger increment token_denied N/A auth N/A Swift realm="%s" account N/A N/A HTTPUnauthorized request req headers N/A Www-Authenticate auth N/A N/A N/A N/A N/A self users N/A account_user N/A key key N/A N/A N/A N/A N/A self logger increment token_denied N/A auth Swift realm="unknown" N/A N/A HTTPUnauthorized request req headers N/A Www-Authenticate auth N/A account_id N/A N/A N/A N/A N/A N/A self users N/A account_user N/A url rsplit / 1 N/A -1 N/A memcache_client N/A cache_from_env N/A req environ N/A N/A memcache_client N/A N/A N/A Exception Memcache required N/A token None N/A memcache_user_key N/A %s/user/%s N/A N/A self reseller_prefix account_user N/A candidate_token N/A N/A memcache_client get memcache_user_key N/A candidate_token N/A N/A memcache_token_key N/A %s/token/%s N/A N/A self reseller_prefix candidate_token N/A cached_auth_data N/A N/A memcache_client get memcache_token_key N/A cached_auth_data N/A N/A N/A expires old_groups cached_auth_data N/A old_groups N/A N/A old_groups split , N/A new_groups N/A N/A self _get_user_groups account account_user account_id N/A N/A N/A expires N/A time N/A N/A set old_groups N/A set N/A N/A new_groups split , N/A N/A token candidate_token N/A N/A token N/A N/A token N/A %stk%s N/A N/A self reseller_prefix N/A N/A uuid4 hex N/A expires N/A N/A time N/A self token_life N/A groups N/A N/A self _get_user_groups account account_user account_id N/A memcache_token_key N/A %s/token/%s N/A N/A self reseller_prefix token N/A N/A N/A memcache_client set memcache_token_key N/A expires groups time N/A float N/A expires N/A time N/A memcache_user_key N/A %s/user/%s N/A N/A self reseller_prefix account_user N/A N/A N/A memcache_client set memcache_user_key token time N/A float N/A expires N/A time N/A resp N/A Response request req headers N/A x-auth-token x-storage-token x-auth-token-expires token token N/A str N/A int N/A expires N/A time N/A url N/A N/A N/A N/A N/A self users N/A account_user N/A url replace $HOST N/A resp host_url N/A N/A N/A self storage_url_scheme default N/A N/A url N/A N/A N/A self storage_url_scheme : N/A N/A N/A url split : 1 N/A 1 N/A N/A N/A resp headers N/A x-storage-url url N/A resp N/A N/A filter_factory N/A N/A global_conf N/A local_conf N/A N/A Returns a WSGI filter app for use with paste.deploy. N/A conf N/A N/A global_conf copy N/A N/A N/A conf update local_conf N/A N/A register_swift_info tempauth account_acls True auth_filter N/A N/A app N/A N/A N/A N/A TempAuth app conf N/A N/A auth_filter N/A