From 224fa1a0b8a86c7aa42f40821c6d99c47ce942b9 Mon Sep 17 00:00:00 2001 From: naomiaro <naomiaro@gmail.com> Date: Wed, 23 Mar 2011 12:09:29 -0400 Subject: [PATCH 1/2] CC-1985 : Automatic rebroadcast of recorded content sending group_id instead of playlist id to playout anything not in a playlist won't have a playlist id scheduling just a file for rebroadcast shows. --- application/models/Schedule.php | 4 +- python_apps/soundcloud-api/AUTHORS | 5 - python_apps/soundcloud-api/ChangeLog | 9 - python_apps/soundcloud-api/LICENSE | 458 ------ python_apps/soundcloud-api/README | 45 - python_apps/soundcloud-api/bootstrap.py | 58 - .../soundcloud-api/docs/api/api-objects.txt | 333 ----- .../soundcloud-api/docs/api/class-tree.html | 216 --- python_apps/soundcloud-api/docs/api/crarr.png | Bin 340 -> 0 bytes .../soundcloud-api/docs/api/epydoc.css | 322 ----- python_apps/soundcloud-api/docs/api/epydoc.js | 293 ---- .../api/exceptions.AssertionError-class.html | 299 ---- .../soundcloud-api/docs/api/frames.html | 17 - python_apps/soundcloud-api/docs/api/help.html | 278 ---- .../docs/api/identifier-index.html | 892 ------------ .../soundcloud-api/docs/api/index.html | 17 - .../soundcloud-api/docs/api/module-tree.html | 130 -- .../soundcloud-api/docs/api/redirect.html | 38 - .../soundcloud-api/docs/api/scapi-module.html | 444 ------ .../soundcloud-api/docs/api/scapi-pysrc.html | 1263 ----------------- .../docs/api/scapi.ApiConnector-class.html | 544 ------- .../docs/api/scapi.Asset-class.html | 258 ---- .../docs/api/scapi.Comment-class.html | 258 ---- .../docs/api/scapi.Event-class.html | 258 ---- .../docs/api/scapi.Group-class.html | 258 ---- .../scapi.InvalidMethodException-class.html | 297 ---- .../api/scapi.NoResultFromRequest-class.html | 195 --- .../docs/api/scapi.Playlist-class.html | 258 ---- .../docs/api/scapi.RESTBase-class.html | 895 ------------ .../api/scapi.SCRedirectHandler-class.html | 319 ----- .../docs/api/scapi.Scope-class.html | 682 --------- .../docs/api/scapi.Track-class.html | 264 ---- .../api/scapi.UnknownContentType-class.html | 337 ----- .../docs/api/scapi.User-class.html | 264 ---- .../docs/api/scapi.authentication-module.html | 228 --- .../docs/api/scapi.authentication-pysrc.html | 348 ----- ...thentication.BasicAuthenticator-class.html | 267 ---- ...thentication.OAuthAuthenticator-class.html | 337 ----- ....OAuthSignatureMethod_HMAC_SHA1-class.html | 294 ---- .../docs/api/scapi.config-module.html | 114 -- .../docs/api/scapi.config-pysrc.html | 122 -- .../docs/api/scapi.json-module.html | 218 --- .../docs/api/scapi.json-pysrc.html | 433 ------ .../docs/api/scapi.json.JsonReader-class.html | 544 ------- .../docs/api/scapi.json.JsonWriter-class.html | 233 --- .../api/scapi.json.ReadException-class.html | 196 --- .../api/scapi.json.WriteException-class.html | 196 --- .../scapi.json._StringGenerator-class.html | 291 ---- .../docs/api/scapi.tests-module.html | 140 -- .../docs/api/scapi.tests-pysrc.html | 122 -- .../api/scapi.tests.scapi_tests-module.html | 172 --- .../api/scapi.tests.scapi_tests-pysrc.html | 760 ---------- ...pi.tests.scapi_tests.SCAPITests-class.html | 1025 ------------- .../api/scapi.tests.test_connect-module.html | 586 -------- .../api/scapi.tests.test_connect-pysrc.html | 627 -------- .../api/scapi.tests.test_oauth-module.html | 225 --- .../api/scapi.tests.test_oauth-pysrc.html | 182 --- .../docs/api/scapi.util-module.html | 173 --- .../docs/api/scapi.util-pysrc.html | 171 --- .../docs/api/scapi.util.MultiDict-class.html | 247 ---- .../docs/api/toc-everything.html | 151 -- .../docs/api/toc-scapi-module.html | 70 - .../api/toc-scapi.authentication-module.html | 46 - .../docs/api/toc-scapi.config-module.html | 29 - .../docs/api/toc-scapi.json-module.html | 40 - .../docs/api/toc-scapi.multidict-module.html | 29 - .../docs/api/toc-scapi.tests-module.html | 29 - .../toc-scapi.tests.scapi_tests-module.html | 34 - .../toc-scapi.tests.test_connect-module.html | 68 - .../toc-scapi.tests.test_oauth-module.html | 41 - .../docs/api/toc-scapi.util-module.html | 37 - python_apps/soundcloud-api/docs/api/toc.html | 46 - python_apps/soundcloud-api/oauth/__init__.py | 0 .../soundcloud-api/oauth/example/client.py | 157 -- .../soundcloud-api/oauth/example/server.py | 167 --- python_apps/soundcloud-api/oauth/oauth.py | 505 ------- .../scapi/MultipartPostHandler.py | 135 -- python_apps/soundcloud-api/scapi/__init__.py | 1012 ------------- .../soundcloud-api/scapi/authentication.py | 195 --- python_apps/soundcloud-api/scapi/config.py | 2 - python_apps/soundcloud-api/scapi/json.py | 310 ---- .../soundcloud-api/scapi/tests/__init__.py | 0 .../soundcloud-api/scapi/tests/knaster.mp3 | Bin 80493 -> 0 bytes .../soundcloud-api/scapi/tests/scapi_tests.py | 563 -------- .../soundcloud-api/scapi/tests/spam.jpg | Bin 85062 -> 0 bytes .../scapi/tests/test_connect.py | 334 ----- .../soundcloud-api/scapi/tests/test_oauth.py | 36 - python_apps/soundcloud-api/scapi/util.py | 53 - python_apps/soundcloud-api/setup.py | 22 - python_apps/soundcloud-api/test.ini | 33 - 90 files changed, 2 insertions(+), 22601 deletions(-) delete mode 100644 python_apps/soundcloud-api/AUTHORS delete mode 100644 python_apps/soundcloud-api/ChangeLog delete mode 100644 python_apps/soundcloud-api/LICENSE delete mode 100644 python_apps/soundcloud-api/README delete mode 100644 python_apps/soundcloud-api/bootstrap.py delete mode 100644 python_apps/soundcloud-api/docs/api/api-objects.txt delete mode 100644 python_apps/soundcloud-api/docs/api/class-tree.html delete mode 100644 python_apps/soundcloud-api/docs/api/crarr.png delete mode 100644 python_apps/soundcloud-api/docs/api/epydoc.css delete mode 100644 python_apps/soundcloud-api/docs/api/epydoc.js delete mode 100644 python_apps/soundcloud-api/docs/api/exceptions.AssertionError-class.html delete mode 100644 python_apps/soundcloud-api/docs/api/frames.html delete mode 100644 python_apps/soundcloud-api/docs/api/help.html delete mode 100644 python_apps/soundcloud-api/docs/api/identifier-index.html delete mode 100644 python_apps/soundcloud-api/docs/api/index.html delete mode 100644 python_apps/soundcloud-api/docs/api/module-tree.html delete mode 100644 python_apps/soundcloud-api/docs/api/redirect.html delete mode 100644 python_apps/soundcloud-api/docs/api/scapi-module.html delete mode 100644 python_apps/soundcloud-api/docs/api/scapi-pysrc.html delete mode 100644 python_apps/soundcloud-api/docs/api/scapi.ApiConnector-class.html delete mode 100644 python_apps/soundcloud-api/docs/api/scapi.Asset-class.html delete mode 100644 python_apps/soundcloud-api/docs/api/scapi.Comment-class.html delete mode 100644 python_apps/soundcloud-api/docs/api/scapi.Event-class.html delete mode 100644 python_apps/soundcloud-api/docs/api/scapi.Group-class.html delete mode 100644 python_apps/soundcloud-api/docs/api/scapi.InvalidMethodException-class.html delete mode 100644 python_apps/soundcloud-api/docs/api/scapi.NoResultFromRequest-class.html delete mode 100644 python_apps/soundcloud-api/docs/api/scapi.Playlist-class.html delete mode 100644 python_apps/soundcloud-api/docs/api/scapi.RESTBase-class.html delete mode 100644 python_apps/soundcloud-api/docs/api/scapi.SCRedirectHandler-class.html delete mode 100644 python_apps/soundcloud-api/docs/api/scapi.Scope-class.html delete mode 100644 python_apps/soundcloud-api/docs/api/scapi.Track-class.html delete mode 100644 python_apps/soundcloud-api/docs/api/scapi.UnknownContentType-class.html delete mode 100644 python_apps/soundcloud-api/docs/api/scapi.User-class.html delete mode 100644 python_apps/soundcloud-api/docs/api/scapi.authentication-module.html delete mode 100644 python_apps/soundcloud-api/docs/api/scapi.authentication-pysrc.html delete mode 100644 python_apps/soundcloud-api/docs/api/scapi.authentication.BasicAuthenticator-class.html delete mode 100644 python_apps/soundcloud-api/docs/api/scapi.authentication.OAuthAuthenticator-class.html delete mode 100644 python_apps/soundcloud-api/docs/api/scapi.authentication.OAuthSignatureMethod_HMAC_SHA1-class.html delete mode 100644 python_apps/soundcloud-api/docs/api/scapi.config-module.html delete mode 100644 python_apps/soundcloud-api/docs/api/scapi.config-pysrc.html delete mode 100644 python_apps/soundcloud-api/docs/api/scapi.json-module.html delete mode 100644 python_apps/soundcloud-api/docs/api/scapi.json-pysrc.html delete mode 100644 python_apps/soundcloud-api/docs/api/scapi.json.JsonReader-class.html delete mode 100644 python_apps/soundcloud-api/docs/api/scapi.json.JsonWriter-class.html delete mode 100644 python_apps/soundcloud-api/docs/api/scapi.json.ReadException-class.html delete mode 100644 python_apps/soundcloud-api/docs/api/scapi.json.WriteException-class.html delete mode 100644 python_apps/soundcloud-api/docs/api/scapi.json._StringGenerator-class.html delete mode 100644 python_apps/soundcloud-api/docs/api/scapi.tests-module.html delete mode 100644 python_apps/soundcloud-api/docs/api/scapi.tests-pysrc.html delete mode 100644 python_apps/soundcloud-api/docs/api/scapi.tests.scapi_tests-module.html delete mode 100644 python_apps/soundcloud-api/docs/api/scapi.tests.scapi_tests-pysrc.html delete mode 100644 python_apps/soundcloud-api/docs/api/scapi.tests.scapi_tests.SCAPITests-class.html delete mode 100644 python_apps/soundcloud-api/docs/api/scapi.tests.test_connect-module.html delete mode 100644 python_apps/soundcloud-api/docs/api/scapi.tests.test_connect-pysrc.html delete mode 100644 python_apps/soundcloud-api/docs/api/scapi.tests.test_oauth-module.html delete mode 100644 python_apps/soundcloud-api/docs/api/scapi.tests.test_oauth-pysrc.html delete mode 100644 python_apps/soundcloud-api/docs/api/scapi.util-module.html delete mode 100644 python_apps/soundcloud-api/docs/api/scapi.util-pysrc.html delete mode 100644 python_apps/soundcloud-api/docs/api/scapi.util.MultiDict-class.html delete mode 100644 python_apps/soundcloud-api/docs/api/toc-everything.html delete mode 100644 python_apps/soundcloud-api/docs/api/toc-scapi-module.html delete mode 100644 python_apps/soundcloud-api/docs/api/toc-scapi.authentication-module.html delete mode 100644 python_apps/soundcloud-api/docs/api/toc-scapi.config-module.html delete mode 100644 python_apps/soundcloud-api/docs/api/toc-scapi.json-module.html delete mode 100644 python_apps/soundcloud-api/docs/api/toc-scapi.multidict-module.html delete mode 100644 python_apps/soundcloud-api/docs/api/toc-scapi.tests-module.html delete mode 100644 python_apps/soundcloud-api/docs/api/toc-scapi.tests.scapi_tests-module.html delete mode 100644 python_apps/soundcloud-api/docs/api/toc-scapi.tests.test_connect-module.html delete mode 100644 python_apps/soundcloud-api/docs/api/toc-scapi.tests.test_oauth-module.html delete mode 100644 python_apps/soundcloud-api/docs/api/toc-scapi.util-module.html delete mode 100644 python_apps/soundcloud-api/docs/api/toc.html delete mode 100644 python_apps/soundcloud-api/oauth/__init__.py delete mode 100644 python_apps/soundcloud-api/oauth/example/client.py delete mode 100644 python_apps/soundcloud-api/oauth/example/server.py delete mode 100644 python_apps/soundcloud-api/oauth/oauth.py delete mode 100644 python_apps/soundcloud-api/scapi/MultipartPostHandler.py delete mode 100644 python_apps/soundcloud-api/scapi/__init__.py delete mode 100644 python_apps/soundcloud-api/scapi/authentication.py delete mode 100644 python_apps/soundcloud-api/scapi/config.py delete mode 100644 python_apps/soundcloud-api/scapi/json.py delete mode 100644 python_apps/soundcloud-api/scapi/tests/__init__.py delete mode 100644 python_apps/soundcloud-api/scapi/tests/knaster.mp3 delete mode 100644 python_apps/soundcloud-api/scapi/tests/scapi_tests.py delete mode 100644 python_apps/soundcloud-api/scapi/tests/spam.jpg delete mode 100644 python_apps/soundcloud-api/scapi/tests/test_connect.py delete mode 100644 python_apps/soundcloud-api/scapi/tests/test_oauth.py delete mode 100644 python_apps/soundcloud-api/scapi/util.py delete mode 100644 python_apps/soundcloud-api/setup.py delete mode 100644 python_apps/soundcloud-api/test.ini diff --git a/application/models/Schedule.php b/application/models/Schedule.php index 21419c4f0..08170af26 100644 --- a/application/models/Schedule.php +++ b/application/models/Schedule.php @@ -663,7 +663,7 @@ class Schedule { $pkey = Schedule::AirtimeTimeToPypoTime($start); $timestamp = strtotime($start); $playlists[$pkey]['source'] = "PLAYLIST"; - $playlists[$pkey]['x_ident'] = $dx["playlist_id"]; + $playlists[$pkey]['x_ident'] = $dx['group_id']; $playlists[$pkey]['subtype'] = '1'; // Just needs to be between 1 and 4 inclusive $playlists[$pkey]['timestamp'] = $timestamp; $playlists[$pkey]['duration'] = $dx['clip_length']; @@ -671,7 +671,7 @@ class Schedule { $playlists[$pkey]['schedule_id'] = $dx['group_id']; $playlists[$pkey]['show_name'] = $dx['show_name']; $playlists[$pkey]['user_id'] = 0; - $playlists[$pkey]['id'] = $dx["playlist_id"]; + $playlists[$pkey]['id'] = $dx['group_id']; $playlists[$pkey]['start'] = Schedule::AirtimeTimeToPypoTime($dx["start"]); $playlists[$pkey]['end'] = Schedule::AirtimeTimeToPypoTime($dx["end"]); } diff --git a/python_apps/soundcloud-api/AUTHORS b/python_apps/soundcloud-api/AUTHORS deleted file mode 100644 index ae92c1d26..000000000 --- a/python_apps/soundcloud-api/AUTHORS +++ /dev/null @@ -1,5 +0,0 @@ -Authors -------- - -Diez B. Roggisch, deets@web.de - diff --git a/python_apps/soundcloud-api/ChangeLog b/python_apps/soundcloud-api/ChangeLog deleted file mode 100644 index 9b5bb4679..000000000 --- a/python_apps/soundcloud-api/ChangeLog +++ /dev/null @@ -1,9 +0,0 @@ -2009-09-10 Diez Roggisch <deets@web.de> - - * OAuth 1.0a working - * Query-Parameters for GET-requests to allow e.g. filtering - * Setting file-objects as attributes working. - * share to emails working. - * groups - * downloading/streaming private tracks - diff --git a/python_apps/soundcloud-api/LICENSE b/python_apps/soundcloud-api/LICENSE deleted file mode 100644 index 3b473dbfc..000000000 --- a/python_apps/soundcloud-api/LICENSE +++ /dev/null @@ -1,458 +0,0 @@ - GNU LESSER GENERAL PUBLIC LICENSE - Version 2.1, February 1999 - - Copyright (C) 1991, 1999 Free Software Foundation, Inc. - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - -[This is the first released version of the Lesser GPL. It also counts - as the successor of the GNU Library Public License, version 2, hence - the version number 2.1.] - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -Licenses are intended to guarantee your freedom to share and change -free software--to make sure the software is free for all its users. - - This license, the Lesser General Public License, applies to some -specially designated software packages--typically libraries--of the -Free Software Foundation and other authors who decide to use it. You -can use it too, but we suggest you first think carefully about whether -this license or the ordinary General Public License is the better -strategy to use in any particular case, based on the explanations below. - - When we speak of free software, we are referring to freedom of use, -not price. Our General Public Licenses are designed to make sure that -you have the freedom to distribute copies of free software (and charge -for this service if you wish); that you receive source code or can get -it if you want it; that you can change the software and use pieces of -it in new free programs; and that you are informed that you can do -these things. - - To protect your rights, we need to make restrictions that forbid -distributors to deny you these rights or to ask you to surrender these -rights. These restrictions translate to certain responsibilities for -you if you distribute copies of the library or if you modify it. - - For example, if you distribute copies of the library, whether gratis -or for a fee, you must give the recipients all the rights that we gave -you. You must make sure that they, too, receive or can get the source -code. If you link other code with the library, you must provide -complete object files to the recipients, so that they can relink them -with the library after making changes to the library and recompiling -it. And you must show them these terms so they know their rights. - - We protect your rights with a two-step method: (1) we copyright the -library, and (2) we offer you this license, which gives you legal -permission to copy, distribute and/or modify the library. - - To protect each distributor, we want to make it very clear that -there is no warranty for the free library. Also, if the library is -modified by someone else and passed on, the recipients should know -that what they have is not the original version, so that the original -author's reputation will not be affected by problems that might be -introduced by others. - - Finally, software patents pose a constant threat to the existence of -any free program. We wish to make sure that a company cannot -effectively restrict the users of a free program by obtaining a -restrictive license from a patent holder. Therefore, we insist that -any patent license obtained for a version of the library must be -consistent with the full freedom of use specified in this license. - - Most GNU software, including some libraries, is covered by the -ordinary GNU General Public License. This license, the GNU Lesser -General Public License, applies to certain designated libraries, and -is quite different from the ordinary General Public License. We use -this license for certain libraries in order to permit linking those -libraries into non-free programs. - - When a program is linked with a library, whether statically or using -a shared library, the combination of the two is legally speaking a -combined work, a derivative of the original library. The ordinary -General Public License therefore permits such linking only if the -entire combination fits its criteria of freedom. The Lesser General -Public License permits more lax criteria for linking other code with -the library. - - We call this license the "Lesser" General Public License because it -does Less to protect the user's freedom than the ordinary General -Public License. It also provides other free software developers Less -of an advantage over competing non-free programs. These disadvantages -are the reason we use the ordinary General Public License for many -libraries. However, the Lesser license provides advantages in certain -special circumstances. - - For example, on rare occasions, there may be a special need to -encourage the widest possible use of a certain library, so that it becomes -a de-facto standard. To achieve this, non-free programs must be -allowed to use the library. A more frequent case is that a free -library does the same job as widely used non-free libraries. In this -case, there is little to gain by limiting the free library to free -software only, so we use the Lesser General Public License. - - In other cases, permission to use a particular library in non-free -programs enables a greater number of people to use a large body of -free software. For example, permission to use the GNU C Library in -non-free programs enables many more people to use the whole GNU -operating system, as well as its variant, the GNU/Linux operating -system. - - Although the Lesser General Public License is Less protective of the -users' freedom, it does ensure that the user of a program that is -linked with the Library has the freedom and the wherewithal to run -that program using a modified version of the Library. - - The precise terms and conditions for copying, distribution and -modification follow. Pay close attention to the difference between a -"work based on the library" and a "work that uses the library". The -former contains code derived from the library, whereas the latter must -be combined with the library in order to run. - - GNU LESSER GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License Agreement applies to any software library or other -program which contains a notice placed by the copyright holder or -other authorized party saying it may be distributed under the terms of -this Lesser General Public License (also called "this License"). -Each licensee is addressed as "you". - - A "library" means a collection of software functions and/or data -prepared so as to be conveniently linked with application programs -(which use some of those functions and data) to form executables. - - The "Library", below, refers to any such software library or work -which has been distributed under these terms. A "work based on the -Library" means either the Library or any derivative work under -copyright law: that is to say, a work containing the Library or a -portion of it, either verbatim or with modifications and/or translated -straightforwardly into another language. (Hereinafter, translation is -included without limitation in the term "modification".) - - "Source code" for a work means the preferred form of the work for -making modifications to it. For a library, complete source code means -all the source code for all modules it contains, plus any associated -interface definition files, plus the scripts used to control compilation -and installation of the library. - - Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running a program using the Library is not restricted, and output from -such a program is covered only if its contents constitute a work based -on the Library (independent of the use of the Library in a tool for -writing it). Whether that is true depends on what the Library does -and what the program that uses the Library does. - - 1. You may copy and distribute verbatim copies of the Library's -complete source code as you receive it, in any medium, provided that -you conspicuously and appropriately publish on each copy an -appropriate copyright notice and disclaimer of warranty; keep intact -all the notices that refer to this License and to the absence of any -warranty; and distribute a copy of this License along with the -Library. - - You may charge a fee for the physical act of transferring a copy, -and you may at your option offer warranty protection in exchange for a -fee. - - 2. You may modify your copy or copies of the Library or any portion -of it, thus forming a work based on the Library, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) The modified work must itself be a software library. - - b) You must cause the files modified to carry prominent notices - stating that you changed the files and the date of any change. - - c) You must cause the whole of the work to be licensed at no - charge to all third parties under the terms of this License. - - d) If a facility in the modified Library refers to a function or a - table of data to be supplied by an application program that uses - the facility, other than as an argument passed when the facility - is invoked, then you must make a good faith effort to ensure that, - in the event an application does not supply such function or - table, the facility still operates, and performs whatever part of - its purpose remains meaningful. - - (For example, a function in a library to compute square roots has - a purpose that is entirely well-defined independent of the - application. Therefore, Subsection 2d requires that any - application-supplied function or table used by this function must - be optional: if the application does not supply it, the square - root function must still compute square roots.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Library, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Library, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote -it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Library. - -In addition, mere aggregation of another work not based on the Library -with the Library (or with a work based on the Library) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may opt to apply the terms of the ordinary GNU General Public -License instead of this License to a given copy of the Library. To do -this, you must alter all the notices that refer to this License, so -that they refer to the ordinary GNU General Public License, version 2, -instead of to this License. (If a newer version than version 2 of the -ordinary GNU General Public License has appeared, then you can specify -that version instead if you wish.) Do not make any other change in -these notices. - - Once this change is made in a given copy, it is irreversible for -that copy, so the ordinary GNU General Public License applies to all -subsequent copies and derivative works made from that copy. - - This option is useful when you wish to copy part of the code of -the Library into a program that is not a library. - - 4. You may copy and distribute the Library (or a portion or -derivative of it, under Section 2) in object code or executable form -under the terms of Sections 1 and 2 above provided that you accompany -it with the complete corresponding machine-readable source code, which -must be distributed under the terms of Sections 1 and 2 above on a -medium customarily used for software interchange. - - If distribution of object code is made by offering access to copy -from a designated place, then offering equivalent access to copy the -source code from the same place satisfies the requirement to -distribute the source code, even though third parties are not -compelled to copy the source along with the object code. - - 5. A program that contains no derivative of any portion of the -Library, but is designed to work with the Library by being compiled or -linked with it, is called a "work that uses the Library". Such a -work, in isolation, is not a derivative work of the Library, and -therefore falls outside the scope of this License. - - However, linking a "work that uses the Library" with the Library -creates an executable that is a derivative of the Library (because it -contains portions of the Library), rather than a "work that uses the -library". The executable is therefore covered by this License. -Section 6 states terms for distribution of such executables. - - When a "work that uses the Library" uses material from a header file -that is part of the Library, the object code for the work may be a -derivative work of the Library even though the source code is not. -Whether this is true is especially significant if the work can be -linked without the Library, or if the work is itself a library. The -threshold for this to be true is not precisely defined by law. - - If such an object file uses only numerical parameters, data -structure layouts and accessors, and small macros and small inline -functions (ten lines or less in length), then the use of the object -file is unrestricted, regardless of whether it is legally a derivative -work. (Executables containing this object code plus portions of the -Library will still fall under Section 6.) - - Otherwise, if the work is a derivative of the Library, you may -distribute the object code for the work under the terms of Section 6. -Any executables containing that work also fall under Section 6, -whether or not they are linked directly with the Library itself. - - 6. As an exception to the Sections above, you may also combine or -link a "work that uses the Library" with the Library to produce a -work containing portions of the Library, and distribute that work -under terms of your choice, provided that the terms permit -modification of the work for the customer's own use and reverse -engineering for debugging such modifications. - - You must give prominent notice with each copy of the work that the -Library is used in it and that the Library and its use are covered by -this License. You must supply a copy of this License. If the work -during execution displays copyright notices, you must include the -copyright notice for the Library among them, as well as a reference -directing the user to the copy of this License. Also, you must do one -of these things: - - a) Accompany the work with the complete corresponding - machine-readable source code for the Library including whatever - changes were used in the work (which must be distributed under - Sections 1 and 2 above); and, if the work is an executable linked - with the Library, with the complete machine-readable "work that - uses the Library", as object code and/or source code, so that the - user can modify the Library and then relink to produce a modified - executable containing the modified Library. (It is understood - that the user who changes the contents of definitions files in the - Library will not necessarily be able to recompile the application - to use the modified definitions.) - - b) Use a suitable shared library mechanism for linking with the - Library. A suitable mechanism is one that (1) uses at run time a - copy of the library already present on the user's computer system, - rather than copying library functions into the executable, and (2) - will operate properly with a modified version of the library, if - the user installs one, as long as the modified version is - interface-compatible with the version that the work was made with. - - c) Accompany the work with a written offer, valid for at - least three years, to give the same user the materials - specified in Subsection 6a, above, for a charge no more - than the cost of performing this distribution. - - d) If distribution of the work is made by offering access to copy - from a designated place, offer equivalent access to copy the above - specified materials from the same place. - - e) Verify that the user has already received a copy of these - materials or that you have already sent this user a copy. - - For an executable, the required form of the "work that uses the -Library" must include any data and utility programs needed for -reproducing the executable from it. However, as a special exception, -the materials to be distributed need not include anything that is -normally distributed (in either source or binary form) with the major -components (compiler, kernel, and so on) of the operating system on -which the executable runs, unless that component itself accompanies -the executable. - - It may happen that this requirement contradicts the license -restrictions of other proprietary libraries that do not normally -accompany the operating system. Such a contradiction means you cannot -use both them and the Library together in an executable that you -distribute. - - 7. You may place library facilities that are a work based on the -Library side-by-side in a single library together with other library -facilities not covered by this License, and distribute such a combined -library, provided that the separate distribution of the work based on -the Library and of the other library facilities is otherwise -permitted, and provided that you do these two things: - - a) Accompany the combined library with a copy of the same work - based on the Library, uncombined with any other library - facilities. This must be distributed under the terms of the - Sections above. - - b) Give prominent notice with the combined library of the fact - that part of it is a work based on the Library, and explaining - where to find the accompanying uncombined form of the same work. - - 8. You may not copy, modify, sublicense, link with, or distribute -the Library except as expressly provided under this License. Any -attempt otherwise to copy, modify, sublicense, link with, or -distribute the Library is void, and will automatically terminate your -rights under this License. However, parties who have received copies, -or rights, from you under this License will not have their licenses -terminated so long as such parties remain in full compliance. - - 9. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Library or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Library (or any work based on the -Library), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Library or works based on it. - - 10. Each time you redistribute the Library (or any work based on the -Library), the recipient automatically receives a license from the -original licensor to copy, distribute, link with or modify the Library -subject to these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties with -this License. - - 11. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Library at all. For example, if a patent -license would not permit royalty-free redistribution of the Library by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Library. - -If any portion of this section is held invalid or unenforceable under any -particular circumstance, the balance of the section is intended to apply, -and the section as a whole is intended to apply in other circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 12. If the distribution and/or use of the Library is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Library under this License may add -an explicit geographical distribution limitation excluding those countries, -so that distribution is permitted only in or among countries not thus -excluded. In such case, this License incorporates the limitation as if -written in the body of this License. - - 13. The Free Software Foundation may publish revised and/or new -versions of the Lesser General Public License from time to time. -Such new versions will be similar in spirit to the present version, -but may differ in detail to address new problems or concerns. - -Each version is given a distinguishing version number. If the Library -specifies a version number of this License which applies to it and -"any later version", you have the option of following the terms and -conditions either of that version or of any later version published by -the Free Software Foundation. If the Library does not specify a -license version number, you may choose any version ever published by -the Free Software Foundation. - - 14. If you wish to incorporate parts of the Library into other free -programs whose distribution conditions are incompatible with these, -write to the author to ask for permission. For software which is -copyrighted by the Free Software Foundation, write to the Free -Software Foundation; we sometimes make exceptions for this. Our -decision will be guided by the two goals of preserving the free status -of all derivatives of our free software and of promoting the sharing -and reuse of software generally. - - NO WARRANTY - - 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO -WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. -EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR -OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY -KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE -LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME -THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN -WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY -AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU -FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR -CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE -LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING -RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A -FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF -SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH -DAMAGES. - - END OF TERMS AND CONDITIONS diff --git a/python_apps/soundcloud-api/README b/python_apps/soundcloud-api/README deleted file mode 100644 index 729a8faac..000000000 --- a/python_apps/soundcloud-api/README +++ /dev/null @@ -1,45 +0,0 @@ -Running tests -============= - -The **SCAPI** comes with a small testsuite. It can be run automatically through either setuptools_ -or nose_. - -Configuring tests ------------------ - -Before you can run the tests, you need to configure them. You do this using the `test.ini` file in the -root of python **SCAPI** workingcopy. - -Running tests through setuptools --------------------------------- - -You can run the whole testsuite through setuptools_ by doing :: - - host:~/SoundCloudAPI deets$ python setup.py test - -Running tests through nose --------------------------- - -If you want a more fine-grained control over which tests to run, you can use the `nosetests`-commandline tool. - -Then to run individual tests, you can e.g. do:: - - host:~/SoundCloudAPI deets$ nosetests -s scapi.tests.scapi_tests:SCAPITests.test_setting_permissions - - -See the nose_-website for more options. - - - -.. _nose: http://somethingaboutorange.com/mrl/projects/nose/ -.. _setuptools: http://peak.telecommunity.com/DevCenter/setuptools -.. _ConfigObj: http://www.voidspace.org.uk/python/configobj.html - - -Creating the API-docs -===================== - -Do:: - epydoc -v --name="SoundCloud API" --html -o docs/api scapi --exclude="os|mimetypes|urllib2|exceptions|mimetools" - - diff --git a/python_apps/soundcloud-api/bootstrap.py b/python_apps/soundcloud-api/bootstrap.py deleted file mode 100644 index c04723c5b..000000000 --- a/python_apps/soundcloud-api/bootstrap.py +++ /dev/null @@ -1,58 +0,0 @@ -import webbrowser -import scapi - -# the host to connect to. Normally, this -# would be api.soundcloud.com -API_HOST = "api.sandbox-soundcloud.com" - -# This needs to be the consumer ID you got from -# http://soundcloud.com/settings/applications/new -CONSUMER = "gLnhFeUBnBCZF8a6Ngqq7w" -# This needs to be the consumer secret password you got from -# http://soundcloud.com/settings/applications/new -CONSUMER_SECRET = "nbWRdG5X9xUb63l4nIeFYm3nmeVJ2v4s1ROpvRSBvU8" - -# first, we create an OAuthAuthenticator that only knows about consumer -# credentials. This is done so that we can get an request-token as -# first step. -oauth_authenticator = scapi.authentication.OAuthAuthenticator(CONSUMER, - CONSUMER_SECRET, - None, - None) - -# The connector works with the authenticator to create and sign the requests. It -# has some helper-methods that allow us to do the OAuth-dance. -connector = scapi.ApiConnector(host=API_HOST, authenticator=oauth_authenticator) - -# First step is to get a request-token, and to let the user authorize that -# via the browser. -token, secret = connector.fetch_request_token() -authorization_url = connector.get_request_token_authorization_url(token) -webbrowser.open(authorization_url) -oauth_verifier = raw_input("please enter verifier code as seen in the browser:") - -# Now we create a new authenticator with the temporary token & secret we got from -# the request-token. This will give us the access-token -oauth_authenticator = scapi.authentication.OAuthAuthenticator(CONSUMER, - CONSUMER_SECRET, - token, - secret) - -# we need a new connector with the new authenticator! -connector = scapi.ApiConnector(API_HOST, authenticator=oauth_authenticator) -token, secret = connector.fetch_access_token(oauth_verifier) - -# now we are finally ready to go - with all four parameters OAuth requires, -# we can setup an authenticator that allows for actual API-calls. -oauth_authenticator = scapi.authentication.OAuthAuthenticator(CONSUMER, - CONSUMER_SECRET, - token, - secret) - -# we pass the connector to a Scope - a Scope is essentiall a path in the REST-url-space. -# Without any path-component, it's the root from which we can then query into the -# resources. -root = scapi.Scope(scapi.ApiConnector(host=API_HOST, authenticator=oauth_authenticator)) - -# Hey, nice meeting you! -print "Hello, %s" % root.me().username diff --git a/python_apps/soundcloud-api/docs/api/api-objects.txt b/python_apps/soundcloud-api/docs/api/api-objects.txt deleted file mode 100644 index 8f3e21555..000000000 --- a/python_apps/soundcloud-api/docs/api/api-objects.txt +++ /dev/null @@ -1,333 +0,0 @@ -scapi scapi-module.html -scapi.escape scapi.util-module.html#escape -scapi.USE_PROXY scapi-module.html#USE_PROXY -scapi.REQUEST_TOKEN_URL scapi-module.html#REQUEST_TOKEN_URL -scapi.PROXY scapi-module.html#PROXY -scapi.ACCESS_TOKEN_URL scapi-module.html#ACCESS_TOKEN_URL -scapi.register_classes scapi-module.html#register_classes -scapi.logger scapi-module.html#logger -scapi.AUTHORIZATION_URL scapi-module.html#AUTHORIZATION_URL -scapi.authentication scapi.authentication-module.html -scapi.authentication.USE_DOUBLE_ESCAPE_HACK scapi.authentication-module.html#USE_DOUBLE_ESCAPE_HACK -scapi.authentication.escape scapi.util-module.html#escape -scapi.authentication.logger scapi.authentication-module.html#logger -scapi.config scapi.config-module.html -scapi.json scapi.json-module.html -scapi.json.read scapi.json-module.html#read -scapi.json.write scapi.json-module.html#write -scapi.multidict scapi.multidict-module.html -scapi.tests scapi.tests-module.html -scapi.tests.scapi_tests scapi.tests.scapi_tests-module.html -scapi.tests.scapi_tests.api_logger scapi.tests.scapi_tests-module.html#api_logger -scapi.tests.scapi_tests.logger scapi.tests.scapi_tests-module.html#logger -scapi.tests.test_connect scapi.tests.test_connect-module.html -scapi.tests.test_connect.test_me_having_stress scapi.tests.test_connect-module.html#test_me_having_stress -scapi.tests.test_connect.test_scoped_track_creation scapi.tests.test_connect-module.html#test_scoped_track_creation -scapi.tests.test_connect.test_permissions scapi.tests.test_connect-module.html#test_permissions -scapi.tests.test_connect.CONSUMER_SECRET scapi.tests.test_connect-module.html#CONSUMER_SECRET -scapi.tests.test_connect.CONSUMER scapi.tests.test_connect-module.html#CONSUMER -scapi.tests.test_connect.load_config scapi.tests.test_connect-module.html#load_config -scapi.tests.test_connect.test_upload scapi.tests.test_connect-module.html#test_upload -scapi.tests.test_connect.USER scapi.tests.test_connect-module.html#USER -scapi.tests.test_connect.test_load_config scapi.tests.test_connect-module.html#test_load_config -scapi.tests.test_connect.test_access_token_acquisition scapi.tests.test_connect-module.html#test_access_token_acquisition -scapi.tests.test_connect.test_track_creation scapi.tests.test_connect-module.html#test_track_creation -scapi.tests.test_connect.test_setting_comments scapi.tests.test_connect-module.html#test_setting_comments -scapi.tests.test_connect.test_track_update scapi.tests.test_connect-module.html#test_track_update -scapi.tests.test_connect.SECRET scapi.tests.test_connect-module.html#SECRET -scapi.tests.test_connect.test_contact_add_and_removal scapi.tests.test_connect-module.html#test_contact_add_and_removal -scapi.tests.test_connect.logger scapi.tests.test_connect-module.html#logger -scapi.tests.test_connect.test_connect scapi.tests.test_connect-module.html#test_connect -scapi.tests.test_connect.ROOT scapi.tests.test_connect-module.html#ROOT -scapi.tests.test_connect.test_contact_list scapi.tests.test_connect-module.html#test_contact_list -scapi.tests.test_connect.test_playlists scapi.tests.test_connect-module.html#test_playlists -scapi.tests.test_connect.API_HOST scapi.tests.test_connect-module.html#API_HOST -scapi.tests.test_connect._logger scapi.tests.test_connect-module.html#_logger -scapi.tests.test_connect.TOKEN scapi.tests.test_connect-module.html#TOKEN -scapi.tests.test_connect.test_events scapi.tests.test_connect-module.html#test_events -scapi.tests.test_connect.test_non_global_api scapi.tests.test_connect-module.html#test_non_global_api -scapi.tests.test_connect.test_setting_permissions scapi.tests.test_connect-module.html#test_setting_permissions -scapi.tests.test_connect.PASSWORD scapi.tests.test_connect-module.html#PASSWORD -scapi.tests.test_connect.test_setting_comments_the_way_shawn_says_its_correct scapi.tests.test_connect-module.html#test_setting_comments_the_way_shawn_says_its_correct -scapi.tests.test_connect.test_large_list scapi.tests.test_connect-module.html#test_large_list -scapi.tests.test_connect.CONNECTOR scapi.tests.test_connect-module.html#CONNECTOR -scapi.tests.test_connect.CONFIG_NAME scapi.tests.test_connect-module.html#CONFIG_NAME -scapi.tests.test_connect.RUN_INTERACTIVE_TESTS scapi.tests.test_connect-module.html#RUN_INTERACTIVE_TESTS -scapi.tests.test_connect.setup scapi.tests.test_connect-module.html#setup -scapi.tests.test_connect.test_favorites scapi.tests.test_connect-module.html#test_favorites -scapi.tests.test_connect.USE_OAUTH scapi.tests.test_connect-module.html#USE_OAUTH -scapi.tests.test_oauth scapi.tests.test_oauth-module.html -scapi.tests.test_oauth._logger scapi.tests.test_oauth-module.html#_logger -scapi.tests.test_oauth.test_oauth_connect scapi.tests.test_oauth-module.html#test_oauth_connect -scapi.tests.test_oauth.TOKEN scapi.tests.test_oauth-module.html#TOKEN -scapi.tests.test_oauth.test_base64_connect scapi.tests.test_oauth-module.html#test_base64_connect -scapi.tests.test_oauth.CONSUMER_SECRET scapi.tests.test_oauth-module.html#CONSUMER_SECRET -scapi.tests.test_oauth.SECRET scapi.tests.test_oauth-module.html#SECRET -scapi.tests.test_oauth.logger scapi.tests.test_oauth-module.html#logger -scapi.tests.test_oauth.CONSUMER scapi.tests.test_oauth-module.html#CONSUMER -scapi.util scapi.util-module.html -scapi.util.escape scapi.util-module.html#escape -exceptions.AssertionError exceptions.AssertionError-class.html -exceptions.AssertionError.__init__ exceptions.AssertionError-class.html#__init__ -exceptions.AssertionError.__new__ exceptions.AssertionError-class.html#__new__ -scapi.ApiConnector scapi.ApiConnector-class.html -scapi.ApiConnector.fetch_access_token scapi.ApiConnector-class.html#fetch_access_token -scapi.ApiConnector.LIST_LIMIT scapi.ApiConnector-class.html#LIST_LIMIT -scapi.ApiConnector.LIST_LIMIT_PARAMETER scapi.ApiConnector-class.html#LIST_LIMIT_PARAMETER -scapi.ApiConnector.fetch_request_token scapi.ApiConnector-class.html#fetch_request_token -scapi.ApiConnector.get_request_token_authorization_url scapi.ApiConnector-class.html#get_request_token_authorization_url -scapi.ApiConnector.normalize_method scapi.ApiConnector-class.html#normalize_method -scapi.ApiConnector.__init__ scapi.ApiConnector-class.html#__init__ -scapi.ApiConnector.LIST_OFFSET_PARAMETER scapi.ApiConnector-class.html#LIST_OFFSET_PARAMETER -scapi.Comment scapi.Comment-class.html -scapi.RESTBase._scope scapi.RESTBase-class.html#_scope -scapi.RESTBase.__init__ scapi.RESTBase-class.html#__init__ -scapi.Comment.KIND scapi.Comment-class.html#KIND -scapi.RESTBase.create scapi.RESTBase-class.html#create -scapi.RESTBase.get scapi.RESTBase-class.html#get -scapi.RESTBase.__getattr__ scapi.RESTBase-class.html#__getattr__ -scapi.RESTBase.ALL_DOMAIN_CLASSES scapi.RESTBase-class.html#ALL_DOMAIN_CLASSES -scapi.RESTBase.new scapi.RESTBase-class.html#new -scapi.RESTBase.ALIASES scapi.RESTBase-class.html#ALIASES -scapi.RESTBase.__ne__ scapi.RESTBase-class.html#__ne__ -scapi.RESTBase._as_arguments scapi.RESTBase-class.html#_as_arguments -scapi.RESTBase._convert_value scapi.RESTBase-class.html#_convert_value -scapi.RESTBase.__setattr__ scapi.RESTBase-class.html#__setattr__ -scapi.RESTBase._singleton scapi.RESTBase-class.html#_singleton -scapi.RESTBase.REGISTRY scapi.RESTBase-class.html#REGISTRY -scapi.RESTBase.__eq__ scapi.RESTBase-class.html#__eq__ -scapi.RESTBase.__repr__ scapi.RESTBase-class.html#__repr__ -scapi.RESTBase.__hash__ scapi.RESTBase-class.html#__hash__ -scapi.Event scapi.Event-class.html -scapi.RESTBase._scope scapi.RESTBase-class.html#_scope -scapi.RESTBase.__init__ scapi.RESTBase-class.html#__init__ -scapi.Event.KIND scapi.Event-class.html#KIND -scapi.RESTBase.create scapi.RESTBase-class.html#create -scapi.RESTBase.get scapi.RESTBase-class.html#get -scapi.RESTBase.__getattr__ scapi.RESTBase-class.html#__getattr__ -scapi.RESTBase.ALL_DOMAIN_CLASSES scapi.RESTBase-class.html#ALL_DOMAIN_CLASSES -scapi.RESTBase.new scapi.RESTBase-class.html#new -scapi.RESTBase.ALIASES scapi.RESTBase-class.html#ALIASES -scapi.RESTBase.__ne__ scapi.RESTBase-class.html#__ne__ -scapi.RESTBase._as_arguments scapi.RESTBase-class.html#_as_arguments -scapi.RESTBase._convert_value scapi.RESTBase-class.html#_convert_value -scapi.RESTBase.__setattr__ scapi.RESTBase-class.html#__setattr__ -scapi.RESTBase._singleton scapi.RESTBase-class.html#_singleton -scapi.RESTBase.REGISTRY scapi.RESTBase-class.html#REGISTRY -scapi.RESTBase.__eq__ scapi.RESTBase-class.html#__eq__ -scapi.RESTBase.__repr__ scapi.RESTBase-class.html#__repr__ -scapi.RESTBase.__hash__ scapi.RESTBase-class.html#__hash__ -scapi.Group scapi.Group-class.html -scapi.RESTBase._scope scapi.RESTBase-class.html#_scope -scapi.RESTBase.__init__ scapi.RESTBase-class.html#__init__ -scapi.Group.KIND scapi.Group-class.html#KIND -scapi.RESTBase.create scapi.RESTBase-class.html#create -scapi.RESTBase.get scapi.RESTBase-class.html#get -scapi.RESTBase.__getattr__ scapi.RESTBase-class.html#__getattr__ -scapi.RESTBase.ALL_DOMAIN_CLASSES scapi.RESTBase-class.html#ALL_DOMAIN_CLASSES -scapi.RESTBase.new scapi.RESTBase-class.html#new -scapi.RESTBase.ALIASES scapi.RESTBase-class.html#ALIASES -scapi.RESTBase.__ne__ scapi.RESTBase-class.html#__ne__ -scapi.RESTBase._as_arguments scapi.RESTBase-class.html#_as_arguments -scapi.RESTBase._convert_value scapi.RESTBase-class.html#_convert_value -scapi.RESTBase.__setattr__ scapi.RESTBase-class.html#__setattr__ -scapi.RESTBase._singleton scapi.RESTBase-class.html#_singleton -scapi.RESTBase.REGISTRY scapi.RESTBase-class.html#REGISTRY -scapi.RESTBase.__eq__ scapi.RESTBase-class.html#__eq__ -scapi.RESTBase.__repr__ scapi.RESTBase-class.html#__repr__ -scapi.RESTBase.__hash__ scapi.RESTBase-class.html#__hash__ -scapi.InvalidMethodException scapi.InvalidMethodException-class.html -scapi.InvalidMethodException.__repr__ scapi.InvalidMethodException-class.html#__repr__ -scapi.InvalidMethodException.__init__ scapi.InvalidMethodException-class.html#__init__ -scapi.NoResultFromRequest scapi.NoResultFromRequest-class.html -scapi.Playlist scapi.Playlist-class.html -scapi.RESTBase._scope scapi.RESTBase-class.html#_scope -scapi.RESTBase.__init__ scapi.RESTBase-class.html#__init__ -scapi.Playlist.KIND scapi.Playlist-class.html#KIND -scapi.RESTBase.create scapi.RESTBase-class.html#create -scapi.RESTBase.get scapi.RESTBase-class.html#get -scapi.RESTBase.__getattr__ scapi.RESTBase-class.html#__getattr__ -scapi.RESTBase.ALL_DOMAIN_CLASSES scapi.RESTBase-class.html#ALL_DOMAIN_CLASSES -scapi.RESTBase.new scapi.RESTBase-class.html#new -scapi.RESTBase.ALIASES scapi.RESTBase-class.html#ALIASES -scapi.RESTBase.__ne__ scapi.RESTBase-class.html#__ne__ -scapi.RESTBase._as_arguments scapi.RESTBase-class.html#_as_arguments -scapi.RESTBase._convert_value scapi.RESTBase-class.html#_convert_value -scapi.RESTBase.__setattr__ scapi.RESTBase-class.html#__setattr__ -scapi.RESTBase._singleton scapi.RESTBase-class.html#_singleton -scapi.RESTBase.REGISTRY scapi.RESTBase-class.html#REGISTRY -scapi.RESTBase.__eq__ scapi.RESTBase-class.html#__eq__ -scapi.RESTBase.__repr__ scapi.RESTBase-class.html#__repr__ -scapi.RESTBase.__hash__ scapi.RESTBase-class.html#__hash__ -scapi.RESTBase scapi.RESTBase-class.html -scapi.RESTBase._scope scapi.RESTBase-class.html#_scope -scapi.RESTBase.__init__ scapi.RESTBase-class.html#__init__ -scapi.RESTBase.__setattr__ scapi.RESTBase-class.html#__setattr__ -scapi.RESTBase.create scapi.RESTBase-class.html#create -scapi.RESTBase.get scapi.RESTBase-class.html#get -scapi.RESTBase.__getattr__ scapi.RESTBase-class.html#__getattr__ -scapi.RESTBase.ALL_DOMAIN_CLASSES scapi.RESTBase-class.html#ALL_DOMAIN_CLASSES -scapi.RESTBase.new scapi.RESTBase-class.html#new -scapi.RESTBase.ALIASES scapi.RESTBase-class.html#ALIASES -scapi.RESTBase.__ne__ scapi.RESTBase-class.html#__ne__ -scapi.RESTBase._as_arguments scapi.RESTBase-class.html#_as_arguments -scapi.RESTBase._convert_value scapi.RESTBase-class.html#_convert_value -scapi.RESTBase.KIND scapi.RESTBase-class.html#KIND -scapi.RESTBase._singleton scapi.RESTBase-class.html#_singleton -scapi.RESTBase.REGISTRY scapi.RESTBase-class.html#REGISTRY -scapi.RESTBase.__eq__ scapi.RESTBase-class.html#__eq__ -scapi.RESTBase.__repr__ scapi.RESTBase-class.html#__repr__ -scapi.RESTBase.__hash__ scapi.RESTBase-class.html#__hash__ -scapi.SCRedirectHandler scapi.SCRedirectHandler-class.html -scapi.SCRedirectHandler.alternate_method scapi.SCRedirectHandler-class.html#alternate_method -scapi.SCRedirectHandler.http_error_303 scapi.SCRedirectHandler-class.html#http_error_303 -scapi.SCRedirectHandler.http_error_201 scapi.SCRedirectHandler-class.html#http_error_201 -scapi.Scope scapi.Scope-class.html -scapi.Scope.oauth_sign_get_request scapi.Scope-class.html#oauth_sign_get_request -scapi.Scope._map scapi.Scope-class.html#_map -scapi.Scope.__str__ scapi.Scope-class.html#__str__ -scapi.Scope.__getattr__ scapi.Scope-class.html#__getattr__ -scapi.Scope._call scapi.Scope-class.html#_call -scapi.Scope._create_query_string scapi.Scope-class.html#_create_query_string -scapi.Scope._create_request scapi.Scope-class.html#_create_request -scapi.Scope._get_connector scapi.Scope-class.html#_get_connector -scapi.Scope.__init__ scapi.Scope-class.html#__init__ -scapi.Scope.__repr__ scapi.Scope-class.html#__repr__ -scapi.Track scapi.Track-class.html -scapi.RESTBase._scope scapi.RESTBase-class.html#_scope -scapi.RESTBase.__init__ scapi.RESTBase-class.html#__init__ -scapi.Track.KIND scapi.Track-class.html#KIND -scapi.RESTBase.create scapi.RESTBase-class.html#create -scapi.RESTBase._as_arguments scapi.RESTBase-class.html#_as_arguments -scapi.RESTBase.__getattr__ scapi.RESTBase-class.html#__getattr__ -scapi.RESTBase.ALL_DOMAIN_CLASSES scapi.RESTBase-class.html#ALL_DOMAIN_CLASSES -scapi.RESTBase.new scapi.RESTBase-class.html#new -scapi.Track.ALIASES scapi.Track-class.html#ALIASES -scapi.RESTBase.__ne__ scapi.RESTBase-class.html#__ne__ -scapi.RESTBase.get scapi.RESTBase-class.html#get -scapi.RESTBase._convert_value scapi.RESTBase-class.html#_convert_value -scapi.RESTBase.__setattr__ scapi.RESTBase-class.html#__setattr__ -scapi.RESTBase._singleton scapi.RESTBase-class.html#_singleton -scapi.RESTBase.REGISTRY scapi.RESTBase-class.html#REGISTRY -scapi.RESTBase.__eq__ scapi.RESTBase-class.html#__eq__ -scapi.RESTBase.__repr__ scapi.RESTBase-class.html#__repr__ -scapi.RESTBase.__hash__ scapi.RESTBase-class.html#__hash__ -scapi.UnknownContentType scapi.UnknownContentType-class.html -scapi.UnknownContentType.__str__ scapi.UnknownContentType-class.html#__str__ -scapi.UnknownContentType.__repr__ scapi.UnknownContentType-class.html#__repr__ -scapi.UnknownContentType.__init__ scapi.UnknownContentType-class.html#__init__ -scapi.User scapi.User-class.html -scapi.RESTBase._scope scapi.RESTBase-class.html#_scope -scapi.RESTBase.__init__ scapi.RESTBase-class.html#__init__ -scapi.User.KIND scapi.User-class.html#KIND -scapi.RESTBase.create scapi.RESTBase-class.html#create -scapi.RESTBase._as_arguments scapi.RESTBase-class.html#_as_arguments -scapi.RESTBase.__getattr__ scapi.RESTBase-class.html#__getattr__ -scapi.RESTBase.ALL_DOMAIN_CLASSES scapi.RESTBase-class.html#ALL_DOMAIN_CLASSES -scapi.RESTBase.new scapi.RESTBase-class.html#new -scapi.User.ALIASES scapi.User-class.html#ALIASES -scapi.RESTBase.__ne__ scapi.RESTBase-class.html#__ne__ -scapi.RESTBase.get scapi.RESTBase-class.html#get -scapi.RESTBase._convert_value scapi.RESTBase-class.html#_convert_value -scapi.RESTBase.__setattr__ scapi.RESTBase-class.html#__setattr__ -scapi.RESTBase._singleton scapi.RESTBase-class.html#_singleton -scapi.RESTBase.REGISTRY scapi.RESTBase-class.html#REGISTRY -scapi.RESTBase.__eq__ scapi.RESTBase-class.html#__eq__ -scapi.RESTBase.__repr__ scapi.RESTBase-class.html#__repr__ -scapi.RESTBase.__hash__ scapi.RESTBase-class.html#__hash__ -scapi.authentication.BasicAuthenticator scapi.authentication.BasicAuthenticator-class.html -scapi.authentication.BasicAuthenticator.augment_request scapi.authentication.BasicAuthenticator-class.html#augment_request -scapi.authentication.BasicAuthenticator.__init__ scapi.authentication.BasicAuthenticator-class.html#__init__ -scapi.authentication.OAuthAuthenticator scapi.authentication.OAuthAuthenticator-class.html -scapi.authentication.OAuthAuthenticator.augment_request scapi.authentication.OAuthAuthenticator-class.html#augment_request -scapi.authentication.OAuthAuthenticator.generate_nonce scapi.authentication.OAuthAuthenticator-class.html#generate_nonce -scapi.authentication.OAuthAuthenticator.OAUTH_API_VERSION scapi.authentication.OAuthAuthenticator-class.html#OAUTH_API_VERSION -scapi.authentication.OAuthAuthenticator.generate_timestamp scapi.authentication.OAuthAuthenticator-class.html#generate_timestamp -scapi.authentication.OAuthAuthenticator.AUTHORIZATION_HEADER scapi.authentication.OAuthAuthenticator-class.html#AUTHORIZATION_HEADER -scapi.authentication.OAuthAuthenticator.__init__ scapi.authentication.OAuthAuthenticator-class.html#__init__ -scapi.authentication.OAuthSignatureMethod_HMAC_SHA1 scapi.authentication.OAuthSignatureMethod_HMAC_SHA1-class.html -scapi.authentication.OAuthSignatureMethod_HMAC_SHA1.FORBIDDEN scapi.authentication.OAuthSignatureMethod_HMAC_SHA1-class.html#FORBIDDEN -scapi.authentication.OAuthSignatureMethod_HMAC_SHA1.get_name scapi.authentication.OAuthSignatureMethod_HMAC_SHA1-class.html#get_name -scapi.authentication.OAuthSignatureMethod_HMAC_SHA1.get_normalized_http_method scapi.authentication.OAuthSignatureMethod_HMAC_SHA1-class.html#get_normalized_http_method -scapi.authentication.OAuthSignatureMethod_HMAC_SHA1.get_normalized_http_url scapi.authentication.OAuthSignatureMethod_HMAC_SHA1-class.html#get_normalized_http_url -scapi.authentication.OAuthSignatureMethod_HMAC_SHA1.get_normalized_parameters scapi.authentication.OAuthSignatureMethod_HMAC_SHA1-class.html#get_normalized_parameters -scapi.authentication.OAuthSignatureMethod_HMAC_SHA1.build_signature scapi.authentication.OAuthSignatureMethod_HMAC_SHA1-class.html#build_signature -scapi.json.JsonReader scapi.json.JsonReader-class.html -scapi.json.JsonReader.escapes scapi.json.JsonReader-class.html#escapes -scapi.json.JsonReader._readObject scapi.json.JsonReader-class.html#_readObject -scapi.json.JsonReader._assertNext scapi.json.JsonReader-class.html#_assertNext -scapi.json.JsonReader._readNumber scapi.json.JsonReader-class.html#_readNumber -scapi.json.JsonReader._peek scapi.json.JsonReader-class.html#_peek -scapi.json.JsonReader._readNull scapi.json.JsonReader-class.html#_readNull -scapi.json.JsonReader._hexDigitToInt scapi.json.JsonReader-class.html#_hexDigitToInt -scapi.json.JsonReader._readTrue scapi.json.JsonReader-class.html#_readTrue -scapi.json.JsonReader._readDoubleSolidusComment scapi.json.JsonReader-class.html#_readDoubleSolidusComment -scapi.json.JsonReader.read scapi.json.JsonReader-class.html#read -scapi.json.JsonReader._readFalse scapi.json.JsonReader-class.html#_readFalse -scapi.json.JsonReader.hex_digits scapi.json.JsonReader-class.html#hex_digits -scapi.json.JsonReader._readComment scapi.json.JsonReader-class.html#_readComment -scapi.json.JsonReader._readArray scapi.json.JsonReader-class.html#_readArray -scapi.json.JsonReader._eatWhitespace scapi.json.JsonReader-class.html#_eatWhitespace -scapi.json.JsonReader._read scapi.json.JsonReader-class.html#_read -scapi.json.JsonReader._readString scapi.json.JsonReader-class.html#_readString -scapi.json.JsonReader._readCStyleComment scapi.json.JsonReader-class.html#_readCStyleComment -scapi.json.JsonReader._next scapi.json.JsonReader-class.html#_next -scapi.json.JsonWriter scapi.json.JsonWriter-class.html -scapi.json.JsonWriter.write scapi.json.JsonWriter-class.html#write -scapi.json.JsonWriter._append scapi.json.JsonWriter-class.html#_append -scapi.json.JsonWriter._write scapi.json.JsonWriter-class.html#_write -scapi.json.ReadException scapi.json.ReadException-class.html -scapi.json.WriteException scapi.json.WriteException-class.html -scapi.json._StringGenerator scapi.json._StringGenerator-class.html -scapi.json._StringGenerator.peek scapi.json._StringGenerator-class.html#peek -scapi.json._StringGenerator.all scapi.json._StringGenerator-class.html#all -scapi.json._StringGenerator.next scapi.json._StringGenerator-class.html#next -scapi.json._StringGenerator.__init__ scapi.json._StringGenerator-class.html#__init__ -scapi.tests.scapi_tests.SCAPITests scapi.tests.scapi_tests.SCAPITests-class.html -scapi.tests.scapi_tests.SCAPITests._load_config scapi.tests.scapi_tests.SCAPITests-class.html#_load_config -scapi.tests.scapi_tests.SCAPITests.test_track_creation_with_artwork scapi.tests.scapi_tests.SCAPITests-class.html#test_track_creation_with_artwork -scapi.tests.scapi_tests.SCAPITests.test_upload scapi.tests.scapi_tests.SCAPITests-class.html#test_upload -scapi.tests.scapi_tests.SCAPITests.test_scoped_track_creation scapi.tests.scapi_tests.SCAPITests-class.html#test_scoped_track_creation -scapi.tests.scapi_tests.SCAPITests.test_permissions scapi.tests.scapi_tests.SCAPITests-class.html#test_permissions -scapi.tests.scapi_tests.SCAPITests.CONSUMER_SECRET scapi.tests.scapi_tests.SCAPITests-class.html#CONSUMER_SECRET -scapi.tests.scapi_tests.SCAPITests.CONSUMER scapi.tests.scapi_tests.SCAPITests-class.html#CONSUMER -scapi.tests.scapi_tests.SCAPITests.test_me_having_stress scapi.tests.scapi_tests.SCAPITests-class.html#test_me_having_stress -scapi.tests.scapi_tests.SCAPITests.USER scapi.tests.scapi_tests.SCAPITests-class.html#USER -scapi.tests.scapi_tests.SCAPITests.CONFIGSPEC scapi.tests.scapi_tests.SCAPITests-class.html#CONFIGSPEC -scapi.tests.scapi_tests.SCAPITests.test_track_creation_with_email_sharers scapi.tests.scapi_tests.SCAPITests-class.html#test_track_creation_with_email_sharers -scapi.tests.scapi_tests.SCAPITests.test_setting_comments scapi.tests.scapi_tests.SCAPITests-class.html#test_setting_comments -scapi.tests.scapi_tests.SCAPITests.test_access_token_acquisition scapi.tests.scapi_tests.SCAPITests-class.html#test_access_token_acquisition -scapi.tests.scapi_tests.SCAPITests.test_track_creation scapi.tests.scapi_tests.SCAPITests-class.html#test_track_creation -scapi.tests.scapi_tests.SCAPITests.test_groups scapi.tests.scapi_tests.SCAPITests-class.html#test_groups -scapi.tests.scapi_tests.SCAPITests.test_track_update scapi.tests.scapi_tests.SCAPITests-class.html#test_track_update -scapi.tests.scapi_tests.SCAPITests.test_modifying_playlists scapi.tests.scapi_tests.SCAPITests-class.html#test_modifying_playlists -scapi.tests.scapi_tests.SCAPITests.SECRET scapi.tests.scapi_tests.SCAPITests-class.html#SECRET -scapi.tests.scapi_tests.SCAPITests.test_oauth_get_signing scapi.tests.scapi_tests.SCAPITests-class.html#test_oauth_get_signing -scapi.tests.scapi_tests.SCAPITests.test_contact_add_and_removal scapi.tests.scapi_tests.SCAPITests-class.html#test_contact_add_and_removal -scapi.tests.scapi_tests.SCAPITests.test_connect scapi.tests.scapi_tests.SCAPITests-class.html#test_connect -scapi.tests.scapi_tests.SCAPITests.test_large_list scapi.tests.scapi_tests.SCAPITests-class.html#test_large_list -unittest.TestCase.failureException exceptions.AssertionError-class.html -scapi.tests.scapi_tests.SCAPITests.test_contact_list scapi.tests.scapi_tests.SCAPITests-class.html#test_contact_list -scapi.tests.scapi_tests.SCAPITests.test_playlists scapi.tests.scapi_tests.SCAPITests-class.html#test_playlists -scapi.tests.scapi_tests.SCAPITests.API_HOST scapi.tests.scapi_tests.SCAPITests-class.html#API_HOST -scapi.tests.scapi_tests.SCAPITests.setUp scapi.tests.scapi_tests.SCAPITests-class.html#setUp -scapi.tests.scapi_tests.SCAPITests.test_downloadable scapi.tests.scapi_tests.SCAPITests-class.html#test_downloadable -scapi.tests.scapi_tests.SCAPITests.TOKEN scapi.tests.scapi_tests.SCAPITests-class.html#TOKEN -scapi.tests.scapi_tests.SCAPITests.test_events scapi.tests.scapi_tests.SCAPITests-class.html#test_events -scapi.tests.scapi_tests.SCAPITests.test_non_global_api scapi.tests.scapi_tests.SCAPITests-class.html#test_non_global_api -scapi.tests.scapi_tests.SCAPITests.PASSWORD scapi.tests.scapi_tests.SCAPITests-class.html#PASSWORD -scapi.tests.scapi_tests.SCAPITests.test_setting_comments_the_way_shawn_says_its_correct scapi.tests.scapi_tests.SCAPITests-class.html#test_setting_comments_the_way_shawn_says_its_correct -scapi.tests.scapi_tests.SCAPITests.CONFIG_NAME scapi.tests.scapi_tests.SCAPITests-class.html#CONFIG_NAME -scapi.tests.scapi_tests.SCAPITests.test_setting_permissions scapi.tests.scapi_tests.SCAPITests-class.html#test_setting_permissions -scapi.tests.scapi_tests.SCAPITests.RUN_INTERACTIVE_TESTS scapi.tests.scapi_tests.SCAPITests-class.html#RUN_INTERACTIVE_TESTS -scapi.tests.scapi_tests.SCAPITests.test_favorites scapi.tests.scapi_tests.SCAPITests-class.html#test_favorites -scapi.tests.scapi_tests.SCAPITests.test_track_creation_with_updated_artwork scapi.tests.scapi_tests.SCAPITests-class.html#test_track_creation_with_updated_artwork -scapi.tests.scapi_tests.SCAPITests.AUTHENTICATOR scapi.tests.scapi_tests.SCAPITests-class.html#AUTHENTICATOR -scapi.tests.scapi_tests.SCAPITests.test_streaming scapi.tests.scapi_tests.SCAPITests-class.html#test_streaming -scapi.tests.scapi_tests.SCAPITests.test_playlist_creation scapi.tests.scapi_tests.SCAPITests-class.html#test_playlist_creation -scapi.tests.scapi_tests.SCAPITests.test_track_deletion scapi.tests.scapi_tests.SCAPITests-class.html#test_track_deletion -scapi.tests.scapi_tests.SCAPITests.test_filtered_list scapi.tests.scapi_tests.SCAPITests-class.html#test_filtered_list -scapi.tests.scapi_tests.SCAPITests.root scapi.tests.scapi_tests.SCAPITests-class.html#root -scapi.util.MultiDict scapi.util.MultiDict-class.html -scapi.util.MultiDict.add scapi.util.MultiDict-class.html#add -scapi.util.MultiDict.iteritemslist scapi.util.MultiDict-class.html#iteritemslist diff --git a/python_apps/soundcloud-api/docs/api/class-tree.html b/python_apps/soundcloud-api/docs/api/class-tree.html deleted file mode 100644 index b2473382f..000000000 --- a/python_apps/soundcloud-api/docs/api/class-tree.html +++ /dev/null @@ -1,216 +0,0 @@ -<?xml version="1.0" encoding="ascii"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <title>Class Hierarchy</title> - <link rel="stylesheet" href="epydoc.css" type="text/css" /> - <script type="text/javascript" src="epydoc.js"></script> -</head> - -<body bgcolor="white" text="black" link="blue" vlink="#204080" - alink="#204080"> -<!-- ==================== NAVIGATION BAR ==================== --> -<table class="navbar" border="0" width="100%" cellpadding="0" - bgcolor="#a0c0ff" cellspacing="0"> - <tr valign="middle"> - <!-- Home link --> - <th> <a - href="scapi-module.html">Home</a> </th> - - <!-- Tree link --> - <th bgcolor="#70b0f0" class="navbar-select" - > Trees </th> - - <!-- Index link --> - <th> <a - href="identifier-index.html">Indices</a> </th> - - <!-- Help link --> - <th> <a - href="help.html">Help</a> </th> - - <!-- Project homepage --> - <th class="navbar" align="right" width="100%"> - <table border="0" cellpadding="0" cellspacing="0"> - <tr><th class="navbar" align="center" - >SoundCloud API</th> - </tr></table></th> - </tr> -</table> -<table width="100%" cellpadding="0" cellspacing="0"> - <tr valign="top"> - <td width="100%"> </td> - <td> - <table cellpadding="0" cellspacing="0"> - <!-- hide/show private --> - <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink" - onclick="toggle_private();">hide private</a>]</span></td></tr> - <tr><td align="right"><span class="options" - >[<a href="frames.html" target="_top">frames</a - >] | <a href="class-tree.html" - target="_top">no frames</a>]</span></td></tr> - </table> - </td> - </tr> -</table> -<center><b> - [ <a href="module-tree.html">Module Hierarchy</a> - | <a href="class-tree.html">Class Hierarchy</a> ] -</b></center><br /> -<h1 class="epydoc">Class Hierarchy</h1> -<ul class="nomargin-top"> - <li> <strong class="uidlink">urllib2.BaseHandler</strong> - <ul> - <li> <strong class="uidlink">urllib2.HTTPRedirectHandler</strong> - <ul> - <li> <strong class="uidlink"><a href="scapi.SCRedirectHandler-class.html" onclick="show_private();">scapi.SCRedirectHandler</a></strong>: - <em class="summary">A urllib2-Handler to deal with the redirects the RESTful API of SC - uses.</em> - </li> - </ul> - </li> - </ul> - </li> - <li> <strong class="uidlink">object</strong>: - <em class="summary">The most base type</em> - <ul> - <li> <strong class="uidlink"><a href="scapi.ApiConnector-class.html" onclick="show_private();">scapi.ApiConnector</a></strong>: - <em class="summary">The ApiConnector holds all the data necessary to authenticate - against the soundcloud-api.</em> - </li> - <li> <strong class="uidlink">exceptions.BaseException</strong>: - <em class="summary">Common base class for all exceptions</em> - <ul> - <li> <strong class="uidlink">exceptions.Exception</strong>: - <em class="summary">Common base class for all non-exit exceptions.</em> - <ul> - <li> <strong class="uidlink"><a href="scapi.InvalidMethodException-class.html" onclick="show_private();">scapi.InvalidMethodException</a></strong> - </li> - <li> <strong class="uidlink"><a href="scapi.NoResultFromRequest-class.html" onclick="show_private();">scapi.NoResultFromRequest</a></strong> - </li> - <li> <strong class="uidlink"><a href="scapi.json.ReadException-class.html">scapi.json.ReadException</a></strong> - </li> - <li> <strong class="uidlink">exceptions.StandardError</strong>: - <em class="summary">Base class for all standard Python exceptions that do not represent - interpreter exiting.</em> - <ul> - <li> <strong class="uidlink"><a href="exceptions.AssertionError-class.html">exceptions.AssertionError</a></strong>: - <em class="summary">Assertion failed.</em> - </li> - </ul> - </li> - <li> <strong class="uidlink"><a href="scapi.UnknownContentType-class.html" onclick="show_private();">scapi.UnknownContentType</a></strong> - </li> - <li> <strong class="uidlink"><a href="scapi.json.WriteException-class.html">scapi.json.WriteException</a></strong> - </li> - </ul> - </li> - </ul> - </li> - <li> <strong class="uidlink"><a href="scapi.authentication.BasicAuthenticator-class.html">scapi.authentication.BasicAuthenticator</a></strong> - </li> - <li> <strong class="uidlink"><a href="scapi.json.JsonReader-class.html">scapi.json.JsonReader</a></strong> - </li> - <li> <strong class="uidlink"><a href="scapi.json.JsonWriter-class.html">scapi.json.JsonWriter</a></strong> - </li> - <li> <strong class="uidlink"><a href="scapi.authentication.OAuthAuthenticator-class.html">scapi.authentication.OAuthAuthenticator</a></strong> - </li> - <li> <strong class="uidlink"><a href="scapi.authentication.OAuthSignatureMethod_HMAC_SHA1-class.html">scapi.authentication.OAuthSignatureMethod_HMAC_SHA1</a></strong> - </li> - <li> <strong class="uidlink"><a href="scapi.RESTBase-class.html" onclick="show_private();">scapi.RESTBase</a></strong>: - <em class="summary">The baseclass for all our domain-objects/resources.</em> - <ul> - <li> <strong class="uidlink"><a href="scapi.Comment-class.html">scapi.Comment</a></strong>: - <em class="summary">A comment domain object/resource.</em> - </li> - <li> <strong class="uidlink"><a href="scapi.Event-class.html">scapi.Event</a></strong>: - <em class="summary">A event domain object/resource.</em> - </li> - <li> <strong class="uidlink"><a href="scapi.Group-class.html">scapi.Group</a></strong>: - <em class="summary">A group domain object/resource</em> - </li> - <li> <strong class="uidlink"><a href="scapi.Playlist-class.html">scapi.Playlist</a></strong>: - <em class="summary">A playlist/set domain object/resource</em> - </li> - <li> <strong class="uidlink"><a href="scapi.Track-class.html">scapi.Track</a></strong>: - <em class="summary">A track domain object/resource.</em> - </li> - <li> <strong class="uidlink"><a href="scapi.User-class.html">scapi.User</a></strong>: - <em class="summary">A user domain object/resource.</em> - </li> - </ul> - </li> - <li> <strong class="uidlink"><a href="scapi.Scope-class.html" onclick="show_private();">scapi.Scope</a></strong>: - <em class="summary">The basic means to query and create resources.</em> - </li> - <li> <strong class="uidlink">unittest.TestCase</strong>: - <em class="summary">A class whose instances are single test cases.</em> - <ul> - <li> <strong class="uidlink"><a href="scapi.tests.scapi_tests.SCAPITests-class.html">scapi.tests.scapi_tests.SCAPITests</a></strong> - </li> - </ul> - </li> - <li> <strong class="uidlink"><a href="scapi.json._StringGenerator-class.html" onclick="show_private();">scapi.json._StringGenerator</a></strong> - </li> - <li> <strong class="uidlink">dict</strong>: - <em class="summary">dict() -> new empty dictionary.</em> - <ul> - <li> <strong class="uidlink"><a href="scapi.util.MultiDict-class.html">scapi.util.MultiDict</a></strong> - </li> - </ul> - </li> - </ul> - </li> -</ul> -<!-- ==================== NAVIGATION BAR ==================== --> -<table class="navbar" border="0" width="100%" cellpadding="0" - bgcolor="#a0c0ff" cellspacing="0"> - <tr valign="middle"> - <!-- Home link --> - <th> <a - href="scapi-module.html">Home</a> </th> - - <!-- Tree link --> - <th bgcolor="#70b0f0" class="navbar-select" - > Trees </th> - - <!-- Index link --> - <th> <a - href="identifier-index.html">Indices</a> </th> - - <!-- Help link --> - <th> <a - href="help.html">Help</a> </th> - - <!-- Project homepage --> - <th class="navbar" align="right" width="100%"> - <table border="0" cellpadding="0" cellspacing="0"> - <tr><th class="navbar" align="center" - >SoundCloud API</th> - </tr></table></th> - </tr> -</table> -<table border="0" cellpadding="0" cellspacing="0" width="100%%"> - <tr> - <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Thu Sep 10 00:58:49 2009 - </td> - <td align="right" class="footer"> - <a target="mainFrame" href="http://epydoc.sourceforge.net" - >http://epydoc.sourceforge.net</a> - </td> - </tr> -</table> - -<script type="text/javascript"> - <!-- - // Private objects are initially displayed (because if - // javascript is turned off then we want them to be - // visible); but by default, we want to hide them. So hide - // them unless we have a cookie that says to show them. - checkCookie(); - // --> -</script> -</body> -</html> diff --git a/python_apps/soundcloud-api/docs/api/crarr.png b/python_apps/soundcloud-api/docs/api/crarr.png deleted file mode 100644 index 26b43c52433b71e72a9a478c52d446278335f0e4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 340 zcmeAS@N?(olHy`uVBq!ia0vp^f<Vm0!3-o*7r9OVQaUBB5hcz=sfi_-`FRQ<nYpP9 zA*HDbMn(#brRfSr1_ovd1_o9p##V*~3c3cS1_lW{0uexc>?NMQuI$%1#8??M1uoZK z0}62#ctjR6FvuMOVaB`*rFK9;mUKs7M+SzC{oH>NS%G}l0G|-o|NsA=J-p%i`2!7U zCdJ_j4{u-SDsoA1U`TRixpVcz%O`iHHAYk?=&YaLkmD!Pp6~GW^M_S4D^grJKD>P~ zuPf!ku`N^TLavn`Edv_JSQ6wH%;50sMjDXg>*?YcQgJIe!GUqln>_|<+Os&OOUQS1 zY~Wzutud*iVS#|PHMc&?2WHoZpEo8l+6!Oc$x~=%U)469Gl^f?nq7UBw#1AXkrEde cmFKWBXcRFE*(?@T0vgQV>FVdQ&MBb@0LpZ4r2qf` diff --git a/python_apps/soundcloud-api/docs/api/epydoc.css b/python_apps/soundcloud-api/docs/api/epydoc.css deleted file mode 100644 index 86d417068..000000000 --- a/python_apps/soundcloud-api/docs/api/epydoc.css +++ /dev/null @@ -1,322 +0,0 @@ - - -/* Epydoc CSS Stylesheet - * - * This stylesheet can be used to customize the appearance of epydoc's - * HTML output. - * - */ - -/* Default Colors & Styles - * - Set the default foreground & background color with 'body'; and - * link colors with 'a:link' and 'a:visited'. - * - Use bold for decision list terms. - * - The heading styles defined here are used for headings *within* - * docstring descriptions. All headings used by epydoc itself use - * either class='epydoc' or class='toc' (CSS styles for both - * defined below). - */ -body { background: #ffffff; color: #000000; } -p { margin-top: 0.5em; margin-bottom: 0.5em; } -a:link { color: #0000ff; } -a:visited { color: #204080; } -dt { font-weight: bold; } -h1 { font-size: +140%; font-style: italic; - font-weight: bold; } -h2 { font-size: +125%; font-style: italic; - font-weight: bold; } -h3 { font-size: +110%; font-style: italic; - font-weight: normal; } -code { font-size: 100%; } -/* N.B.: class, not pseudoclass */ -a.link { font-family: monospace; } - -/* Page Header & Footer - * - The standard page header consists of a navigation bar (with - * pointers to standard pages such as 'home' and 'trees'); a - * breadcrumbs list, which can be used to navigate to containing - * classes or modules; options links, to show/hide private - * variables and to show/hide frames; and a page title (using - * <h1>). The page title may be followed by a link to the - * corresponding source code (using 'span.codelink'). - * - The footer consists of a navigation bar, a timestamp, and a - * pointer to epydoc's homepage. - */ -h1.epydoc { margin: 0; font-size: +140%; font-weight: bold; } -h2.epydoc { font-size: +130%; font-weight: bold; } -h3.epydoc { font-size: +115%; font-weight: bold; - margin-top: 0.2em; } -td h3.epydoc { font-size: +115%; font-weight: bold; - margin-bottom: 0; } -table.navbar { background: #a0c0ff; color: #000000; - border: 2px groove #c0d0d0; } -table.navbar table { color: #000000; } -th.navbar-select { background: #70b0ff; - color: #000000; } -table.navbar a { text-decoration: none; } -table.navbar a:link { color: #0000ff; } -table.navbar a:visited { color: #204080; } -span.breadcrumbs { font-size: 85%; font-weight: bold; } -span.options { font-size: 70%; } -span.codelink { font-size: 85%; } -td.footer { font-size: 85%; } - -/* Table Headers - * - Each summary table and details section begins with a 'header' - * row. This row contains a section title (marked by - * 'span.table-header') as well as a show/hide private link - * (marked by 'span.options', defined above). - * - Summary tables that contain user-defined groups mark those - * groups using 'group header' rows. - */ -td.table-header { background: #70b0ff; color: #000000; - border: 1px solid #608090; } -td.table-header table { color: #000000; } -td.table-header table a:link { color: #0000ff; } -td.table-header table a:visited { color: #204080; } -span.table-header { font-size: 120%; font-weight: bold; } -th.group-header { background: #c0e0f8; color: #000000; - text-align: left; font-style: italic; - font-size: 115%; - border: 1px solid #608090; } - -/* Summary Tables (functions, variables, etc) - * - Each object is described by a single row of the table with - * two cells. The left cell gives the object's type, and is - * marked with 'code.summary-type'. The right cell gives the - * object's name and a summary description. - * - CSS styles for the table's header and group headers are - * defined above, under 'Table Headers' - */ -table.summary { border-collapse: collapse; - background: #e8f0f8; color: #000000; - border: 1px solid #608090; - margin-bottom: 0.5em; } -td.summary { border: 1px solid #608090; } -code.summary-type { font-size: 85%; } -table.summary a:link { color: #0000ff; } -table.summary a:visited { color: #204080; } - - -/* Details Tables (functions, variables, etc) - * - Each object is described in its own div. - * - A single-row summary table w/ table-header is used as - * a header for each details section (CSS style for table-header - * is defined above, under 'Table Headers'). - */ -table.details { border-collapse: collapse; - background: #e8f0f8; color: #000000; - border: 1px solid #608090; - margin: .2em 0 0 0; } -table.details table { color: #000000; } -table.details a:link { color: #0000ff; } -table.details a:visited { color: #204080; } - -/* Fields */ -dl.fields { margin-left: 2em; margin-top: 1em; - margin-bottom: 1em; } -dl.fields dd ul { margin-left: 0em; padding-left: 0em; } -dl.fields dd ul li ul { margin-left: 2em; padding-left: 0em; } -div.fields { margin-left: 2em; } -div.fields p { margin-bottom: 0.5em; } - -/* Index tables (identifier index, term index, etc) - * - link-index is used for indices containing lists of links - * (namely, the identifier index & term index). - * - index-where is used in link indices for the text indicating - * the container/source for each link. - * - metadata-index is used for indices containing metadata - * extracted from fields (namely, the bug index & todo index). - */ -table.link-index { border-collapse: collapse; - background: #e8f0f8; color: #000000; - border: 1px solid #608090; } -td.link-index { border-width: 0px; } -table.link-index a:link { color: #0000ff; } -table.link-index a:visited { color: #204080; } -span.index-where { font-size: 70%; } -table.metadata-index { border-collapse: collapse; - background: #e8f0f8; color: #000000; - border: 1px solid #608090; - margin: .2em 0 0 0; } -td.metadata-index { border-width: 1px; border-style: solid; } -table.metadata-index a:link { color: #0000ff; } -table.metadata-index a:visited { color: #204080; } - -/* Function signatures - * - sig* is used for the signature in the details section. - * - .summary-sig* is used for the signature in the summary - * table, and when listing property accessor functions. - * */ -.sig-name { color: #006080; } -.sig-arg { color: #008060; } -.sig-default { color: #602000; } -.summary-sig { font-family: monospace; } -.summary-sig-name { color: #006080; font-weight: bold; } -table.summary a.summary-sig-name:link - { color: #006080; font-weight: bold; } -table.summary a.summary-sig-name:visited - { color: #006080; font-weight: bold; } -.summary-sig-arg { color: #006040; } -.summary-sig-default { color: #501800; } - -/* Subclass list - */ -ul.subclass-list { display: inline; } -ul.subclass-list li { display: inline; } - -/* To render variables, classes etc. like functions */ -table.summary .summary-name { color: #006080; font-weight: bold; - font-family: monospace; } -table.summary - a.summary-name:link { color: #006080; font-weight: bold; - font-family: monospace; } -table.summary - a.summary-name:visited { color: #006080; font-weight: bold; - font-family: monospace; } - -/* Variable values - * - In the 'variable details' sections, each varaible's value is - * listed in a 'pre.variable' box. The width of this box is - * restricted to 80 chars; if the value's repr is longer than - * this it will be wrapped, using a backslash marked with - * class 'variable-linewrap'. If the value's repr is longer - * than 3 lines, the rest will be ellided; and an ellipsis - * marker ('...' marked with 'variable-ellipsis') will be used. - * - If the value is a string, its quote marks will be marked - * with 'variable-quote'. - * - If the variable is a regexp, it is syntax-highlighted using - * the re* CSS classes. - */ -pre.variable { padding: .5em; margin: 0; - background: #dce4ec; color: #000000; - border: 1px solid #708890; } -.variable-linewrap { color: #604000; font-weight: bold; } -.variable-ellipsis { color: #604000; font-weight: bold; } -.variable-quote { color: #604000; font-weight: bold; } -.variable-group { color: #008000; font-weight: bold; } -.variable-op { color: #604000; font-weight: bold; } -.variable-string { color: #006030; } -.variable-unknown { color: #a00000; font-weight: bold; } -.re { color: #000000; } -.re-char { color: #006030; } -.re-op { color: #600000; } -.re-group { color: #003060; } -.re-ref { color: #404040; } - -/* Base tree - * - Used by class pages to display the base class hierarchy. - */ -pre.base-tree { font-size: 80%; margin: 0; } - -/* Frames-based table of contents headers - * - Consists of two frames: one for selecting modules; and - * the other listing the contents of the selected module. - * - h1.toc is used for each frame's heading - * - h2.toc is used for subheadings within each frame. - */ -h1.toc { text-align: center; font-size: 105%; - margin: 0; font-weight: bold; - padding: 0; } -h2.toc { font-size: 100%; font-weight: bold; - margin: 0.5em 0 0 -0.3em; } - -/* Syntax Highlighting for Source Code - * - doctest examples are displayed in a 'pre.py-doctest' block. - * If the example is in a details table entry, then it will use - * the colors specified by the 'table pre.py-doctest' line. - * - Source code listings are displayed in a 'pre.py-src' block. - * Each line is marked with 'span.py-line' (used to draw a line - * down the left margin, separating the code from the line - * numbers). Line numbers are displayed with 'span.py-lineno'. - * The expand/collapse block toggle button is displayed with - * 'a.py-toggle' (Note: the CSS style for 'a.py-toggle' should not - * modify the font size of the text.) - * - If a source code page is opened with an anchor, then the - * corresponding code block will be highlighted. The code - * block's header is highlighted with 'py-highlight-hdr'; and - * the code block's body is highlighted with 'py-highlight'. - * - The remaining py-* classes are used to perform syntax - * highlighting (py-string for string literals, py-name for names, - * etc.) - */ -pre.py-doctest { padding: .5em; margin: 1em; - background: #e8f0f8; color: #000000; - border: 1px solid #708890; } -table pre.py-doctest { background: #dce4ec; - color: #000000; } -pre.py-src { border: 2px solid #000000; - background: #f0f0f0; color: #000000; } -.py-line { border-left: 2px solid #000000; - margin-left: .2em; padding-left: .4em; } -.py-lineno { font-style: italic; font-size: 90%; - padding-left: .5em; } -a.py-toggle { text-decoration: none; } -div.py-highlight-hdr { border-top: 2px solid #000000; - border-bottom: 2px solid #000000; - background: #d8e8e8; } -div.py-highlight { border-bottom: 2px solid #000000; - background: #d0e0e0; } -.py-prompt { color: #005050; font-weight: bold;} -.py-more { color: #005050; font-weight: bold;} -.py-string { color: #006030; } -.py-comment { color: #003060; } -.py-keyword { color: #600000; } -.py-output { color: #404040; } -.py-name { color: #000050; } -.py-name:link { color: #000050 !important; } -.py-name:visited { color: #000050 !important; } -.py-number { color: #005000; } -.py-defname { color: #000060; font-weight: bold; } -.py-def-name { color: #000060; font-weight: bold; } -.py-base-class { color: #000060; } -.py-param { color: #000060; } -.py-docstring { color: #006030; } -.py-decorator { color: #804020; } -/* Use this if you don't want links to names underlined: */ -/*a.py-name { text-decoration: none; }*/ - -/* Graphs & Diagrams - * - These CSS styles are used for graphs & diagrams generated using - * Graphviz dot. 'img.graph-without-title' is used for bare - * diagrams (to remove the border created by making the image - * clickable). - */ -img.graph-without-title { border: none; } -img.graph-with-title { border: 1px solid #000000; } -span.graph-title { font-weight: bold; } -span.graph-caption { } - -/* General-purpose classes - * - 'p.indent-wrapped-lines' defines a paragraph whose first line - * is not indented, but whose subsequent lines are. - * - The 'nomargin-top' class is used to remove the top margin (e.g. - * from lists). The 'nomargin' class is used to remove both the - * top and bottom margin (but not the left or right margin -- - * for lists, that would cause the bullets to disappear.) - */ -p.indent-wrapped-lines { padding: 0 0 0 7em; text-indent: -7em; - margin: 0; } -.nomargin-top { margin-top: 0; } -.nomargin { margin-top: 0; margin-bottom: 0; } - -/* HTML Log */ -div.log-block { padding: 0; margin: .5em 0 .5em 0; - background: #e8f0f8; color: #000000; - border: 1px solid #000000; } -div.log-error { padding: .1em .3em .1em .3em; margin: 4px; - background: #ffb0b0; color: #000000; - border: 1px solid #000000; } -div.log-warning { padding: .1em .3em .1em .3em; margin: 4px; - background: #ffffb0; color: #000000; - border: 1px solid #000000; } -div.log-info { padding: .1em .3em .1em .3em; margin: 4px; - background: #b0ffb0; color: #000000; - border: 1px solid #000000; } -h2.log-hdr { background: #70b0ff; color: #000000; - margin: 0; padding: 0em 0.5em 0em 0.5em; - border-bottom: 1px solid #000000; font-size: 110%; } -p.log { font-weight: bold; margin: .5em 0 .5em 0; } -tr.opt-changed { color: #000000; font-weight: bold; } -tr.opt-default { color: #606060; } -pre.log { margin: 0; padding: 0; padding-left: 1em; } diff --git a/python_apps/soundcloud-api/docs/api/epydoc.js b/python_apps/soundcloud-api/docs/api/epydoc.js deleted file mode 100644 index e787dbcf4..000000000 --- a/python_apps/soundcloud-api/docs/api/epydoc.js +++ /dev/null @@ -1,293 +0,0 @@ -function toggle_private() { - // Search for any private/public links on this page. Store - // their old text in "cmd," so we will know what action to - // take; and change their text to the opposite action. - var cmd = "?"; - var elts = document.getElementsByTagName("a"); - for(var i=0; i<elts.length; i++) { - if (elts[i].className == "privatelink") { - cmd = elts[i].innerHTML; - elts[i].innerHTML = ((cmd && cmd.substr(0,4)=="show")? - "hide private":"show private"); - } - } - // Update all DIVs containing private objects. - var elts = document.getElementsByTagName("div"); - for(var i=0; i<elts.length; i++) { - if (elts[i].className == "private") { - elts[i].style.display = ((cmd && cmd.substr(0,4)=="hide")?"none":"block"); - } - else if (elts[i].className == "public") { - elts[i].style.display = ((cmd && cmd.substr(0,4)=="hide")?"block":"none"); - } - } - // Update all table rows containing private objects. Note, we - // use "" instead of "block" becaue IE & firefox disagree on what - // this should be (block vs table-row), and "" just gives the - // default for both browsers. - var elts = document.getElementsByTagName("tr"); - for(var i=0; i<elts.length; i++) { - if (elts[i].className == "private") { - elts[i].style.display = ((cmd && cmd.substr(0,4)=="hide")?"none":""); - } - } - // Update all list items containing private objects. - var elts = document.getElementsByTagName("li"); - for(var i=0; i<elts.length; i++) { - if (elts[i].className == "private") { - elts[i].style.display = ((cmd && cmd.substr(0,4)=="hide")? - "none":""); - } - } - // Update all list items containing private objects. - var elts = document.getElementsByTagName("ul"); - for(var i=0; i<elts.length; i++) { - if (elts[i].className == "private") { - elts[i].style.display = ((cmd && cmd.substr(0,4)=="hide")?"none":"block"); - } - } - // Set a cookie to remember the current option. - document.cookie = "EpydocPrivate="+cmd; - } -function show_private() { - var elts = document.getElementsByTagName("a"); - for(var i=0; i<elts.length; i++) { - if (elts[i].className == "privatelink") { - cmd = elts[i].innerHTML; - if (cmd && cmd.substr(0,4)=="show") - toggle_private(); - } - } - } -function getCookie(name) { - var dc = document.cookie; - var prefix = name + "="; - var begin = dc.indexOf("; " + prefix); - if (begin == -1) { - begin = dc.indexOf(prefix); - if (begin != 0) return null; - } else - { begin += 2; } - var end = document.cookie.indexOf(";", begin); - if (end == -1) - { end = dc.length; } - return unescape(dc.substring(begin + prefix.length, end)); - } -function setFrame(url1, url2) { - parent.frames[1].location.href = url1; - parent.frames[2].location.href = url2; - } -function checkCookie() { - var cmd=getCookie("EpydocPrivate"); - if (cmd && cmd.substr(0,4)!="show" && location.href.indexOf("#_") < 0) - toggle_private(); - } -function toggleCallGraph(id) { - var elt = document.getElementById(id); - if (elt.style.display == "none") - elt.style.display = "block"; - else - elt.style.display = "none"; - } -function expand(id) { - var elt = document.getElementById(id+"-expanded"); - if (elt) elt.style.display = "block"; - var elt = document.getElementById(id+"-expanded-linenums"); - if (elt) elt.style.display = "block"; - var elt = document.getElementById(id+"-collapsed"); - if (elt) { elt.innerHTML = ""; elt.style.display = "none"; } - var elt = document.getElementById(id+"-collapsed-linenums"); - if (elt) { elt.innerHTML = ""; elt.style.display = "none"; } - var elt = document.getElementById(id+"-toggle"); - if (elt) { elt.innerHTML = "-"; } -} - -function collapse(id) { - var elt = document.getElementById(id+"-expanded"); - if (elt) elt.style.display = "none"; - var elt = document.getElementById(id+"-expanded-linenums"); - if (elt) elt.style.display = "none"; - var elt = document.getElementById(id+"-collapsed-linenums"); - if (elt) { elt.innerHTML = "<br />"; elt.style.display="block"; } - var elt = document.getElementById(id+"-toggle"); - if (elt) { elt.innerHTML = "+"; } - var elt = document.getElementById(id+"-collapsed"); - if (elt) { - elt.style.display = "block"; - - var indent = elt.getAttribute("indent"); - var pad = elt.getAttribute("pad"); - var s = "<tt class='py-lineno'>"; - for (var i=0; i<pad.length; i++) { s += " " } - s += "</tt>"; - s += " <tt class='py-line'>"; - for (var i=0; i<indent.length; i++) { s += " " } - s += "<a href='#' onclick='expand(\"" + id; - s += "\");return false'>...</a></tt><br />"; - elt.innerHTML = s; - } -} - -function toggle(id) { - elt = document.getElementById(id+"-toggle"); - if (elt.innerHTML == "-") - collapse(id); - else - expand(id); - return false; -} - -function highlight(id) { - var elt = document.getElementById(id+"-def"); - if (elt) elt.className = "py-highlight-hdr"; - var elt = document.getElementById(id+"-expanded"); - if (elt) elt.className = "py-highlight"; - var elt = document.getElementById(id+"-collapsed"); - if (elt) elt.className = "py-highlight"; -} - -function num_lines(s) { - var n = 1; - var pos = s.indexOf("\n"); - while ( pos > 0) { - n += 1; - pos = s.indexOf("\n", pos+1); - } - return n; -} - -// Collapse all blocks that mave more than `min_lines` lines. -function collapse_all(min_lines) { - var elts = document.getElementsByTagName("div"); - for (var i=0; i<elts.length; i++) { - var elt = elts[i]; - var split = elt.id.indexOf("-"); - if (split > 0) - if (elt.id.substring(split, elt.id.length) == "-expanded") - if (num_lines(elt.innerHTML) > min_lines) - collapse(elt.id.substring(0, split)); - } -} - -function expandto(href) { - var start = href.indexOf("#")+1; - if (start != 0 && start != href.length) { - if (href.substring(start, href.length) != "-") { - collapse_all(4); - pos = href.indexOf(".", start); - while (pos != -1) { - var id = href.substring(start, pos); - expand(id); - pos = href.indexOf(".", pos+1); - } - var id = href.substring(start, href.length); - expand(id); - highlight(id); - } - } -} - -function kill_doclink(id) { - var parent = document.getElementById(id); - parent.removeChild(parent.childNodes.item(0)); -} -function auto_kill_doclink(ev) { - if (!ev) var ev = window.event; - if (!this.contains(ev.toElement)) { - var parent = document.getElementById(this.parentID); - parent.removeChild(parent.childNodes.item(0)); - } -} - -function doclink(id, name, targets_id) { - var elt = document.getElementById(id); - - // If we already opened the box, then destroy it. - // (This case should never occur, but leave it in just in case.) - if (elt.childNodes.length > 1) { - elt.removeChild(elt.childNodes.item(0)); - } - else { - // The outer box: relative + inline positioning. - var box1 = document.createElement("div"); - box1.style.position = "relative"; - box1.style.display = "inline"; - box1.style.top = 0; - box1.style.left = 0; - - // A shadow for fun - var shadow = document.createElement("div"); - shadow.style.position = "absolute"; - shadow.style.left = "-1.3em"; - shadow.style.top = "-1.3em"; - shadow.style.background = "#404040"; - - // The inner box: absolute positioning. - var box2 = document.createElement("div"); - box2.style.position = "relative"; - box2.style.border = "1px solid #a0a0a0"; - box2.style.left = "-.2em"; - box2.style.top = "-.2em"; - box2.style.background = "white"; - box2.style.padding = ".3em .4em .3em .4em"; - box2.style.fontStyle = "normal"; - box2.onmouseout=auto_kill_doclink; - box2.parentID = id; - - // Get the targets - var targets_elt = document.getElementById(targets_id); - var targets = targets_elt.getAttribute("targets"); - var links = ""; - target_list = targets.split(","); - for (var i=0; i<target_list.length; i++) { - var target = target_list[i].split("="); - links += "<li><a href='" + target[1] + - "' style='text-decoration:none'>" + - target[0] + "</a></li>"; - } - - // Put it all together. - elt.insertBefore(box1, elt.childNodes.item(0)); - //box1.appendChild(box2); - box1.appendChild(shadow); - shadow.appendChild(box2); - box2.innerHTML = - "Which <b>"+name+"</b> do you want to see documentation for?" + - "<ul style='margin-bottom: 0;'>" + - links + - "<li><a href='#' style='text-decoration:none' " + - "onclick='kill_doclink(\""+id+"\");return false;'>"+ - "<i>None of the above</i></a></li></ul>"; - } - return false; -} - -function get_anchor() { - var href = location.href; - var start = href.indexOf("#")+1; - if ((start != 0) && (start != href.length)) - return href.substring(start, href.length); - } -function redirect_url(dottedName) { - // Scan through each element of the "pages" list, and check - // if "name" matches with any of them. - for (var i=0; i<pages.length; i++) { - - // Each page has the form "<pagename>-m" or "<pagename>-c"; - // extract the <pagename> portion & compare it to dottedName. - var pagename = pages[i].substring(0, pages[i].length-2); - if (pagename == dottedName.substring(0,pagename.length)) { - - // We've found a page that matches `dottedName`; - // construct its URL, using leftover `dottedName` - // content to form an anchor. - var pagetype = pages[i].charAt(pages[i].length-1); - var url = pagename + ((pagetype=="m")?"-module.html": - "-class.html"); - if (dottedName.length > pagename.length) - url += "#" + dottedName.substring(pagename.length+1, - dottedName.length); - return url; - } - } - } diff --git a/python_apps/soundcloud-api/docs/api/exceptions.AssertionError-class.html b/python_apps/soundcloud-api/docs/api/exceptions.AssertionError-class.html deleted file mode 100644 index 2dbca8db5..000000000 --- a/python_apps/soundcloud-api/docs/api/exceptions.AssertionError-class.html +++ /dev/null @@ -1,299 +0,0 @@ -<?xml version="1.0" encoding="ascii"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <title>exceptions.AssertionError</title> - <link rel="stylesheet" href="epydoc.css" type="text/css" /> - <script type="text/javascript" src="epydoc.js"></script> -</head> - -<body bgcolor="white" text="black" link="blue" vlink="#204080" - alink="#204080"> -<!-- ==================== NAVIGATION BAR ==================== --> -<table class="navbar" border="0" width="100%" cellpadding="0" - bgcolor="#a0c0ff" cellspacing="0"> - <tr valign="middle"> - <!-- Home link --> - <th> <a - href="scapi-module.html">Home</a> </th> - - <!-- Tree link --> - <th> <a - href="module-tree.html">Trees</a> </th> - - <!-- Index link --> - <th> <a - href="identifier-index.html">Indices</a> </th> - - <!-- Help link --> - <th> <a - href="help.html">Help</a> </th> - - <!-- Project homepage --> - <th class="navbar" align="right" width="100%"> - <table border="0" cellpadding="0" cellspacing="0"> - <tr><th class="navbar" align="center" - >SoundCloud API</th> - </tr></table></th> - </tr> -</table> -<table width="100%" cellpadding="0" cellspacing="0"> - <tr valign="top"> - <td width="100%"> - <span class="breadcrumbs"> - exceptions :: - AssertionError :: - Class AssertionError - </span> - </td> - <td> - <table cellpadding="0" cellspacing="0"> - <!-- hide/show private --> - <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink" - onclick="toggle_private();">hide private</a>]</span></td></tr> - <tr><td align="right"><span class="options" - >[<a href="frames.html" target="_top">frames</a - >] | <a href="exceptions.AssertionError-class.html" - target="_top">no frames</a>]</span></td></tr> - </table> - </td> - </tr> -</table> -<!-- ==================== CLASS DESCRIPTION ==================== --> -<h1 class="epydoc">Class AssertionError</h1><p class="nomargin-top"></p> -<pre class="base-tree"> - object --+ - | -BaseException --+ - | - Exception --+ - | - StandardError --+ - | - <strong class="uidshort">AssertionError</strong> -</pre> - -<hr /> -<p>Assertion failed.</p> - -<!-- ==================== INSTANCE METHODS ==================== --> -<a name="section-InstanceMethods"></a> -<table class="summary" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr bgcolor="#70b0f0" class="table-header"> - <td colspan="2" class="table-header"> - <table border="0" cellpadding="0" cellspacing="0" width="100%"> - <tr valign="top"> - <td align="left"><span class="table-header">Instance Methods</span></td> - <td align="right" valign="top" - ><span class="options">[<a href="#section-InstanceMethods" - class="privatelink" onclick="toggle_private();" - >hide private</a>]</span></td> - </tr> - </table> - </td> -</tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a href="exceptions.AssertionError-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">...</span>)</span><br /> - x.__init__(...) initializes x; see x.__class__.__doc__ for signature</td> - <td align="right" valign="top"> - - - </td> - </tr> - </table> - - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type">a new object with type S, a subtype of T</span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a href="exceptions.AssertionError-class.html#__new__" class="summary-sig-name">__new__</a>(<span class="summary-sig-arg">T</span>, - <span class="summary-sig-arg">S</span>, - <span class="summary-sig-arg">...</span>)</span></td> - <td align="right" valign="top"> - - - </td> - </tr> - </table> - - </td> - </tr> - <tr> - <td colspan="2" class="summary"> - <p class="indent-wrapped-lines"><b>Inherited from <code>BaseException</code></b>: - <code>__delattr__</code>, - <code>__getattribute__</code>, - <code>__getitem__</code>, - <code>__getslice__</code>, - <code>__reduce__</code>, - <code>__repr__</code>, - <code>__setattr__</code>, - <code>__setstate__</code>, - <code>__str__</code> - </p> - <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>: - <code>__hash__</code>, - <code>__reduce_ex__</code> - </p> - </td> - </tr> -</table> -<!-- ==================== PROPERTIES ==================== --> -<a name="section-Properties"></a> -<table class="summary" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr bgcolor="#70b0f0" class="table-header"> - <td colspan="2" class="table-header"> - <table border="0" cellpadding="0" cellspacing="0" width="100%"> - <tr valign="top"> - <td align="left"><span class="table-header">Properties</span></td> - <td align="right" valign="top" - ><span class="options">[<a href="#section-Properties" - class="privatelink" onclick="toggle_private();" - >hide private</a>]</span></td> - </tr> - </table> - </td> -</tr> - <tr> - <td colspan="2" class="summary"> - <p class="indent-wrapped-lines"><b>Inherited from <code>BaseException</code></b>: - <code>args</code>, - <code>message</code> - </p> - <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>: - <code>__class__</code> - </p> - </td> - </tr> -</table> -<!-- ==================== METHOD DETAILS ==================== --> -<a name="section-MethodDetails"></a> -<table class="details" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr bgcolor="#70b0f0" class="table-header"> - <td colspan="2" class="table-header"> - <table border="0" cellpadding="0" cellspacing="0" width="100%"> - <tr valign="top"> - <td align="left"><span class="table-header">Method Details</span></td> - <td align="right" valign="top" - ><span class="options">[<a href="#section-MethodDetails" - class="privatelink" onclick="toggle_private();" - >hide private</a>]</span></td> - </tr> - </table> - </td> -</tr> -</table> -<a name="__init__"></a> -<div> -<table class="details" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr><td> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr valign="top"><td> - <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">...</span>)</span> - <br /><em class="fname">(Constructor)</em> - </h3> - </td><td align="right" valign="top" - > - </td> - </tr></table> - - <p>x.__init__(...) initializes x; see x.__class__.__doc__ for - signature</p> - <dl class="fields"> - <dt>Overrides: - object.__init__ - </dt> - </dl> -</td></tr></table> -</div> -<a name="__new__"></a> -<div> -<table class="details" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr><td> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr valign="top"><td> - <h3 class="epydoc"><span class="sig"><span class="sig-name">__new__</span>(<span class="sig-arg">T</span>, - <span class="sig-arg">S</span>, - <span class="sig-arg">...</span>)</span> - </h3> - </td><td align="right" valign="top" - > - </td> - </tr></table> - - - <dl class="fields"> - <dt>Returns: a new object with type S, a subtype of T</dt> - <dt>Overrides: - object.__new__ - </dt> - </dl> -</td></tr></table> -</div> -<br /> -<!-- ==================== NAVIGATION BAR ==================== --> -<table class="navbar" border="0" width="100%" cellpadding="0" - bgcolor="#a0c0ff" cellspacing="0"> - <tr valign="middle"> - <!-- Home link --> - <th> <a - href="scapi-module.html">Home</a> </th> - - <!-- Tree link --> - <th> <a - href="module-tree.html">Trees</a> </th> - - <!-- Index link --> - <th> <a - href="identifier-index.html">Indices</a> </th> - - <!-- Help link --> - <th> <a - href="help.html">Help</a> </th> - - <!-- Project homepage --> - <th class="navbar" align="right" width="100%"> - <table border="0" cellpadding="0" cellspacing="0"> - <tr><th class="navbar" align="center" - >SoundCloud API</th> - </tr></table></th> - </tr> -</table> -<table border="0" cellpadding="0" cellspacing="0" width="100%%"> - <tr> - <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Thu Sep 10 00:58:49 2009 - </td> - <td align="right" class="footer"> - <a target="mainFrame" href="http://epydoc.sourceforge.net" - >http://epydoc.sourceforge.net</a> - </td> - </tr> -</table> - -<script type="text/javascript"> - <!-- - // Private objects are initially displayed (because if - // javascript is turned off then we want them to be - // visible); but by default, we want to hide them. So hide - // them unless we have a cookie that says to show them. - checkCookie(); - // --> -</script> -</body> -</html> diff --git a/python_apps/soundcloud-api/docs/api/frames.html b/python_apps/soundcloud-api/docs/api/frames.html deleted file mode 100644 index 6d0191e9d..000000000 --- a/python_apps/soundcloud-api/docs/api/frames.html +++ /dev/null @@ -1,17 +0,0 @@ -<?xml version="1.0" encoding="iso-8859-1"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" - "DTD/xhtml1-frameset.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <title> SoundCloud API </title> -</head> -<frameset cols="20%,80%"> - <frameset rows="30%,70%"> - <frame src="toc.html" name="moduleListFrame" - id="moduleListFrame" /> - <frame src="toc-everything.html" name="moduleFrame" - id="moduleFrame" /> - </frameset> - <frame src="scapi-module.html" name="mainFrame" id="mainFrame" /> -</frameset> -</html> diff --git a/python_apps/soundcloud-api/docs/api/help.html b/python_apps/soundcloud-api/docs/api/help.html deleted file mode 100644 index ff7d397f2..000000000 --- a/python_apps/soundcloud-api/docs/api/help.html +++ /dev/null @@ -1,278 +0,0 @@ -<?xml version="1.0" encoding="ascii"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <title>Help</title> - <link rel="stylesheet" href="epydoc.css" type="text/css" /> - <script type="text/javascript" src="epydoc.js"></script> -</head> - -<body bgcolor="white" text="black" link="blue" vlink="#204080" - alink="#204080"> -<!-- ==================== NAVIGATION BAR ==================== --> -<table class="navbar" border="0" width="100%" cellpadding="0" - bgcolor="#a0c0ff" cellspacing="0"> - <tr valign="middle"> - <!-- Home link --> - <th> <a - href="scapi-module.html">Home</a> </th> - - <!-- Tree link --> - <th> <a - href="module-tree.html">Trees</a> </th> - - <!-- Index link --> - <th> <a - href="identifier-index.html">Indices</a> </th> - - <!-- Help link --> - <th bgcolor="#70b0f0" class="navbar-select" - > Help </th> - - <!-- Project homepage --> - <th class="navbar" align="right" width="100%"> - <table border="0" cellpadding="0" cellspacing="0"> - <tr><th class="navbar" align="center" - >SoundCloud API</th> - </tr></table></th> - </tr> -</table> -<table width="100%" cellpadding="0" cellspacing="0"> - <tr valign="top"> - <td width="100%"> </td> - <td> - <table cellpadding="0" cellspacing="0"> - <!-- hide/show private --> - <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink" - onclick="toggle_private();">hide private</a>]</span></td></tr> - <tr><td align="right"><span class="options" - >[<a href="frames.html" target="_top">frames</a - >] | <a href="help.html" - target="_top">no frames</a>]</span></td></tr> - </table> - </td> - </tr> -</table> - -<h1 class="epydoc"> API Documentation </h1> - -<p> This document contains the API (Application Programming Interface) -documentation for SoundCloud API. Documentation for the Python -objects defined by the project is divided into separate pages for each -package, module, and class. The API documentation also includes two -pages containing information about the project as a whole: a trees -page, and an index page. </p> - -<h2> Object Documentation </h2> - - <p>Each <strong>Package Documentation</strong> page contains: </p> - <ul> - <li> A description of the package. </li> - <li> A list of the modules and sub-packages contained by the - package. </li> - <li> A summary of the classes defined by the package. </li> - <li> A summary of the functions defined by the package. </li> - <li> A summary of the variables defined by the package. </li> - <li> A detailed description of each function defined by the - package. </li> - <li> A detailed description of each variable defined by the - package. </li> - </ul> - - <p>Each <strong>Module Documentation</strong> page contains:</p> - <ul> - <li> A description of the module. </li> - <li> A summary of the classes defined by the module. </li> - <li> A summary of the functions defined by the module. </li> - <li> A summary of the variables defined by the module. </li> - <li> A detailed description of each function defined by the - module. </li> - <li> A detailed description of each variable defined by the - module. </li> - </ul> - - <p>Each <strong>Class Documentation</strong> page contains: </p> - <ul> - <li> A class inheritance diagram. </li> - <li> A list of known subclasses. </li> - <li> A description of the class. </li> - <li> A summary of the methods defined by the class. </li> - <li> A summary of the instance variables defined by the class. </li> - <li> A summary of the class (static) variables defined by the - class. </li> - <li> A detailed description of each method defined by the - class. </li> - <li> A detailed description of each instance variable defined by the - class. </li> - <li> A detailed description of each class (static) variable defined - by the class. </li> - </ul> - -<h2> Project Documentation </h2> - - <p> The <strong>Trees</strong> page contains the module and class hierarchies: </p> - <ul> - <li> The <em>module hierarchy</em> lists every package and module, with - modules grouped into packages. At the top level, and within each - package, modules and sub-packages are listed alphabetically. </li> - <li> The <em>class hierarchy</em> lists every class, grouped by base - class. If a class has more than one base class, then it will be - listed under each base class. At the top level, and under each base - class, classes are listed alphabetically. </li> - </ul> - - <p> The <strong>Index</strong> page contains indices of terms and - identifiers: </p> - <ul> - <li> The <em>term index</em> lists every term indexed by any object's - documentation. For each term, the index provides links to each - place where the term is indexed. </li> - <li> The <em>identifier index</em> lists the (short) name of every package, - module, class, method, function, variable, and parameter. For each - identifier, the index provides a short description, and a link to - its documentation. </li> - </ul> - -<h2> The Table of Contents </h2> - -<p> The table of contents occupies the two frames on the left side of -the window. The upper-left frame displays the <em>project -contents</em>, and the lower-left frame displays the <em>module -contents</em>: </p> - -<table class="help summary" border="1" cellspacing="0" cellpadding="3"> - <tr style="height: 30%"> - <td align="center" style="font-size: small"> - Project<br />Contents<hr />...</td> - <td align="center" style="font-size: small" rowspan="2" width="70%"> - API<br />Documentation<br />Frame<br /><br /><br /> - </td> - </tr> - <tr> - <td align="center" style="font-size: small"> - Module<br />Contents<hr /> <br />...<br /> - </td> - </tr> -</table><br /> - -<p> The <strong>project contents frame</strong> contains a list of all packages -and modules that are defined by the project. Clicking on an entry -will display its contents in the module contents frame. Clicking on a -special entry, labeled "Everything," will display the contents of -the entire project. </p> - -<p> The <strong>module contents frame</strong> contains a list of every -submodule, class, type, exception, function, and variable defined by a -module or package. Clicking on an entry will display its -documentation in the API documentation frame. Clicking on the name of -the module, at the top of the frame, will display the documentation -for the module itself. </p> - -<p> The "<strong>frames</strong>" and "<strong>no frames</strong>" buttons below the top -navigation bar can be used to control whether the table of contents is -displayed or not. </p> - -<h2> The Navigation Bar </h2> - -<p> A navigation bar is located at the top and bottom of every page. -It indicates what type of page you are currently viewing, and allows -you to go to related pages. The following table describes the labels -on the navigation bar. Note that not some labels (such as -[Parent]) are not displayed on all pages. </p> - -<table class="summary" border="1" cellspacing="0" cellpadding="3" width="100%"> -<tr class="summary"> - <th>Label</th> - <th>Highlighted when...</th> - <th>Links to...</th> -</tr> - <tr><td valign="top"><strong>[Parent]</strong></td> - <td valign="top"><em>(never highlighted)</em></td> - <td valign="top"> the parent of the current package </td></tr> - <tr><td valign="top"><strong>[Package]</strong></td> - <td valign="top">viewing a package</td> - <td valign="top">the package containing the current object - </td></tr> - <tr><td valign="top"><strong>[Module]</strong></td> - <td valign="top">viewing a module</td> - <td valign="top">the module containing the current object - </td></tr> - <tr><td valign="top"><strong>[Class]</strong></td> - <td valign="top">viewing a class </td> - <td valign="top">the class containing the current object</td></tr> - <tr><td valign="top"><strong>[Trees]</strong></td> - <td valign="top">viewing the trees page</td> - <td valign="top"> the trees page </td></tr> - <tr><td valign="top"><strong>[Index]</strong></td> - <td valign="top">viewing the index page</td> - <td valign="top"> the index page </td></tr> - <tr><td valign="top"><strong>[Help]</strong></td> - <td valign="top">viewing the help page</td> - <td valign="top"> the help page </td></tr> -</table> - -<p> The "<strong>show private</strong>" and "<strong>hide private</strong>" buttons below -the top navigation bar can be used to control whether documentation -for private objects is displayed. Private objects are usually defined -as objects whose (short) names begin with a single underscore, but do -not end with an underscore. For example, "<code>_x</code>", -"<code>__pprint</code>", and "<code>epydoc.epytext._tokenize</code>" -are private objects; but "<code>re.sub</code>", -"<code>__init__</code>", and "<code>type_</code>" are not. However, -if a module defines the "<code>__all__</code>" variable, then its -contents are used to decide which objects are private. </p> - -<p> A timestamp below the bottom navigation bar indicates when each -page was last updated. </p> -<!-- ==================== NAVIGATION BAR ==================== --> -<table class="navbar" border="0" width="100%" cellpadding="0" - bgcolor="#a0c0ff" cellspacing="0"> - <tr valign="middle"> - <!-- Home link --> - <th> <a - href="scapi-module.html">Home</a> </th> - - <!-- Tree link --> - <th> <a - href="module-tree.html">Trees</a> </th> - - <!-- Index link --> - <th> <a - href="identifier-index.html">Indices</a> </th> - - <!-- Help link --> - <th bgcolor="#70b0f0" class="navbar-select" - > Help </th> - - <!-- Project homepage --> - <th class="navbar" align="right" width="100%"> - <table border="0" cellpadding="0" cellspacing="0"> - <tr><th class="navbar" align="center" - >SoundCloud API</th> - </tr></table></th> - </tr> -</table> -<table border="0" cellpadding="0" cellspacing="0" width="100%%"> - <tr> - <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Thu Sep 10 00:58:49 2009 - </td> - <td align="right" class="footer"> - <a target="mainFrame" href="http://epydoc.sourceforge.net" - >http://epydoc.sourceforge.net</a> - </td> - </tr> -</table> - -<script type="text/javascript"> - <!-- - // Private objects are initially displayed (because if - // javascript is turned off then we want them to be - // visible); but by default, we want to hide them. So hide - // them unless we have a cookie that says to show them. - checkCookie(); - // --> -</script> -</body> -</html> diff --git a/python_apps/soundcloud-api/docs/api/identifier-index.html b/python_apps/soundcloud-api/docs/api/identifier-index.html deleted file mode 100644 index 94e006634..000000000 --- a/python_apps/soundcloud-api/docs/api/identifier-index.html +++ /dev/null @@ -1,892 +0,0 @@ -<?xml version="1.0" encoding="ascii"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <title>Identifier Index</title> - <link rel="stylesheet" href="epydoc.css" type="text/css" /> - <script type="text/javascript" src="epydoc.js"></script> -</head> - -<body bgcolor="white" text="black" link="blue" vlink="#204080" - alink="#204080"> -<!-- ==================== NAVIGATION BAR ==================== --> -<table class="navbar" border="0" width="100%" cellpadding="0" - bgcolor="#a0c0ff" cellspacing="0"> - <tr valign="middle"> - <!-- Home link --> - <th> <a - href="scapi-module.html">Home</a> </th> - - <!-- Tree link --> - <th> <a - href="module-tree.html">Trees</a> </th> - - <!-- Index link --> - <th bgcolor="#70b0f0" class="navbar-select" - > Indices </th> - - <!-- Help link --> - <th> <a - href="help.html">Help</a> </th> - - <!-- Project homepage --> - <th class="navbar" align="right" width="100%"> - <table border="0" cellpadding="0" cellspacing="0"> - <tr><th class="navbar" align="center" - >SoundCloud API</th> - </tr></table></th> - </tr> -</table> -<table width="100%" cellpadding="0" cellspacing="0"> - <tr valign="top"> - <td width="100%"> </td> - <td> - <table cellpadding="0" cellspacing="0"> - <!-- hide/show private --> - <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink" - onclick="toggle_private();">hide private</a>]</span></td></tr> - <tr><td align="right"><span class="options" - >[<a href="frames.html" target="_top">frames</a - >] | <a href="identifier-index.html" - target="_top">no frames</a>]</span></td></tr> - </table> - </td> - </tr> -</table> -<table border="0" width="100%"> -<tr valign="bottom"><td> -<h1 class="epydoc">Identifier Index</h1> -</td><td> -[ - <a href="#A">A</a> - <a href="#B">B</a> - <a href="#C">C</a> - D - <a href="#E">E</a> - <a href="#F">F</a> - <a href="#G">G</a> - <a href="#H">H</a> - <a href="#I">I</a> - <a href="#J">J</a> - <a href="#K">K</a> - <a href="#L">L</a> - <a href="#M">M</a> - <a href="#N">N</a> - <a href="#O">O</a> - <a href="#P">P</a> - Q - <a href="#R">R</a> - <a href="#S">S</a> - <a href="#T">T</a> - <a href="#U">U</a> - V - <a href="#W">W</a> - X - Y - Z - <a href="#_">_</a> -] -</td></table> -<table border="0" width="100%"> -<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="A">A</a></h2></td> -<td valign="top"> -<table class="link-index" width="100%" border="1"> -<tr> -<td width="33%" class="link-index"><a href="scapi-module.html#ACCESS_TOKEN_URL">ACCESS_TOKEN_URL</a><br /> -<span class="index-where">(in <a href="scapi-module.html">scapi</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.SCRedirectHandler-class.html#alternate_method">alternate_method</a><br /> -<span class="index-where">(in <a href="scapi.SCRedirectHandler-class.html" onclick="show_private();">SCRedirectHandler</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.authentication.OAuthAuthenticator-class.html#augment_request">augment_request()</a><br /> -<span class="index-where">(in <a href="scapi.authentication.OAuthAuthenticator-class.html">OAuthAuthenticator</a>)</span></td> -</tr> -<tr> -<td width="33%" class="link-index"><a href="scapi.util.MultiDict-class.html#add">add()</a><br /> -<span class="index-where">(in <a href="scapi.util.MultiDict-class.html">MultiDict</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.tests.scapi_tests.SCAPITests-class.html#API_HOST">API_HOST</a><br /> -<span class="index-where">(in <a href="scapi.tests.scapi_tests.SCAPITests-class.html">SCAPITests</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.authentication-module.html">authentication</a><br /> -<span class="index-where">(in <a href="scapi-module.html">scapi</a>)</span></td> -</tr> -<tr> -<td width="33%" class="link-index"><a href="scapi.RESTBase-class.html#ALIASES">ALIASES</a><br /> -<span class="index-where">(in <a href="scapi.RESTBase-class.html" onclick="show_private();">RESTBase</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.tests.test_connect-module.html#API_HOST">API_HOST</a><br /> -<span class="index-where">(in <a href="scapi.tests.test_connect-module.html">scapi.tests.test_connect</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.tests.scapi_tests.SCAPITests-class.html#AUTHENTICATOR">AUTHENTICATOR</a><br /> -<span class="index-where">(in <a href="scapi.tests.scapi_tests.SCAPITests-class.html">SCAPITests</a>)</span></td> -</tr> -<tr> -<td width="33%" class="link-index"><a href="scapi.Track-class.html#ALIASES">ALIASES</a><br /> -<span class="index-where">(in <a href="scapi.Track-class.html">Track</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.tests.scapi_tests-module.html#api_logger">api_logger</a><br /> -<span class="index-where">(in <a href="scapi.tests.scapi_tests-module.html">scapi.tests.scapi_tests</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.authentication.OAuthAuthenticator-class.html#AUTHORIZATION_HEADER">AUTHORIZATION_HEADER</a><br /> -<span class="index-where">(in <a href="scapi.authentication.OAuthAuthenticator-class.html">OAuthAuthenticator</a>)</span></td> -</tr> -<tr> -<td width="33%" class="link-index"><a href="scapi.User-class.html#ALIASES">ALIASES</a><br /> -<span class="index-where">(in <a href="scapi.User-class.html">User</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.ApiConnector-class.html">ApiConnector</a><br /> -<span class="index-where">(in <a href="scapi-module.html">scapi</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi-module.html#AUTHORIZATION_URL">AUTHORIZATION_URL</a><br /> -<span class="index-where">(in <a href="scapi-module.html">scapi</a>)</span></td> -</tr> -<tr> -<td width="33%" class="link-index"><a href="scapi.json._StringGenerator-class.html#all">all()</a><br /> -<span class="index-where">(in <a href="scapi.json._StringGenerator-class.html" onclick="show_private();">_StringGenerator</a>)</span></td> -<td width="33%" class="link-index"><a href="exceptions.AssertionError-class.html">AssertionError</a></td> -<td width="33%" class="link-index"> </td> -</tr> -<tr> -<td width="33%" class="link-index"><a href="scapi.RESTBase-class.html#ALL_DOMAIN_CLASSES">ALL_DOMAIN_CLASSES</a><br /> -<span class="index-where">(in <a href="scapi.RESTBase-class.html" onclick="show_private();">RESTBase</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.authentication.BasicAuthenticator-class.html#augment_request">augment_request()</a><br /> -<span class="index-where">(in <a href="scapi.authentication.BasicAuthenticator-class.html">BasicAuthenticator</a>)</span></td> -<td width="33%" class="link-index"> </td> -</tr> -</table> -</td></tr> -<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="B">B</a></h2></td> -<td valign="top"> -<table class="link-index" width="100%" border="1"> -<tr> -<td width="33%" class="link-index"><a href="scapi.authentication.BasicAuthenticator-class.html">BasicAuthenticator</a><br /> -<span class="index-where">(in <a href="scapi.authentication-module.html" onclick="show_private();">scapi.authentication</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.authentication.OAuthSignatureMethod_HMAC_SHA1-class.html#build_signature">build_signature()</a><br /> -<span class="index-where">(in <a href="scapi.authentication.OAuthSignatureMethod_HMAC_SHA1-class.html">OAuthSignatureMethod_HMAC_SHA1</a>)</span></td> -<td width="33%" class="link-index"> </td> -</tr> -<tr><td class="link-index"> </td><td class="link-index"> </td><td class="link-index"> </td></tr> -</table> -</td></tr> -<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="C">C</a></h2></td> -<td valign="top"> -<table class="link-index" width="100%" border="1"> -<tr> -<td width="33%" class="link-index"><a href="scapi.Comment-class.html">Comment</a><br /> -<span class="index-where">(in <a href="scapi-module.html">scapi</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.tests.test_connect-module.html#CONNECTOR">CONNECTOR</a><br /> -<span class="index-where">(in <a href="scapi.tests.test_connect-module.html">scapi.tests.test_connect</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.tests.test_connect-module.html#CONSUMER_SECRET">CONSUMER_SECRET</a><br /> -<span class="index-where">(in <a href="scapi.tests.test_connect-module.html">scapi.tests.test_connect</a>)</span></td> -</tr> -<tr> -<td width="33%" class="link-index"><a href="scapi.config-module.html">config</a><br /> -<span class="index-where">(in <a href="scapi-module.html">scapi</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.tests.scapi_tests.SCAPITests-class.html#CONSUMER">CONSUMER</a><br /> -<span class="index-where">(in <a href="scapi.tests.scapi_tests.SCAPITests-class.html">SCAPITests</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.tests.test_oauth-module.html#CONSUMER_SECRET">CONSUMER_SECRET</a><br /> -<span class="index-where">(in <a href="scapi.tests.test_oauth-module.html">scapi.tests.test_oauth</a>)</span></td> -</tr> -<tr> -<td width="33%" class="link-index"><a href="scapi.tests.scapi_tests.SCAPITests-class.html#CONFIG_NAME">CONFIG_NAME</a><br /> -<span class="index-where">(in <a href="scapi.tests.scapi_tests.SCAPITests-class.html">SCAPITests</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.tests.test_connect-module.html#CONSUMER">CONSUMER</a><br /> -<span class="index-where">(in <a href="scapi.tests.test_connect-module.html">scapi.tests.test_connect</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.RESTBase-class.html#create">create()</a><br /> -<span class="index-where">(in <a href="scapi.RESTBase-class.html" onclick="show_private();">RESTBase</a>)</span></td> -</tr> -<tr> -<td width="33%" class="link-index"><a href="scapi.tests.test_connect-module.html#CONFIG_NAME">CONFIG_NAME</a><br /> -<span class="index-where">(in <a href="scapi.tests.test_connect-module.html">scapi.tests.test_connect</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.tests.test_oauth-module.html#CONSUMER">CONSUMER</a><br /> -<span class="index-where">(in <a href="scapi.tests.test_oauth-module.html">scapi.tests.test_oauth</a>)</span></td> -<td width="33%" class="link-index"> </td> -</tr> -<tr> -<td width="33%" class="link-index"><a href="scapi.tests.scapi_tests.SCAPITests-class.html#CONFIGSPEC">CONFIGSPEC</a><br /> -<span class="index-where">(in <a href="scapi.tests.scapi_tests.SCAPITests-class.html">SCAPITests</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.tests.scapi_tests.SCAPITests-class.html#CONSUMER_SECRET">CONSUMER_SECRET</a><br /> -<span class="index-where">(in <a href="scapi.tests.scapi_tests.SCAPITests-class.html">SCAPITests</a>)</span></td> -<td width="33%" class="link-index"> </td> -</tr> -</table> -</td></tr> -<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="E">E</a></h2></td> -<td valign="top"> -<table class="link-index" width="100%" border="1"> -<tr> -<td width="33%" class="link-index"><a href="scapi.util-module.html#escape">escape()</a><br /> -<span class="index-where">(in <a href="scapi.util-module.html" onclick="show_private();">scapi.util</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.json.JsonReader-class.html#escapes">escapes</a><br /> -<span class="index-where">(in <a href="scapi.json.JsonReader-class.html">JsonReader</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.Event-class.html">Event</a><br /> -<span class="index-where">(in <a href="scapi-module.html">scapi</a>)</span></td> -</tr> -<tr><td class="link-index"> </td><td class="link-index"> </td><td class="link-index"> </td></tr> -</table> -</td></tr> -<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="F">F</a></h2></td> -<td valign="top"> -<table class="link-index" width="100%" border="1"> -<tr> -<td width="33%" class="link-index"><a href="scapi.ApiConnector-class.html#fetch_access_token">fetch_access_token()</a><br /> -<span class="index-where">(in <a href="scapi.ApiConnector-class.html" onclick="show_private();">ApiConnector</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.ApiConnector-class.html#fetch_request_token">fetch_request_token()</a><br /> -<span class="index-where">(in <a href="scapi.ApiConnector-class.html" onclick="show_private();">ApiConnector</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.authentication.OAuthSignatureMethod_HMAC_SHA1-class.html#FORBIDDEN">FORBIDDEN</a><br /> -<span class="index-where">(in <a href="scapi.authentication.OAuthSignatureMethod_HMAC_SHA1-class.html">OAuthSignatureMethod_HMAC_SHA1</a>)</span></td> -</tr> -<tr><td class="link-index"> </td><td class="link-index"> </td><td class="link-index"> </td></tr> -</table> -</td></tr> -<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="G">G</a></h2></td> -<td valign="top"> -<table class="link-index" width="100%" border="1"> -<tr> -<td width="33%" class="link-index"><a href="scapi.authentication.OAuthAuthenticator-class.html#generate_nonce">generate_nonce()</a><br /> -<span class="index-where">(in <a href="scapi.authentication.OAuthAuthenticator-class.html">OAuthAuthenticator</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.authentication.OAuthSignatureMethod_HMAC_SHA1-class.html#get_name">get_name()</a><br /> -<span class="index-where">(in <a href="scapi.authentication.OAuthSignatureMethod_HMAC_SHA1-class.html">OAuthSignatureMethod_HMAC_SHA1</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.authentication.OAuthSignatureMethod_HMAC_SHA1-class.html#get_normalized_parameters">get_normalized_parameters()</a><br /> -<span class="index-where">(in <a href="scapi.authentication.OAuthSignatureMethod_HMAC_SHA1-class.html">OAuthSignatureMethod_HMAC_SHA1</a>)</span></td> -</tr> -<tr> -<td width="33%" class="link-index"><a href="scapi.authentication.OAuthAuthenticator-class.html#generate_timestamp">generate_timestamp()</a><br /> -<span class="index-where">(in <a href="scapi.authentication.OAuthAuthenticator-class.html">OAuthAuthenticator</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.authentication.OAuthSignatureMethod_HMAC_SHA1-class.html#get_normalized_http_method">get_normalized_http_method()</a><br /> -<span class="index-where">(in <a href="scapi.authentication.OAuthSignatureMethod_HMAC_SHA1-class.html">OAuthSignatureMethod_HMAC_SHA1</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.ApiConnector-class.html#get_request_token_authorization_url">get_request_token_authorization_url()</a><br /> -<span class="index-where">(in <a href="scapi.ApiConnector-class.html" onclick="show_private();">ApiConnector</a>)</span></td> -</tr> -<tr> -<td width="33%" class="link-index"><a href="scapi.RESTBase-class.html#get">get()</a><br /> -<span class="index-where">(in <a href="scapi.RESTBase-class.html" onclick="show_private();">RESTBase</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.authentication.OAuthSignatureMethod_HMAC_SHA1-class.html#get_normalized_http_url">get_normalized_http_url()</a><br /> -<span class="index-where">(in <a href="scapi.authentication.OAuthSignatureMethod_HMAC_SHA1-class.html">OAuthSignatureMethod_HMAC_SHA1</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.Group-class.html">Group</a><br /> -<span class="index-where">(in <a href="scapi-module.html">scapi</a>)</span></td> -</tr> -</table> -</td></tr> -<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="H">H</a></h2></td> -<td valign="top"> -<table class="link-index" width="100%" border="1"> -<tr> -<td width="33%" class="link-index"><a href="scapi.json.JsonReader-class.html#hex_digits">hex_digits</a><br /> -<span class="index-where">(in <a href="scapi.json.JsonReader-class.html">JsonReader</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.SCRedirectHandler-class.html#http_error_201">http_error_201()</a><br /> -<span class="index-where">(in <a href="scapi.SCRedirectHandler-class.html" onclick="show_private();">SCRedirectHandler</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.SCRedirectHandler-class.html#http_error_303">http_error_303()</a><br /> -<span class="index-where">(in <a href="scapi.SCRedirectHandler-class.html" onclick="show_private();">SCRedirectHandler</a>)</span></td> -</tr> -<tr><td class="link-index"> </td><td class="link-index"> </td><td class="link-index"> </td></tr> -</table> -</td></tr> -<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="I">I</a></h2></td> -<td valign="top"> -<table class="link-index" width="100%" border="1"> -<tr> -<td width="33%" class="link-index"><a href="scapi.InvalidMethodException-class.html">InvalidMethodException</a><br /> -<span class="index-where">(in <a href="scapi-module.html">scapi</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.util.MultiDict-class.html#iteritemslist">iteritemslist()</a><br /> -<span class="index-where">(in <a href="scapi.util.MultiDict-class.html">MultiDict</a>)</span></td> -<td width="33%" class="link-index"> </td> -</tr> -<tr><td class="link-index"> </td><td class="link-index"> </td><td class="link-index"> </td></tr> -</table> -</td></tr> -<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="J">J</a></h2></td> -<td valign="top"> -<table class="link-index" width="100%" border="1"> -<tr> -<td width="33%" class="link-index"><a href="scapi.json-module.html">json</a><br /> -<span class="index-where">(in <a href="scapi-module.html">scapi</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.json.JsonReader-class.html">JsonReader</a><br /> -<span class="index-where">(in <a href="scapi.json-module.html">scapi.json</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.json.JsonWriter-class.html">JsonWriter</a><br /> -<span class="index-where">(in <a href="scapi.json-module.html">scapi.json</a>)</span></td> -</tr> -<tr><td class="link-index"> </td><td class="link-index"> </td><td class="link-index"> </td></tr> -</table> -</td></tr> -<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="K">K</a></h2></td> -<td valign="top"> -<table class="link-index" width="100%" border="1"> -<tr> -<td width="33%" class="link-index"><a href="scapi.Comment-class.html#KIND">KIND</a><br /> -<span class="index-where">(in <a href="scapi.Comment-class.html">Comment</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.Playlist-class.html#KIND">KIND</a><br /> -<span class="index-where">(in <a href="scapi.Playlist-class.html">Playlist</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.User-class.html#KIND">KIND</a><br /> -<span class="index-where">(in <a href="scapi.User-class.html">User</a>)</span></td> -</tr> -<tr> -<td width="33%" class="link-index"><a href="scapi.Event-class.html#KIND">KIND</a><br /> -<span class="index-where">(in <a href="scapi.Event-class.html">Event</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.RESTBase-class.html#KIND">KIND</a><br /> -<span class="index-where">(in <a href="scapi.RESTBase-class.html" onclick="show_private();">RESTBase</a>)</span></td> -<td width="33%" class="link-index"> </td> -</tr> -<tr> -<td width="33%" class="link-index"><a href="scapi.Group-class.html#KIND">KIND</a><br /> -<span class="index-where">(in <a href="scapi.Group-class.html">Group</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.Track-class.html#KIND">KIND</a><br /> -<span class="index-where">(in <a href="scapi.Track-class.html">Track</a>)</span></td> -<td width="33%" class="link-index"> </td> -</tr> -</table> -</td></tr> -<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="L">L</a></h2></td> -<td valign="top"> -<table class="link-index" width="100%" border="1"> -<tr> -<td width="33%" class="link-index"><a href="scapi.ApiConnector-class.html#LIST_LIMIT">LIST_LIMIT</a><br /> -<span class="index-where">(in <a href="scapi.ApiConnector-class.html" onclick="show_private();">ApiConnector</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.tests.test_connect-module.html#load_config">load_config()</a><br /> -<span class="index-where">(in <a href="scapi.tests.test_connect-module.html">scapi.tests.test_connect</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.tests.scapi_tests-module.html#logger">logger</a><br /> -<span class="index-where">(in <a href="scapi.tests.scapi_tests-module.html">scapi.tests.scapi_tests</a>)</span></td> -</tr> -<tr> -<td width="33%" class="link-index"><a href="scapi.ApiConnector-class.html#LIST_LIMIT_PARAMETER">LIST_LIMIT_PARAMETER</a><br /> -<span class="index-where">(in <a href="scapi.ApiConnector-class.html" onclick="show_private();">ApiConnector</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.authentication-module.html#logger">logger</a><br /> -<span class="index-where">(in <a href="scapi.authentication-module.html" onclick="show_private();">scapi.authentication</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.tests.test_connect-module.html#logger">logger</a><br /> -<span class="index-where">(in <a href="scapi.tests.test_connect-module.html">scapi.tests.test_connect</a>)</span></td> -</tr> -<tr> -<td width="33%" class="link-index"><a href="scapi.ApiConnector-class.html#LIST_OFFSET_PARAMETER">LIST_OFFSET_PARAMETER</a><br /> -<span class="index-where">(in <a href="scapi.ApiConnector-class.html" onclick="show_private();">ApiConnector</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi-module.html#logger">logger</a><br /> -<span class="index-where">(in <a href="scapi-module.html">scapi</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.tests.test_oauth-module.html#logger">logger</a><br /> -<span class="index-where">(in <a href="scapi.tests.test_oauth-module.html">scapi.tests.test_oauth</a>)</span></td> -</tr> -</table> -</td></tr> -<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="M">M</a></h2></td> -<td valign="top"> -<table class="link-index" width="100%" border="1"> -<tr> -<td width="33%" class="link-index"><a href="scapi.multidict-module.html">multidict</a><br /> -<span class="index-where">(in <a href="scapi-module.html">scapi</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.util.MultiDict-class.html">MultiDict</a><br /> -<span class="index-where">(in <a href="scapi.util-module.html" onclick="show_private();">scapi.util</a>)</span></td> -<td width="33%" class="link-index"> </td> -</tr> -<tr><td class="link-index"> </td><td class="link-index"> </td><td class="link-index"> </td></tr> -</table> -</td></tr> -<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="N">N</a></h2></td> -<td valign="top"> -<table class="link-index" width="100%" border="1"> -<tr> -<td width="33%" class="link-index"><a href="scapi.RESTBase-class.html#new">new()</a><br /> -<span class="index-where">(in <a href="scapi.RESTBase-class.html" onclick="show_private();">RESTBase</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.NoResultFromRequest-class.html">NoResultFromRequest</a><br /> -<span class="index-where">(in <a href="scapi-module.html">scapi</a>)</span></td> -<td width="33%" class="link-index"> </td> -</tr> -<tr> -<td width="33%" class="link-index"><a href="scapi.json._StringGenerator-class.html#next">next()</a><br /> -<span class="index-where">(in <a href="scapi.json._StringGenerator-class.html" onclick="show_private();">_StringGenerator</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.ApiConnector-class.html#normalize_method">normalize_method()</a><br /> -<span class="index-where">(in <a href="scapi.ApiConnector-class.html" onclick="show_private();">ApiConnector</a>)</span></td> -<td width="33%" class="link-index"> </td> -</tr> -</table> -</td></tr> -<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="O">O</a></h2></td> -<td valign="top"> -<table class="link-index" width="100%" border="1"> -<tr> -<td width="33%" class="link-index"><a href="scapi.authentication.OAuthAuthenticator-class.html#OAUTH_API_VERSION">OAUTH_API_VERSION</a><br /> -<span class="index-where">(in <a href="scapi.authentication.OAuthAuthenticator-class.html">OAuthAuthenticator</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.authentication.OAuthAuthenticator-class.html">OAuthAuthenticator</a><br /> -<span class="index-where">(in <a href="scapi.authentication-module.html" onclick="show_private();">scapi.authentication</a>)</span></td> -<td width="33%" class="link-index"> </td> -</tr> -<tr> -<td width="33%" class="link-index"><a href="scapi.Scope-class.html#oauth_sign_get_request">oauth_sign_get_request()</a><br /> -<span class="index-where">(in <a href="scapi.Scope-class.html" onclick="show_private();">Scope</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.authentication.OAuthSignatureMethod_HMAC_SHA1-class.html">OAuthSignatureMethod_HMAC_SHA1</a><br /> -<span class="index-where">(in <a href="scapi.authentication-module.html" onclick="show_private();">scapi.authentication</a>)</span></td> -<td width="33%" class="link-index"> </td> -</tr> -</table> -</td></tr> -<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="P">P</a></h2></td> -<td valign="top"> -<table class="link-index" width="100%" border="1"> -<tr> -<td width="33%" class="link-index"><a href="scapi.tests.scapi_tests.SCAPITests-class.html#PASSWORD">PASSWORD</a><br /> -<span class="index-where">(in <a href="scapi.tests.scapi_tests.SCAPITests-class.html">SCAPITests</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.json._StringGenerator-class.html#peek">peek()</a><br /> -<span class="index-where">(in <a href="scapi.json._StringGenerator-class.html" onclick="show_private();">_StringGenerator</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi-module.html#PROXY">PROXY</a><br /> -<span class="index-where">(in <a href="scapi-module.html">scapi</a>)</span></td> -</tr> -<tr> -<td width="33%" class="link-index"><a href="scapi.tests.test_connect-module.html#PASSWORD">PASSWORD</a><br /> -<span class="index-where">(in <a href="scapi.tests.test_connect-module.html">scapi.tests.test_connect</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.Playlist-class.html">Playlist</a><br /> -<span class="index-where">(in <a href="scapi-module.html">scapi</a>)</span></td> -<td width="33%" class="link-index"> </td> -</tr> -</table> -</td></tr> -<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="R">R</a></h2></td> -<td valign="top"> -<table class="link-index" width="100%" border="1"> -<tr> -<td width="33%" class="link-index"><a href="scapi.json.JsonReader-class.html#read">read()</a><br /> -<span class="index-where">(in <a href="scapi.json.JsonReader-class.html">JsonReader</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.RESTBase-class.html#REGISTRY">REGISTRY</a><br /> -<span class="index-where">(in <a href="scapi.RESTBase-class.html" onclick="show_private();">RESTBase</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.tests.test_connect-module.html#ROOT">ROOT</a><br /> -<span class="index-where">(in <a href="scapi.tests.test_connect-module.html">scapi.tests.test_connect</a>)</span></td> -</tr> -<tr> -<td width="33%" class="link-index"><a href="scapi.json-module.html#read">read()</a><br /> -<span class="index-where">(in <a href="scapi.json-module.html">scapi.json</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi-module.html#REQUEST_TOKEN_URL">REQUEST_TOKEN_URL</a><br /> -<span class="index-where">(in <a href="scapi-module.html">scapi</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.tests.scapi_tests.SCAPITests-class.html#RUN_INTERACTIVE_TESTS">RUN_INTERACTIVE_TESTS</a><br /> -<span class="index-where">(in <a href="scapi.tests.scapi_tests.SCAPITests-class.html">SCAPITests</a>)</span></td> -</tr> -<tr> -<td width="33%" class="link-index"><a href="scapi.json.ReadException-class.html">ReadException</a><br /> -<span class="index-where">(in <a href="scapi.json-module.html">scapi.json</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.RESTBase-class.html">RESTBase</a><br /> -<span class="index-where">(in <a href="scapi-module.html">scapi</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.tests.test_connect-module.html#RUN_INTERACTIVE_TESTS">RUN_INTERACTIVE_TESTS</a><br /> -<span class="index-where">(in <a href="scapi.tests.test_connect-module.html">scapi.tests.test_connect</a>)</span></td> -</tr> -<tr> -<td width="33%" class="link-index"><a href="scapi-module.html#register_classes">register_classes()</a><br /> -<span class="index-where">(in <a href="scapi-module.html">scapi</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.tests.scapi_tests.SCAPITests-class.html#root">root</a><br /> -<span class="index-where">(in <a href="scapi.tests.scapi_tests.SCAPITests-class.html">SCAPITests</a>)</span></td> -<td width="33%" class="link-index"> </td> -</tr> -</table> -</td></tr> -<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="S">S</a></h2></td> -<td valign="top"> -<table class="link-index" width="100%" border="1"> -<tr> -<td width="33%" class="link-index"><a href="scapi-module.html">scapi</a></td> -<td width="33%" class="link-index"><a href="scapi.SCRedirectHandler-class.html">SCRedirectHandler</a><br /> -<span class="index-where">(in <a href="scapi-module.html">scapi</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.tests.scapi_tests.SCAPITests-class.html#setUp">setUp()</a><br /> -<span class="index-where">(in <a href="scapi.tests.scapi_tests.SCAPITests-class.html">SCAPITests</a>)</span></td> -</tr> -<tr> -<td width="33%" class="link-index"><a href="scapi.tests.scapi_tests-module.html">scapi_tests</a><br /> -<span class="index-where">(in <a href="scapi.tests-module.html">scapi.tests</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.tests.scapi_tests.SCAPITests-class.html#SECRET">SECRET</a><br /> -<span class="index-where">(in <a href="scapi.tests.scapi_tests.SCAPITests-class.html">SCAPITests</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.tests.test_connect-module.html#setup">setup()</a><br /> -<span class="index-where">(in <a href="scapi.tests.test_connect-module.html">scapi.tests.test_connect</a>)</span></td> -</tr> -<tr> -<td width="33%" class="link-index"><a href="scapi.tests.scapi_tests.SCAPITests-class.html">SCAPITests</a><br /> -<span class="index-where">(in <a href="scapi.tests.scapi_tests-module.html">scapi.tests.scapi_tests</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.tests.test_connect-module.html#SECRET">SECRET</a><br /> -<span class="index-where">(in <a href="scapi.tests.test_connect-module.html">scapi.tests.test_connect</a>)</span></td> -<td width="33%" class="link-index"> </td> -</tr> -<tr> -<td width="33%" class="link-index"><a href="scapi.Scope-class.html">Scope</a><br /> -<span class="index-where">(in <a href="scapi-module.html">scapi</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.tests.test_oauth-module.html#SECRET">SECRET</a><br /> -<span class="index-where">(in <a href="scapi.tests.test_oauth-module.html">scapi.tests.test_oauth</a>)</span></td> -<td width="33%" class="link-index"> </td> -</tr> -</table> -</td></tr> -<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="T">T</a></h2></td> -<td valign="top"> -<table class="link-index" width="100%" border="1"> -<tr> -<td width="33%" class="link-index"><a href="scapi.tests.scapi_tests.SCAPITests-class.html#test_access_token_acquisition">test_access_token_acquisition()</a><br /> -<span class="index-where">(in <a href="scapi.tests.scapi_tests.SCAPITests-class.html">SCAPITests</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.tests.test_connect-module.html#test_load_config">test_load_config()</a><br /> -<span class="index-where">(in <a href="scapi.tests.test_connect-module.html">scapi.tests.test_connect</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.tests.test_connect-module.html#test_setting_comments_the_way_shawn_says_its_correct">test_setting_comments_the_way_shawn_says_its_correct()</a><br /> -<span class="index-where">(in <a href="scapi.tests.test_connect-module.html">scapi.tests.test_connect</a>)</span></td> -</tr> -<tr> -<td width="33%" class="link-index"><a href="scapi.tests.test_connect-module.html#test_access_token_acquisition">test_access_token_acquisition()</a><br /> -<span class="index-where">(in <a href="scapi.tests.test_connect-module.html">scapi.tests.test_connect</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.tests.scapi_tests.SCAPITests-class.html#test_me_having_stress">test_me_having_stress()</a><br /> -<span class="index-where">(in <a href="scapi.tests.scapi_tests.SCAPITests-class.html">SCAPITests</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.tests.scapi_tests.SCAPITests-class.html#test_setting_permissions">test_setting_permissions()</a><br /> -<span class="index-where">(in <a href="scapi.tests.scapi_tests.SCAPITests-class.html">SCAPITests</a>)</span></td> -</tr> -<tr> -<td width="33%" class="link-index"><a href="scapi.tests.test_oauth-module.html#test_base64_connect">test_base64_connect()</a><br /> -<span class="index-where">(in <a href="scapi.tests.test_oauth-module.html">scapi.tests.test_oauth</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.tests.test_connect-module.html#test_me_having_stress">test_me_having_stress()</a><br /> -<span class="index-where">(in <a href="scapi.tests.test_connect-module.html">scapi.tests.test_connect</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.tests.test_connect-module.html#test_setting_permissions">test_setting_permissions()</a><br /> -<span class="index-where">(in <a href="scapi.tests.test_connect-module.html">scapi.tests.test_connect</a>)</span></td> -</tr> -<tr> -<td width="33%" class="link-index"><a href="scapi.tests.test_connect-module.html">test_connect</a><br /> -<span class="index-where">(in <a href="scapi.tests-module.html">scapi.tests</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.tests.scapi_tests.SCAPITests-class.html#test_modifying_playlists">test_modifying_playlists()</a><br /> -<span class="index-where">(in <a href="scapi.tests.scapi_tests.SCAPITests-class.html">SCAPITests</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.tests.scapi_tests.SCAPITests-class.html#test_streaming">test_streaming()</a><br /> -<span class="index-where">(in <a href="scapi.tests.scapi_tests.SCAPITests-class.html">SCAPITests</a>)</span></td> -</tr> -<tr> -<td width="33%" class="link-index"><a href="scapi.tests.scapi_tests.SCAPITests-class.html#test_connect">test_connect()</a><br /> -<span class="index-where">(in <a href="scapi.tests.scapi_tests.SCAPITests-class.html">SCAPITests</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.tests.scapi_tests.SCAPITests-class.html#test_non_global_api">test_non_global_api()</a><br /> -<span class="index-where">(in <a href="scapi.tests.scapi_tests.SCAPITests-class.html">SCAPITests</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.tests.scapi_tests.SCAPITests-class.html#test_track_creation">test_track_creation()</a><br /> -<span class="index-where">(in <a href="scapi.tests.scapi_tests.SCAPITests-class.html">SCAPITests</a>)</span></td> -</tr> -<tr> -<td width="33%" class="link-index"><a href="scapi.tests.test_connect-module.html#test_connect">test_connect()</a><br /> -<span class="index-where">(in <a href="scapi.tests.test_connect-module.html">scapi.tests.test_connect</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.tests.test_connect-module.html#test_non_global_api">test_non_global_api()</a><br /> -<span class="index-where">(in <a href="scapi.tests.test_connect-module.html">scapi.tests.test_connect</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.tests.test_connect-module.html#test_track_creation">test_track_creation()</a><br /> -<span class="index-where">(in <a href="scapi.tests.test_connect-module.html">scapi.tests.test_connect</a>)</span></td> -</tr> -<tr> -<td width="33%" class="link-index"><a href="scapi.tests.scapi_tests.SCAPITests-class.html#test_contact_add_and_removal">test_contact_add_and_removal()</a><br /> -<span class="index-where">(in <a href="scapi.tests.scapi_tests.SCAPITests-class.html">SCAPITests</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.tests.test_oauth-module.html">test_oauth</a><br /> -<span class="index-where">(in <a href="scapi.tests-module.html">scapi.tests</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.tests.scapi_tests.SCAPITests-class.html#test_track_creation_with_artwork">test_track_creation_with_artwork()</a><br /> -<span class="index-where">(in <a href="scapi.tests.scapi_tests.SCAPITests-class.html">SCAPITests</a>)</span></td> -</tr> -<tr> -<td width="33%" class="link-index"><a href="scapi.tests.test_connect-module.html#test_contact_add_and_removal">test_contact_add_and_removal()</a><br /> -<span class="index-where">(in <a href="scapi.tests.test_connect-module.html">scapi.tests.test_connect</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.tests.test_oauth-module.html#test_oauth_connect">test_oauth_connect()</a><br /> -<span class="index-where">(in <a href="scapi.tests.test_oauth-module.html">scapi.tests.test_oauth</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.tests.scapi_tests.SCAPITests-class.html#test_track_creation_with_email_sharers">test_track_creation_with_email_sharers()</a><br /> -<span class="index-where">(in <a href="scapi.tests.scapi_tests.SCAPITests-class.html">SCAPITests</a>)</span></td> -</tr> -<tr> -<td width="33%" class="link-index"><a href="scapi.tests.scapi_tests.SCAPITests-class.html#test_contact_list">test_contact_list()</a><br /> -<span class="index-where">(in <a href="scapi.tests.scapi_tests.SCAPITests-class.html">SCAPITests</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.tests.scapi_tests.SCAPITests-class.html#test_oauth_get_signing">test_oauth_get_signing()</a><br /> -<span class="index-where">(in <a href="scapi.tests.scapi_tests.SCAPITests-class.html">SCAPITests</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.tests.scapi_tests.SCAPITests-class.html#test_track_creation_with_updated_artwork">test_track_creation_with_updated_artwork()</a><br /> -<span class="index-where">(in <a href="scapi.tests.scapi_tests.SCAPITests-class.html">SCAPITests</a>)</span></td> -</tr> -<tr> -<td width="33%" class="link-index"><a href="scapi.tests.test_connect-module.html#test_contact_list">test_contact_list()</a><br /> -<span class="index-where">(in <a href="scapi.tests.test_connect-module.html">scapi.tests.test_connect</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.tests.scapi_tests.SCAPITests-class.html#test_permissions">test_permissions()</a><br /> -<span class="index-where">(in <a href="scapi.tests.scapi_tests.SCAPITests-class.html">SCAPITests</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.tests.scapi_tests.SCAPITests-class.html#test_track_deletion">test_track_deletion()</a><br /> -<span class="index-where">(in <a href="scapi.tests.scapi_tests.SCAPITests-class.html">SCAPITests</a>)</span></td> -</tr> -<tr> -<td width="33%" class="link-index"><a href="scapi.tests.scapi_tests.SCAPITests-class.html#test_downloadable">test_downloadable()</a><br /> -<span class="index-where">(in <a href="scapi.tests.scapi_tests.SCAPITests-class.html">SCAPITests</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.tests.test_connect-module.html#test_permissions">test_permissions()</a><br /> -<span class="index-where">(in <a href="scapi.tests.test_connect-module.html">scapi.tests.test_connect</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.tests.scapi_tests.SCAPITests-class.html#test_track_update">test_track_update()</a><br /> -<span class="index-where">(in <a href="scapi.tests.scapi_tests.SCAPITests-class.html">SCAPITests</a>)</span></td> -</tr> -<tr> -<td width="33%" class="link-index"><a href="scapi.tests.scapi_tests.SCAPITests-class.html#test_events">test_events()</a><br /> -<span class="index-where">(in <a href="scapi.tests.scapi_tests.SCAPITests-class.html">SCAPITests</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.tests.scapi_tests.SCAPITests-class.html#test_playlist_creation">test_playlist_creation()</a><br /> -<span class="index-where">(in <a href="scapi.tests.scapi_tests.SCAPITests-class.html">SCAPITests</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.tests.test_connect-module.html#test_track_update">test_track_update()</a><br /> -<span class="index-where">(in <a href="scapi.tests.test_connect-module.html">scapi.tests.test_connect</a>)</span></td> -</tr> -<tr> -<td width="33%" class="link-index"><a href="scapi.tests.test_connect-module.html#test_events">test_events()</a><br /> -<span class="index-where">(in <a href="scapi.tests.test_connect-module.html">scapi.tests.test_connect</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.tests.scapi_tests.SCAPITests-class.html#test_playlists">test_playlists()</a><br /> -<span class="index-where">(in <a href="scapi.tests.scapi_tests.SCAPITests-class.html">SCAPITests</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.tests.scapi_tests.SCAPITests-class.html#test_upload">test_upload()</a><br /> -<span class="index-where">(in <a href="scapi.tests.scapi_tests.SCAPITests-class.html">SCAPITests</a>)</span></td> -</tr> -<tr> -<td width="33%" class="link-index"><a href="scapi.tests.scapi_tests.SCAPITests-class.html#test_favorites">test_favorites()</a><br /> -<span class="index-where">(in <a href="scapi.tests.scapi_tests.SCAPITests-class.html">SCAPITests</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.tests.test_connect-module.html#test_playlists">test_playlists()</a><br /> -<span class="index-where">(in <a href="scapi.tests.test_connect-module.html">scapi.tests.test_connect</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.tests.test_connect-module.html#test_upload">test_upload()</a><br /> -<span class="index-where">(in <a href="scapi.tests.test_connect-module.html">scapi.tests.test_connect</a>)</span></td> -</tr> -<tr> -<td width="33%" class="link-index"><a href="scapi.tests.test_connect-module.html#test_favorites">test_favorites()</a><br /> -<span class="index-where">(in <a href="scapi.tests.test_connect-module.html">scapi.tests.test_connect</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.tests.scapi_tests.SCAPITests-class.html#test_scoped_track_creation">test_scoped_track_creation()</a><br /> -<span class="index-where">(in <a href="scapi.tests.scapi_tests.SCAPITests-class.html">SCAPITests</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.tests-module.html">tests</a><br /> -<span class="index-where">(in <a href="scapi-module.html">scapi</a>)</span></td> -</tr> -<tr> -<td width="33%" class="link-index"><a href="scapi.tests.scapi_tests.SCAPITests-class.html#test_filtered_list">test_filtered_list()</a><br /> -<span class="index-where">(in <a href="scapi.tests.scapi_tests.SCAPITests-class.html">SCAPITests</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.tests.test_connect-module.html#test_scoped_track_creation">test_scoped_track_creation()</a><br /> -<span class="index-where">(in <a href="scapi.tests.test_connect-module.html">scapi.tests.test_connect</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.tests.scapi_tests.SCAPITests-class.html#TOKEN">TOKEN</a><br /> -<span class="index-where">(in <a href="scapi.tests.scapi_tests.SCAPITests-class.html">SCAPITests</a>)</span></td> -</tr> -<tr> -<td width="33%" class="link-index"><a href="scapi.tests.scapi_tests.SCAPITests-class.html#test_groups">test_groups()</a><br /> -<span class="index-where">(in <a href="scapi.tests.scapi_tests.SCAPITests-class.html">SCAPITests</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.tests.scapi_tests.SCAPITests-class.html#test_setting_comments">test_setting_comments()</a><br /> -<span class="index-where">(in <a href="scapi.tests.scapi_tests.SCAPITests-class.html">SCAPITests</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.tests.test_connect-module.html#TOKEN">TOKEN</a><br /> -<span class="index-where">(in <a href="scapi.tests.test_connect-module.html">scapi.tests.test_connect</a>)</span></td> -</tr> -<tr> -<td width="33%" class="link-index"><a href="scapi.tests.scapi_tests.SCAPITests-class.html#test_large_list">test_large_list()</a><br /> -<span class="index-where">(in <a href="scapi.tests.scapi_tests.SCAPITests-class.html">SCAPITests</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.tests.test_connect-module.html#test_setting_comments">test_setting_comments()</a><br /> -<span class="index-where">(in <a href="scapi.tests.test_connect-module.html">scapi.tests.test_connect</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.tests.test_oauth-module.html#TOKEN">TOKEN</a><br /> -<span class="index-where">(in <a href="scapi.tests.test_oauth-module.html">scapi.tests.test_oauth</a>)</span></td> -</tr> -<tr> -<td width="33%" class="link-index"><a href="scapi.tests.test_connect-module.html#test_large_list">test_large_list()</a><br /> -<span class="index-where">(in <a href="scapi.tests.test_connect-module.html">scapi.tests.test_connect</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.tests.scapi_tests.SCAPITests-class.html#test_setting_comments_the_way_shawn_says_its_correct">test_setting_comments_the_way_shawn_says_its_correct()</a><br /> -<span class="index-where">(in <a href="scapi.tests.scapi_tests.SCAPITests-class.html">SCAPITests</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.Track-class.html">Track</a><br /> -<span class="index-where">(in <a href="scapi-module.html">scapi</a>)</span></td> -</tr> -</table> -</td></tr> -<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="U">U</a></h2></td> -<td valign="top"> -<table class="link-index" width="100%" border="1"> -<tr> -<td width="33%" class="link-index"><a href="scapi.UnknownContentType-class.html">UnknownContentType</a><br /> -<span class="index-where">(in <a href="scapi-module.html">scapi</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi-module.html#USE_PROXY">USE_PROXY</a><br /> -<span class="index-where">(in <a href="scapi-module.html">scapi</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.tests.test_connect-module.html#USER">USER</a><br /> -<span class="index-where">(in <a href="scapi.tests.test_connect-module.html">scapi.tests.test_connect</a>)</span></td> -</tr> -<tr> -<td width="33%" class="link-index"><a href="scapi.authentication-module.html#USE_DOUBLE_ESCAPE_HACK">USE_DOUBLE_ESCAPE_HACK</a><br /> -<span class="index-where">(in <a href="scapi.authentication-module.html" onclick="show_private();">scapi.authentication</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.User-class.html">User</a><br /> -<span class="index-where">(in <a href="scapi-module.html">scapi</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.util-module.html">util</a><br /> -<span class="index-where">(in <a href="scapi-module.html">scapi</a>)</span></td> -</tr> -<tr> -<td width="33%" class="link-index"><a href="scapi.tests.test_connect-module.html#USE_OAUTH">USE_OAUTH</a><br /> -<span class="index-where">(in <a href="scapi.tests.test_connect-module.html">scapi.tests.test_connect</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.tests.scapi_tests.SCAPITests-class.html#USER">USER</a><br /> -<span class="index-where">(in <a href="scapi.tests.scapi_tests.SCAPITests-class.html">SCAPITests</a>)</span></td> -<td width="33%" class="link-index"> </td> -</tr> -</table> -</td></tr> -<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="W">W</a></h2></td> -<td valign="top"> -<table class="link-index" width="100%" border="1"> -<tr> -<td width="33%" class="link-index"><a href="scapi.json.JsonWriter-class.html#write">write()</a><br /> -<span class="index-where">(in <a href="scapi.json.JsonWriter-class.html">JsonWriter</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.json-module.html#write">write()</a><br /> -<span class="index-where">(in <a href="scapi.json-module.html">scapi.json</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.json.WriteException-class.html">WriteException</a><br /> -<span class="index-where">(in <a href="scapi.json-module.html">scapi.json</a>)</span></td> -</tr> -<tr><td class="link-index"> </td><td class="link-index"> </td><td class="link-index"> </td></tr> -</table> -</td></tr> -<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="_">_</a></h2></td> -<td valign="top"> -<table class="link-index" width="100%" border="1"> -<tr> -<td width="33%" class="link-index"><a href="scapi.RESTBase-class.html#__eq__">__eq__()</a><br /> -<span class="index-where">(in <a href="scapi.RESTBase-class.html" onclick="show_private();">RESTBase</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.RESTBase-class.html#__setattr__">__setattr__()</a><br /> -<span class="index-where">(in <a href="scapi.RESTBase-class.html" onclick="show_private();">RESTBase</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.json.JsonReader-class.html#_next">_next()</a><br /> -<span class="index-where">(in <a href="scapi.json.JsonReader-class.html">JsonReader</a>)</span></td> -</tr> -<tr> -<td width="33%" class="link-index"><a href="scapi.RESTBase-class.html#__getattr__">__getattr__()</a><br /> -<span class="index-where">(in <a href="scapi.RESTBase-class.html" onclick="show_private();">RESTBase</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.Scope-class.html#__str__">__str__()</a><br /> -<span class="index-where">(in <a href="scapi.Scope-class.html" onclick="show_private();">Scope</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.json.JsonReader-class.html#_peek">_peek()</a><br /> -<span class="index-where">(in <a href="scapi.json.JsonReader-class.html">JsonReader</a>)</span></td> -</tr> -<tr> -<td width="33%" class="link-index"><a href="scapi.Scope-class.html#__getattr__">__getattr__()</a><br /> -<span class="index-where">(in <a href="scapi.Scope-class.html" onclick="show_private();">Scope</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.UnknownContentType-class.html#__str__">__str__()</a><br /> -<span class="index-where">(in <a href="scapi.UnknownContentType-class.html" onclick="show_private();">UnknownContentType</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.json.JsonReader-class.html#_read">_read()</a><br /> -<span class="index-where">(in <a href="scapi.json.JsonReader-class.html">JsonReader</a>)</span></td> -</tr> -<tr> -<td width="33%" class="link-index"><a href="scapi.RESTBase-class.html#__hash__">__hash__()</a><br /> -<span class="index-where">(in <a href="scapi.RESTBase-class.html" onclick="show_private();">RESTBase</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.json.JsonWriter-class.html#_append">_append()</a><br /> -<span class="index-where">(in <a href="scapi.json.JsonWriter-class.html">JsonWriter</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.json.JsonReader-class.html#_readArray">_readArray()</a><br /> -<span class="index-where">(in <a href="scapi.json.JsonReader-class.html">JsonReader</a>)</span></td> -</tr> -<tr> -<td width="33%" class="link-index"><a href="scapi.ApiConnector-class.html#__init__">__init__()</a><br /> -<span class="index-where">(in <a href="scapi.ApiConnector-class.html" onclick="show_private();">ApiConnector</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.RESTBase-class.html#_as_arguments">_as_arguments()</a><br /> -<span class="index-where">(in <a href="scapi.RESTBase-class.html" onclick="show_private();">RESTBase</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.json.JsonReader-class.html#_readComment">_readComment()</a><br /> -<span class="index-where">(in <a href="scapi.json.JsonReader-class.html">JsonReader</a>)</span></td> -</tr> -<tr> -<td width="33%" class="link-index"><a href="scapi.InvalidMethodException-class.html#__init__">__init__()</a><br /> -<span class="index-where">(in <a href="scapi.InvalidMethodException-class.html" onclick="show_private();">InvalidMethodException</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.json.JsonReader-class.html#_assertNext">_assertNext()</a><br /> -<span class="index-where">(in <a href="scapi.json.JsonReader-class.html">JsonReader</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.json.JsonReader-class.html#_readCStyleComment">_readCStyleComment()</a><br /> -<span class="index-where">(in <a href="scapi.json.JsonReader-class.html">JsonReader</a>)</span></td> -</tr> -<tr> -<td width="33%" class="link-index"><a href="scapi.RESTBase-class.html#__init__">__init__()</a><br /> -<span class="index-where">(in <a href="scapi.RESTBase-class.html" onclick="show_private();">RESTBase</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.Scope-class.html#_call">_call()</a><br /> -<span class="index-where">(in <a href="scapi.Scope-class.html" onclick="show_private();">Scope</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.json.JsonReader-class.html#_readDoubleSolidusComment">_readDoubleSolidusComment()</a><br /> -<span class="index-where">(in <a href="scapi.json.JsonReader-class.html">JsonReader</a>)</span></td> -</tr> -<tr> -<td width="33%" class="link-index"><a href="scapi.Scope-class.html#__init__">__init__()</a><br /> -<span class="index-where">(in <a href="scapi.Scope-class.html" onclick="show_private();">Scope</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.RESTBase-class.html#_convert_value">_convert_value()</a><br /> -<span class="index-where">(in <a href="scapi.RESTBase-class.html" onclick="show_private();">RESTBase</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.json.JsonReader-class.html#_readFalse">_readFalse()</a><br /> -<span class="index-where">(in <a href="scapi.json.JsonReader-class.html">JsonReader</a>)</span></td> -</tr> -<tr> -<td width="33%" class="link-index"><a href="scapi.UnknownContentType-class.html#__init__">__init__()</a><br /> -<span class="index-where">(in <a href="scapi.UnknownContentType-class.html" onclick="show_private();">UnknownContentType</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.Scope-class.html#_create_query_string">_create_query_string()</a><br /> -<span class="index-where">(in <a href="scapi.Scope-class.html" onclick="show_private();">Scope</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.json.JsonReader-class.html#_readNull">_readNull()</a><br /> -<span class="index-where">(in <a href="scapi.json.JsonReader-class.html">JsonReader</a>)</span></td> -</tr> -<tr> -<td width="33%" class="link-index"><a href="scapi.authentication.BasicAuthenticator-class.html#__init__">__init__()</a><br /> -<span class="index-where">(in <a href="scapi.authentication.BasicAuthenticator-class.html">BasicAuthenticator</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.Scope-class.html#_create_request">_create_request()</a><br /> -<span class="index-where">(in <a href="scapi.Scope-class.html" onclick="show_private();">Scope</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.json.JsonReader-class.html#_readNumber">_readNumber()</a><br /> -<span class="index-where">(in <a href="scapi.json.JsonReader-class.html">JsonReader</a>)</span></td> -</tr> -<tr> -<td width="33%" class="link-index"><a href="scapi.authentication.OAuthAuthenticator-class.html#__init__">__init__()</a><br /> -<span class="index-where">(in <a href="scapi.authentication.OAuthAuthenticator-class.html">OAuthAuthenticator</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.json.JsonReader-class.html#_eatWhitespace">_eatWhitespace()</a><br /> -<span class="index-where">(in <a href="scapi.json.JsonReader-class.html">JsonReader</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.json.JsonReader-class.html#_readObject">_readObject()</a><br /> -<span class="index-where">(in <a href="scapi.json.JsonReader-class.html">JsonReader</a>)</span></td> -</tr> -<tr> -<td width="33%" class="link-index"><a href="scapi.json._StringGenerator-class.html#__init__">__init__()</a><br /> -<span class="index-where">(in <a href="scapi.json._StringGenerator-class.html" onclick="show_private();">_StringGenerator</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.Scope-class.html#_get_connector">_get_connector()</a><br /> -<span class="index-where">(in <a href="scapi.Scope-class.html" onclick="show_private();">Scope</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.json.JsonReader-class.html#_readString">_readString()</a><br /> -<span class="index-where">(in <a href="scapi.json.JsonReader-class.html">JsonReader</a>)</span></td> -</tr> -<tr> -<td width="33%" class="link-index"><a href="scapi.RESTBase-class.html#__ne__">__ne__()</a><br /> -<span class="index-where">(in <a href="scapi.RESTBase-class.html" onclick="show_private();">RESTBase</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.json.JsonReader-class.html#_hexDigitToInt">_hexDigitToInt()</a><br /> -<span class="index-where">(in <a href="scapi.json.JsonReader-class.html">JsonReader</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.json.JsonReader-class.html#_readTrue">_readTrue()</a><br /> -<span class="index-where">(in <a href="scapi.json.JsonReader-class.html">JsonReader</a>)</span></td> -</tr> -<tr> -<td width="33%" class="link-index"><a href="scapi.InvalidMethodException-class.html#__repr__">__repr__()</a><br /> -<span class="index-where">(in <a href="scapi.InvalidMethodException-class.html" onclick="show_private();">InvalidMethodException</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.tests.scapi_tests.SCAPITests-class.html#_load_config">_load_config()</a><br /> -<span class="index-where">(in <a href="scapi.tests.scapi_tests.SCAPITests-class.html">SCAPITests</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.RESTBase-class.html#_scope">_scope()</a><br /> -<span class="index-where">(in <a href="scapi.RESTBase-class.html" onclick="show_private();">RESTBase</a>)</span></td> -</tr> -<tr> -<td width="33%" class="link-index"><a href="scapi.RESTBase-class.html#__repr__">__repr__()</a><br /> -<span class="index-where">(in <a href="scapi.RESTBase-class.html" onclick="show_private();">RESTBase</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.tests.test_connect-module.html#_logger">_logger</a><br /> -<span class="index-where">(in <a href="scapi.tests.test_connect-module.html">scapi.tests.test_connect</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.RESTBase-class.html#_singleton">_singleton()</a><br /> -<span class="index-where">(in <a href="scapi.RESTBase-class.html" onclick="show_private();">RESTBase</a>)</span></td> -</tr> -<tr> -<td width="33%" class="link-index"><a href="scapi.Scope-class.html#__repr__">__repr__()</a><br /> -<span class="index-where">(in <a href="scapi.Scope-class.html" onclick="show_private();">Scope</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.tests.test_oauth-module.html#_logger">_logger</a><br /> -<span class="index-where">(in <a href="scapi.tests.test_oauth-module.html">scapi.tests.test_oauth</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.json._StringGenerator-class.html">_StringGenerator</a><br /> -<span class="index-where">(in <a href="scapi.json-module.html">scapi.json</a>)</span></td> -</tr> -<tr> -<td width="33%" class="link-index"><a href="scapi.UnknownContentType-class.html#__repr__">__repr__()</a><br /> -<span class="index-where">(in <a href="scapi.UnknownContentType-class.html" onclick="show_private();">UnknownContentType</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.Scope-class.html#_map">_map()</a><br /> -<span class="index-where">(in <a href="scapi.Scope-class.html" onclick="show_private();">Scope</a>)</span></td> -<td width="33%" class="link-index"><a href="scapi.json.JsonWriter-class.html#_write">_write()</a><br /> -<span class="index-where">(in <a href="scapi.json.JsonWriter-class.html">JsonWriter</a>)</span></td> -</tr> -</table> -</td></tr> -</table> -<br /><br /><!-- ==================== NAVIGATION BAR ==================== --> -<table class="navbar" border="0" width="100%" cellpadding="0" - bgcolor="#a0c0ff" cellspacing="0"> - <tr valign="middle"> - <!-- Home link --> - <th> <a - href="scapi-module.html">Home</a> </th> - - <!-- Tree link --> - <th> <a - href="module-tree.html">Trees</a> </th> - - <!-- Index link --> - <th bgcolor="#70b0f0" class="navbar-select" - > Indices </th> - - <!-- Help link --> - <th> <a - href="help.html">Help</a> </th> - - <!-- Project homepage --> - <th class="navbar" align="right" width="100%"> - <table border="0" cellpadding="0" cellspacing="0"> - <tr><th class="navbar" align="center" - >SoundCloud API</th> - </tr></table></th> - </tr> -</table> -<table border="0" cellpadding="0" cellspacing="0" width="100%%"> - <tr> - <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Thu Sep 10 00:58:49 2009 - </td> - <td align="right" class="footer"> - <a target="mainFrame" href="http://epydoc.sourceforge.net" - >http://epydoc.sourceforge.net</a> - </td> - </tr> -</table> - -<script type="text/javascript"> - <!-- - // Private objects are initially displayed (because if - // javascript is turned off then we want them to be - // visible); but by default, we want to hide them. So hide - // them unless we have a cookie that says to show them. - checkCookie(); - // --> -</script> -</body> -</html> diff --git a/python_apps/soundcloud-api/docs/api/index.html b/python_apps/soundcloud-api/docs/api/index.html deleted file mode 100644 index 6d0191e9d..000000000 --- a/python_apps/soundcloud-api/docs/api/index.html +++ /dev/null @@ -1,17 +0,0 @@ -<?xml version="1.0" encoding="iso-8859-1"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" - "DTD/xhtml1-frameset.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <title> SoundCloud API </title> -</head> -<frameset cols="20%,80%"> - <frameset rows="30%,70%"> - <frame src="toc.html" name="moduleListFrame" - id="moduleListFrame" /> - <frame src="toc-everything.html" name="moduleFrame" - id="moduleFrame" /> - </frameset> - <frame src="scapi-module.html" name="mainFrame" id="mainFrame" /> -</frameset> -</html> diff --git a/python_apps/soundcloud-api/docs/api/module-tree.html b/python_apps/soundcloud-api/docs/api/module-tree.html deleted file mode 100644 index bf467d991..000000000 --- a/python_apps/soundcloud-api/docs/api/module-tree.html +++ /dev/null @@ -1,130 +0,0 @@ -<?xml version="1.0" encoding="ascii"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <title>Module Hierarchy</title> - <link rel="stylesheet" href="epydoc.css" type="text/css" /> - <script type="text/javascript" src="epydoc.js"></script> -</head> - -<body bgcolor="white" text="black" link="blue" vlink="#204080" - alink="#204080"> -<!-- ==================== NAVIGATION BAR ==================== --> -<table class="navbar" border="0" width="100%" cellpadding="0" - bgcolor="#a0c0ff" cellspacing="0"> - <tr valign="middle"> - <!-- Home link --> - <th> <a - href="scapi-module.html">Home</a> </th> - - <!-- Tree link --> - <th bgcolor="#70b0f0" class="navbar-select" - > Trees </th> - - <!-- Index link --> - <th> <a - href="identifier-index.html">Indices</a> </th> - - <!-- Help link --> - <th> <a - href="help.html">Help</a> </th> - - <!-- Project homepage --> - <th class="navbar" align="right" width="100%"> - <table border="0" cellpadding="0" cellspacing="0"> - <tr><th class="navbar" align="center" - >SoundCloud API</th> - </tr></table></th> - </tr> -</table> -<table width="100%" cellpadding="0" cellspacing="0"> - <tr valign="top"> - <td width="100%"> </td> - <td> - <table cellpadding="0" cellspacing="0"> - <!-- hide/show private --> - <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink" - onclick="toggle_private();">hide private</a>]</span></td></tr> - <tr><td align="right"><span class="options" - >[<a href="frames.html" target="_top">frames</a - >] | <a href="module-tree.html" - target="_top">no frames</a>]</span></td></tr> - </table> - </td> - </tr> -</table> -<center><b> - [ <a href="module-tree.html">Module Hierarchy</a> - | <a href="class-tree.html">Class Hierarchy</a> ] -</b></center><br /> -<h1 class="epydoc">Module Hierarchy</h1> -<ul class="nomargin-top"> - <li> <strong class="uidlink"><a href="scapi-module.html">scapi</a></strong> - <ul> - <li class="private"> <strong class="uidlink"><a href="scapi.authentication-module.html" onclick="show_private();">scapi.authentication</a></strong> </li> - <li> <strong class="uidlink"><a href="scapi.config-module.html">scapi.config</a></strong> </li> - <li> <strong class="uidlink"><a href="scapi.json-module.html">scapi.json</a></strong> </li> - <li> <strong class="uidlink"><a href="scapi.multidict-module.html">scapi.multidict</a></strong> </li> - <li> <strong class="uidlink"><a href="scapi.tests-module.html">scapi.tests</a></strong> - <ul> - <li> <strong class="uidlink"><a href="scapi.tests.scapi_tests-module.html">scapi.tests.scapi_tests</a></strong> </li> - <li> <strong class="uidlink"><a href="scapi.tests.test_connect-module.html">scapi.tests.test_connect</a></strong> </li> - <li> <strong class="uidlink"><a href="scapi.tests.test_oauth-module.html">scapi.tests.test_oauth</a></strong> </li> - </ul> - </li> - <li class="private"> <strong class="uidlink"><a href="scapi.util-module.html" onclick="show_private();">scapi.util</a></strong> </li> - </ul> - </li> -</ul> -<!-- ==================== NAVIGATION BAR ==================== --> -<table class="navbar" border="0" width="100%" cellpadding="0" - bgcolor="#a0c0ff" cellspacing="0"> - <tr valign="middle"> - <!-- Home link --> - <th> <a - href="scapi-module.html">Home</a> </th> - - <!-- Tree link --> - <th bgcolor="#70b0f0" class="navbar-select" - > Trees </th> - - <!-- Index link --> - <th> <a - href="identifier-index.html">Indices</a> </th> - - <!-- Help link --> - <th> <a - href="help.html">Help</a> </th> - - <!-- Project homepage --> - <th class="navbar" align="right" width="100%"> - <table border="0" cellpadding="0" cellspacing="0"> - <tr><th class="navbar" align="center" - >SoundCloud API</th> - </tr></table></th> - </tr> -</table> -<table border="0" cellpadding="0" cellspacing="0" width="100%%"> - <tr> - <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Thu Sep 10 00:58:49 2009 - </td> - <td align="right" class="footer"> - <a target="mainFrame" href="http://epydoc.sourceforge.net" - >http://epydoc.sourceforge.net</a> - </td> - </tr> -</table> - -<script type="text/javascript"> - <!-- - // Private objects are initially displayed (because if - // javascript is turned off then we want them to be - // visible); but by default, we want to hide them. So hide - // them unless we have a cookie that says to show them. - checkCookie(); - // --> -</script> -</body> -</html> diff --git a/python_apps/soundcloud-api/docs/api/redirect.html b/python_apps/soundcloud-api/docs/api/redirect.html deleted file mode 100644 index 8ac436448..000000000 --- a/python_apps/soundcloud-api/docs/api/redirect.html +++ /dev/null @@ -1,38 +0,0 @@ -<html><head><title>Epydoc Redirect Page</title> -<meta http-equiv="cache-control" content="no-cache" /> -<meta http-equiv="expires" content="0" /> -<meta http-equiv="pragma" content="no-cache" /> - <script type="text/javascript" src="epydoc.js"></script> -</head> -<body> -<script type="text/javascript"> -<!-- -var pages = ["scapi.authentication.OAuthSignatureMethod_HMAC_SHA1-c", "scapi.authentication.BasicAuthenticator-c", "scapi.authentication.OAuthAuthenticator-c", "scapi.tests.scapi_tests.SCAPITests-c", "scapi.InvalidMethodException-c", "scapi.json._StringGenerator-c", "exceptions.AssertionError-c", "scapi.NoResultFromRequest-c", "scapi.json.WriteException-c", "scapi.tests.test_connect-m", "scapi.UnknownContentType-c", "scapi.json.ReadException-c", "scapi.tests.scapi_tests-m", "scapi.SCRedirectHandler-c", "scapi.tests.test_oauth-m", "scapi.json.JsonReader-c", "scapi.json.JsonWriter-c", "scapi.authentication-m", "scapi.util.MultiDict-c", "scapi.ApiConnector-c", "scapi.multidict-m", "scapi.Playlist-c", "scapi.RESTBase-c", "scapi.Comment-c", "scapi.config-m", "scapi.tests-m", "scapi.Event-c", "scapi.Group-c", "scapi.Scope-c", "scapi.Track-c", "scapi.json-m", "scapi.util-m", "scapi.User-c", "scapi-m"]; -var dottedName = get_anchor(); -if (dottedName) { - var target = redirect_url(dottedName); - if (target) window.location.replace(target); -} -// --> -</script> - -<h3>Epydoc Auto-redirect page</h3> - -<p>When javascript is enabled, this page will redirect URLs of -the form <tt>redirect.html#<i>dotted.name</i></tt> to the -documentation for the object with the given fully-qualified -dotted name.</p> -<p><a id="message"> </a></p> - -<script type="text/javascript"> -<!-- -if (dottedName) { - var msg = document.getElementById("message"); - msg.innerHTML = "No documentation found for <tt>"+ - dottedName+"</tt>"; -} -// --> -</script> - -</body> -</html> diff --git a/python_apps/soundcloud-api/docs/api/scapi-module.html b/python_apps/soundcloud-api/docs/api/scapi-module.html deleted file mode 100644 index e63c5dac9..000000000 --- a/python_apps/soundcloud-api/docs/api/scapi-module.html +++ /dev/null @@ -1,444 +0,0 @@ -<?xml version="1.0" encoding="ascii"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <title>scapi</title> - <link rel="stylesheet" href="epydoc.css" type="text/css" /> - <script type="text/javascript" src="epydoc.js"></script> -</head> - -<body bgcolor="white" text="black" link="blue" vlink="#204080" - alink="#204080"> -<!-- ==================== NAVIGATION BAR ==================== --> -<table class="navbar" border="0" width="100%" cellpadding="0" - bgcolor="#a0c0ff" cellspacing="0"> - <tr valign="middle"> - <!-- Home link --> - <th bgcolor="#70b0f0" class="navbar-select" - > Home </th> - - <!-- Tree link --> - <th> <a - href="module-tree.html">Trees</a> </th> - - <!-- Index link --> - <th> <a - href="identifier-index.html">Indices</a> </th> - - <!-- Help link --> - <th> <a - href="help.html">Help</a> </th> - - <!-- Project homepage --> - <th class="navbar" align="right" width="100%"> - <table border="0" cellpadding="0" cellspacing="0"> - <tr><th class="navbar" align="center" - >SoundCloud API</th> - </tr></table></th> - </tr> -</table> -<table width="100%" cellpadding="0" cellspacing="0"> - <tr valign="top"> - <td width="100%"> - <span class="breadcrumbs"> - Package scapi - </span> - </td> - <td> - <table cellpadding="0" cellspacing="0"> - <!-- hide/show private --> - <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink" - onclick="toggle_private();">hide private</a>]</span></td></tr> - <tr><td align="right"><span class="options" - >[<a href="frames.html" target="_top">frames</a - >] | <a href="scapi-module.html" - target="_top">no frames</a>]</span></td></tr> - </table> - </td> - </tr> -</table> -<!-- ==================== PACKAGE DESCRIPTION ==================== --> -<h1 class="epydoc">Package scapi</h1><p class="nomargin-top"><span class="codelink"><a href="scapi-pysrc.html">source code</a></span></p> -<!-- ==================== SUBMODULES ==================== --> -<a name="section-Submodules"></a> -<table class="summary" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr bgcolor="#70b0f0" class="table-header"> - <td colspan="2" class="table-header"> - <table border="0" cellpadding="0" cellspacing="0" width="100%"> - <tr valign="top"> - <td align="left"><span class="table-header">Submodules</span></td> - <td align="right" valign="top" - ><span class="options">[<a href="#section-Submodules" - class="privatelink" onclick="toggle_private();" - >hide private</a>]</span></td> - </tr> - </table> - </td> -</tr> - <tr><td class="summary"> - <ul class="nomargin"> - <li class="private"> <strong class="uidlink"><a href="scapi.authentication-module.html" onclick="show_private();">scapi.authentication</a></strong> </li> - <li> <strong class="uidlink"><a href="scapi.config-module.html">scapi.config</a></strong> </li> - <li> <strong class="uidlink"><a href="scapi.json-module.html">scapi.json</a></strong> </li> - <li> <strong class="uidlink"><a href="scapi.multidict-module.html">scapi.multidict</a></strong> </li> - <li> <strong class="uidlink"><a href="scapi.tests-module.html">scapi.tests</a></strong> - <ul> - <li> <strong class="uidlink"><a href="scapi.tests.scapi_tests-module.html">scapi.tests.scapi_tests</a></strong> </li> - <li> <strong class="uidlink"><a href="scapi.tests.test_connect-module.html">scapi.tests.test_connect</a></strong> </li> - <li> <strong class="uidlink"><a href="scapi.tests.test_oauth-module.html">scapi.tests.test_oauth</a></strong> </li> - </ul> - </li> - <li class="private"> <strong class="uidlink"><a href="scapi.util-module.html" onclick="show_private();">scapi.util</a></strong> </li> - </ul></td></tr> -</table> - -<br /> -<!-- ==================== CLASSES ==================== --> -<a name="section-Classes"></a> -<table class="summary" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr bgcolor="#70b0f0" class="table-header"> - <td colspan="2" class="table-header"> - <table border="0" cellpadding="0" cellspacing="0" width="100%"> - <tr valign="top"> - <td align="left"><span class="table-header">Classes</span></td> - <td align="right" valign="top" - ><span class="options">[<a href="#section-Classes" - class="privatelink" onclick="toggle_private();" - >hide private</a>]</span></td> - </tr> - </table> - </td> -</tr> -<tr class="private"> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <a href="scapi.ApiConnector-class.html" class="summary-name" onclick="show_private();">ApiConnector</a><br /> - The ApiConnector holds all the data necessary to authenticate - against the soundcloud-api. - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <a href="scapi.Comment-class.html" class="summary-name">Comment</a><br /> - A comment domain object/resource. - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <a href="scapi.Event-class.html" class="summary-name">Event</a><br /> - A event domain object/resource. - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <a href="scapi.Group-class.html" class="summary-name">Group</a><br /> - A group domain object/resource - </td> - </tr> -<tr class="private"> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <a href="scapi.InvalidMethodException-class.html" class="summary-name" onclick="show_private();">InvalidMethodException</a> - </td> - </tr> -<tr class="private"> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <a href="scapi.NoResultFromRequest-class.html" class="summary-name" onclick="show_private();">NoResultFromRequest</a> - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <a href="scapi.Playlist-class.html" class="summary-name">Playlist</a><br /> - A playlist/set domain object/resource - </td> - </tr> -<tr class="private"> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <a href="scapi.RESTBase-class.html" class="summary-name" onclick="show_private();">RESTBase</a><br /> - The baseclass for all our domain-objects/resources. - </td> - </tr> -<tr class="private"> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <a href="scapi.SCRedirectHandler-class.html" class="summary-name" onclick="show_private();">SCRedirectHandler</a><br /> - A urllib2-Handler to deal with the redirects the RESTful API of SC - uses. - </td> - </tr> -<tr class="private"> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <a href="scapi.Scope-class.html" class="summary-name" onclick="show_private();">Scope</a><br /> - The basic means to query and create resources. - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <a href="scapi.Track-class.html" class="summary-name">Track</a><br /> - A track domain object/resource. - </td> - </tr> -<tr class="private"> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <a href="scapi.UnknownContentType-class.html" class="summary-name" onclick="show_private();">UnknownContentType</a> - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <a href="scapi.User-class.html" class="summary-name">User</a><br /> - A user domain object/resource. - </td> - </tr> -</table> -<!-- ==================== FUNCTIONS ==================== --> -<a name="section-Functions"></a> -<table class="summary" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr bgcolor="#70b0f0" class="table-header"> - <td colspan="2" class="table-header"> - <table border="0" cellpadding="0" cellspacing="0" width="100%"> - <tr valign="top"> - <td align="left"><span class="table-header">Functions</span></td> - <td align="right" valign="top" - ><span class="options">[<a href="#section-Functions" - class="privatelink" onclick="toggle_private();" - >hide private</a>]</span></td> - </tr> - </table> - </td> -</tr> -<tr class="private"> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a name="register_classes"></a><span class="summary-sig-name">register_classes</span>()</span></td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi-pysrc.html#register_classes">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> -</table> -<!-- ==================== VARIABLES ==================== --> -<a name="section-Variables"></a> -<table class="summary" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr bgcolor="#70b0f0" class="table-header"> - <td colspan="2" class="table-header"> - <table border="0" cellpadding="0" cellspacing="0" width="100%"> - <tr valign="top"> - <td align="left"><span class="table-header">Variables</span></td> - <td align="right" valign="top" - ><span class="options">[<a href="#section-Variables" - class="privatelink" onclick="toggle_private();" - >hide private</a>]</span></td> - </tr> - </table> - </td> -</tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <a href="scapi-module.html#ACCESS_TOKEN_URL" class="summary-name">ACCESS_TOKEN_URL</a> = <code title="'http://api.soundcloud.com/oauth/access_token'"><code class="variable-quote">'</code><code class="variable-string">http://api.soundcloud.com/oauth/ac</code><code class="variable-ellipsis">...</code></code><br /> - The url Soundcould offers to make users authorize a concrete request - token. - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <a href="scapi-module.html#AUTHORIZATION_URL" class="summary-name">AUTHORIZATION_URL</a> = <code title="'http://api.soundcloud.com/oauth/authorize'"><code class="variable-quote">'</code><code class="variable-string">http://api.soundcloud.com/oauth/a</code><code class="variable-ellipsis">...</code></code> - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <a name="PROXY"></a><span class="summary-name">PROXY</span> = <code title="''"><code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code></code><br /> - The url Soundcould offers to obtain request-tokens - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <a href="scapi-module.html#REQUEST_TOKEN_URL" class="summary-name">REQUEST_TOKEN_URL</a> = <code title="'http://api.soundcloud.com/oauth/request_token'"><code class="variable-quote">'</code><code class="variable-string">http://api.soundcloud.com/oauth/r</code><code class="variable-ellipsis">...</code></code><br /> - The url Soundcould offers to exchange access-tokens for - request-tokens. - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <a name="USE_PROXY"></a><span class="summary-name">USE_PROXY</span> = <code title="False">False</code><br /> - Something like http://127.0.0.1:10000/ - </td> - </tr> -<tr class="private"> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <a name="logger"></a><span class="summary-name">logger</span> = <code title="logging.getLogger("scapi")">logging.getLogger("scapi")</code> - </td> - </tr> -</table> -<!-- ==================== VARIABLES DETAILS ==================== --> -<a name="section-VariablesDetails"></a> -<table class="details" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr bgcolor="#70b0f0" class="table-header"> - <td colspan="2" class="table-header"> - <table border="0" cellpadding="0" cellspacing="0" width="100%"> - <tr valign="top"> - <td align="left"><span class="table-header">Variables Details</span></td> - <td align="right" valign="top" - ><span class="options">[<a href="#section-VariablesDetails" - class="privatelink" onclick="toggle_private();" - >hide private</a>]</span></td> - </tr> - </table> - </td> -</tr> -</table> -<a name="ACCESS_TOKEN_URL"></a> -<div> -<table class="details" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr><td> - <h3 class="epydoc">ACCESS_TOKEN_URL</h3> - <p>The url Soundcould offers to make users authorize a concrete request - token.</p> - <dl class="fields"> - </dl> - <dl class="fields"> - <dt>Value:</dt> - <dd><table><tr><td><pre class="variable"> -<code class="variable-quote">'</code><code class="variable-string">http://api.soundcloud.com/oauth/access_token</code><code class="variable-quote">'</code> -</pre></td></tr></table> -</dd> - </dl> -</td></tr></table> -</div> -<a name="AUTHORIZATION_URL"></a> -<div> -<table class="details" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr><td> - <h3 class="epydoc">AUTHORIZATION_URL</h3> - - <dl class="fields"> - </dl> - <dl class="fields"> - <dt>Value:</dt> - <dd><table><tr><td><pre class="variable"> -<code class="variable-quote">'</code><code class="variable-string">http://api.soundcloud.com/oauth/authorize</code><code class="variable-quote">'</code> -</pre></td></tr></table> -</dd> - </dl> -</td></tr></table> -</div> -<a name="REQUEST_TOKEN_URL"></a> -<div> -<table class="details" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr><td> - <h3 class="epydoc">REQUEST_TOKEN_URL</h3> - <p>The url Soundcould offers to exchange access-tokens for - request-tokens.</p> - <dl class="fields"> - </dl> - <dl class="fields"> - <dt>Value:</dt> - <dd><table><tr><td><pre class="variable"> -<code class="variable-quote">'</code><code class="variable-string">http://api.soundcloud.com/oauth/request_token</code><code class="variable-quote">'</code> -</pre></td></tr></table> -</dd> - </dl> -</td></tr></table> -</div> -<br /> -<!-- ==================== NAVIGATION BAR ==================== --> -<table class="navbar" border="0" width="100%" cellpadding="0" - bgcolor="#a0c0ff" cellspacing="0"> - <tr valign="middle"> - <!-- Home link --> - <th bgcolor="#70b0f0" class="navbar-select" - > Home </th> - - <!-- Tree link --> - <th> <a - href="module-tree.html">Trees</a> </th> - - <!-- Index link --> - <th> <a - href="identifier-index.html">Indices</a> </th> - - <!-- Help link --> - <th> <a - href="help.html">Help</a> </th> - - <!-- Project homepage --> - <th class="navbar" align="right" width="100%"> - <table border="0" cellpadding="0" cellspacing="0"> - <tr><th class="navbar" align="center" - >SoundCloud API</th> - </tr></table></th> - </tr> -</table> -<table border="0" cellpadding="0" cellspacing="0" width="100%%"> - <tr> - <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Thu Sep 10 00:58:49 2009 - </td> - <td align="right" class="footer"> - <a target="mainFrame" href="http://epydoc.sourceforge.net" - >http://epydoc.sourceforge.net</a> - </td> - </tr> -</table> - -<script type="text/javascript"> - <!-- - // Private objects are initially displayed (because if - // javascript is turned off then we want them to be - // visible); but by default, we want to hide them. So hide - // them unless we have a cookie that says to show them. - checkCookie(); - // --> -</script> -</body> -</html> diff --git a/python_apps/soundcloud-api/docs/api/scapi-pysrc.html b/python_apps/soundcloud-api/docs/api/scapi-pysrc.html deleted file mode 100644 index 73d83533b..000000000 --- a/python_apps/soundcloud-api/docs/api/scapi-pysrc.html +++ /dev/null @@ -1,1263 +0,0 @@ -<?xml version="1.0" encoding="ascii"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <title>scapi</title> - <link rel="stylesheet" href="epydoc.css" type="text/css" /> - <script type="text/javascript" src="epydoc.js"></script> -</head> - -<body bgcolor="white" text="black" link="blue" vlink="#204080" - alink="#204080"> -<!-- ==================== NAVIGATION BAR ==================== --> -<table class="navbar" border="0" width="100%" cellpadding="0" - bgcolor="#a0c0ff" cellspacing="0"> - <tr valign="middle"> - <!-- Home link --> - <th bgcolor="#70b0f0" class="navbar-select" - > Home </th> - - <!-- Tree link --> - <th> <a - href="module-tree.html">Trees</a> </th> - - <!-- Index link --> - <th> <a - href="identifier-index.html">Indices</a> </th> - - <!-- Help link --> - <th> <a - href="help.html">Help</a> </th> - - <!-- Project homepage --> - <th class="navbar" align="right" width="100%"> - <table border="0" cellpadding="0" cellspacing="0"> - <tr><th class="navbar" align="center" - >SoundCloud API</th> - </tr></table></th> - </tr> -</table> -<table width="100%" cellpadding="0" cellspacing="0"> - <tr valign="top"> - <td width="100%"> - <span class="breadcrumbs"> - Package scapi - </span> - </td> - <td> - <table cellpadding="0" cellspacing="0"> - <!-- hide/show private --> - <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink" - onclick="toggle_private();">hide private</a>]</span></td></tr> - <tr><td align="right"><span class="options" - >[<a href="frames.html" target="_top">frames</a - >] | <a href="scapi-pysrc.html" - target="_top">no frames</a>]</span></td></tr> - </table> - </td> - </tr> -</table> -<h1 class="epydoc">Source Code for <a href="scapi-module.html">Package scapi</a></h1> -<pre class="py-src"> -<a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-comment">## SouncCloudAPI implements a Python wrapper around the SoundCloud RESTful</tt> </tt> -<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## API</tt> </tt> -<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">##</tt> </tt> -<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## Copyright (C) 2008 Diez B. Roggisch</tt> </tt> -<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## Contact mailto:deets@soundcloud.com</tt> </tt> -<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">##</tt> </tt> -<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## This library is free software; you can redistribute it and/or</tt> </tt> -<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## modify it under the terms of the GNU Lesser General Public</tt> </tt> -<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## License as published by the Free Software Foundation; either</tt> </tt> -<a name="L10"></a><tt class="py-lineno"> 10</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## version 2.1 of the License, or (at your option) any later version.</tt> </tt> -<a name="L11"></a><tt class="py-lineno"> 11</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">##</tt> </tt> -<a name="L12"></a><tt class="py-lineno"> 12</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## This library is distributed in the hope that it will be useful,</tt> </tt> -<a name="L13"></a><tt class="py-lineno"> 13</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## but WITHOUT ANY WARRANTY; without even the implied warranty of</tt> </tt> -<a name="L14"></a><tt class="py-lineno"> 14</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</tt> </tt> -<a name="L15"></a><tt class="py-lineno"> 15</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## Lesser General Public License for more details.</tt> </tt> -<a name="L16"></a><tt class="py-lineno"> 16</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">##</tt> </tt> -<a name="L17"></a><tt class="py-lineno"> 17</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## You should have received a copy of the GNU Lesser General Public</tt> </tt> -<a name="L18"></a><tt class="py-lineno"> 18</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## License along with this library; if not, write to the Free Software</tt> </tt> -<a name="L19"></a><tt class="py-lineno"> 19</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA</tt> </tt> -<a name="L20"></a><tt class="py-lineno"> 20</tt> <tt class="py-line"><tt class="py-comment"></tt> </tt> -<a name="L21"></a><tt class="py-lineno"> 21</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">urllib</tt> </tt> -<a name="L22"></a><tt class="py-lineno"> 22</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">urllib2</tt> </tt> -<a name="L23"></a><tt class="py-lineno"> 23</tt> <tt class="py-line"> </tt> -<a name="L24"></a><tt class="py-lineno"> 24</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">logging</tt> </tt> -<a name="L25"></a><tt class="py-lineno"> 25</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">simplejson</tt> </tt> -<a name="L26"></a><tt class="py-lineno"> 26</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">cgi</tt> </tt> -<a name="L27"></a><tt class="py-lineno"> 27</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-0" class="py-name" targets="Package scapi=scapi-module.html"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-0', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt class="py-name">MultipartPostHandler</tt> <tt class="py-keyword">import</tt> <tt class="py-name">MultipartPostHandler</tt> </tt> -<a name="L28"></a><tt class="py-lineno"> 28</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt class="py-name">inspect</tt> <tt class="py-keyword">import</tt> <tt class="py-name">isclass</tt> </tt> -<a name="L29"></a><tt class="py-lineno"> 29</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">urlparse</tt> </tt> -<a name="L30"></a><tt class="py-lineno"> 30</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-1" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-1', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-2" class="py-name" targets="Module scapi.authentication=scapi.authentication-module.html"><a title="scapi.authentication" class="py-name" href="#" onclick="return doclink('link-2', 'authentication', 'link-2');">authentication</a></tt> <tt class="py-keyword">import</tt> <tt id="link-3" class="py-name" targets="Class scapi.authentication.BasicAuthenticator=scapi.authentication.BasicAuthenticator-class.html"><a title="scapi.authentication.BasicAuthenticator" class="py-name" href="#" onclick="return doclink('link-3', 'BasicAuthenticator', 'link-3');">BasicAuthenticator</a></tt> </tt> -<a name="L31"></a><tt class="py-lineno"> 31</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-4" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-4', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-5" class="py-name" targets="Module scapi.util=scapi.util-module.html"><a title="scapi.util" class="py-name" href="#" onclick="return doclink('link-5', 'util', 'link-5');">util</a></tt> <tt class="py-keyword">import</tt> <tt class="py-op">(</tt> </tt> -<a name="L32"></a><tt class="py-lineno"> 32</tt> <tt class="py-line"> <tt id="link-6" class="py-name" targets="Function scapi.util.escape()=scapi.util-module.html#escape"><a title="scapi.util.escape" class="py-name" href="#" onclick="return doclink('link-6', 'escape', 'link-6');">escape</a></tt><tt class="py-op">,</tt> </tt> -<a name="L33"></a><tt class="py-lineno"> 33</tt> <tt class="py-line"> <tt id="link-7" class="py-name" targets="Class scapi.util.MultiDict=scapi.util.MultiDict-class.html"><a title="scapi.util.MultiDict" class="py-name" href="#" onclick="return doclink('link-7', 'MultiDict', 'link-7');">MultiDict</a></tt><tt class="py-op">,</tt> </tt> -<a name="L34"></a><tt class="py-lineno"> 34</tt> <tt class="py-line"> <tt class="py-op">)</tt> </tt> -<a name="L35"></a><tt class="py-lineno"> 35</tt> <tt class="py-line"> </tt> -<a name="L36"></a><tt class="py-lineno"> 36</tt> <tt class="py-line"><tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">basicConfig</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L37"></a><tt class="py-lineno"> 37</tt> <tt class="py-line"><tt id="link-8" class="py-name" targets="Variable scapi.authentication.logger=scapi.authentication-module.html#logger,Variable scapi.logger=scapi-module.html#logger,Variable scapi.tests.scapi_tests.logger=scapi.tests.scapi_tests-module.html#logger,Variable scapi.tests.test_connect.logger=scapi.tests.test_connect-module.html#logger,Variable scapi.tests.test_oauth.logger=scapi.tests.test_oauth-module.html#logger"><a title="scapi.authentication.logger -scapi.logger -scapi.tests.scapi_tests.logger -scapi.tests.test_connect.logger -scapi.tests.test_oauth.logger" class="py-name" href="#" onclick="return doclink('link-8', 'logger', 'link-8');">logger</a></tt> <tt class="py-op">=</tt> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">getLogger</tt><tt class="py-op">(</tt><tt class="py-name">__name__</tt><tt class="py-op">)</tt> </tt> -<a name="L38"></a><tt class="py-lineno"> 38</tt> <tt class="py-line"> </tt> -<a name="L39"></a><tt class="py-lineno"> 39</tt> <tt class="py-line"><tt id="link-9" class="py-name" targets="Variable scapi.USE_PROXY=scapi-module.html#USE_PROXY"><a title="scapi.USE_PROXY" class="py-name" href="#" onclick="return doclink('link-9', 'USE_PROXY', 'link-9');">USE_PROXY</a></tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt> -<a name="L40"></a><tt class="py-lineno"> 40</tt> <tt class="py-line"><tt class="py-string">"""</tt> </tt> -<a name="L41"></a><tt class="py-lineno"> 41</tt> <tt class="py-line"><tt class="py-string">Something like http://127.0.0.1:10000/</tt> </tt> -<a name="L42"></a><tt class="py-lineno"> 42</tt> <tt class="py-line"><tt class="py-string">"""</tt> </tt> -<a name="L43"></a><tt class="py-lineno"> 43</tt> <tt class="py-line"><tt id="link-10" class="py-name" targets="Variable scapi.PROXY=scapi-module.html#PROXY"><a title="scapi.PROXY" class="py-name" href="#" onclick="return doclink('link-10', 'PROXY', 'link-10');">PROXY</a></tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt> </tt> -<a name="L44"></a><tt class="py-lineno"> 44</tt> <tt class="py-line"> </tt> -<a name="L45"></a><tt class="py-lineno"> 45</tt> <tt class="py-line"> </tt> -<a name="L46"></a><tt class="py-lineno"> 46</tt> <tt class="py-line"> </tt> -<a name="L47"></a><tt class="py-lineno"> 47</tt> <tt class="py-line"><tt class="py-string">"""</tt> </tt> -<a name="L48"></a><tt class="py-lineno"> 48</tt> <tt class="py-line"><tt class="py-string">The url Soundcould offers to obtain request-tokens</tt> </tt> -<a name="L49"></a><tt class="py-lineno"> 49</tt> <tt class="py-line"><tt class="py-string">"""</tt> </tt> -<a name="L50"></a><tt class="py-lineno"> 50</tt> <tt class="py-line"><tt id="link-11" class="py-name" targets="Variable scapi.REQUEST_TOKEN_URL=scapi-module.html#REQUEST_TOKEN_URL"><a title="scapi.REQUEST_TOKEN_URL" class="py-name" href="#" onclick="return doclink('link-11', 'REQUEST_TOKEN_URL', 'link-11');">REQUEST_TOKEN_URL</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'http://api.soundcloud.com/oauth/request_token'</tt> </tt> -<a name="L51"></a><tt class="py-lineno"> 51</tt> <tt class="py-line"><tt class="py-string">"""</tt> </tt> -<a name="L52"></a><tt class="py-lineno"> 52</tt> <tt class="py-line"><tt class="py-string">The url Soundcould offers to exchange access-tokens for request-tokens.</tt> </tt> -<a name="L53"></a><tt class="py-lineno"> 53</tt> <tt class="py-line"><tt class="py-string">"""</tt> </tt> -<a name="L54"></a><tt class="py-lineno"> 54</tt> <tt class="py-line"><tt id="link-12" class="py-name" targets="Variable scapi.ACCESS_TOKEN_URL=scapi-module.html#ACCESS_TOKEN_URL"><a title="scapi.ACCESS_TOKEN_URL" class="py-name" href="#" onclick="return doclink('link-12', 'ACCESS_TOKEN_URL', 'link-12');">ACCESS_TOKEN_URL</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'http://api.soundcloud.com/oauth/access_token'</tt> </tt> -<a name="L55"></a><tt class="py-lineno"> 55</tt> <tt class="py-line"><tt class="py-string">"""</tt> </tt> -<a name="L56"></a><tt class="py-lineno"> 56</tt> <tt class="py-line"><tt class="py-string">The url Soundcould offers to make users authorize a concrete request token.</tt> </tt> -<a name="L57"></a><tt class="py-lineno"> 57</tt> <tt class="py-line"><tt class="py-string">"""</tt> </tt> -<a name="L58"></a><tt class="py-lineno"> 58</tt> <tt class="py-line"><tt id="link-13" class="py-name" targets="Variable scapi.AUTHORIZATION_URL=scapi-module.html#AUTHORIZATION_URL"><a title="scapi.AUTHORIZATION_URL" class="py-name" href="#" onclick="return doclink('link-13', 'AUTHORIZATION_URL', 'link-13');">AUTHORIZATION_URL</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'http://api.soundcloud.com/oauth/authorize'</tt> </tt> -<a name="L59"></a><tt class="py-lineno"> 59</tt> <tt class="py-line"> </tt> -<a name="L60"></a><tt class="py-lineno"> 60</tt> <tt class="py-line"><tt class="py-name">__all__</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-string">'SoundCloudAPI'</tt><tt class="py-op">,</tt> <tt class="py-string">'USE_PROXY'</tt><tt class="py-op">,</tt> <tt class="py-string">'PROXY'</tt><tt class="py-op">,</tt> <tt class="py-string">'REQUEST_TOKEN_URL'</tt><tt class="py-op">,</tt> <tt class="py-string">'ACCESS_TOKEN_URL'</tt><tt class="py-op">,</tt> <tt class="py-string">'AUTHORIZATION_URL'</tt><tt class="py-op">]</tt> </tt> -<a name="NoResultFromRequest"></a><div id="NoResultFromRequest-def"><a name="L61"></a><tt class="py-lineno"> 61</tt> <tt class="py-line"> </tt> -<a name="L62"></a><tt class="py-lineno"> 62</tt> <tt class="py-line"> </tt> -<a name="L63"></a><tt class="py-lineno"> 63</tt> <a class="py-toggle" href="#" id="NoResultFromRequest-toggle" onclick="return toggle('NoResultFromRequest');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="scapi.NoResultFromRequest-class.html">NoResultFromRequest</a><tt class="py-op">(</tt><tt class="py-base-class">Exception</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="NoResultFromRequest-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="NoResultFromRequest-expanded"><a name="L64"></a><tt class="py-lineno"> 64</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt> -</div><a name="L65"></a><tt class="py-lineno"> 65</tt> <tt class="py-line"> </tt> -<a name="InvalidMethodException"></a><div id="InvalidMethodException-def"><a name="L66"></a><tt class="py-lineno"> 66</tt> <a class="py-toggle" href="#" id="InvalidMethodException-toggle" onclick="return toggle('InvalidMethodException');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="scapi.InvalidMethodException-class.html">InvalidMethodException</a><tt class="py-op">(</tt><tt class="py-base-class">Exception</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="InvalidMethodException-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="InvalidMethodException-expanded"><a name="L67"></a><tt class="py-lineno"> 67</tt> <tt class="py-line"> </tt> -<a name="InvalidMethodException.__init__"></a><div id="InvalidMethodException.__init__-def"><a name="L68"></a><tt class="py-lineno"> 68</tt> <a class="py-toggle" href="#" id="InvalidMethodException.__init__-toggle" onclick="return toggle('InvalidMethodException.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.InvalidMethodException-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">message</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="InvalidMethodException.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="InvalidMethodException.__init__-expanded"><a name="L69"></a><tt class="py-lineno"> 69</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_message</tt> <tt class="py-op">=</tt> <tt class="py-name">message</tt> </tt> -<a name="L70"></a><tt class="py-lineno"> 70</tt> <tt class="py-line"> <tt class="py-name">Exception</tt><tt class="py-op">.</tt><tt id="link-14" class="py-name" targets="Method scapi.ApiConnector.__init__()=scapi.ApiConnector-class.html#__init__,Method scapi.InvalidMethodException.__init__()=scapi.InvalidMethodException-class.html#__init__,Method scapi.RESTBase.__init__()=scapi.RESTBase-class.html#__init__,Method scapi.Scope.__init__()=scapi.Scope-class.html#__init__,Method scapi.UnknownContentType.__init__()=scapi.UnknownContentType-class.html#__init__,Method scapi.authentication.BasicAuthenticator.__init__()=scapi.authentication.BasicAuthenticator-class.html#__init__,Method scapi.authentication.OAuthAuthenticator.__init__()=scapi.authentication.OAuthAuthenticator-class.html#__init__,Method scapi.json._StringGenerator.__init__()=scapi.json._StringGenerator-class.html#__init__"><a title="scapi.ApiConnector.__init__ -scapi.InvalidMethodException.__init__ -scapi.RESTBase.__init__ -scapi.Scope.__init__ -scapi.UnknownContentType.__init__ -scapi.authentication.BasicAuthenticator.__init__ -scapi.authentication.OAuthAuthenticator.__init__ -scapi.json._StringGenerator.__init__" class="py-name" href="#" onclick="return doclink('link-14', '__init__', 'link-14');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt> -</div><a name="L71"></a><tt class="py-lineno"> 71</tt> <tt class="py-line"> </tt> -<a name="InvalidMethodException.__repr__"></a><div id="InvalidMethodException.__repr__-def"><a name="L72"></a><tt class="py-lineno"> 72</tt> <a class="py-toggle" href="#" id="InvalidMethodException.__repr__-toggle" onclick="return toggle('InvalidMethodException.__repr__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.InvalidMethodException-class.html#__repr__">__repr__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="InvalidMethodException.__repr__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="InvalidMethodException.__repr__-expanded"><a name="L73"></a><tt class="py-lineno"> 73</tt> <tt class="py-line"> <tt class="py-name">res</tt> <tt class="py-op">=</tt> <tt class="py-name">Exception</tt><tt class="py-op">.</tt><tt id="link-15" class="py-name" targets="Method scapi.InvalidMethodException.__repr__()=scapi.InvalidMethodException-class.html#__repr__,Method scapi.RESTBase.__repr__()=scapi.RESTBase-class.html#__repr__,Method scapi.Scope.__repr__()=scapi.Scope-class.html#__repr__,Method scapi.UnknownContentType.__repr__()=scapi.UnknownContentType-class.html#__repr__"><a title="scapi.InvalidMethodException.__repr__ -scapi.RESTBase.__repr__ -scapi.Scope.__repr__ -scapi.UnknownContentType.__repr__" class="py-name" href="#" onclick="return doclink('link-15', '__repr__', 'link-15');">__repr__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt> -<a name="L74"></a><tt class="py-lineno"> 74</tt> <tt class="py-line"> <tt class="py-name">res</tt> <tt class="py-op">+=</tt> <tt class="py-string">"\n"</tt> </tt> -<a name="L75"></a><tt class="py-lineno"> 75</tt> <tt class="py-line"> <tt class="py-name">res</tt> <tt class="py-op">+=</tt> <tt class="py-string">"-"</tt> <tt class="py-op">*</tt> <tt class="py-number">10</tt> </tt> -<a name="L76"></a><tt class="py-lineno"> 76</tt> <tt class="py-line"> <tt class="py-name">res</tt> <tt class="py-op">+=</tt> <tt class="py-string">"\nmessage:\n\n"</tt> </tt> -<a name="L77"></a><tt class="py-lineno"> 77</tt> <tt class="py-line"> <tt class="py-name">res</tt> <tt class="py-op">+=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_message</tt> </tt> -<a name="L78"></a><tt class="py-lineno"> 78</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">res</tt> </tt> -</div></div><a name="L79"></a><tt class="py-lineno"> 79</tt> <tt class="py-line"> </tt> -<a name="UnknownContentType"></a><div id="UnknownContentType-def"><a name="L80"></a><tt class="py-lineno"> 80</tt> <a class="py-toggle" href="#" id="UnknownContentType-toggle" onclick="return toggle('UnknownContentType');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="scapi.UnknownContentType-class.html">UnknownContentType</a><tt class="py-op">(</tt><tt class="py-base-class">Exception</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="UnknownContentType-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="UnknownContentType-expanded"><a name="UnknownContentType.__init__"></a><div id="UnknownContentType.__init__-def"><a name="L81"></a><tt class="py-lineno"> 81</tt> <a class="py-toggle" href="#" id="UnknownContentType.__init__-toggle" onclick="return toggle('UnknownContentType.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.UnknownContentType-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">msg</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="UnknownContentType.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="UnknownContentType.__init__-expanded"><a name="L82"></a><tt class="py-lineno"> 82</tt> <tt class="py-line"> <tt class="py-name">Exception</tt><tt class="py-op">.</tt><tt id="link-16" class="py-name"><a title="scapi.ApiConnector.__init__ -scapi.InvalidMethodException.__init__ -scapi.RESTBase.__init__ -scapi.Scope.__init__ -scapi.UnknownContentType.__init__ -scapi.authentication.BasicAuthenticator.__init__ -scapi.authentication.OAuthAuthenticator.__init__ -scapi.json._StringGenerator.__init__" class="py-name" href="#" onclick="return doclink('link-16', '__init__', 'link-14');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt> -<a name="L83"></a><tt class="py-lineno"> 83</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_msg</tt> <tt class="py-op">=</tt> <tt class="py-name">msg</tt> </tt> -</div><a name="L84"></a><tt class="py-lineno"> 84</tt> <tt class="py-line"> </tt> -<a name="UnknownContentType.__repr__"></a><div id="UnknownContentType.__repr__-def"><a name="L85"></a><tt class="py-lineno"> 85</tt> <a class="py-toggle" href="#" id="UnknownContentType.__repr__-toggle" onclick="return toggle('UnknownContentType.__repr__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.UnknownContentType-class.html#__repr__">__repr__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="UnknownContentType.__repr__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="UnknownContentType.__repr__-expanded"><a name="L86"></a><tt class="py-lineno"> 86</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt><tt class="py-op">.</tt><tt class="py-name">__name__</tt> <tt class="py-op">+</tt> <tt class="py-string">":"</tt> <tt class="py-op">+</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_msg</tt> </tt> -</div><a name="L87"></a><tt class="py-lineno"> 87</tt> <tt class="py-line"> </tt> -<a name="UnknownContentType.__str__"></a><div id="UnknownContentType.__str__-def"><a name="L88"></a><tt class="py-lineno"> 88</tt> <a class="py-toggle" href="#" id="UnknownContentType.__str__-toggle" onclick="return toggle('UnknownContentType.__str__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.UnknownContentType-class.html#__str__">__str__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="UnknownContentType.__str__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="UnknownContentType.__str__-expanded"><a name="L89"></a><tt class="py-lineno"> 89</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt> -</div></div><a name="L90"></a><tt class="py-lineno"> 90</tt> <tt class="py-line"> </tt> -<a name="ApiConnector"></a><div id="ApiConnector-def"><a name="L91"></a><tt class="py-lineno"> 91</tt> <tt class="py-line"> </tt> -<a name="L92"></a><tt class="py-lineno"> 92</tt> <a class="py-toggle" href="#" id="ApiConnector-toggle" onclick="return toggle('ApiConnector');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="scapi.ApiConnector-class.html">ApiConnector</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="ApiConnector-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="ApiConnector-expanded"><a name="L93"></a><tt class="py-lineno"> 93</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L94"></a><tt class="py-lineno"> 94</tt> <tt class="py-line"><tt class="py-docstring"> The ApiConnector holds all the data necessary to authenticate against</tt> </tt> -<a name="L95"></a><tt class="py-lineno"> 95</tt> <tt class="py-line"><tt class="py-docstring"> the soundcloud-api. You can instantiate several connectors if you like, but usually one </tt> </tt> -<a name="L96"></a><tt class="py-lineno"> 96</tt> <tt class="py-line"><tt class="py-docstring"> should be sufficient.</tt> </tt> -<a name="L97"></a><tt class="py-lineno"> 97</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L98"></a><tt class="py-lineno"> 98</tt> <tt class="py-line"> </tt> -<a name="L99"></a><tt class="py-lineno"> 99</tt> <tt class="py-line"> <tt class="py-string">"""</tt> </tt> -<a name="L100"></a><tt class="py-lineno">100</tt> <tt class="py-line"><tt class="py-string"> SoundClound imposes a maximum on the number of returned items. This value is that</tt> </tt> -<a name="L101"></a><tt class="py-lineno">101</tt> <tt class="py-line"><tt class="py-string"> maximum.</tt> </tt> -<a name="L102"></a><tt class="py-lineno">102</tt> <tt class="py-line"><tt class="py-string"> """</tt> </tt> -<a name="L103"></a><tt class="py-lineno">103</tt> <tt class="py-line"> <tt id="link-17" class="py-name" targets="Variable scapi.ApiConnector.LIST_LIMIT=scapi.ApiConnector-class.html#LIST_LIMIT"><a title="scapi.ApiConnector.LIST_LIMIT" class="py-name" href="#" onclick="return doclink('link-17', 'LIST_LIMIT', 'link-17');">LIST_LIMIT</a></tt> <tt class="py-op">=</tt> <tt class="py-number">50</tt> </tt> -<a name="L104"></a><tt class="py-lineno">104</tt> <tt class="py-line"> </tt> -<a name="L105"></a><tt class="py-lineno">105</tt> <tt class="py-line"> <tt class="py-string">"""</tt> </tt> -<a name="L106"></a><tt class="py-lineno">106</tt> <tt class="py-line"><tt class="py-string"> The query-parameter that is used to request results beginning from a certain offset.</tt> </tt> -<a name="L107"></a><tt class="py-lineno">107</tt> <tt class="py-line"><tt class="py-string"> """</tt> </tt> -<a name="L108"></a><tt class="py-lineno">108</tt> <tt class="py-line"> <tt id="link-18" class="py-name" targets="Variable scapi.ApiConnector.LIST_OFFSET_PARAMETER=scapi.ApiConnector-class.html#LIST_OFFSET_PARAMETER"><a title="scapi.ApiConnector.LIST_OFFSET_PARAMETER" class="py-name" href="#" onclick="return doclink('link-18', 'LIST_OFFSET_PARAMETER', 'link-18');">LIST_OFFSET_PARAMETER</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'offset'</tt> </tt> -<a name="L109"></a><tt class="py-lineno">109</tt> <tt class="py-line"> <tt class="py-string">"""</tt> </tt> -<a name="L110"></a><tt class="py-lineno">110</tt> <tt class="py-line"><tt class="py-string"> The query-parameter that is used to request results being limited to a certain amount.</tt> </tt> -<a name="L111"></a><tt class="py-lineno">111</tt> <tt class="py-line"><tt class="py-string"> </tt> </tt> -<a name="L112"></a><tt class="py-lineno">112</tt> <tt class="py-line"><tt class="py-string"> Currently this is of no use and just for completeness sake.</tt> </tt> -<a name="L113"></a><tt class="py-lineno">113</tt> <tt class="py-line"><tt class="py-string"> """</tt> </tt> -<a name="L114"></a><tt class="py-lineno">114</tt> <tt class="py-line"> <tt id="link-19" class="py-name" targets="Variable scapi.ApiConnector.LIST_LIMIT_PARAMETER=scapi.ApiConnector-class.html#LIST_LIMIT_PARAMETER"><a title="scapi.ApiConnector.LIST_LIMIT_PARAMETER" class="py-name" href="#" onclick="return doclink('link-19', 'LIST_LIMIT_PARAMETER', 'link-19');">LIST_LIMIT_PARAMETER</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'limit'</tt> </tt> -<a name="L115"></a><tt class="py-lineno">115</tt> <tt class="py-line"> </tt> -<a name="ApiConnector.__init__"></a><div id="ApiConnector.__init__-def"><a name="L116"></a><tt class="py-lineno">116</tt> <a class="py-toggle" href="#" id="ApiConnector.__init__-toggle" onclick="return toggle('ApiConnector.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.ApiConnector-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">host</tt><tt class="py-op">,</tt> <tt class="py-param">user</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">password</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">authenticator</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">base</tt><tt class="py-op">=</tt><tt class="py-string">""</tt><tt class="py-op">,</tt> <tt class="py-param">collapse_scope</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="ApiConnector.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ApiConnector.__init__-expanded"><a name="L117"></a><tt class="py-lineno">117</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L118"></a><tt class="py-lineno">118</tt> <tt class="py-line"><tt class="py-docstring"> Constructor for the API-Singleton. Use it once with parameters, and then the</tt> </tt> -<a name="L119"></a><tt class="py-lineno">119</tt> <tt class="py-line"><tt class="py-docstring"> subsequent calls internal to the API will work.</tt> </tt> -<a name="L120"></a><tt class="py-lineno">120</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L121"></a><tt class="py-lineno">121</tt> <tt class="py-line"><tt class="py-docstring"> @type host: str</tt> </tt> -<a name="L122"></a><tt class="py-lineno">122</tt> <tt class="py-line"><tt class="py-docstring"> @param host: the host to connect to, e.g. "api.soundcloud.com". If a port is needed, use</tt> </tt> -<a name="L123"></a><tt class="py-lineno">123</tt> <tt class="py-line"><tt class="py-docstring"> "api.soundcloud.com:1234"</tt> </tt> -<a name="L124"></a><tt class="py-lineno">124</tt> <tt class="py-line"><tt class="py-docstring"> @type user: str</tt> </tt> -<a name="L125"></a><tt class="py-lineno">125</tt> <tt class="py-line"><tt class="py-docstring"> @param user: if given, the username for basic HTTP authentication</tt> </tt> -<a name="L126"></a><tt class="py-lineno">126</tt> <tt class="py-line"><tt class="py-docstring"> @type password: str</tt> </tt> -<a name="L127"></a><tt class="py-lineno">127</tt> <tt class="py-line"><tt class="py-docstring"> @param password: if the user is given, you have to give a password as well</tt> </tt> -<a name="L128"></a><tt class="py-lineno">128</tt> <tt class="py-line"><tt class="py-docstring"> @type authenticator: OAuthAuthenticator | BasicAuthenticator</tt> </tt> -<a name="L129"></a><tt class="py-lineno">129</tt> <tt class="py-line"><tt class="py-docstring"> @param authenticator: the authenticator to use, see L{scapi.authentication}</tt> </tt> -<a name="L130"></a><tt class="py-lineno">130</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L131"></a><tt class="py-lineno">131</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">host</tt> <tt class="py-op">=</tt> <tt class="py-name">host</tt> </tt> -<a name="L132"></a><tt class="py-lineno">132</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">authenticator</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> -<a name="L133"></a><tt class="py-lineno">133</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">authenticator</tt> <tt class="py-op">=</tt> <tt class="py-name">authenticator</tt> </tt> -<a name="L134"></a><tt class="py-lineno">134</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">user</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt> <tt class="py-keyword">and</tt> <tt class="py-name">password</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> -<a name="L135"></a><tt class="py-lineno">135</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">authenticator</tt> <tt class="py-op">=</tt> <tt id="link-20" class="py-name"><a title="scapi.authentication.BasicAuthenticator" class="py-name" href="#" onclick="return doclink('link-20', 'BasicAuthenticator', 'link-3');">BasicAuthenticator</a></tt><tt class="py-op">(</tt><tt class="py-name">user</tt><tt class="py-op">,</tt> <tt class="py-name">password</tt><tt class="py-op">)</tt> </tt> -<a name="L136"></a><tt class="py-lineno">136</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_base</tt> <tt class="py-op">=</tt> <tt class="py-name">base</tt> </tt> -<a name="L137"></a><tt class="py-lineno">137</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">collapse_scope</tt> <tt class="py-op">=</tt> <tt class="py-name">collapse_scope</tt> </tt> -</div><a name="L138"></a><tt class="py-lineno">138</tt> <tt class="py-line"> </tt> -<a name="ApiConnector.normalize_method"></a><div id="ApiConnector.normalize_method-def"><a name="L139"></a><tt class="py-lineno">139</tt> <a class="py-toggle" href="#" id="ApiConnector.normalize_method-toggle" onclick="return toggle('ApiConnector.normalize_method');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.ApiConnector-class.html#normalize_method">normalize_method</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">method</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="ApiConnector.normalize_method-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ApiConnector.normalize_method-expanded"><a name="L140"></a><tt class="py-lineno">140</tt> <tt class="py-line"> <tt class="py-docstring">""" </tt> </tt> -<a name="L141"></a><tt class="py-lineno">141</tt> <tt class="py-line"><tt class="py-docstring"> This method will take a method that has been part of a redirect of some sort</tt> </tt> -<a name="L142"></a><tt class="py-lineno">142</tt> <tt class="py-line"><tt class="py-docstring"> and see if it's valid, which means that it's located beneath our base. </tt> </tt> -<a name="L143"></a><tt class="py-lineno">143</tt> <tt class="py-line"><tt class="py-docstring"> If yes, we return it normalized without that very base.</tt> </tt> -<a name="L144"></a><tt class="py-lineno">144</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L145"></a><tt class="py-lineno">145</tt> <tt class="py-line"> <tt class="py-name">_</tt><tt class="py-op">,</tt> <tt class="py-name">_</tt><tt class="py-op">,</tt> <tt class="py-name">path</tt><tt class="py-op">,</tt> <tt class="py-name">_</tt><tt class="py-op">,</tt> <tt class="py-name">_</tt><tt class="py-op">,</tt> <tt class="py-name">_</tt> <tt class="py-op">=</tt> <tt class="py-name">urlparse</tt><tt class="py-op">.</tt><tt class="py-name">urlparse</tt><tt class="py-op">(</tt><tt class="py-name">method</tt><tt class="py-op">)</tt> </tt> -<a name="L146"></a><tt class="py-lineno">146</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">startswith</tt><tt class="py-op">(</tt><tt class="py-string">"/"</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L147"></a><tt class="py-lineno">147</tt> <tt class="py-line"> <tt class="py-name">path</tt> <tt class="py-op">=</tt> <tt class="py-name">path</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> </tt> -<a name="L148"></a><tt class="py-lineno">148</tt> <tt class="py-line"> <tt class="py-comment"># if the base is "", we return the whole path,</tt> </tt> -<a name="L149"></a><tt class="py-lineno">149</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># otherwise normalize it away</tt> </tt> -<a name="L150"></a><tt class="py-lineno">150</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_base</tt> <tt class="py-op">==</tt> <tt class="py-string">""</tt><tt class="py-op">:</tt> </tt> -<a name="L151"></a><tt class="py-lineno">151</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">path</tt> </tt> -<a name="L152"></a><tt class="py-lineno">152</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">startswith</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_base</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L153"></a><tt class="py-lineno">153</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">path</tt><tt class="py-op">[</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_base</tt><tt class="py-op">)</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> </tt> -<a name="L154"></a><tt class="py-lineno">154</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-21" class="py-name" targets="Class scapi.InvalidMethodException=scapi.InvalidMethodException-class.html"><a title="scapi.InvalidMethodException" class="py-name" href="#" onclick="return doclink('link-21', 'InvalidMethodException', 'link-21');">InvalidMethodException</a></tt><tt class="py-op">(</tt><tt class="py-string">"Not a valid API method: %s"</tt> <tt class="py-op">%</tt> <tt class="py-name">method</tt><tt class="py-op">)</tt> </tt> -</div><a name="L155"></a><tt class="py-lineno">155</tt> <tt class="py-line"> </tt> -<a name="L156"></a><tt class="py-lineno">156</tt> <tt class="py-line"> </tt> -<a name="L157"></a><tt class="py-lineno">157</tt> <tt class="py-line"> </tt> -<a name="ApiConnector.fetch_request_token"></a><div id="ApiConnector.fetch_request_token-def"><a name="L158"></a><tt class="py-lineno">158</tt> <a class="py-toggle" href="#" id="ApiConnector.fetch_request_token-toggle" onclick="return toggle('ApiConnector.fetch_request_token');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.ApiConnector-class.html#fetch_request_token">fetch_request_token</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">url</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">oauth_callback</tt><tt class="py-op">=</tt><tt class="py-string">"oob"</tt><tt class="py-op">,</tt> <tt class="py-param">oauth_verifier</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="ApiConnector.fetch_request_token-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ApiConnector.fetch_request_token-expanded"><a name="L159"></a><tt class="py-lineno">159</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L160"></a><tt class="py-lineno">160</tt> <tt class="py-line"><tt class="py-docstring"> Helper-function for a registered consumer to obtain a request token, as</tt> </tt> -<a name="L161"></a><tt class="py-lineno">161</tt> <tt class="py-line"><tt class="py-docstring"> used by oauth.</tt> </tt> -<a name="L162"></a><tt class="py-lineno">162</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L163"></a><tt class="py-lineno">163</tt> <tt class="py-line"><tt class="py-docstring"> Use it like this:</tt> </tt> -<a name="L164"></a><tt class="py-lineno">164</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L165"></a><tt class="py-lineno">165</tt> <tt class="py-line"><tt class="py-docstring"> >>> oauth_authenticator = scapi.authentication.OAuthAuthenticator(CONSUMER, </tt> </tt> -<a name="L166"></a><tt class="py-lineno">166</tt> <tt class="py-line"><tt class="py-docstring"> CONSUMER_SECRET,</tt> </tt> -<a name="L167"></a><tt class="py-lineno">167</tt> <tt class="py-line"><tt class="py-docstring"> None, </tt> </tt> -<a name="L168"></a><tt class="py-lineno">168</tt> <tt class="py-line"><tt class="py-docstring"> None)</tt> </tt> -<a name="L169"></a><tt class="py-lineno">169</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L170"></a><tt class="py-lineno">170</tt> <tt class="py-line"><tt class="py-docstring"> >>> sca = scapi.ApiConnector(host=API_HOST, authenticator=oauth_authenticator)</tt> </tt> -<a name="L171"></a><tt class="py-lineno">171</tt> <tt class="py-line"><tt class="py-docstring"> >>> token, secret = sca.fetch_request_token()</tt> </tt> -<a name="L172"></a><tt class="py-lineno">172</tt> <tt class="py-line"><tt class="py-docstring"> >>> authorization_url = sca.get_request_token_authorization_url(token)</tt> </tt> -<a name="L173"></a><tt class="py-lineno">173</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L174"></a><tt class="py-lineno">174</tt> <tt class="py-line"><tt class="py-docstring"> Please note the None passed as token & secret to the authenticator.</tt> </tt> -<a name="L175"></a><tt class="py-lineno">175</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L176"></a><tt class="py-lineno">176</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">url</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> -<a name="L177"></a><tt class="py-lineno">177</tt> <tt class="py-line"> <tt class="py-name">url</tt> <tt class="py-op">=</tt> <tt id="link-22" class="py-name"><a title="scapi.REQUEST_TOKEN_URL" class="py-name" href="#" onclick="return doclink('link-22', 'REQUEST_TOKEN_URL', 'link-11');">REQUEST_TOKEN_URL</a></tt> </tt> -<a name="L178"></a><tt class="py-lineno">178</tt> <tt class="py-line"> <tt class="py-name">req</tt> <tt class="py-op">=</tt> <tt class="py-name">urllib2</tt><tt class="py-op">.</tt><tt class="py-name">Request</tt><tt class="py-op">(</tt><tt class="py-name">url</tt><tt class="py-op">)</tt> </tt> -<a name="L179"></a><tt class="py-lineno">179</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">authenticator</tt><tt class="py-op">.</tt><tt id="link-23" class="py-name" targets="Method scapi.authentication.BasicAuthenticator.augment_request()=scapi.authentication.BasicAuthenticator-class.html#augment_request,Method scapi.authentication.OAuthAuthenticator.augment_request()=scapi.authentication.OAuthAuthenticator-class.html#augment_request"><a title="scapi.authentication.BasicAuthenticator.augment_request -scapi.authentication.OAuthAuthenticator.augment_request" class="py-name" href="#" onclick="return doclink('link-23', 'augment_request', 'link-23');">augment_request</a></tt><tt class="py-op">(</tt><tt class="py-name">req</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-name">oauth_callback</tt><tt class="py-op">=</tt><tt class="py-name">oauth_callback</tt><tt class="py-op">,</tt> <tt class="py-name">oauth_verifier</tt><tt class="py-op">=</tt><tt class="py-name">oauth_verifier</tt><tt class="py-op">)</tt> </tt> -<a name="L180"></a><tt class="py-lineno">180</tt> <tt class="py-line"> <tt class="py-name">handlers</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt> -<a name="L181"></a><tt class="py-lineno">181</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-24" class="py-name"><a title="scapi.USE_PROXY" class="py-name" href="#" onclick="return doclink('link-24', 'USE_PROXY', 'link-9');">USE_PROXY</a></tt><tt class="py-op">:</tt> </tt> -<a name="L182"></a><tt class="py-lineno">182</tt> <tt class="py-line"> <tt class="py-name">handlers</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">urllib2</tt><tt class="py-op">.</tt><tt class="py-name">ProxyHandler</tt><tt class="py-op">(</tt><tt class="py-op">{</tt><tt class="py-string">'http'</tt> <tt class="py-op">:</tt> <tt id="link-25" class="py-name"><a title="scapi.PROXY" class="py-name" href="#" onclick="return doclink('link-25', 'PROXY', 'link-10');">PROXY</a></tt><tt class="py-op">}</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L183"></a><tt class="py-lineno">183</tt> <tt class="py-line"> <tt class="py-name">opener</tt> <tt class="py-op">=</tt> <tt class="py-name">urllib2</tt><tt class="py-op">.</tt><tt class="py-name">build_opener</tt><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-name">handlers</tt><tt class="py-op">)</tt> </tt> -<a name="L184"></a><tt class="py-lineno">184</tt> <tt class="py-line"> <tt class="py-name">handle</tt> <tt class="py-op">=</tt> <tt class="py-name">opener</tt><tt class="py-op">.</tt><tt class="py-name">open</tt><tt class="py-op">(</tt><tt class="py-name">req</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt> -<a name="L185"></a><tt class="py-lineno">185</tt> <tt class="py-line"> <tt class="py-name">info</tt> <tt class="py-op">=</tt> <tt class="py-name">handle</tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L186"></a><tt class="py-lineno">186</tt> <tt class="py-line"> <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt class="py-name">handle</tt><tt class="py-op">.</tt><tt id="link-26" class="py-name" targets="Method scapi.json.JsonReader.read()=scapi.json.JsonReader-class.html#read,Function scapi.json.read()=scapi.json-module.html#read"><a title="scapi.json.JsonReader.read -scapi.json.read" class="py-name" href="#" onclick="return doclink('link-26', 'read', 'link-26');">read</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L187"></a><tt class="py-lineno">187</tt> <tt class="py-line"> <tt class="py-name">params</tt> <tt class="py-op">=</tt> <tt class="py-name">cgi</tt><tt class="py-op">.</tt><tt class="py-name">parse_qs</tt><tt class="py-op">(</tt><tt class="py-name">content</tt><tt class="py-op">,</tt> <tt class="py-name">keep_blank_values</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">)</tt> </tt> -<a name="L188"></a><tt class="py-lineno">188</tt> <tt class="py-line"> <tt class="py-name">key</tt> <tt class="py-op">=</tt> <tt class="py-name">params</tt><tt class="py-op">[</tt><tt class="py-string">'oauth_token'</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt> -<a name="L189"></a><tt class="py-lineno">189</tt> <tt class="py-line"> <tt class="py-name">secret</tt> <tt class="py-op">=</tt> <tt class="py-name">params</tt><tt class="py-op">[</tt><tt class="py-string">'oauth_token_secret'</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt> -<a name="L190"></a><tt class="py-lineno">190</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">key</tt><tt class="py-op">,</tt> <tt class="py-name">secret</tt> </tt> -</div><a name="L191"></a><tt class="py-lineno">191</tt> <tt class="py-line"> </tt> -<a name="L192"></a><tt class="py-lineno">192</tt> <tt class="py-line"> </tt> -<a name="ApiConnector.fetch_access_token"></a><div id="ApiConnector.fetch_access_token-def"><a name="L193"></a><tt class="py-lineno">193</tt> <a class="py-toggle" href="#" id="ApiConnector.fetch_access_token-toggle" onclick="return toggle('ApiConnector.fetch_access_token');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.ApiConnector-class.html#fetch_access_token">fetch_access_token</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">oauth_verifier</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="ApiConnector.fetch_access_token-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ApiConnector.fetch_access_token-expanded"><a name="L194"></a><tt class="py-lineno">194</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L195"></a><tt class="py-lineno">195</tt> <tt class="py-line"><tt class="py-docstring"> Helper-function for a registered consumer to exchange an access token for</tt> </tt> -<a name="L196"></a><tt class="py-lineno">196</tt> <tt class="py-line"><tt class="py-docstring"> a request token.</tt> </tt> -<a name="L197"></a><tt class="py-lineno">197</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L198"></a><tt class="py-lineno">198</tt> <tt class="py-line"><tt class="py-docstring"> Use it like this:</tt> </tt> -<a name="L199"></a><tt class="py-lineno">199</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L200"></a><tt class="py-lineno">200</tt> <tt class="py-line"><tt class="py-docstring"> >>> oauth_authenticator = scapi.authentication.OAuthAuthenticator(CONSUMER, </tt> </tt> -<a name="L201"></a><tt class="py-lineno">201</tt> <tt class="py-line"><tt class="py-docstring"> CONSUMER_SECRET,</tt> </tt> -<a name="L202"></a><tt class="py-lineno">202</tt> <tt class="py-line"><tt class="py-docstring"> request_token, </tt> </tt> -<a name="L203"></a><tt class="py-lineno">203</tt> <tt class="py-line"><tt class="py-docstring"> request_token_secret)</tt> </tt> -<a name="L204"></a><tt class="py-lineno">204</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L205"></a><tt class="py-lineno">205</tt> <tt class="py-line"><tt class="py-docstring"> >>> sca = scapi.ApiConnector(host=API_HOST, authenticator=oauth_authenticator)</tt> </tt> -<a name="L206"></a><tt class="py-lineno">206</tt> <tt class="py-line"><tt class="py-docstring"> >>> token, secret = sca.fetch_access_token()</tt> </tt> -<a name="L207"></a><tt class="py-lineno">207</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L208"></a><tt class="py-lineno">208</tt> <tt class="py-line"><tt class="py-docstring"> Please note the values passed as token & secret to the authenticator.</tt> </tt> -<a name="L209"></a><tt class="py-lineno">209</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L210"></a><tt class="py-lineno">210</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-27" class="py-name" targets="Method scapi.ApiConnector.fetch_request_token()=scapi.ApiConnector-class.html#fetch_request_token"><a title="scapi.ApiConnector.fetch_request_token" class="py-name" href="#" onclick="return doclink('link-27', 'fetch_request_token', 'link-27');">fetch_request_token</a></tt><tt class="py-op">(</tt><tt id="link-28" class="py-name"><a title="scapi.ACCESS_TOKEN_URL" class="py-name" href="#" onclick="return doclink('link-28', 'ACCESS_TOKEN_URL', 'link-12');">ACCESS_TOKEN_URL</a></tt><tt class="py-op">,</tt> <tt class="py-name">oauth_verifier</tt><tt class="py-op">=</tt><tt class="py-name">oauth_verifier</tt><tt class="py-op">)</tt> </tt> -</div><a name="L211"></a><tt class="py-lineno">211</tt> <tt class="py-line"> </tt> -<a name="L212"></a><tt class="py-lineno">212</tt> <tt class="py-line"> </tt> -<a name="ApiConnector.get_request_token_authorization_url"></a><div id="ApiConnector.get_request_token_authorization_url-def"><a name="L213"></a><tt class="py-lineno">213</tt> <a class="py-toggle" href="#" id="ApiConnector.get_request_token_authorization_url-toggle" onclick="return toggle('ApiConnector.get_request_token_authorization_url');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.ApiConnector-class.html#get_request_token_authorization_url">get_request_token_authorization_url</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">token</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="ApiConnector.get_request_token_authorization_url-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ApiConnector.get_request_token_authorization_url-expanded"><a name="L214"></a><tt class="py-lineno">214</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L215"></a><tt class="py-lineno">215</tt> <tt class="py-line"><tt class="py-docstring"> Simple helper function to generate the url needed</tt> </tt> -<a name="L216"></a><tt class="py-lineno">216</tt> <tt class="py-line"><tt class="py-docstring"> to ask a user for request token authorization.</tt> </tt> -<a name="L217"></a><tt class="py-lineno">217</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L218"></a><tt class="py-lineno">218</tt> <tt class="py-line"><tt class="py-docstring"> See also L{fetch_request_token}.</tt> </tt> -<a name="L219"></a><tt class="py-lineno">219</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L220"></a><tt class="py-lineno">220</tt> <tt class="py-line"><tt class="py-docstring"> Possible usage:</tt> </tt> -<a name="L221"></a><tt class="py-lineno">221</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L222"></a><tt class="py-lineno">222</tt> <tt class="py-line"><tt class="py-docstring"> >>> import webbrowser</tt> </tt> -<a name="L223"></a><tt class="py-lineno">223</tt> <tt class="py-line"><tt class="py-docstring"> >>> sca = scapi.ApiConnector()</tt> </tt> -<a name="L224"></a><tt class="py-lineno">224</tt> <tt class="py-line"><tt class="py-docstring"> >>> authorization_url = sca.get_request_token_authorization_url(token)</tt> </tt> -<a name="L225"></a><tt class="py-lineno">225</tt> <tt class="py-line"><tt class="py-docstring"> >>> webbrowser.open(authorization_url)</tt> </tt> -<a name="L226"></a><tt class="py-lineno">226</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L227"></a><tt class="py-lineno">227</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-string">"%s?oauth_token=%s"</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt id="link-29" class="py-name"><a title="scapi.AUTHORIZATION_URL" class="py-name" href="#" onclick="return doclink('link-29', 'AUTHORIZATION_URL', 'link-13');">AUTHORIZATION_URL</a></tt><tt class="py-op">,</tt> <tt class="py-name">token</tt><tt class="py-op">)</tt> </tt> -</div></div><a name="L228"></a><tt class="py-lineno">228</tt> <tt class="py-line"> </tt> -<a name="SCRedirectHandler"></a><div id="SCRedirectHandler-def"><a name="L229"></a><tt class="py-lineno">229</tt> <tt class="py-line"> </tt> -<a name="L230"></a><tt class="py-lineno">230</tt> <tt class="py-line"> </tt> -<a name="L231"></a><tt class="py-lineno">231</tt> <a class="py-toggle" href="#" id="SCRedirectHandler-toggle" onclick="return toggle('SCRedirectHandler');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="scapi.SCRedirectHandler-class.html">SCRedirectHandler</a><tt class="py-op">(</tt><tt class="py-base-class">urllib2</tt><tt class="py-op">.</tt><tt class="py-base-class">HTTPRedirectHandler</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="SCRedirectHandler-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="SCRedirectHandler-expanded"><a name="L232"></a><tt class="py-lineno">232</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L233"></a><tt class="py-lineno">233</tt> <tt class="py-line"><tt class="py-docstring"> A urllib2-Handler to deal with the redirects the RESTful API of SC uses.</tt> </tt> -<a name="L234"></a><tt class="py-lineno">234</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L235"></a><tt class="py-lineno">235</tt> <tt class="py-line"> <tt id="link-30" class="py-name" targets="Variable scapi.SCRedirectHandler.alternate_method=scapi.SCRedirectHandler-class.html#alternate_method"><a title="scapi.SCRedirectHandler.alternate_method" class="py-name" href="#" onclick="return doclink('link-30', 'alternate_method', 'link-30');">alternate_method</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt> -<a name="L236"></a><tt class="py-lineno">236</tt> <tt class="py-line"> </tt> -<a name="SCRedirectHandler.http_error_303"></a><div id="SCRedirectHandler.http_error_303-def"><a name="L237"></a><tt class="py-lineno">237</tt> <a class="py-toggle" href="#" id="SCRedirectHandler.http_error_303-toggle" onclick="return toggle('SCRedirectHandler.http_error_303');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.SCRedirectHandler-class.html#http_error_303">http_error_303</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">req</tt><tt class="py-op">,</tt> <tt class="py-param">fp</tt><tt class="py-op">,</tt> <tt class="py-param">code</tt><tt class="py-op">,</tt> <tt class="py-param">msg</tt><tt class="py-op">,</tt> <tt class="py-param">hdrs</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="SCRedirectHandler.http_error_303-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SCRedirectHandler.http_error_303-expanded"><a name="L238"></a><tt class="py-lineno">238</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L239"></a><tt class="py-lineno">239</tt> <tt class="py-line"><tt class="py-docstring"> In case of return-code 303 (See-other), we have to store the location we got</tt> </tt> -<a name="L240"></a><tt class="py-lineno">240</tt> <tt class="py-line"><tt class="py-docstring"> because that will determine the actual type of resource returned.</tt> </tt> -<a name="L241"></a><tt class="py-lineno">241</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L242"></a><tt class="py-lineno">242</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-31" class="py-name"><a title="scapi.SCRedirectHandler.alternate_method" class="py-name" href="#" onclick="return doclink('link-31', 'alternate_method', 'link-30');">alternate_method</a></tt> <tt class="py-op">=</tt> <tt class="py-name">hdrs</tt><tt class="py-op">[</tt><tt class="py-string">'location'</tt><tt class="py-op">]</tt> </tt> -<a name="L243"></a><tt class="py-lineno">243</tt> <tt class="py-line"> <tt class="py-comment"># for oauth, we need to re-create the whole header-shizzle. This</tt> </tt> -<a name="L244"></a><tt class="py-lineno">244</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># does it - it recreates a full url and signs the request</tt> </tt> -<a name="L245"></a><tt class="py-lineno">245</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">new_url</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-32" class="py-name"><a title="scapi.SCRedirectHandler.alternate_method" class="py-name" href="#" onclick="return doclink('link-32', 'alternate_method', 'link-30');">alternate_method</a></tt> </tt> -<a name="L246"></a><tt class="py-lineno">246</tt> <tt class="py-line"><tt class="py-comment"># if USE_PROXY:</tt> </tt> -<a name="L247"></a><tt class="py-lineno">247</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># import pdb; pdb.set_trace()</tt> </tt> -<a name="L248"></a><tt class="py-lineno">248</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># old_url = req.get_full_url()</tt> </tt> -<a name="L249"></a><tt class="py-lineno">249</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># protocol, host, _, _, _, _ = urlparse.urlparse(old_url)</tt> </tt> -<a name="L250"></a><tt class="py-lineno">250</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># new_url = urlparse.urlunparse((protocol, host, self.alternate_method, None, None, None))</tt> </tt> -<a name="L251"></a><tt class="py-lineno">251</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">req</tt> <tt class="py-op">=</tt> <tt class="py-name">req</tt><tt class="py-op">.</tt><tt class="py-name">recreate_request</tt><tt class="py-op">(</tt><tt class="py-name">new_url</tt><tt class="py-op">)</tt> </tt> -<a name="L252"></a><tt class="py-lineno">252</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">urllib2</tt><tt class="py-op">.</tt><tt class="py-name">HTTPRedirectHandler</tt><tt class="py-op">.</tt><tt id="link-33" class="py-name" targets="Method scapi.SCRedirectHandler.http_error_303()=scapi.SCRedirectHandler-class.html#http_error_303"><a title="scapi.SCRedirectHandler.http_error_303" class="py-name" href="#" onclick="return doclink('link-33', 'http_error_303', 'link-33');">http_error_303</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">req</tt><tt class="py-op">,</tt> <tt class="py-name">fp</tt><tt class="py-op">,</tt> <tt class="py-name">code</tt><tt class="py-op">,</tt> <tt class="py-name">msg</tt><tt class="py-op">,</tt> <tt class="py-name">hdrs</tt><tt class="py-op">)</tt> </tt> -</div><a name="L253"></a><tt class="py-lineno">253</tt> <tt class="py-line"> </tt> -<a name="SCRedirectHandler.http_error_201"></a><div id="SCRedirectHandler.http_error_201-def"><a name="L254"></a><tt class="py-lineno">254</tt> <a class="py-toggle" href="#" id="SCRedirectHandler.http_error_201-toggle" onclick="return toggle('SCRedirectHandler.http_error_201');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.SCRedirectHandler-class.html#http_error_201">http_error_201</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">req</tt><tt class="py-op">,</tt> <tt class="py-param">fp</tt><tt class="py-op">,</tt> <tt class="py-param">code</tt><tt class="py-op">,</tt> <tt class="py-param">msg</tt><tt class="py-op">,</tt> <tt class="py-param">hdrs</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="SCRedirectHandler.http_error_201-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SCRedirectHandler.http_error_201-expanded"><a name="L255"></a><tt class="py-lineno">255</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L256"></a><tt class="py-lineno">256</tt> <tt class="py-line"><tt class="py-docstring"> We fake a 201 being a 303 so that our redirection-scheme takes place</tt> </tt> -<a name="L257"></a><tt class="py-lineno">257</tt> <tt class="py-line"><tt class="py-docstring"> for the 201 the API throws in case we created something. If the location is</tt> </tt> -<a name="L258"></a><tt class="py-lineno">258</tt> <tt class="py-line"><tt class="py-docstring"> not available though, that means that whatever we created has succeded - without</tt> </tt> -<a name="L259"></a><tt class="py-lineno">259</tt> <tt class="py-line"><tt class="py-docstring"> being a named resource. Assigning an asset to a track is an example of such</tt> </tt> -<a name="L260"></a><tt class="py-lineno">260</tt> <tt class="py-line"><tt class="py-docstring"> case.</tt> </tt> -<a name="L261"></a><tt class="py-lineno">261</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L262"></a><tt class="py-lineno">262</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-string">'location'</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">hdrs</tt><tt class="py-op">:</tt> </tt> -<a name="L263"></a><tt class="py-lineno">263</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-34" class="py-name" targets="Class scapi.NoResultFromRequest=scapi.NoResultFromRequest-class.html"><a title="scapi.NoResultFromRequest" class="py-name" href="#" onclick="return doclink('link-34', 'NoResultFromRequest', 'link-34');">NoResultFromRequest</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L264"></a><tt class="py-lineno">264</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-35" class="py-name"><a title="scapi.SCRedirectHandler.http_error_303" class="py-name" href="#" onclick="return doclink('link-35', 'http_error_303', 'link-33');">http_error_303</a></tt><tt class="py-op">(</tt><tt class="py-name">req</tt><tt class="py-op">,</tt> <tt class="py-name">fp</tt><tt class="py-op">,</tt> <tt class="py-number">303</tt><tt class="py-op">,</tt> <tt class="py-name">msg</tt><tt class="py-op">,</tt> <tt class="py-name">hdrs</tt><tt class="py-op">)</tt> </tt> -</div></div><a name="L265"></a><tt class="py-lineno">265</tt> <tt class="py-line"> </tt> -<a name="Scope"></a><div id="Scope-def"><a name="L266"></a><tt class="py-lineno">266</tt> <a class="py-toggle" href="#" id="Scope-toggle" onclick="return toggle('Scope');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="scapi.Scope-class.html">Scope</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Scope-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="Scope-expanded"><a name="L267"></a><tt class="py-lineno">267</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L268"></a><tt class="py-lineno">268</tt> <tt class="py-line"><tt class="py-docstring"> The basic means to query and create resources. The Scope uses the L{ApiConnector} to</tt> </tt> -<a name="L269"></a><tt class="py-lineno">269</tt> <tt class="py-line"><tt class="py-docstring"> create the proper URIs for querying or creating resources. </tt> </tt> -<a name="L270"></a><tt class="py-lineno">270</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L271"></a><tt class="py-lineno">271</tt> <tt class="py-line"><tt class="py-docstring"> For accessing resources from the root level, you explcitly create a Scope and pass it</tt> </tt> -<a name="L272"></a><tt class="py-lineno">272</tt> <tt class="py-line"><tt class="py-docstring"> an L{ApiConnector}-instance. Then you can query it </tt> </tt> -<a name="L273"></a><tt class="py-lineno">273</tt> <tt class="py-line"><tt class="py-docstring"> or create new resources like this:</tt> </tt> -<a name="L274"></a><tt class="py-lineno">274</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L275"></a><tt class="py-lineno">275</tt> <tt class="py-line"><tt class="py-docstring"> >>> connector = scapi.ApiConnector(host='host', user='user', password='password') # initialize the API</tt> </tt> -<a name="L276"></a><tt class="py-lineno">276</tt> <tt class="py-line"><tt class="py-docstring"> >>> scope = scapi.Scope(connector) # get the root scope</tt> </tt> -<a name="L277"></a><tt class="py-lineno">277</tt> <tt class="py-line"><tt class="py-docstring"> >>> users = list(scope.users())</tt> </tt> -<a name="L278"></a><tt class="py-lineno">278</tt> <tt class="py-line"><tt class="py-docstring"> [<scapi.User object at 0x12345>, ...]</tt> </tt> -<a name="L279"></a><tt class="py-lineno">279</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L280"></a><tt class="py-lineno">280</tt> <tt class="py-line"><tt class="py-docstring"> Please not that all resources that are lists are returned as B{generator}. So you need</tt> </tt> -<a name="L281"></a><tt class="py-lineno">281</tt> <tt class="py-line"><tt class="py-docstring"> to either iterate over them, or call list(resources) on them.</tt> </tt> -<a name="L282"></a><tt class="py-lineno">282</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L283"></a><tt class="py-lineno">283</tt> <tt class="py-line"><tt class="py-docstring"> When accessing resources that belong to another resource, like contacts of a user, you access</tt> </tt> -<a name="L284"></a><tt class="py-lineno">284</tt> <tt class="py-line"><tt class="py-docstring"> the parent's resource scope implicitly through the resource instance like this:</tt> </tt> -<a name="L285"></a><tt class="py-lineno">285</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L286"></a><tt class="py-lineno">286</tt> <tt class="py-line"><tt class="py-docstring"> >>> user = scope.users().next()</tt> </tt> -<a name="L287"></a><tt class="py-lineno">287</tt> <tt class="py-line"><tt class="py-docstring"> >>> list(user.contacts())</tt> </tt> -<a name="L288"></a><tt class="py-lineno">288</tt> <tt class="py-line"><tt class="py-docstring"> [<scapi.Contact object at 0x12345>, ...]</tt> </tt> -<a name="L289"></a><tt class="py-lineno">289</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L290"></a><tt class="py-lineno">290</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="Scope.__init__"></a><div id="Scope.__init__-def"><a name="L291"></a><tt class="py-lineno">291</tt> <a class="py-toggle" href="#" id="Scope.__init__-toggle" onclick="return toggle('Scope.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.Scope-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">connector</tt><tt class="py-op">,</tt> <tt class="py-param">scope</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">parent</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Scope.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Scope.__init__-expanded"><a name="L292"></a><tt class="py-lineno">292</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L293"></a><tt class="py-lineno">293</tt> <tt class="py-line"><tt class="py-docstring"> Create the Scope. It can have a resource as scope, and possibly a parent-scope.</tt> </tt> -<a name="L294"></a><tt class="py-lineno">294</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L295"></a><tt class="py-lineno">295</tt> <tt class="py-line"><tt class="py-docstring"> @param connector: The connector to use.</tt> </tt> -<a name="L296"></a><tt class="py-lineno">296</tt> <tt class="py-line"><tt class="py-docstring"> @type connector: ApiConnector</tt> </tt> -<a name="L297"></a><tt class="py-lineno">297</tt> <tt class="py-line"><tt class="py-docstring"> @type scope: scapi.RESTBase</tt> </tt> -<a name="L298"></a><tt class="py-lineno">298</tt> <tt class="py-line"><tt class="py-docstring"> @param scope: the resource to make this scope belong to</tt> </tt> -<a name="L299"></a><tt class="py-lineno">299</tt> <tt class="py-line"><tt class="py-docstring"> @type parent: scapi.Scope</tt> </tt> -<a name="L300"></a><tt class="py-lineno">300</tt> <tt class="py-line"><tt class="py-docstring"> @param parent: the parent scope of this scope</tt> </tt> -<a name="L301"></a><tt class="py-lineno">301</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L302"></a><tt class="py-lineno">302</tt> <tt class="py-line"> </tt> -<a name="L303"></a><tt class="py-lineno">303</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">scope</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> -<a name="L304"></a><tt class="py-lineno">304</tt> <tt class="py-line"> <tt class="py-name">scope</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L305"></a><tt class="py-lineno">305</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> -<a name="L306"></a><tt class="py-lineno">306</tt> <tt class="py-line"> <tt class="py-name">scope</tt> <tt class="py-op">=</tt> <tt class="py-name">scope</tt><tt class="py-op">,</tt> </tt> -<a name="L307"></a><tt class="py-lineno">307</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">parent</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> -<a name="L308"></a><tt class="py-lineno">308</tt> <tt class="py-line"> <tt class="py-name">scope</tt> <tt class="py-op">=</tt> <tt class="py-name">parent</tt><tt class="py-op">.</tt><tt id="link-36" class="py-name" targets="Method scapi.RESTBase._scope()=scapi.RESTBase-class.html#_scope"><a title="scapi.RESTBase._scope" class="py-name" href="#" onclick="return doclink('link-36', '_scope', 'link-36');">_scope</a></tt> <tt class="py-op">+</tt> <tt class="py-name">scope</tt> </tt> -<a name="L309"></a><tt class="py-lineno">309</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-37" class="py-name"><a title="scapi.RESTBase._scope" class="py-name" href="#" onclick="return doclink('link-37', '_scope', 'link-36');">_scope</a></tt> <tt class="py-op">=</tt> <tt class="py-name">scope</tt> </tt> -<a name="L310"></a><tt class="py-lineno">310</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_connector</tt> <tt class="py-op">=</tt> <tt class="py-name">connector</tt> </tt> -</div><a name="L311"></a><tt class="py-lineno">311</tt> <tt class="py-line"> </tt> -<a name="Scope._get_connector"></a><div id="Scope._get_connector-def"><a name="L312"></a><tt class="py-lineno">312</tt> <a class="py-toggle" href="#" id="Scope._get_connector-toggle" onclick="return toggle('Scope._get_connector');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.Scope-class.html#_get_connector">_get_connector</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Scope._get_connector-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Scope._get_connector-expanded"><a name="L313"></a><tt class="py-lineno">313</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_connector</tt> </tt> -</div><a name="L314"></a><tt class="py-lineno">314</tt> <tt class="py-line"> </tt> -<a name="L315"></a><tt class="py-lineno">315</tt> <tt class="py-line"> </tt> -<a name="Scope.oauth_sign_get_request"></a><div id="Scope.oauth_sign_get_request-def"><a name="L316"></a><tt class="py-lineno">316</tt> <a class="py-toggle" href="#" id="Scope.oauth_sign_get_request-toggle" onclick="return toggle('Scope.oauth_sign_get_request');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.Scope-class.html#oauth_sign_get_request">oauth_sign_get_request</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">url</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Scope.oauth_sign_get_request-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Scope.oauth_sign_get_request-expanded"><a name="L317"></a><tt class="py-lineno">317</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L318"></a><tt class="py-lineno">318</tt> <tt class="py-line"><tt class="py-docstring"> This method will take an arbitrary url, and rewrite it</tt> </tt> -<a name="L319"></a><tt class="py-lineno">319</tt> <tt class="py-line"><tt class="py-docstring"> so that the current authenticator's oauth-headers are appended</tt> </tt> -<a name="L320"></a><tt class="py-lineno">320</tt> <tt class="py-line"><tt class="py-docstring"> as query-parameters.</tt> </tt> -<a name="L321"></a><tt class="py-lineno">321</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L322"></a><tt class="py-lineno">322</tt> <tt class="py-line"><tt class="py-docstring"> This is used in streaming and downloading, because those content</tt> </tt> -<a name="L323"></a><tt class="py-lineno">323</tt> <tt class="py-line"><tt class="py-docstring"> isn't served from the SoundCloud servers themselves.</tt> </tt> -<a name="L324"></a><tt class="py-lineno">324</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L325"></a><tt class="py-lineno">325</tt> <tt class="py-line"><tt class="py-docstring"> A usage example would look like this:</tt> </tt> -<a name="L326"></a><tt class="py-lineno">326</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L327"></a><tt class="py-lineno">327</tt> <tt class="py-line"><tt class="py-docstring"> >>> sca = scapi.Scope(connector)</tt> </tt> -<a name="L328"></a><tt class="py-lineno">328</tt> <tt class="py-line"><tt class="py-docstring"> >>> track = sca.tracks(params={</tt> </tt> -<a name="L329"></a><tt class="py-lineno">329</tt> <tt class="py-line"><tt class="py-docstring"> "filter" : "downloadable",</tt> </tt> -<a name="L330"></a><tt class="py-lineno">330</tt> <tt class="py-line"><tt class="py-docstring"> }).next()</tt> </tt> -<a name="L331"></a><tt class="py-lineno">331</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L332"></a><tt class="py-lineno">332</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L333"></a><tt class="py-lineno">333</tt> <tt class="py-line"><tt class="py-docstring"> >>> download_url = track.download_url</tt> </tt> -<a name="L334"></a><tt class="py-lineno">334</tt> <tt class="py-line"><tt class="py-docstring"> >>> signed_url = track.oauth_sign_get_request(download_url)</tt> </tt> -<a name="L335"></a><tt class="py-lineno">335</tt> <tt class="py-line"><tt class="py-docstring"> >>> data = urllib2.urlopen(signed_url).read()</tt> </tt> -<a name="L336"></a><tt class="py-lineno">336</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L337"></a><tt class="py-lineno">337</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L338"></a><tt class="py-lineno">338</tt> <tt class="py-line"> <tt class="py-name">scheme</tt><tt class="py-op">,</tt> <tt class="py-name">netloc</tt><tt class="py-op">,</tt> <tt class="py-name">path</tt><tt class="py-op">,</tt> <tt class="py-name">params</tt><tt class="py-op">,</tt> <tt class="py-name">query</tt><tt class="py-op">,</tt> <tt class="py-name">fragment</tt> <tt class="py-op">=</tt> <tt class="py-name">urlparse</tt><tt class="py-op">.</tt><tt class="py-name">urlparse</tt><tt class="py-op">(</tt><tt class="py-name">url</tt><tt class="py-op">)</tt> </tt> -<a name="L339"></a><tt class="py-lineno">339</tt> <tt class="py-line"> </tt> -<a name="L340"></a><tt class="py-lineno">340</tt> <tt class="py-line"> <tt class="py-name">req</tt> <tt class="py-op">=</tt> <tt class="py-name">urllib2</tt><tt class="py-op">.</tt><tt class="py-name">Request</tt><tt class="py-op">(</tt><tt class="py-name">url</tt><tt class="py-op">)</tt> </tt> -<a name="L341"></a><tt class="py-lineno">341</tt> <tt class="py-line"> </tt> -<a name="L342"></a><tt class="py-lineno">342</tt> <tt class="py-line"> <tt class="py-name">all_params</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt> -<a name="L343"></a><tt class="py-lineno">343</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">query</tt><tt class="py-op">:</tt> </tt> -<a name="L344"></a><tt class="py-lineno">344</tt> <tt class="py-line"> <tt class="py-name">all_params</tt><tt class="py-op">.</tt><tt class="py-name">update</tt><tt class="py-op">(</tt><tt class="py-name">cgi</tt><tt class="py-op">.</tt><tt class="py-name">parse_qs</tt><tt class="py-op">(</tt><tt class="py-name">query</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L345"></a><tt class="py-lineno">345</tt> <tt class="py-line"> </tt> -<a name="L346"></a><tt class="py-lineno">346</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">all_params</tt><tt class="py-op">:</tt> </tt> -<a name="L347"></a><tt class="py-lineno">347</tt> <tt class="py-line"> <tt class="py-name">all_params</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt> -<a name="L348"></a><tt class="py-lineno">348</tt> <tt class="py-line"> </tt> -<a name="L349"></a><tt class="py-lineno">349</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_connector</tt><tt class="py-op">.</tt><tt class="py-name">authenticator</tt><tt class="py-op">.</tt><tt id="link-38" class="py-name"><a title="scapi.authentication.BasicAuthenticator.augment_request -scapi.authentication.OAuthAuthenticator.augment_request" class="py-name" href="#" onclick="return doclink('link-38', 'augment_request', 'link-23');">augment_request</a></tt><tt class="py-op">(</tt><tt class="py-name">req</tt><tt class="py-op">,</tt> <tt class="py-name">all_params</tt><tt class="py-op">,</tt> <tt class="py-name">False</tt><tt class="py-op">)</tt> </tt> -<a name="L350"></a><tt class="py-lineno">350</tt> <tt class="py-line"> </tt> -<a name="L351"></a><tt class="py-lineno">351</tt> <tt class="py-line"> <tt class="py-name">auth_header</tt> <tt class="py-op">=</tt> <tt class="py-name">req</tt><tt class="py-op">.</tt><tt class="py-name">get_header</tt><tt class="py-op">(</tt><tt class="py-string">"Authorization"</tt><tt class="py-op">)</tt> </tt> -<a name="L352"></a><tt class="py-lineno">352</tt> <tt class="py-line"> <tt class="py-name">auth_header</tt> <tt class="py-op">=</tt> <tt class="py-name">auth_header</tt><tt class="py-op">[</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-string">"OAuth "</tt><tt class="py-op">)</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> </tt> -<a name="L353"></a><tt class="py-lineno">353</tt> <tt class="py-line"> </tt> -<a name="L354"></a><tt class="py-lineno">354</tt> <tt class="py-line"> <tt class="py-name">query_params</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt> -<a name="L355"></a><tt class="py-lineno">355</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">query</tt><tt class="py-op">:</tt> </tt> -<a name="L356"></a><tt class="py-lineno">356</tt> <tt class="py-line"> <tt class="py-name">query_params</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">query</tt><tt class="py-op">)</tt> </tt> -<a name="L357"></a><tt class="py-lineno">357</tt> <tt class="py-line"> </tt> -<a name="L358"></a><tt class="py-lineno">358</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">part</tt> <tt class="py-keyword">in</tt> <tt class="py-name">auth_header</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">","</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L359"></a><tt class="py-lineno">359</tt> <tt class="py-line"> <tt class="py-name">key</tt><tt class="py-op">,</tt> <tt class="py-name">value</tt> <tt class="py-op">=</tt> <tt class="py-name">part</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">"="</tt><tt class="py-op">)</tt> </tt> -<a name="L360"></a><tt class="py-lineno">360</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">key</tt><tt class="py-op">.</tt><tt class="py-name">startswith</tt><tt class="py-op">(</tt><tt class="py-string">"oauth"</tt><tt class="py-op">)</tt> </tt> -<a name="L361"></a><tt class="py-lineno">361</tt> <tt class="py-line"> <tt class="py-name">value</tt> <tt class="py-op">=</tt> <tt class="py-name">value</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">:</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt> -<a name="L362"></a><tt class="py-lineno">362</tt> <tt class="py-line"> <tt class="py-name">query_params</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-string">"%s=%s"</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">,</tt> <tt class="py-name">value</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L363"></a><tt class="py-lineno">363</tt> <tt class="py-line"> </tt> -<a name="L364"></a><tt class="py-lineno">364</tt> <tt class="py-line"> <tt class="py-name">query</tt> <tt class="py-op">=</tt> <tt class="py-string">"&"</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">query_params</tt><tt class="py-op">)</tt> </tt> -<a name="L365"></a><tt class="py-lineno">365</tt> <tt class="py-line"> <tt class="py-name">url</tt> <tt class="py-op">=</tt> <tt class="py-name">urlparse</tt><tt class="py-op">.</tt><tt class="py-name">urlunparse</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-name">scheme</tt><tt class="py-op">,</tt> <tt class="py-name">netloc</tt><tt class="py-op">,</tt> <tt class="py-name">path</tt><tt class="py-op">,</tt> <tt class="py-name">params</tt><tt class="py-op">,</tt> <tt class="py-name">query</tt><tt class="py-op">,</tt> <tt class="py-name">fragment</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L366"></a><tt class="py-lineno">366</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">url</tt> </tt> -</div><a name="L367"></a><tt class="py-lineno">367</tt> <tt class="py-line"> </tt> -<a name="L368"></a><tt class="py-lineno">368</tt> <tt class="py-line"> </tt> -<a name="Scope._create_request"></a><div id="Scope._create_request-def"><a name="L369"></a><tt class="py-lineno">369</tt> <a class="py-toggle" href="#" id="Scope._create_request-toggle" onclick="return toggle('Scope._create_request');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.Scope-class.html#_create_request">_create_request</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">url</tt><tt class="py-op">,</tt> <tt class="py-param">connector</tt><tt class="py-op">,</tt> <tt class="py-param">parameters</tt><tt class="py-op">,</tt> <tt class="py-param">queryparams</tt><tt class="py-op">,</tt> <tt class="py-param">alternate_http_method</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">use_multipart</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Scope._create_request-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Scope._create_request-expanded"><a name="L370"></a><tt class="py-lineno">370</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L371"></a><tt class="py-lineno">371</tt> <tt class="py-line"><tt class="py-docstring"> This method returnes the urllib2.Request to perform the actual HTTP-request.</tt> </tt> -<a name="L372"></a><tt class="py-lineno">372</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L373"></a><tt class="py-lineno">373</tt> <tt class="py-line"><tt class="py-docstring"> We return a subclass that overload the get_method-method to return a custom method like "PUT".</tt> </tt> -<a name="L374"></a><tt class="py-lineno">374</tt> <tt class="py-line"><tt class="py-docstring"> Additionally, the request is enhanced with the current authenticators authorization scheme</tt> </tt> -<a name="L375"></a><tt class="py-lineno">375</tt> <tt class="py-line"><tt class="py-docstring"> headers.</tt> </tt> -<a name="L376"></a><tt class="py-lineno">376</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L377"></a><tt class="py-lineno">377</tt> <tt class="py-line"><tt class="py-docstring"> @param url: the destination url</tt> </tt> -<a name="L378"></a><tt class="py-lineno">378</tt> <tt class="py-line"><tt class="py-docstring"> @param connector: our connector-instance</tt> </tt> -<a name="L379"></a><tt class="py-lineno">379</tt> <tt class="py-line"><tt class="py-docstring"> @param parameters: the POST-parameters to use.</tt> </tt> -<a name="L380"></a><tt class="py-lineno">380</tt> <tt class="py-line"><tt class="py-docstring"> @type parameters: None|dict<str, basestring|list<basestring>></tt> </tt> -<a name="L381"></a><tt class="py-lineno">381</tt> <tt class="py-line"><tt class="py-docstring"> @param queryparams: the queryparams to use</tt> </tt> -<a name="L382"></a><tt class="py-lineno">382</tt> <tt class="py-line"><tt class="py-docstring"> @type queryparams: None|dict<str, basestring|list<basestring>></tt> </tt> -<a name="L383"></a><tt class="py-lineno">383</tt> <tt class="py-line"><tt class="py-docstring"> @param alternate_http_method: an alternate HTTP-method to use</tt> </tt> -<a name="L384"></a><tt class="py-lineno">384</tt> <tt class="py-line"><tt class="py-docstring"> @type alternate_http_method: str</tt> </tt> -<a name="L385"></a><tt class="py-lineno">385</tt> <tt class="py-line"><tt class="py-docstring"> @return: the fully equipped request</tt> </tt> -<a name="L386"></a><tt class="py-lineno">386</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: urllib2.Request</tt> </tt> -<a name="L387"></a><tt class="py-lineno">387</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L388"></a><tt class="py-lineno">388</tt> <tt class="py-line"> <tt class="py-keyword">class</tt> <tt class="py-def-name">MyRequest</tt><tt class="py-op">(</tt><tt class="py-base-class">urllib2</tt><tt class="py-op">.</tt><tt class="py-base-class">Request</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L389"></a><tt class="py-lineno">389</tt> <tt class="py-line"> <tt class="py-keyword">def</tt> <tt class="py-def-name">get_method</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L390"></a><tt class="py-lineno">390</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">alternate_http_method</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> -<a name="L391"></a><tt class="py-lineno">391</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">alternate_http_method</tt> </tt> -<a name="L392"></a><tt class="py-lineno">392</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">urllib2</tt><tt class="py-op">.</tt><tt class="py-name">Request</tt><tt class="py-op">.</tt><tt class="py-name">get_method</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt> -</div><a name="L393"></a><tt class="py-lineno">393</tt> <tt class="py-line"> </tt> -<a name="L394"></a><tt class="py-lineno">394</tt> <tt class="py-line"> <tt class="py-keyword">def</tt> <tt class="py-def-name">has_data</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L395"></a><tt class="py-lineno">395</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">parameters</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt> </tt> -</div><a name="L396"></a><tt class="py-lineno">396</tt> <tt class="py-line"> </tt> -<a name="L397"></a><tt class="py-lineno">397</tt> <tt class="py-line"> <tt class="py-keyword">def</tt> <tt class="py-def-name">augment_request</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">params</tt><tt class="py-op">,</tt> <tt class="py-param">use_multipart</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L398"></a><tt class="py-lineno">398</tt> <tt class="py-line"> <tt class="py-name">connector</tt><tt class="py-op">.</tt><tt class="py-name">authenticator</tt><tt class="py-op">.</tt><tt id="link-39" class="py-name"><a title="scapi.authentication.BasicAuthenticator.augment_request -scapi.authentication.OAuthAuthenticator.augment_request" class="py-name" href="#" onclick="return doclink('link-39', 'augment_request', 'link-23');">augment_request</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">params</tt><tt class="py-op">,</tt> <tt class="py-name">use_multipart</tt><tt class="py-op">)</tt> </tt> -</div><a name="L399"></a><tt class="py-lineno">399</tt> <tt class="py-line"> </tt> -<a name="L400"></a><tt class="py-lineno">400</tt> <tt class="py-line"> <tt class="py-decorator">@</tt><tt class="py-decorator">classmethod</tt> </tt> -<a name="L401"></a><tt class="py-lineno">401</tt> <tt class="py-line"> <tt class="py-keyword">def</tt> <tt class="py-def-name">recreate_request</tt><tt class="py-op">(</tt><tt class="py-param">cls</tt><tt class="py-op">,</tt> <tt class="py-param">location</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L402"></a><tt class="py-lineno">402</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-40" class="py-name" targets="Method scapi.Scope._create_request()=scapi.Scope-class.html#_create_request"><a title="scapi.Scope._create_request" class="py-name" href="#" onclick="return doclink('link-40', '_create_request', 'link-40');">_create_request</a></tt><tt class="py-op">(</tt><tt class="py-name">location</tt><tt class="py-op">,</tt> <tt class="py-name">connector</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt> -</div></div><a name="L403"></a><tt class="py-lineno">403</tt> <tt class="py-line"> </tt> -<a name="L404"></a><tt class="py-lineno">404</tt> <tt class="py-line"> <tt class="py-name">req</tt> <tt class="py-op">=</tt> <tt class="py-name">MyRequest</tt><tt class="py-op">(</tt><tt class="py-name">url</tt><tt class="py-op">)</tt> </tt> -<a name="L405"></a><tt class="py-lineno">405</tt> <tt class="py-line"> <tt class="py-name">all_params</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt> -<a name="L406"></a><tt class="py-lineno">406</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">parameters</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> -<a name="L407"></a><tt class="py-lineno">407</tt> <tt class="py-line"> <tt class="py-name">all_params</tt><tt class="py-op">.</tt><tt class="py-name">update</tt><tt class="py-op">(</tt><tt class="py-name">parameters</tt><tt class="py-op">)</tt> </tt> -<a name="L408"></a><tt class="py-lineno">408</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">queryparams</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> -<a name="L409"></a><tt class="py-lineno">409</tt> <tt class="py-line"> <tt class="py-name">all_params</tt><tt class="py-op">.</tt><tt class="py-name">update</tt><tt class="py-op">(</tt><tt class="py-name">queryparams</tt><tt class="py-op">)</tt> </tt> -<a name="L410"></a><tt class="py-lineno">410</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">all_params</tt><tt class="py-op">:</tt> </tt> -<a name="L411"></a><tt class="py-lineno">411</tt> <tt class="py-line"> <tt class="py-name">all_params</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt> -<a name="L412"></a><tt class="py-lineno">412</tt> <tt class="py-line"> <tt class="py-name">req</tt><tt class="py-op">.</tt><tt id="link-41" class="py-name"><a title="scapi.authentication.BasicAuthenticator.augment_request -scapi.authentication.OAuthAuthenticator.augment_request" class="py-name" href="#" onclick="return doclink('link-41', 'augment_request', 'link-23');">augment_request</a></tt><tt class="py-op">(</tt><tt class="py-name">all_params</tt><tt class="py-op">,</tt> <tt class="py-name">use_multipart</tt><tt class="py-op">)</tt> </tt> -<a name="L413"></a><tt class="py-lineno">413</tt> <tt class="py-line"> <tt class="py-name">req</tt><tt class="py-op">.</tt><tt class="py-name">add_header</tt><tt class="py-op">(</tt><tt class="py-string">"Accept"</tt><tt class="py-op">,</tt> <tt class="py-string">"application/json"</tt><tt class="py-op">)</tt> </tt> -<a name="L414"></a><tt class="py-lineno">414</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">req</tt> </tt> -</div><a name="L415"></a><tt class="py-lineno">415</tt> <tt class="py-line"> </tt> -<a name="L416"></a><tt class="py-lineno">416</tt> <tt class="py-line"> </tt> -<a name="Scope._create_query_string"></a><div id="Scope._create_query_string-def"><a name="L417"></a><tt class="py-lineno">417</tt> <a class="py-toggle" href="#" id="Scope._create_query_string-toggle" onclick="return toggle('Scope._create_query_string');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.Scope-class.html#_create_query_string">_create_query_string</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">queryparams</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Scope._create_query_string-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Scope._create_query_string-expanded"><a name="L418"></a><tt class="py-lineno">418</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L419"></a><tt class="py-lineno">419</tt> <tt class="py-line"><tt class="py-docstring"> Small helpermethod to create the querystring from a dict.</tt> </tt> -<a name="L420"></a><tt class="py-lineno">420</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L421"></a><tt class="py-lineno">421</tt> <tt class="py-line"><tt class="py-docstring"> @type queryparams: None|dict<str, basestring|list<basestring>></tt> </tt> -<a name="L422"></a><tt class="py-lineno">422</tt> <tt class="py-line"><tt class="py-docstring"> @param queryparams: the queryparameters.</tt> </tt> -<a name="L423"></a><tt class="py-lineno">423</tt> <tt class="py-line"><tt class="py-docstring"> @return: either the empty string, or a "?" followed by the parameters joined by "&"</tt> </tt> -<a name="L424"></a><tt class="py-lineno">424</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: str</tt> </tt> -<a name="L425"></a><tt class="py-lineno">425</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L426"></a><tt class="py-lineno">426</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">queryparams</tt><tt class="py-op">:</tt> </tt> -<a name="L427"></a><tt class="py-lineno">427</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-string">""</tt> </tt> -<a name="L428"></a><tt class="py-lineno">428</tt> <tt class="py-line"> <tt class="py-name">h</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt> -<a name="L429"></a><tt class="py-lineno">429</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">key</tt><tt class="py-op">,</tt> <tt class="py-name">values</tt> <tt class="py-keyword">in</tt> <tt class="py-name">queryparams</tt><tt class="py-op">.</tt><tt class="py-name">iteritems</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L430"></a><tt class="py-lineno">430</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">values</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-name">int</tt><tt class="py-op">,</tt> <tt class="py-name">long</tt><tt class="py-op">,</tt> <tt class="py-name">float</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L431"></a><tt class="py-lineno">431</tt> <tt class="py-line"> <tt class="py-name">values</tt> <tt class="py-op">=</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">values</tt><tt class="py-op">)</tt> </tt> -<a name="L432"></a><tt class="py-lineno">432</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">values</tt><tt class="py-op">,</tt> <tt class="py-name">basestring</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L433"></a><tt class="py-lineno">433</tt> <tt class="py-line"> <tt class="py-name">values</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">values</tt><tt class="py-op">]</tt> </tt> -<a name="L434"></a><tt class="py-lineno">434</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">v</tt> <tt class="py-keyword">in</tt> <tt class="py-name">values</tt><tt class="py-op">:</tt> </tt> -<a name="L435"></a><tt class="py-lineno">435</tt> <tt class="py-line"> <tt class="py-name">v</tt> <tt class="py-op">=</tt> <tt class="py-name">v</tt><tt class="py-op">.</tt><tt class="py-name">encode</tt><tt class="py-op">(</tt><tt class="py-string">"utf-8"</tt><tt class="py-op">)</tt> </tt> -<a name="L436"></a><tt class="py-lineno">436</tt> <tt class="py-line"> <tt class="py-name">h</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-string">"%s=%s"</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">,</tt> <tt id="link-42" class="py-name"><a title="scapi.util.escape" class="py-name" href="#" onclick="return doclink('link-42', 'escape', 'link-6');">escape</a></tt><tt class="py-op">(</tt><tt class="py-name">v</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L437"></a><tt class="py-lineno">437</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-string">"?"</tt> <tt class="py-op">+</tt> <tt class="py-string">"&"</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">h</tt><tt class="py-op">)</tt> </tt> -</div><a name="L438"></a><tt class="py-lineno">438</tt> <tt class="py-line"> </tt> -<a name="L439"></a><tt class="py-lineno">439</tt> <tt class="py-line"> </tt> -<a name="Scope._call"></a><div id="Scope._call-def"><a name="L440"></a><tt class="py-lineno">440</tt> <a class="py-toggle" href="#" id="Scope._call-toggle" onclick="return toggle('Scope._call');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.Scope-class.html#_call">_call</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">method</tt><tt class="py-op">,</tt> <tt class="py-op">*</tt><tt class="py-param">args</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-param">kwargs</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Scope._call-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Scope._call-expanded"><a name="L441"></a><tt class="py-lineno">441</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L442"></a><tt class="py-lineno">442</tt> <tt class="py-line"><tt class="py-docstring"> The workhorse. It's complicated, convoluted and beyond understanding of a mortal being.</tt> </tt> -<a name="L443"></a><tt class="py-lineno">443</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L444"></a><tt class="py-lineno">444</tt> <tt class="py-line"><tt class="py-docstring"> You have been warned.</tt> </tt> -<a name="L445"></a><tt class="py-lineno">445</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L446"></a><tt class="py-lineno">446</tt> <tt class="py-line"> </tt> -<a name="L447"></a><tt class="py-lineno">447</tt> <tt class="py-line"> <tt class="py-name">queryparams</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt> -<a name="L448"></a><tt class="py-lineno">448</tt> <tt class="py-line"> <tt class="py-name">__offset__</tt> <tt class="py-op">=</tt> <tt id="link-43" class="py-name" targets="Class scapi.ApiConnector=scapi.ApiConnector-class.html"><a title="scapi.ApiConnector" class="py-name" href="#" onclick="return doclink('link-43', 'ApiConnector', 'link-43');">ApiConnector</a></tt><tt class="py-op">.</tt><tt id="link-44" class="py-name"><a title="scapi.ApiConnector.LIST_LIMIT" class="py-name" href="#" onclick="return doclink('link-44', 'LIST_LIMIT', 'link-17');">LIST_LIMIT</a></tt> </tt> -<a name="L449"></a><tt class="py-lineno">449</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-string">"__offset__"</tt> <tt class="py-keyword">in</tt> <tt class="py-name">kwargs</tt><tt class="py-op">:</tt> </tt> -<a name="L450"></a><tt class="py-lineno">450</tt> <tt class="py-line"> <tt class="py-name">offset</tt> <tt class="py-op">=</tt> <tt class="py-name">kwargs</tt><tt class="py-op">.</tt><tt class="py-name">pop</tt><tt class="py-op">(</tt><tt class="py-string">"__offset__"</tt><tt class="py-op">)</tt> </tt> -<a name="L451"></a><tt class="py-lineno">451</tt> <tt class="py-line"> <tt class="py-name">queryparams</tt><tt class="py-op">[</tt><tt class="py-string">'offset'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">offset</tt> </tt> -<a name="L452"></a><tt class="py-lineno">452</tt> <tt class="py-line"> <tt class="py-name">__offset__</tt> <tt class="py-op">=</tt> <tt class="py-name">offset</tt> <tt class="py-op">+</tt> <tt id="link-45" class="py-name"><a title="scapi.ApiConnector" class="py-name" href="#" onclick="return doclink('link-45', 'ApiConnector', 'link-43');">ApiConnector</a></tt><tt class="py-op">.</tt><tt id="link-46" class="py-name"><a title="scapi.ApiConnector.LIST_LIMIT" class="py-name" href="#" onclick="return doclink('link-46', 'LIST_LIMIT', 'link-17');">LIST_LIMIT</a></tt> </tt> -<a name="L453"></a><tt class="py-lineno">453</tt> <tt class="py-line"> </tt> -<a name="L454"></a><tt class="py-lineno">454</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-string">"params"</tt> <tt class="py-keyword">in</tt> <tt class="py-name">kwargs</tt><tt class="py-op">:</tt> </tt> -<a name="L455"></a><tt class="py-lineno">455</tt> <tt class="py-line"> <tt class="py-name">queryparams</tt><tt class="py-op">.</tt><tt class="py-name">update</tt><tt class="py-op">(</tt><tt class="py-name">kwargs</tt><tt class="py-op">.</tt><tt class="py-name">pop</tt><tt class="py-op">(</tt><tt class="py-string">"params"</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L456"></a><tt class="py-lineno">456</tt> <tt class="py-line"> </tt> -<a name="L457"></a><tt class="py-lineno">457</tt> <tt class="py-line"> <tt class="py-comment"># create a closure to invoke this method again with a greater offset</tt> </tt> -<a name="L458"></a><tt class="py-lineno">458</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">_cl_method</tt> <tt class="py-op">=</tt> <tt class="py-name">method</tt> </tt> -<a name="L459"></a><tt class="py-lineno">459</tt> <tt class="py-line"> <tt class="py-name">_cl_args</tt> <tt class="py-op">=</tt> <tt class="py-name">tuple</tt><tt class="py-op">(</tt><tt class="py-name">args</tt><tt class="py-op">)</tt> </tt> -<a name="L460"></a><tt class="py-lineno">460</tt> <tt class="py-line"> <tt class="py-name">_cl_kwargs</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt> -<a name="L461"></a><tt class="py-lineno">461</tt> <tt class="py-line"> <tt class="py-name">_cl_kwargs</tt><tt class="py-op">.</tt><tt class="py-name">update</tt><tt class="py-op">(</tt><tt class="py-name">kwargs</tt><tt class="py-op">)</tt> </tt> -<a name="L462"></a><tt class="py-lineno">462</tt> <tt class="py-line"> <tt class="py-name">_cl_kwargs</tt><tt class="py-op">[</tt><tt class="py-string">"__offset__"</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">__offset__</tt> </tt> -<a name="L463"></a><tt class="py-lineno">463</tt> <tt class="py-line"> <tt class="py-keyword">def</tt> <tt class="py-def-name">continue_list_fetching</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L464"></a><tt class="py-lineno">464</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-47" class="py-name" targets="Method scapi.Scope._call()=scapi.Scope-class.html#_call"><a title="scapi.Scope._call" class="py-name" href="#" onclick="return doclink('link-47', '_call', 'link-47');">_call</a></tt><tt class="py-op">(</tt><tt class="py-name">method</tt><tt class="py-op">,</tt> <tt class="py-op">*</tt><tt class="py-name">_cl_args</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-name">_cl_kwargs</tt><tt class="py-op">)</tt> </tt> -</div><a name="L465"></a><tt class="py-lineno">465</tt> <tt class="py-line"> <tt class="py-name">connector</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-48" class="py-name" targets="Method scapi.Scope._get_connector()=scapi.Scope-class.html#_get_connector"><a title="scapi.Scope._get_connector" class="py-name" href="#" onclick="return doclink('link-48', '_get_connector', 'link-48');">_get_connector</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L466"></a><tt class="py-lineno">466</tt> <tt class="py-line"> <tt class="py-keyword">def</tt> <tt class="py-def-name">filelike</tt><tt class="py-op">(</tt><tt class="py-param">v</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L467"></a><tt class="py-lineno">467</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">v</tt><tt class="py-op">,</tt> <tt class="py-name">file</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L468"></a><tt class="py-lineno">468</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">True</tt> </tt> -<a name="L469"></a><tt class="py-lineno">469</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">v</tt><tt class="py-op">,</tt> <tt class="py-string">"read"</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L470"></a><tt class="py-lineno">470</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">True</tt> </tt> -<a name="L471"></a><tt class="py-lineno">471</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt> -</div><a name="L472"></a><tt class="py-lineno">472</tt> <tt class="py-line"> <tt class="py-name">alternate_http_method</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt> -<a name="L473"></a><tt class="py-lineno">473</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-string">"_alternate_http_method"</tt> <tt class="py-keyword">in</tt> <tt class="py-name">kwargs</tt><tt class="py-op">:</tt> </tt> -<a name="L474"></a><tt class="py-lineno">474</tt> <tt class="py-line"> <tt class="py-name">alternate_http_method</tt> <tt class="py-op">=</tt> <tt class="py-name">kwargs</tt><tt class="py-op">.</tt><tt class="py-name">pop</tt><tt class="py-op">(</tt><tt class="py-string">"_alternate_http_method"</tt><tt class="py-op">)</tt> </tt> -<a name="L475"></a><tt class="py-lineno">475</tt> <tt class="py-line"> <tt class="py-name">urlparams</tt> <tt class="py-op">=</tt> <tt class="py-name">kwargs</tt> <tt class="py-keyword">if</tt> <tt class="py-name">kwargs</tt> <tt class="py-keyword">else</tt> <tt class="py-name">None</tt> </tt> -<a name="L476"></a><tt class="py-lineno">476</tt> <tt class="py-line"> <tt class="py-name">use_multipart</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt> -<a name="L477"></a><tt class="py-lineno">477</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">urlparams</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> -<a name="L478"></a><tt class="py-lineno">478</tt> <tt class="py-line"> <tt class="py-name">fileargs</tt> <tt class="py-op">=</tt> <tt class="py-name">dict</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">,</tt> <tt class="py-name">value</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-name">key</tt><tt class="py-op">,</tt> <tt class="py-name">value</tt> <tt class="py-keyword">in</tt> <tt class="py-name">urlparams</tt><tt class="py-op">.</tt><tt class="py-name">iteritems</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-keyword">if</tt> <tt class="py-name">filelike</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L479"></a><tt class="py-lineno">479</tt> <tt class="py-line"> <tt class="py-name">use_multipart</tt> <tt class="py-op">=</tt> <tt class="py-name">bool</tt><tt class="py-op">(</tt><tt class="py-name">fileargs</tt><tt class="py-op">)</tt> </tt> -<a name="L480"></a><tt class="py-lineno">480</tt> <tt class="py-line"> </tt> -<a name="L481"></a><tt class="py-lineno">481</tt> <tt class="py-line"> <tt class="py-comment"># ensure the method has a trailing /</tt> </tt> -<a name="L482"></a><tt class="py-lineno">482</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">if</tt> <tt class="py-name">method</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">!=</tt> <tt class="py-string">"/"</tt><tt class="py-op">:</tt> </tt> -<a name="L483"></a><tt class="py-lineno">483</tt> <tt class="py-line"> <tt class="py-name">method</tt> <tt class="py-op">=</tt> <tt class="py-name">method</tt> <tt class="py-op">+</tt> <tt class="py-string">"/"</tt> </tt> -<a name="L484"></a><tt class="py-lineno">484</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">args</tt><tt class="py-op">:</tt> </tt> -<a name="L485"></a><tt class="py-lineno">485</tt> <tt class="py-line"> <tt class="py-name">method</tt> <tt class="py-op">=</tt> <tt class="py-string">"%s%s"</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">method</tt><tt class="py-op">,</tt> <tt class="py-string">"/"</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-name">a</tt> <tt class="py-keyword">in</tt> <tt class="py-name">args</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L486"></a><tt class="py-lineno">486</tt> <tt class="py-line"> </tt> -<a name="L487"></a><tt class="py-lineno">487</tt> <tt class="py-line"> <tt class="py-name">scope</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt> </tt> -<a name="L488"></a><tt class="py-lineno">488</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-49" class="py-name"><a title="scapi.RESTBase._scope" class="py-name" href="#" onclick="return doclink('link-49', '_scope', 'link-36');">_scope</a></tt><tt class="py-op">:</tt> </tt> -<a name="L489"></a><tt class="py-lineno">489</tt> <tt class="py-line"> <tt class="py-name">scopes</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-50" class="py-name"><a title="scapi.RESTBase._scope" class="py-name" href="#" onclick="return doclink('link-50', '_scope', 'link-36');">_scope</a></tt> </tt> -<a name="L490"></a><tt class="py-lineno">490</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">connector</tt><tt class="py-op">.</tt><tt class="py-name">collapse_scope</tt><tt class="py-op">:</tt> </tt> -<a name="L491"></a><tt class="py-lineno">491</tt> <tt class="py-line"> <tt class="py-name">scopes</tt> <tt class="py-op">=</tt> <tt class="py-name">scopes</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> </tt> -<a name="L492"></a><tt class="py-lineno">492</tt> <tt class="py-line"> <tt class="py-name">scope</tt> <tt class="py-op">=</tt> <tt class="py-string">"/"</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-name">sc</tt><tt class="py-op">.</tt><tt id="link-51" class="py-name"><a title="scapi.RESTBase._scope" class="py-name" href="#" onclick="return doclink('link-51', '_scope', 'link-36');">_scope</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-name">sc</tt> <tt class="py-keyword">in</tt> <tt class="py-name">scopes</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-string">"/"</tt> </tt> -<a name="L493"></a><tt class="py-lineno">493</tt> <tt class="py-line"> <tt class="py-name">url</tt> <tt class="py-op">=</tt> <tt class="py-string">"http://%(host)s/%(base)s%(scope)s%(method)s%(queryparams)s"</tt> <tt class="py-op">%</tt> <tt class="py-name">dict</tt><tt class="py-op">(</tt><tt class="py-name">host</tt><tt class="py-op">=</tt><tt class="py-name">connector</tt><tt class="py-op">.</tt><tt class="py-name">host</tt><tt class="py-op">,</tt> <tt class="py-name">method</tt><tt class="py-op">=</tt><tt class="py-name">method</tt><tt class="py-op">,</tt> <tt class="py-name">base</tt><tt class="py-op">=</tt><tt class="py-name">connector</tt><tt class="py-op">.</tt><tt class="py-name">_base</tt><tt class="py-op">,</tt> <tt class="py-name">scope</tt><tt class="py-op">=</tt><tt class="py-name">scope</tt><tt class="py-op">,</tt> <tt class="py-name">queryparams</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-52" class="py-name" targets="Method scapi.Scope._create_query_string()=scapi.Scope-class.html#_create_query_string"><a title="scapi.Scope._create_query_string" class="py-name" href="#" onclick="return doclink('link-52', '_create_query_string', 'link-52');">_create_query_string</a></tt><tt class="py-op">(</tt><tt class="py-name">queryparams</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L494"></a><tt class="py-lineno">494</tt> <tt class="py-line"> </tt> -<a name="L495"></a><tt class="py-lineno">495</tt> <tt class="py-line"> <tt class="py-comment"># we need to install SCRedirectHandler</tt> </tt> -<a name="L496"></a><tt class="py-lineno">496</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># to gather possible See-Other redirects</tt> </tt> -<a name="L497"></a><tt class="py-lineno">497</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># so that we can exchange our method</tt> </tt> -<a name="L498"></a><tt class="py-lineno">498</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">redirect_handler</tt> <tt class="py-op">=</tt> <tt id="link-53" class="py-name" targets="Class scapi.SCRedirectHandler=scapi.SCRedirectHandler-class.html"><a title="scapi.SCRedirectHandler" class="py-name" href="#" onclick="return doclink('link-53', 'SCRedirectHandler', 'link-53');">SCRedirectHandler</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L499"></a><tt class="py-lineno">499</tt> <tt class="py-line"> <tt class="py-name">handlers</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">redirect_handler</tt><tt class="py-op">]</tt> </tt> -<a name="L500"></a><tt class="py-lineno">500</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-54" class="py-name"><a title="scapi.USE_PROXY" class="py-name" href="#" onclick="return doclink('link-54', 'USE_PROXY', 'link-9');">USE_PROXY</a></tt><tt class="py-op">:</tt> </tt> -<a name="L501"></a><tt class="py-lineno">501</tt> <tt class="py-line"> <tt class="py-name">handlers</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">urllib2</tt><tt class="py-op">.</tt><tt class="py-name">ProxyHandler</tt><tt class="py-op">(</tt><tt class="py-op">{</tt><tt class="py-string">'http'</tt> <tt class="py-op">:</tt> <tt id="link-55" class="py-name"><a title="scapi.PROXY" class="py-name" href="#" onclick="return doclink('link-55', 'PROXY', 'link-10');">PROXY</a></tt><tt class="py-op">}</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L502"></a><tt class="py-lineno">502</tt> <tt class="py-line"> <tt class="py-name">req</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-56" class="py-name"><a title="scapi.Scope._create_request" class="py-name" href="#" onclick="return doclink('link-56', '_create_request', 'link-40');">_create_request</a></tt><tt class="py-op">(</tt><tt class="py-name">url</tt><tt class="py-op">,</tt> <tt class="py-name">connector</tt><tt class="py-op">,</tt> <tt class="py-name">urlparams</tt><tt class="py-op">,</tt> <tt class="py-name">queryparams</tt><tt class="py-op">,</tt> <tt class="py-name">alternate_http_method</tt><tt class="py-op">,</tt> <tt class="py-name">use_multipart</tt><tt class="py-op">)</tt> </tt> -<a name="L503"></a><tt class="py-lineno">503</tt> <tt class="py-line"> </tt> -<a name="L504"></a><tt class="py-lineno">504</tt> <tt class="py-line"> <tt class="py-name">http_method</tt> <tt class="py-op">=</tt> <tt class="py-name">req</tt><tt class="py-op">.</tt><tt class="py-name">get_method</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L505"></a><tt class="py-lineno">505</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">urlparams</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> -<a name="L506"></a><tt class="py-lineno">506</tt> <tt class="py-line"> <tt id="link-57" class="py-name"><a title="scapi.authentication.logger -scapi.logger -scapi.tests.scapi_tests.logger -scapi.tests.test_connect.logger -scapi.tests.test_oauth.logger" class="py-name" href="#" onclick="return doclink('link-57', 'logger', 'link-8');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-string">"Posting url: %s, method: %s"</tt><tt class="py-op">,</tt> <tt class="py-name">url</tt><tt class="py-op">,</tt> <tt class="py-name">http_method</tt><tt class="py-op">)</tt> </tt> -<a name="L507"></a><tt class="py-lineno">507</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> -<a name="L508"></a><tt class="py-lineno">508</tt> <tt class="py-line"> <tt id="link-58" class="py-name"><a title="scapi.authentication.logger -scapi.logger -scapi.tests.scapi_tests.logger -scapi.tests.test_connect.logger -scapi.tests.test_oauth.logger" class="py-name" href="#" onclick="return doclink('link-58', 'logger', 'link-8');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-string">"Fetching url: %s, method: %s"</tt><tt class="py-op">,</tt> <tt class="py-name">url</tt><tt class="py-op">,</tt> <tt class="py-name">http_method</tt><tt class="py-op">)</tt> </tt> -<a name="L509"></a><tt class="py-lineno">509</tt> <tt class="py-line"> </tt> -<a name="L510"></a><tt class="py-lineno">510</tt> <tt class="py-line"> </tt> -<a name="L511"></a><tt class="py-lineno">511</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">use_multipart</tt><tt class="py-op">:</tt> </tt> -<a name="L512"></a><tt class="py-lineno">512</tt> <tt class="py-line"> <tt class="py-name">handlers</tt><tt class="py-op">.</tt><tt class="py-name">extend</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-name">MultipartPostHandler</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt> -<a name="L513"></a><tt class="py-lineno">513</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> -<a name="L514"></a><tt class="py-lineno">514</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">urlparams</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> -<a name="L515"></a><tt class="py-lineno">515</tt> <tt class="py-line"> <tt class="py-name">urlparams</tt> <tt class="py-op">=</tt> <tt class="py-name">urllib</tt><tt class="py-op">.</tt><tt class="py-name">urlencode</tt><tt class="py-op">(</tt><tt class="py-name">urlparams</tt><tt class="py-op">.</tt><tt class="py-name">items</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">True</tt><tt class="py-op">)</tt> </tt> -<a name="L516"></a><tt class="py-lineno">516</tt> <tt class="py-line"> <tt class="py-name">opener</tt> <tt class="py-op">=</tt> <tt class="py-name">urllib2</tt><tt class="py-op">.</tt><tt class="py-name">build_opener</tt><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-name">handlers</tt><tt class="py-op">)</tt> </tt> -<a name="L517"></a><tt class="py-lineno">517</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> -<a name="L518"></a><tt class="py-lineno">518</tt> <tt class="py-line"> <tt class="py-name">handle</tt> <tt class="py-op">=</tt> <tt class="py-name">opener</tt><tt class="py-op">.</tt><tt class="py-name">open</tt><tt class="py-op">(</tt><tt class="py-name">req</tt><tt class="py-op">,</tt> <tt class="py-name">urlparams</tt><tt class="py-op">)</tt> </tt> -<a name="L519"></a><tt class="py-lineno">519</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt id="link-59" class="py-name"><a title="scapi.NoResultFromRequest" class="py-name" href="#" onclick="return doclink('link-59', 'NoResultFromRequest', 'link-34');">NoResultFromRequest</a></tt><tt class="py-op">:</tt> </tt> -<a name="L520"></a><tt class="py-lineno">520</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt> -<a name="L521"></a><tt class="py-lineno">521</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">urllib2</tt><tt class="py-op">.</tt><tt class="py-name">HTTPError</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt> -<a name="L522"></a><tt class="py-lineno">522</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">http_method</tt> <tt class="py-op">==</tt> <tt class="py-string">"GET"</tt> <tt class="py-keyword">and</tt> <tt class="py-name">e</tt><tt class="py-op">.</tt><tt class="py-name">code</tt> <tt class="py-op">==</tt> <tt class="py-number">404</tt><tt class="py-op">:</tt> </tt> -<a name="L523"></a><tt class="py-lineno">523</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt> -<a name="L524"></a><tt class="py-lineno">524</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> </tt> -<a name="L525"></a><tt class="py-lineno">525</tt> <tt class="py-line"> </tt> -<a name="L526"></a><tt class="py-lineno">526</tt> <tt class="py-line"> <tt class="py-name">info</tt> <tt class="py-op">=</tt> <tt class="py-name">handle</tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L527"></a><tt class="py-lineno">527</tt> <tt class="py-line"> <tt class="py-name">ct</tt> <tt class="py-op">=</tt> <tt class="py-name">info</tt><tt class="py-op">[</tt><tt class="py-string">'Content-Type'</tt><tt class="py-op">]</tt> </tt> -<a name="L528"></a><tt class="py-lineno">528</tt> <tt class="py-line"> <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt class="py-name">handle</tt><tt class="py-op">.</tt><tt id="link-60" class="py-name"><a title="scapi.json.JsonReader.read -scapi.json.read" class="py-name" href="#" onclick="return doclink('link-60', 'read', 'link-26');">read</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L529"></a><tt class="py-lineno">529</tt> <tt class="py-line"> <tt id="link-61" class="py-name"><a title="scapi.authentication.logger -scapi.logger -scapi.tests.scapi_tests.logger -scapi.tests.test_connect.logger -scapi.tests.test_oauth.logger" class="py-name" href="#" onclick="return doclink('link-61', 'logger', 'link-8');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-string">"Content-type:%s"</tt><tt class="py-op">,</tt> <tt class="py-name">ct</tt><tt class="py-op">)</tt> </tt> -<a name="L530"></a><tt class="py-lineno">530</tt> <tt class="py-line"> <tt id="link-62" class="py-name"><a title="scapi.authentication.logger -scapi.logger -scapi.tests.scapi_tests.logger -scapi.tests.test_connect.logger -scapi.tests.test_oauth.logger" class="py-name" href="#" onclick="return doclink('link-62', 'logger', 'link-8');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-string">"Request Content:\n%s"</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt><tt class="py-op">)</tt> </tt> -<a name="L531"></a><tt class="py-lineno">531</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">redirect_handler</tt><tt class="py-op">.</tt><tt id="link-63" class="py-name"><a title="scapi.SCRedirectHandler.alternate_method" class="py-name" href="#" onclick="return doclink('link-63', 'alternate_method', 'link-30');">alternate_method</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> -<a name="L532"></a><tt class="py-lineno">532</tt> <tt class="py-line"> <tt class="py-name">method</tt> <tt class="py-op">=</tt> <tt class="py-name">connector</tt><tt class="py-op">.</tt><tt id="link-64" class="py-name" targets="Method scapi.ApiConnector.normalize_method()=scapi.ApiConnector-class.html#normalize_method"><a title="scapi.ApiConnector.normalize_method" class="py-name" href="#" onclick="return doclink('link-64', 'normalize_method', 'link-64');">normalize_method</a></tt><tt class="py-op">(</tt><tt class="py-name">redirect_handler</tt><tt class="py-op">.</tt><tt id="link-65" class="py-name"><a title="scapi.SCRedirectHandler.alternate_method" class="py-name" href="#" onclick="return doclink('link-65', 'alternate_method', 'link-30');">alternate_method</a></tt><tt class="py-op">)</tt> </tt> -<a name="L533"></a><tt class="py-lineno">533</tt> <tt class="py-line"> <tt id="link-66" class="py-name"><a title="scapi.authentication.logger -scapi.logger -scapi.tests.scapi_tests.logger -scapi.tests.test_connect.logger -scapi.tests.test_oauth.logger" class="py-name" href="#" onclick="return doclink('link-66', 'logger', 'link-8');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-string">"Method changed through redirect to: <%s>"</tt><tt class="py-op">,</tt> <tt class="py-name">method</tt><tt class="py-op">)</tt> </tt> -<a name="L534"></a><tt class="py-lineno">534</tt> <tt class="py-line"> </tt> -<a name="L535"></a><tt class="py-lineno">535</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> -<a name="L536"></a><tt class="py-lineno">536</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-string">"application/json"</tt> <tt class="py-keyword">in</tt> <tt class="py-name">ct</tt><tt class="py-op">:</tt> </tt> -<a name="L537"></a><tt class="py-lineno">537</tt> <tt class="py-line"> <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt class="py-name">content</tt><tt class="py-op">.</tt><tt class="py-name">strip</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L538"></a><tt class="py-lineno">538</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">content</tt><tt class="py-op">:</tt> </tt> -<a name="L539"></a><tt class="py-lineno">539</tt> <tt class="py-line"> <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt class="py-string">"{}"</tt> </tt> -<a name="L540"></a><tt class="py-lineno">540</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> -<a name="L541"></a><tt class="py-lineno">541</tt> <tt class="py-line"> <tt class="py-name">res</tt> <tt class="py-op">=</tt> <tt class="py-name">simplejson</tt><tt class="py-op">.</tt><tt class="py-name">loads</tt><tt class="py-op">(</tt><tt class="py-name">content</tt><tt class="py-op">)</tt> </tt> -<a name="L542"></a><tt class="py-lineno">542</tt> <tt class="py-line"> <tt class="py-keyword">except</tt><tt class="py-op">:</tt> </tt> -<a name="L543"></a><tt class="py-lineno">543</tt> <tt class="py-line"> <tt id="link-67" class="py-name"><a title="scapi.authentication.logger -scapi.logger -scapi.tests.scapi_tests.logger -scapi.tests.test_connect.logger -scapi.tests.test_oauth.logger" class="py-name" href="#" onclick="return doclink('link-67', 'logger', 'link-8');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">error</tt><tt class="py-op">(</tt><tt class="py-string">"Couldn't decode returned json"</tt><tt class="py-op">)</tt> </tt> -<a name="L544"></a><tt class="py-lineno">544</tt> <tt class="py-line"> <tt id="link-68" class="py-name"><a title="scapi.authentication.logger -scapi.logger -scapi.tests.scapi_tests.logger -scapi.tests.test_connect.logger -scapi.tests.test_oauth.logger" class="py-name" href="#" onclick="return doclink('link-68', 'logger', 'link-8');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">error</tt><tt class="py-op">(</tt><tt class="py-name">content</tt><tt class="py-op">)</tt> </tt> -<a name="L545"></a><tt class="py-lineno">545</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> </tt> -<a name="L546"></a><tt class="py-lineno">546</tt> <tt class="py-line"> <tt class="py-name">res</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-69" class="py-name" targets="Method scapi.Scope._map()=scapi.Scope-class.html#_map"><a title="scapi.Scope._map" class="py-name" href="#" onclick="return doclink('link-69', '_map', 'link-69');">_map</a></tt><tt class="py-op">(</tt><tt class="py-name">res</tt><tt class="py-op">,</tt> <tt class="py-name">method</tt><tt class="py-op">,</tt> <tt class="py-name">continue_list_fetching</tt><tt class="py-op">)</tt> </tt> -<a name="L547"></a><tt class="py-lineno">547</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">res</tt> </tt> -<a name="L548"></a><tt class="py-lineno">548</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">content</tt><tt class="py-op">)</tt> <tt class="py-op"><=</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt> -<a name="L549"></a><tt class="py-lineno">549</tt> <tt class="py-line"> <tt class="py-comment"># this might be the famous SeeOtherSpecialCase which means that</tt> </tt> -<a name="L550"></a><tt class="py-lineno">550</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># all that matters is just the method</tt> </tt> -<a name="L551"></a><tt class="py-lineno">551</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">pass</tt> </tt> -<a name="L552"></a><tt class="py-lineno">552</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-70" class="py-name" targets="Class scapi.UnknownContentType=scapi.UnknownContentType-class.html"><a title="scapi.UnknownContentType" class="py-name" href="#" onclick="return doclink('link-70', 'UnknownContentType', 'link-70');">UnknownContentType</a></tt><tt class="py-op">(</tt><tt class="py-string">"%s, returned:\n%s"</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">ct</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L553"></a><tt class="py-lineno">553</tt> <tt class="py-line"> <tt class="py-keyword">finally</tt><tt class="py-op">:</tt> </tt> -<a name="L554"></a><tt class="py-lineno">554</tt> <tt class="py-line"> <tt class="py-name">handle</tt><tt class="py-op">.</tt><tt class="py-name">close</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -</div><a name="L555"></a><tt class="py-lineno">555</tt> <tt class="py-line"> </tt> -<a name="Scope._map"></a><div id="Scope._map-def"><a name="L556"></a><tt class="py-lineno">556</tt> <a class="py-toggle" href="#" id="Scope._map-toggle" onclick="return toggle('Scope._map');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.Scope-class.html#_map">_map</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">res</tt><tt class="py-op">,</tt> <tt class="py-param">method</tt><tt class="py-op">,</tt> <tt class="py-param">continue_list_fetching</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Scope._map-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Scope._map-expanded"><a name="L557"></a><tt class="py-lineno">557</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L558"></a><tt class="py-lineno">558</tt> <tt class="py-line"><tt class="py-docstring"> This method will take the JSON-result of a HTTP-call and return our domain-objects.</tt> </tt> -<a name="L559"></a><tt class="py-lineno">559</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L560"></a><tt class="py-lineno">560</tt> <tt class="py-line"><tt class="py-docstring"> It's also deep magic, don't look.</tt> </tt> -<a name="L561"></a><tt class="py-lineno">561</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L562"></a><tt class="py-lineno">562</tt> <tt class="py-line"> <tt class="py-name">pathparts</tt> <tt class="py-op">=</tt> <tt class="py-name">reversed</tt><tt class="py-op">(</tt><tt class="py-name">method</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">"/"</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L563"></a><tt class="py-lineno">563</tt> <tt class="py-line"> <tt class="py-name">stack</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt> -<a name="L564"></a><tt class="py-lineno">564</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">part</tt> <tt class="py-keyword">in</tt> <tt class="py-name">pathparts</tt><tt class="py-op">:</tt> </tt> -<a name="L565"></a><tt class="py-lineno">565</tt> <tt class="py-line"> <tt class="py-name">stack</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">part</tt><tt class="py-op">)</tt> </tt> -<a name="L566"></a><tt class="py-lineno">566</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">part</tt> <tt class="py-keyword">in</tt> <tt id="link-71" class="py-name" targets="Class scapi.RESTBase=scapi.RESTBase-class.html"><a title="scapi.RESTBase" class="py-name" href="#" onclick="return doclink('link-71', 'RESTBase', 'link-71');">RESTBase</a></tt><tt class="py-op">.</tt><tt id="link-72" class="py-name" targets="Variable scapi.RESTBase.REGISTRY=scapi.RESTBase-class.html#REGISTRY"><a title="scapi.RESTBase.REGISTRY" class="py-name" href="#" onclick="return doclink('link-72', 'REGISTRY', 'link-72');">REGISTRY</a></tt><tt class="py-op">:</tt> </tt> -<a name="L567"></a><tt class="py-lineno">567</tt> <tt class="py-line"> <tt class="py-name">cls</tt> <tt class="py-op">=</tt> <tt id="link-73" class="py-name"><a title="scapi.RESTBase" class="py-name" href="#" onclick="return doclink('link-73', 'RESTBase', 'link-71');">RESTBase</a></tt><tt class="py-op">.</tt><tt id="link-74" class="py-name"><a title="scapi.RESTBase.REGISTRY" class="py-name" href="#" onclick="return doclink('link-74', 'REGISTRY', 'link-72');">REGISTRY</a></tt><tt class="py-op">[</tt><tt class="py-name">part</tt><tt class="py-op">]</tt> </tt> -<a name="L568"></a><tt class="py-lineno">568</tt> <tt class="py-line"> <tt class="py-comment"># multiple objects</tt> </tt> -<a name="L569"></a><tt class="py-lineno">569</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">res</tt><tt class="py-op">,</tt> <tt class="py-name">list</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L570"></a><tt class="py-lineno">570</tt> <tt class="py-line"> <tt class="py-keyword">def</tt> <tt class="py-def-name">result_gen</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L571"></a><tt class="py-lineno">571</tt> <tt class="py-line"> <tt class="py-name">count</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt> -<a name="L572"></a><tt class="py-lineno">572</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">item</tt> <tt class="py-keyword">in</tt> <tt class="py-name">res</tt><tt class="py-op">:</tt> </tt> -<a name="L573"></a><tt class="py-lineno">573</tt> <tt class="py-line"> <tt class="py-keyword">yield</tt> <tt class="py-name">cls</tt><tt class="py-op">(</tt><tt class="py-name">item</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">stack</tt><tt class="py-op">)</tt> </tt> -<a name="L574"></a><tt class="py-lineno">574</tt> <tt class="py-line"> <tt class="py-name">count</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt> -<a name="L575"></a><tt class="py-lineno">575</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">count</tt> <tt class="py-op">==</tt> <tt id="link-75" class="py-name"><a title="scapi.ApiConnector" class="py-name" href="#" onclick="return doclink('link-75', 'ApiConnector', 'link-43');">ApiConnector</a></tt><tt class="py-op">.</tt><tt id="link-76" class="py-name"><a title="scapi.ApiConnector.LIST_LIMIT" class="py-name" href="#" onclick="return doclink('link-76', 'LIST_LIMIT', 'link-17');">LIST_LIMIT</a></tt><tt class="py-op">:</tt> </tt> -<a name="L576"></a><tt class="py-lineno">576</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">item</tt> <tt class="py-keyword">in</tt> <tt class="py-name">continue_list_fetching</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L577"></a><tt class="py-lineno">577</tt> <tt class="py-line"> <tt class="py-keyword">yield</tt> <tt class="py-name">item</tt> </tt> -</div><a name="L578"></a><tt class="py-lineno">578</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">result_gen</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L579"></a><tt class="py-lineno">579</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> -<a name="L580"></a><tt class="py-lineno">580</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">cls</tt><tt class="py-op">(</tt><tt class="py-name">res</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">stack</tt><tt class="py-op">)</tt> </tt> -<a name="L581"></a><tt class="py-lineno">581</tt> <tt class="py-line"> <tt id="link-77" class="py-name"><a title="scapi.authentication.logger -scapi.logger -scapi.tests.scapi_tests.logger -scapi.tests.test_connect.logger -scapi.tests.test_oauth.logger" class="py-name" href="#" onclick="return doclink('link-77', 'logger', 'link-8');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-string">"don't know how to handle result"</tt><tt class="py-op">)</tt> </tt> -<a name="L582"></a><tt class="py-lineno">582</tt> <tt class="py-line"> <tt id="link-78" class="py-name"><a title="scapi.authentication.logger -scapi.logger -scapi.tests.scapi_tests.logger -scapi.tests.test_connect.logger -scapi.tests.test_oauth.logger" class="py-name" href="#" onclick="return doclink('link-78', 'logger', 'link-8');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-name">res</tt><tt class="py-op">)</tt> </tt> -<a name="L583"></a><tt class="py-lineno">583</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">res</tt> </tt> -</div><a name="L584"></a><tt class="py-lineno">584</tt> <tt class="py-line"> </tt> -<a name="Scope.__getattr__"></a><div id="Scope.__getattr__-def"><a name="L585"></a><tt class="py-lineno">585</tt> <a class="py-toggle" href="#" id="Scope.__getattr__-toggle" onclick="return toggle('Scope.__getattr__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.Scope-class.html#__getattr__">__getattr__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">_name</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Scope.__getattr__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Scope.__getattr__-expanded"><a name="L586"></a><tt class="py-lineno">586</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L587"></a><tt class="py-lineno">587</tt> <tt class="py-line"><tt class="py-docstring"> Retrieve an API-method or a scoped domain-class. </tt> </tt> -<a name="L588"></a><tt class="py-lineno">588</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L589"></a><tt class="py-lineno">589</tt> <tt class="py-line"><tt class="py-docstring"> If the former, result is a callable that supports the following invocations:</tt> </tt> -<a name="L590"></a><tt class="py-lineno">590</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L591"></a><tt class="py-lineno">591</tt> <tt class="py-line"><tt class="py-docstring"> - calling (...), with possible arguments (positional/keyword), return the resulting resource or list of resources.</tt> </tt> -<a name="L592"></a><tt class="py-lineno">592</tt> <tt class="py-line"><tt class="py-docstring"> When calling, you can pass a keyword-argument B{params}. This must be a dict or L{MultiDict} and will be used to add additional query-get-parameters.</tt> </tt> -<a name="L593"></a><tt class="py-lineno">593</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L594"></a><tt class="py-lineno">594</tt> <tt class="py-line"><tt class="py-docstring"> - invoking append(resource) on it will PUT the resource, making it part of the current resource. Makes</tt> </tt> -<a name="L595"></a><tt class="py-lineno">595</tt> <tt class="py-line"><tt class="py-docstring"> sense only if it's a collection of course.</tt> </tt> -<a name="L596"></a><tt class="py-lineno">596</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L597"></a><tt class="py-lineno">597</tt> <tt class="py-line"><tt class="py-docstring"> - invoking remove(resource) on it will DELETE the resource from it's container. Also only usable on collections.</tt> </tt> -<a name="L598"></a><tt class="py-lineno">598</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L599"></a><tt class="py-lineno">599</tt> <tt class="py-line"><tt class="py-docstring"> TODO: describe the latter </tt> </tt> -<a name="L600"></a><tt class="py-lineno">600</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L601"></a><tt class="py-lineno">601</tt> <tt class="py-line"> <tt class="py-name">scope</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt> </tt> -<a name="L602"></a><tt class="py-lineno">602</tt> <tt class="py-line"> </tt> -<a name="L603"></a><tt class="py-lineno">603</tt> <tt class="py-line"> <tt class="py-keyword">class</tt> <tt class="py-def-name">api_call</tt><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L604"></a><tt class="py-lineno">604</tt> <tt class="py-line"> <tt class="py-keyword">def</tt> <tt class="py-def-name">__call__</tt><tt class="py-op">(</tt><tt class="py-param">selfish</tt><tt class="py-op">,</tt> <tt class="py-op">*</tt><tt class="py-param">args</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-param">kwargs</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L605"></a><tt class="py-lineno">605</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-79" class="py-name"><a title="scapi.Scope._call" class="py-name" href="#" onclick="return doclink('link-79', '_call', 'link-47');">_call</a></tt><tt class="py-op">(</tt><tt class="py-name">_name</tt><tt class="py-op">,</tt> <tt class="py-op">*</tt><tt class="py-name">args</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-name">kwargs</tt><tt class="py-op">)</tt> </tt> -</div><a name="L606"></a><tt class="py-lineno">606</tt> <tt class="py-line"> </tt> -<a name="L607"></a><tt class="py-lineno">607</tt> <tt class="py-line"> <tt class="py-keyword">def</tt> <tt class="py-def-name">new</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-param">kwargs</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L608"></a><tt class="py-lineno">608</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L609"></a><tt class="py-lineno">609</tt> <tt class="py-line"><tt class="py-docstring"> Will invoke the new method on the named resource _name, with </tt> </tt> -<a name="L610"></a><tt class="py-lineno">610</tt> <tt class="py-line"><tt class="py-docstring"> self as scope.</tt> </tt> -<a name="L611"></a><tt class="py-lineno">611</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L612"></a><tt class="py-lineno">612</tt> <tt class="py-line"> <tt class="py-name">cls</tt> <tt class="py-op">=</tt> <tt id="link-80" class="py-name"><a title="scapi.RESTBase" class="py-name" href="#" onclick="return doclink('link-80', 'RESTBase', 'link-71');">RESTBase</a></tt><tt class="py-op">.</tt><tt id="link-81" class="py-name"><a title="scapi.RESTBase.REGISTRY" class="py-name" href="#" onclick="return doclink('link-81', 'REGISTRY', 'link-72');">REGISTRY</a></tt><tt class="py-op">[</tt><tt class="py-name">_name</tt><tt class="py-op">]</tt> </tt> -<a name="L613"></a><tt class="py-lineno">613</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">cls</tt><tt class="py-op">.</tt><tt id="link-82" class="py-name" targets="Class Method scapi.RESTBase.new()=scapi.RESTBase-class.html#new"><a title="scapi.RESTBase.new" class="py-name" href="#" onclick="return doclink('link-82', 'new', 'link-82');">new</a></tt><tt class="py-op">(</tt><tt class="py-name">scope</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-name">kwargs</tt><tt class="py-op">)</tt> </tt> -</div><a name="L614"></a><tt class="py-lineno">614</tt> <tt class="py-line"> </tt> -<a name="L615"></a><tt class="py-lineno">615</tt> <tt class="py-line"> <tt class="py-keyword">def</tt> <tt class="py-def-name">append</tt><tt class="py-op">(</tt><tt class="py-param">selfish</tt><tt class="py-op">,</tt> <tt class="py-param">resource</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L616"></a><tt class="py-lineno">616</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L617"></a><tt class="py-lineno">617</tt> <tt class="py-line"><tt class="py-docstring"> If the current scope is </tt> </tt> -<a name="L618"></a><tt class="py-lineno">618</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L619"></a><tt class="py-lineno">619</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-83" class="py-name"><a title="scapi.Scope._call" class="py-name" href="#" onclick="return doclink('link-83', '_call', 'link-47');">_call</a></tt><tt class="py-op">(</tt><tt class="py-name">_name</tt><tt class="py-op">,</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">resource</tt><tt class="py-op">.</tt><tt class="py-name">id</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">_alternate_http_method</tt><tt class="py-op">=</tt><tt class="py-string">"PUT"</tt><tt class="py-op">)</tt> </tt> -</div><a name="L620"></a><tt class="py-lineno">620</tt> <tt class="py-line"> </tt> -<a name="L621"></a><tt class="py-lineno">621</tt> <tt class="py-line"> <tt class="py-keyword">def</tt> <tt class="py-def-name">remove</tt><tt class="py-op">(</tt><tt class="py-param">selfish</tt><tt class="py-op">,</tt> <tt class="py-param">resource</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L622"></a><tt class="py-lineno">622</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-84" class="py-name"><a title="scapi.Scope._call" class="py-name" href="#" onclick="return doclink('link-84', '_call', 'link-47');">_call</a></tt><tt class="py-op">(</tt><tt class="py-name">_name</tt><tt class="py-op">,</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">resource</tt><tt class="py-op">.</tt><tt class="py-name">id</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">_alternate_http_method</tt><tt class="py-op">=</tt><tt class="py-string">"DELETE"</tt><tt class="py-op">)</tt> </tt> -</div></div><a name="L623"></a><tt class="py-lineno">623</tt> <tt class="py-line"> </tt> -<a name="L624"></a><tt class="py-lineno">624</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">_name</tt> <tt class="py-keyword">in</tt> <tt id="link-85" class="py-name"><a title="scapi.RESTBase" class="py-name" href="#" onclick="return doclink('link-85', 'RESTBase', 'link-71');">RESTBase</a></tt><tt class="py-op">.</tt><tt id="link-86" class="py-name" targets="Variable scapi.RESTBase.ALL_DOMAIN_CLASSES=scapi.RESTBase-class.html#ALL_DOMAIN_CLASSES"><a title="scapi.RESTBase.ALL_DOMAIN_CLASSES" class="py-name" href="#" onclick="return doclink('link-86', 'ALL_DOMAIN_CLASSES', 'link-86');">ALL_DOMAIN_CLASSES</a></tt><tt class="py-op">:</tt> </tt> -<a name="L625"></a><tt class="py-lineno">625</tt> <tt class="py-line"> <tt class="py-name">cls</tt> <tt class="py-op">=</tt> <tt id="link-87" class="py-name"><a title="scapi.RESTBase" class="py-name" href="#" onclick="return doclink('link-87', 'RESTBase', 'link-71');">RESTBase</a></tt><tt class="py-op">.</tt><tt id="link-88" class="py-name"><a title="scapi.RESTBase.ALL_DOMAIN_CLASSES" class="py-name" href="#" onclick="return doclink('link-88', 'ALL_DOMAIN_CLASSES', 'link-86');">ALL_DOMAIN_CLASSES</a></tt><tt class="py-op">[</tt><tt class="py-name">_name</tt><tt class="py-op">]</tt> </tt> -<a name="L626"></a><tt class="py-lineno">626</tt> <tt class="py-line"> </tt> -<a name="L627"></a><tt class="py-lineno">627</tt> <tt class="py-line"> <tt class="py-keyword">class</tt> <tt class="py-def-name">ScopeBinder</tt><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L628"></a><tt class="py-lineno">628</tt> <tt class="py-line"> <tt class="py-keyword">def</tt> <tt class="py-def-name">new</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-op">*</tt><tt class="py-param">args</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-param">data</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L629"></a><tt class="py-lineno">629</tt> <tt class="py-line"> </tt> -<a name="L630"></a><tt class="py-lineno">630</tt> <tt class="py-line"> <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt id="link-89" class="py-name"><a title="scapi.util.MultiDict" class="py-name" href="#" onclick="return doclink('link-89', 'MultiDict', 'link-7');">MultiDict</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L631"></a><tt class="py-lineno">631</tt> <tt class="py-line"> <tt class="py-name">name</tt> <tt class="py-op">=</tt> <tt class="py-name">cls</tt><tt class="py-op">.</tt><tt id="link-90" class="py-name" targets="Class Method scapi.RESTBase._singleton()=scapi.RESTBase-class.html#_singleton"><a title="scapi.RESTBase._singleton" class="py-name" href="#" onclick="return doclink('link-90', '_singleton', 'link-90');">_singleton</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L632"></a><tt class="py-lineno">632</tt> <tt class="py-line"> </tt> -<a name="L633"></a><tt class="py-lineno">633</tt> <tt class="py-line"> <tt class="py-keyword">def</tt> <tt class="py-def-name">unfold_value</tt><tt class="py-op">(</tt><tt class="py-param">key</tt><tt class="py-op">,</tt> <tt class="py-param">value</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L634"></a><tt class="py-lineno">634</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-name">basestring</tt><tt class="py-op">,</tt> <tt class="py-name">file</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L635"></a><tt class="py-lineno">635</tt> <tt class="py-line"> <tt class="py-name">d</tt><tt class="py-op">.</tt><tt id="link-91" class="py-name" targets="Method scapi.util.MultiDict.add()=scapi.util.MultiDict-class.html#add"><a title="scapi.util.MultiDict.add" class="py-name" href="#" onclick="return doclink('link-91', 'add', 'link-91');">add</a></tt><tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">,</tt> <tt class="py-name">value</tt><tt class="py-op">)</tt> </tt> -<a name="L636"></a><tt class="py-lineno">636</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">,</tt> <tt class="py-name">dict</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L637"></a><tt class="py-lineno">637</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">sub_key</tt><tt class="py-op">,</tt> <tt class="py-name">sub_value</tt> <tt class="py-keyword">in</tt> <tt class="py-name">value</tt><tt class="py-op">.</tt><tt class="py-name">iteritems</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L638"></a><tt class="py-lineno">638</tt> <tt class="py-line"> <tt class="py-name">unfold_value</tt><tt class="py-op">(</tt><tt class="py-string">"%s[%s]"</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">,</tt> <tt class="py-name">sub_key</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">sub_value</tt><tt class="py-op">)</tt> </tt> -<a name="L639"></a><tt class="py-lineno">639</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> -<a name="L640"></a><tt class="py-lineno">640</tt> <tt class="py-line"> <tt class="py-comment"># assume iteration else</tt> </tt> -<a name="L641"></a><tt class="py-lineno">641</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">for</tt> <tt class="py-name">sub_value</tt> <tt class="py-keyword">in</tt> <tt class="py-name">value</tt><tt class="py-op">:</tt> </tt> -<a name="L642"></a><tt class="py-lineno">642</tt> <tt class="py-line"> <tt class="py-name">unfold_value</tt><tt class="py-op">(</tt><tt class="py-name">key</tt> <tt class="py-op">+</tt> <tt class="py-string">"[]"</tt><tt class="py-op">,</tt> <tt class="py-name">sub_value</tt><tt class="py-op">)</tt> </tt> -</div><a name="L643"></a><tt class="py-lineno">643</tt> <tt class="py-line"> </tt> -<a name="L644"></a><tt class="py-lineno">644</tt> <tt class="py-line"> </tt> -<a name="L645"></a><tt class="py-lineno">645</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">key</tt><tt class="py-op">,</tt> <tt class="py-name">value</tt> <tt class="py-keyword">in</tt> <tt class="py-name">data</tt><tt class="py-op">.</tt><tt class="py-name">iteritems</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L646"></a><tt class="py-lineno">646</tt> <tt class="py-line"> <tt class="py-name">unfold_value</tt><tt class="py-op">(</tt><tt class="py-string">"%s[%s]"</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">name</tt><tt class="py-op">,</tt> <tt class="py-name">key</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">value</tt><tt class="py-op">)</tt> </tt> -<a name="L647"></a><tt class="py-lineno">647</tt> <tt class="py-line"> </tt> -<a name="L648"></a><tt class="py-lineno">648</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">scope</tt><tt class="py-op">.</tt><tt id="link-92" class="py-name"><a title="scapi.Scope._call" class="py-name" href="#" onclick="return doclink('link-92', '_call', 'link-47');">_call</a></tt><tt class="py-op">(</tt><tt class="py-name">cls</tt><tt class="py-op">.</tt><tt id="link-93" class="py-name" targets="Variable scapi.Comment.KIND=scapi.Comment-class.html#KIND,Variable scapi.Event.KIND=scapi.Event-class.html#KIND,Variable scapi.Group.KIND=scapi.Group-class.html#KIND,Variable scapi.Playlist.KIND=scapi.Playlist-class.html#KIND,Variable scapi.RESTBase.KIND=scapi.RESTBase-class.html#KIND,Variable scapi.Track.KIND=scapi.Track-class.html#KIND,Variable scapi.User.KIND=scapi.User-class.html#KIND"><a title="scapi.Comment.KIND -scapi.Event.KIND -scapi.Group.KIND -scapi.Playlist.KIND -scapi.RESTBase.KIND -scapi.Track.KIND -scapi.User.KIND" class="py-name" href="#" onclick="return doclink('link-93', 'KIND', 'link-93');">KIND</a></tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-name">d</tt><tt class="py-op">)</tt> </tt> -</div><a name="L649"></a><tt class="py-lineno">649</tt> <tt class="py-line"> </tt> -<a name="L650"></a><tt class="py-lineno">650</tt> <tt class="py-line"> <tt class="py-keyword">def</tt> <tt class="py-def-name">create</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-param">data</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L651"></a><tt class="py-lineno">651</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">cls</tt><tt class="py-op">.</tt><tt id="link-94" class="py-name" targets="Class Method scapi.RESTBase.create()=scapi.RESTBase-class.html#create"><a title="scapi.RESTBase.create" class="py-name" href="#" onclick="return doclink('link-94', 'create', 'link-94');">create</a></tt><tt class="py-op">(</tt><tt class="py-name">scope</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-name">data</tt><tt class="py-op">)</tt> </tt> -</div><a name="L652"></a><tt class="py-lineno">652</tt> <tt class="py-line"> </tt> -<a name="L653"></a><tt class="py-lineno">653</tt> <tt class="py-line"> <tt class="py-keyword">def</tt> <tt class="py-def-name">get</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">id</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L654"></a><tt class="py-lineno">654</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">cls</tt><tt class="py-op">.</tt><tt id="link-95" class="py-name" targets="Class Method scapi.RESTBase.get()=scapi.RESTBase-class.html#get"><a title="scapi.RESTBase.get" class="py-name" href="#" onclick="return doclink('link-95', 'get', 'link-95');">get</a></tt><tt class="py-op">(</tt><tt class="py-name">scope</tt><tt class="py-op">,</tt> <tt class="py-name">id</tt><tt class="py-op">)</tt> </tt> -</div></div><a name="L655"></a><tt class="py-lineno">655</tt> <tt class="py-line"> </tt> -<a name="L656"></a><tt class="py-lineno">656</tt> <tt class="py-line"> </tt> -<a name="L657"></a><tt class="py-lineno">657</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">ScopeBinder</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L658"></a><tt class="py-lineno">658</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">api_call</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -</div><a name="L659"></a><tt class="py-lineno">659</tt> <tt class="py-line"> </tt> -<a name="Scope.__repr__"></a><div id="Scope.__repr__-def"><a name="L660"></a><tt class="py-lineno">660</tt> <a class="py-toggle" href="#" id="Scope.__repr__-toggle" onclick="return toggle('Scope.__repr__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.Scope-class.html#__repr__">__repr__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Scope.__repr__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Scope.__repr__-expanded"><a name="L661"></a><tt class="py-lineno">661</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt> -</div><a name="L662"></a><tt class="py-lineno">662</tt> <tt class="py-line"> </tt> -<a name="Scope.__str__"></a><div id="Scope.__str__-def"><a name="L663"></a><tt class="py-lineno">663</tt> <a class="py-toggle" href="#" id="Scope.__str__-toggle" onclick="return toggle('Scope.__str__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.Scope-class.html#__str__">__str__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Scope.__str__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Scope.__str__-expanded"><a name="L664"></a><tt class="py-lineno">664</tt> <tt class="py-line"> <tt class="py-name">scopes</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-96" class="py-name"><a title="scapi.RESTBase._scope" class="py-name" href="#" onclick="return doclink('link-96', '_scope', 'link-36');">_scope</a></tt> </tt> -<a name="L665"></a><tt class="py-lineno">665</tt> <tt class="py-line"> <tt class="py-name">base</tt> <tt class="py-op">=</tt> <tt class="py-string">""</tt> </tt> -<a name="L666"></a><tt class="py-lineno">666</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">scopes</tt><tt class="py-op">)</tt> <tt class="py-op">></tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt> -<a name="L667"></a><tt class="py-lineno">667</tt> <tt class="py-line"> <tt class="py-name">base</tt> <tt class="py-op">=</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">scopes</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt> -<a name="L668"></a><tt class="py-lineno">668</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">base</tt> <tt class="py-op">+</tt> <tt class="py-string">"/"</tt> <tt class="py-op">+</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">scopes</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt> -</div></div><a name="L669"></a><tt class="py-lineno">669</tt> <tt class="py-line"> </tt> -<a name="RESTBase"></a><div id="RESTBase-def"><a name="L670"></a><tt class="py-lineno">670</tt> <tt class="py-line"> </tt> -<a name="L671"></a><tt class="py-lineno">671</tt> <tt class="py-line"><tt class="py-comment"># maybe someday I'll make that work.</tt> </tt> -<a name="L672"></a><tt class="py-lineno">672</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># class RESTBaseMeta(type):</tt> </tt> -<a name="L673"></a><tt class="py-lineno">673</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># def __new__(self, name, bases, d):</tt> </tt> -<a name="L674"></a><tt class="py-lineno">674</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># clazz = type(name, bases, d)</tt> </tt> -<a name="L675"></a><tt class="py-lineno">675</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># if 'KIND' in d:</tt> </tt> -<a name="L676"></a><tt class="py-lineno">676</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># kind = d['KIND']</tt> </tt> -<a name="L677"></a><tt class="py-lineno">677</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># RESTBase.REGISTRY[kind] = clazz</tt> </tt> -<a name="L678"></a><tt class="py-lineno">678</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># return clazz</tt> </tt> -<a name="L679"></a><tt class="py-lineno">679</tt> <tt class="py-line"><tt class="py-comment"></tt> </tt> -<a name="L680"></a><tt class="py-lineno">680</tt> <a class="py-toggle" href="#" id="RESTBase-toggle" onclick="return toggle('RESTBase');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="scapi.RESTBase-class.html">RESTBase</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="RESTBase-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="RESTBase-expanded"><a name="L681"></a><tt class="py-lineno">681</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L682"></a><tt class="py-lineno">682</tt> <tt class="py-line"><tt class="py-docstring"> The baseclass for all our domain-objects/resources.</tt> </tt> -<a name="L683"></a><tt class="py-lineno">683</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L684"></a><tt class="py-lineno">684</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L685"></a><tt class="py-lineno">685</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L686"></a><tt class="py-lineno">686</tt> <tt class="py-line"> <tt id="link-97" class="py-name"><a title="scapi.RESTBase.REGISTRY" class="py-name" href="#" onclick="return doclink('link-97', 'REGISTRY', 'link-72');">REGISTRY</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt> -<a name="L687"></a><tt class="py-lineno">687</tt> <tt class="py-line"> </tt> -<a name="L688"></a><tt class="py-lineno">688</tt> <tt class="py-line"> <tt id="link-98" class="py-name"><a title="scapi.RESTBase.ALL_DOMAIN_CLASSES" class="py-name" href="#" onclick="return doclink('link-98', 'ALL_DOMAIN_CLASSES', 'link-86');">ALL_DOMAIN_CLASSES</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt> -<a name="L689"></a><tt class="py-lineno">689</tt> <tt class="py-line"> </tt> -<a name="L690"></a><tt class="py-lineno">690</tt> <tt class="py-line"> <tt id="link-99" class="py-name" targets="Variable scapi.RESTBase.ALIASES=scapi.RESTBase-class.html#ALIASES,Variable scapi.Track.ALIASES=scapi.Track-class.html#ALIASES,Variable scapi.User.ALIASES=scapi.User-class.html#ALIASES"><a title="scapi.RESTBase.ALIASES -scapi.Track.ALIASES -scapi.User.ALIASES" class="py-name" href="#" onclick="return doclink('link-99', 'ALIASES', 'link-99');">ALIASES</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt> -<a name="L691"></a><tt class="py-lineno">691</tt> <tt class="py-line"> </tt> -<a name="L692"></a><tt class="py-lineno">692</tt> <tt class="py-line"> <tt id="link-100" class="py-name"><a title="scapi.Comment.KIND -scapi.Event.KIND -scapi.Group.KIND -scapi.Playlist.KIND -scapi.RESTBase.KIND -scapi.Track.KIND -scapi.User.KIND" class="py-name" href="#" onclick="return doclink('link-100', 'KIND', 'link-93');">KIND</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt> -<a name="L693"></a><tt class="py-lineno">693</tt> <tt class="py-line"> </tt> -<a name="RESTBase.__init__"></a><div id="RESTBase.__init__-def"><a name="L694"></a><tt class="py-lineno">694</tt> <a class="py-toggle" href="#" id="RESTBase.__init__-toggle" onclick="return toggle('RESTBase.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.RESTBase-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">data</tt><tt class="py-op">,</tt> <tt class="py-param">scope</tt><tt class="py-op">,</tt> <tt class="py-param">path_stack</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="RESTBase.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="RESTBase.__init__-expanded"><a name="L695"></a><tt class="py-lineno">695</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__data</tt> <tt class="py-op">=</tt> <tt class="py-name">data</tt> </tt> -<a name="L696"></a><tt class="py-lineno">696</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__scope</tt> <tt class="py-op">=</tt> <tt class="py-name">scope</tt> </tt> -<a name="L697"></a><tt class="py-lineno">697</tt> <tt class="py-line"> <tt class="py-comment"># try and see if we can/must create an id out of our path</tt> </tt> -<a name="L698"></a><tt class="py-lineno">698</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt id="link-101" class="py-name"><a title="scapi.authentication.logger -scapi.logger -scapi.tests.scapi_tests.logger -scapi.tests.test_connect.logger -scapi.tests.test_oauth.logger" class="py-name" href="#" onclick="return doclink('link-101', 'logger', 'link-8');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-string">"path_stack: %r"</tt><tt class="py-op">,</tt> <tt class="py-name">path_stack</tt><tt class="py-op">)</tt> </tt> -<a name="L699"></a><tt class="py-lineno">699</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">path_stack</tt><tt class="py-op">:</tt> </tt> -<a name="L700"></a><tt class="py-lineno">700</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> -<a name="L701"></a><tt class="py-lineno">701</tt> <tt class="py-line"> <tt class="py-name">id</tt> <tt class="py-op">=</tt> <tt class="py-name">int</tt><tt class="py-op">(</tt><tt class="py-name">path_stack</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt> -<a name="L702"></a><tt class="py-lineno">702</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__data</tt><tt class="py-op">[</tt><tt class="py-string">'id'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">id</tt> </tt> -<a name="L703"></a><tt class="py-lineno">703</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">ValueError</tt><tt class="py-op">:</tt> </tt> -<a name="L704"></a><tt class="py-lineno">704</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt> -</div><a name="L705"></a><tt class="py-lineno">705</tt> <tt class="py-line"> </tt> -<a name="RESTBase.__getattr__"></a><div id="RESTBase.__getattr__-def"><a name="L706"></a><tt class="py-lineno">706</tt> <a class="py-toggle" href="#" id="RESTBase.__getattr__-toggle" onclick="return toggle('RESTBase.__getattr__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.RESTBase-class.html#__getattr__">__getattr__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">name</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="RESTBase.__getattr__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="RESTBase.__getattr__-expanded"><a name="L707"></a><tt class="py-lineno">707</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">name</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__data</tt><tt class="py-op">:</tt> </tt> -<a name="L708"></a><tt class="py-lineno">708</tt> <tt class="py-line"> <tt class="py-name">obj</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__data</tt><tt class="py-op">[</tt><tt class="py-name">name</tt><tt class="py-op">]</tt> </tt> -<a name="L709"></a><tt class="py-lineno">709</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">name</tt> <tt class="py-keyword">in</tt> <tt id="link-102" class="py-name"><a title="scapi.RESTBase" class="py-name" href="#" onclick="return doclink('link-102', 'RESTBase', 'link-71');">RESTBase</a></tt><tt class="py-op">.</tt><tt id="link-103" class="py-name"><a title="scapi.RESTBase.REGISTRY" class="py-name" href="#" onclick="return doclink('link-103', 'REGISTRY', 'link-72');">REGISTRY</a></tt><tt class="py-op">:</tt> </tt> -<a name="L710"></a><tt class="py-lineno">710</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">obj</tt><tt class="py-op">,</tt> <tt class="py-name">dict</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L711"></a><tt class="py-lineno">711</tt> <tt class="py-line"> <tt class="py-name">obj</tt> <tt class="py-op">=</tt> <tt id="link-104" class="py-name"><a title="scapi.RESTBase" class="py-name" href="#" onclick="return doclink('link-104', 'RESTBase', 'link-71');">RESTBase</a></tt><tt class="py-op">.</tt><tt id="link-105" class="py-name"><a title="scapi.RESTBase.REGISTRY" class="py-name" href="#" onclick="return doclink('link-105', 'REGISTRY', 'link-72');">REGISTRY</a></tt><tt class="py-op">[</tt><tt class="py-name">name</tt><tt class="py-op">]</tt><tt class="py-op">(</tt><tt class="py-name">obj</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__scope</tt><tt class="py-op">)</tt> </tt> -<a name="L712"></a><tt class="py-lineno">712</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">obj</tt><tt class="py-op">,</tt> <tt class="py-name">list</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L713"></a><tt class="py-lineno">713</tt> <tt class="py-line"> <tt class="py-name">obj</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt id="link-106" class="py-name"><a title="scapi.RESTBase" class="py-name" href="#" onclick="return doclink('link-106', 'RESTBase', 'link-71');">RESTBase</a></tt><tt class="py-op">.</tt><tt id="link-107" class="py-name"><a title="scapi.RESTBase.REGISTRY" class="py-name" href="#" onclick="return doclink('link-107', 'REGISTRY', 'link-72');">REGISTRY</a></tt><tt class="py-op">[</tt><tt class="py-name">name</tt><tt class="py-op">]</tt><tt class="py-op">(</tt><tt class="py-name">o</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__scope</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-name">o</tt> <tt class="py-keyword">in</tt> <tt class="py-name">obj</tt><tt class="py-op">]</tt> </tt> -<a name="L714"></a><tt class="py-lineno">714</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> -<a name="L715"></a><tt class="py-lineno">715</tt> <tt class="py-line"> <tt id="link-108" class="py-name"><a title="scapi.authentication.logger -scapi.logger -scapi.tests.scapi_tests.logger -scapi.tests.test_connect.logger -scapi.tests.test_oauth.logger" class="py-name" href="#" onclick="return doclink('link-108', 'logger', 'link-8');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">warning</tt><tt class="py-op">(</tt><tt class="py-string">"Found %s in our registry, but don't know what to do with"</tt>\ </tt> -<a name="L716"></a><tt class="py-lineno">716</tt> <tt class="py-line"> <tt class="py-string">"the object."</tt><tt class="py-op">)</tt> </tt> -<a name="L717"></a><tt class="py-lineno">717</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">obj</tt> </tt> -<a name="L718"></a><tt class="py-lineno">718</tt> <tt class="py-line"> <tt class="py-name">scope</tt> <tt class="py-op">=</tt> <tt id="link-109" class="py-name" targets="Class scapi.Scope=scapi.Scope-class.html"><a title="scapi.Scope" class="py-name" href="#" onclick="return doclink('link-109', 'Scope', 'link-109');">Scope</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__scope</tt><tt class="py-op">.</tt><tt id="link-110" class="py-name"><a title="scapi.Scope._get_connector" class="py-name" href="#" onclick="return doclink('link-110', '_get_connector', 'link-48');">_get_connector</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">scope</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">parent</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__scope</tt><tt class="py-op">)</tt> </tt> -<a name="L719"></a><tt class="py-lineno">719</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">getattr</tt><tt class="py-op">(</tt><tt class="py-name">scope</tt><tt class="py-op">,</tt> <tt class="py-name">name</tt><tt class="py-op">)</tt> </tt> -</div><a name="L720"></a><tt class="py-lineno">720</tt> <tt class="py-line"> </tt> -<a name="RESTBase.__setattr__"></a><div id="RESTBase.__setattr__-def"><a name="L721"></a><tt class="py-lineno">721</tt> <a class="py-toggle" href="#" id="RESTBase.__setattr__-toggle" onclick="return toggle('RESTBase.__setattr__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.RESTBase-class.html#__setattr__">__setattr__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">name</tt><tt class="py-op">,</tt> <tt class="py-param">value</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="RESTBase.__setattr__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="RESTBase.__setattr__-expanded"><a name="L722"></a><tt class="py-lineno">722</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L723"></a><tt class="py-lineno">723</tt> <tt class="py-line"><tt class="py-docstring"> This method is used to set a property, a resource or a list of resources as property of the resource the</tt> </tt> -<a name="L724"></a><tt class="py-lineno">724</tt> <tt class="py-line"><tt class="py-docstring"> method is invoked on.</tt> </tt> -<a name="L725"></a><tt class="py-lineno">725</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L726"></a><tt class="py-lineno">726</tt> <tt class="py-line"><tt class="py-docstring"> For example, to set a comment on a track, do</tt> </tt> -<a name="L727"></a><tt class="py-lineno">727</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L728"></a><tt class="py-lineno">728</tt> <tt class="py-line"><tt class="py-docstring"> >>> sca = scapi.Scope(connector)</tt> </tt> -<a name="L729"></a><tt class="py-lineno">729</tt> <tt class="py-line"><tt class="py-docstring"> >>> track = scapi.Track.new(title='bar', sharing="private")</tt> </tt> -<a name="L730"></a><tt class="py-lineno">730</tt> <tt class="py-line"><tt class="py-docstring"> >>> comment = scapi.Comment.create(body="This is the body of my comment", timestamp=10) </tt> </tt> -<a name="L731"></a><tt class="py-lineno">731</tt> <tt class="py-line"><tt class="py-docstring"> >>> track.comments = comment</tt> </tt> -<a name="L732"></a><tt class="py-lineno">732</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L733"></a><tt class="py-lineno">733</tt> <tt class="py-line"><tt class="py-docstring"> To set a list of users as permissions, do</tt> </tt> -<a name="L734"></a><tt class="py-lineno">734</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L735"></a><tt class="py-lineno">735</tt> <tt class="py-line"><tt class="py-docstring"> >>> sca = scapi.Scope(connector)</tt> </tt> -<a name="L736"></a><tt class="py-lineno">736</tt> <tt class="py-line"><tt class="py-docstring"> >>> me = sca.me()</tt> </tt> -<a name="L737"></a><tt class="py-lineno">737</tt> <tt class="py-line"><tt class="py-docstring"> >>> track = scapi.Track.new(title='bar', sharing="private")</tt> </tt> -<a name="L738"></a><tt class="py-lineno">738</tt> <tt class="py-line"><tt class="py-docstring"> >>> users = sca.users()</tt> </tt> -<a name="L739"></a><tt class="py-lineno">739</tt> <tt class="py-line"><tt class="py-docstring"> >>> users_to_set = [user for user in users[:10] if user != me]</tt> </tt> -<a name="L740"></a><tt class="py-lineno">740</tt> <tt class="py-line"><tt class="py-docstring"> >>> track.permissions = users_to_set</tt> </tt> -<a name="L741"></a><tt class="py-lineno">741</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L742"></a><tt class="py-lineno">742</tt> <tt class="py-line"><tt class="py-docstring"> And finally, to simply change the title of a track, do</tt> </tt> -<a name="L743"></a><tt class="py-lineno">743</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L744"></a><tt class="py-lineno">744</tt> <tt class="py-line"><tt class="py-docstring"> >>> sca = scapi.Scope(connector)</tt> </tt> -<a name="L745"></a><tt class="py-lineno">745</tt> <tt class="py-line"><tt class="py-docstring"> >>> track = sca.Track.get(track_id)</tt> </tt> -<a name="L746"></a><tt class="py-lineno">746</tt> <tt class="py-line"><tt class="py-docstring"> >>> track.title = "new_title"</tt> </tt> -<a name="L747"></a><tt class="py-lineno">747</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L748"></a><tt class="py-lineno">748</tt> <tt class="py-line"><tt class="py-docstring"> @param name: the property name</tt> </tt> -<a name="L749"></a><tt class="py-lineno">749</tt> <tt class="py-line"><tt class="py-docstring"> @type name: str</tt> </tt> -<a name="L750"></a><tt class="py-lineno">750</tt> <tt class="py-line"><tt class="py-docstring"> @param value: the property, resource or resources to set</tt> </tt> -<a name="L751"></a><tt class="py-lineno">751</tt> <tt class="py-line"><tt class="py-docstring"> @type value: RESTBase | list<RESTBase> | basestring | long | int | float</tt> </tt> -<a name="L752"></a><tt class="py-lineno">752</tt> <tt class="py-line"><tt class="py-docstring"> @return: None</tt> </tt> -<a name="L753"></a><tt class="py-lineno">753</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L754"></a><tt class="py-lineno">754</tt> <tt class="py-line"> </tt> -<a name="L755"></a><tt class="py-lineno">755</tt> <tt class="py-line"> <tt class="py-comment"># update "private" data, such as __data</tt> </tt> -<a name="L756"></a><tt class="py-lineno">756</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">if</tt> <tt class="py-string">"_RESTBase__"</tt> <tt class="py-keyword">in</tt> <tt class="py-name">name</tt><tt class="py-op">:</tt> </tt> -<a name="L757"></a><tt class="py-lineno">757</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__dict__</tt><tt class="py-op">[</tt><tt class="py-name">name</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">value</tt> </tt> -<a name="L758"></a><tt class="py-lineno">758</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> -<a name="L759"></a><tt class="py-lineno">759</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">,</tt> <tt class="py-name">list</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L760"></a><tt class="py-lineno">760</tt> <tt class="py-line"> <tt class="py-comment"># the parametername is something like</tt> </tt> -<a name="L761"></a><tt class="py-lineno">761</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># permissions[user_id][]</tt> </tt> -<a name="L762"></a><tt class="py-lineno">762</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># so we try to infer that.</tt> </tt> -<a name="L763"></a><tt class="py-lineno">763</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">parameter_name</tt> <tt class="py-op">=</tt> <tt class="py-string">"%s[%s_id][]"</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">name</tt><tt class="py-op">,</tt> <tt class="py-name">value</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-111" class="py-name"><a title="scapi.RESTBase._singleton" class="py-name" href="#" onclick="return doclink('link-111', '_singleton', 'link-90');">_singleton</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L764"></a><tt class="py-lineno">764</tt> <tt class="py-line"> <tt class="py-name">values</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">o</tt><tt class="py-op">.</tt><tt class="py-name">id</tt> <tt class="py-keyword">for</tt> <tt class="py-name">o</tt> <tt class="py-keyword">in</tt> <tt class="py-name">value</tt><tt class="py-op">]</tt> </tt> -<a name="L765"></a><tt class="py-lineno">765</tt> <tt class="py-line"> <tt class="py-name">kwargs</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-string">"_alternate_http_method"</tt> <tt class="py-op">:</tt> <tt class="py-string">"PUT"</tt><tt class="py-op">,</tt> </tt> -<a name="L766"></a><tt class="py-lineno">766</tt> <tt class="py-line"> <tt class="py-name">parameter_name</tt> <tt class="py-op">:</tt> <tt class="py-name">values</tt><tt class="py-op">}</tt> </tt> -<a name="L767"></a><tt class="py-lineno">767</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__scope</tt><tt class="py-op">.</tt><tt id="link-112" class="py-name"><a title="scapi.Scope._call" class="py-name" href="#" onclick="return doclink('link-112', '_call', 'link-47');">_call</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-113" class="py-name"><a title="scapi.Comment.KIND -scapi.Event.KIND -scapi.Group.KIND -scapi.Playlist.KIND -scapi.RESTBase.KIND -scapi.Track.KIND -scapi.User.KIND" class="py-name" href="#" onclick="return doclink('link-113', 'KIND', 'link-93');">KIND</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">id</tt><tt class="py-op">,</tt> <tt class="py-name">name</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-name">kwargs</tt><tt class="py-op">)</tt> </tt> -<a name="L768"></a><tt class="py-lineno">768</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">,</tt> <tt id="link-114" class="py-name"><a title="scapi.RESTBase" class="py-name" href="#" onclick="return doclink('link-114', 'RESTBase', 'link-71');">RESTBase</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L769"></a><tt class="py-lineno">769</tt> <tt class="py-line"> <tt class="py-comment"># we got a single instance, so make that an argument</tt> </tt> -<a name="L770"></a><tt class="py-lineno">770</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__scope</tt><tt class="py-op">.</tt><tt id="link-115" class="py-name"><a title="scapi.Scope._call" class="py-name" href="#" onclick="return doclink('link-115', '_call', 'link-47');">_call</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-116" class="py-name"><a title="scapi.Comment.KIND -scapi.Event.KIND -scapi.Group.KIND -scapi.Playlist.KIND -scapi.RESTBase.KIND -scapi.Track.KIND -scapi.User.KIND" class="py-name" href="#" onclick="return doclink('link-116', 'KIND', 'link-93');">KIND</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">id</tt><tt class="py-op">,</tt> <tt class="py-name">name</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-name">value</tt><tt class="py-op">.</tt><tt id="link-117" class="py-name" targets="Method scapi.RESTBase._as_arguments()=scapi.RESTBase-class.html#_as_arguments"><a title="scapi.RESTBase._as_arguments" class="py-name" href="#" onclick="return doclink('link-117', '_as_arguments', 'link-117');">_as_arguments</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L771"></a><tt class="py-lineno">771</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> -<a name="L772"></a><tt class="py-lineno">772</tt> <tt class="py-line"> <tt class="py-comment"># we have a simple property</tt> </tt> -<a name="L773"></a><tt class="py-lineno">773</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">parameter_name</tt> <tt class="py-op">=</tt> <tt class="py-string">"%s[%s]"</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-118" class="py-name"><a title="scapi.RESTBase._singleton" class="py-name" href="#" onclick="return doclink('link-118', '_singleton', 'link-90');">_singleton</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">name</tt><tt class="py-op">)</tt> </tt> -<a name="L774"></a><tt class="py-lineno">774</tt> <tt class="py-line"> <tt class="py-name">kwargs</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-string">"_alternate_http_method"</tt> <tt class="py-op">:</tt> <tt class="py-string">"PUT"</tt><tt class="py-op">,</tt> </tt> -<a name="L775"></a><tt class="py-lineno">775</tt> <tt class="py-line"> <tt class="py-name">parameter_name</tt> <tt class="py-op">:</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-119" class="py-name" targets="Method scapi.RESTBase._convert_value()=scapi.RESTBase-class.html#_convert_value"><a title="scapi.RESTBase._convert_value" class="py-name" href="#" onclick="return doclink('link-119', '_convert_value', 'link-119');">_convert_value</a></tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt><tt class="py-op">}</tt> </tt> -<a name="L776"></a><tt class="py-lineno">776</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__scope</tt><tt class="py-op">.</tt><tt id="link-120" class="py-name"><a title="scapi.Scope._call" class="py-name" href="#" onclick="return doclink('link-120', '_call', 'link-47');">_call</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-121" class="py-name"><a title="scapi.Comment.KIND -scapi.Event.KIND -scapi.Group.KIND -scapi.Playlist.KIND -scapi.RESTBase.KIND -scapi.Track.KIND -scapi.User.KIND" class="py-name" href="#" onclick="return doclink('link-121', 'KIND', 'link-93');">KIND</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">id</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-name">kwargs</tt><tt class="py-op">)</tt> </tt> -</div><a name="L777"></a><tt class="py-lineno">777</tt> <tt class="py-line"> </tt> -<a name="RESTBase._as_arguments"></a><div id="RESTBase._as_arguments-def"><a name="L778"></a><tt class="py-lineno">778</tt> <a class="py-toggle" href="#" id="RESTBase._as_arguments-toggle" onclick="return toggle('RESTBase._as_arguments');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.RESTBase-class.html#_as_arguments">_as_arguments</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><a name="L779"></a><tt class="py-lineno">779</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L780"></a><tt class="py-lineno">780</tt> <tt class="py-line"><tt class="py-docstring"> Converts a resource to a argument-string the way Rails expects it.</tt> </tt> -<a name="L781"></a><tt class="py-lineno">781</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L782"></a><tt class="py-lineno">782</tt> <tt class="py-line"> <tt class="py-name">res</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt> -<a name="L783"></a><tt class="py-lineno">783</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">key</tt><tt class="py-op">,</tt> <tt class="py-name">value</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__data</tt><tt class="py-op">.</tt><tt class="py-name">items</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L784"></a><tt class="py-lineno">784</tt> <tt class="py-line"> <tt class="py-name">value</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-122" class="py-name"><a title="scapi.RESTBase._convert_value" class="py-name" href="#" onclick="return doclink('link-122', '_convert_value', 'link-119');">_convert_value</a></tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt> </tt> -<a name="L785"></a><tt class="py-lineno">785</tt> <tt class="py-line"> <tt class="py-name">res</tt><tt class="py-op">[</tt><tt class="py-string">"%s[%s]"</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-123" class="py-name"><a title="scapi.RESTBase._singleton" class="py-name" href="#" onclick="return doclink('link-123', '_singleton', 'link-90');">_singleton</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">key</tt><tt class="py-op">)</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">value</tt> </tt> -<a name="L786"></a><tt class="py-lineno">786</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">res</tt> </tt> -</div><a name="L787"></a><tt class="py-lineno">787</tt> <tt class="py-line"> </tt> -<a name="RESTBase._convert_value"></a><div id="RESTBase._convert_value-def"><a name="L788"></a><tt class="py-lineno">788</tt> <a class="py-toggle" href="#" id="RESTBase._convert_value-toggle" onclick="return toggle('RESTBase._convert_value');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.RESTBase-class.html#_convert_value">_convert_value</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">value</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="RESTBase._convert_value-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="RESTBase._convert_value-expanded"><a name="L789"></a><tt class="py-lineno">789</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">,</tt> <tt class="py-name">unicode</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L790"></a><tt class="py-lineno">790</tt> <tt class="py-line"> <tt class="py-name">value</tt> <tt class="py-op">=</tt> <tt class="py-name">value</tt><tt class="py-op">.</tt><tt class="py-name">encode</tt><tt class="py-op">(</tt><tt class="py-string">"utf-8"</tt><tt class="py-op">)</tt> </tt> -<a name="L791"></a><tt class="py-lineno">791</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">,</tt> <tt class="py-name">file</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L792"></a><tt class="py-lineno">792</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt> -<a name="L793"></a><tt class="py-lineno">793</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> -<a name="L794"></a><tt class="py-lineno">794</tt> <tt class="py-line"> <tt class="py-name">value</tt> <tt class="py-op">=</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt> </tt> -<a name="L795"></a><tt class="py-lineno">795</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">value</tt> </tt> -</div><a name="L796"></a><tt class="py-lineno">796</tt> <tt class="py-line"> </tt> -<a name="L797"></a><tt class="py-lineno">797</tt> <tt class="py-line"> <tt class="py-decorator">@</tt><tt class="py-decorator">classmethod</tt> </tt> -<a name="RESTBase.create"></a><div id="RESTBase.create-def"><a name="L798"></a><tt class="py-lineno">798</tt> <a class="py-toggle" href="#" id="RESTBase.create-toggle" onclick="return toggle('RESTBase.create');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.RESTBase-class.html#create">create</a><tt class="py-op">(</tt><tt class="py-param">cls</tt><tt class="py-op">,</tt> <tt class="py-param">scope</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-param">data</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="RESTBase.create-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="RESTBase.create-expanded"><a name="L799"></a><tt class="py-lineno">799</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L800"></a><tt class="py-lineno">800</tt> <tt class="py-line"><tt class="py-docstring"> This is a convenience-method for creating an object that will be passed</tt> </tt> -<a name="L801"></a><tt class="py-lineno">801</tt> <tt class="py-line"><tt class="py-docstring"> as parameter - e.g. a comment. A usage would look like this:</tt> </tt> -<a name="L802"></a><tt class="py-lineno">802</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L803"></a><tt class="py-lineno">803</tt> <tt class="py-line"><tt class="py-docstring"> >>> sca = scapi.Scope(connector)</tt> </tt> -<a name="L804"></a><tt class="py-lineno">804</tt> <tt class="py-line"><tt class="py-docstring"> >>> track = sca.Track.new(title='bar', sharing="private")</tt> </tt> -<a name="L805"></a><tt class="py-lineno">805</tt> <tt class="py-line"><tt class="py-docstring"> >>> comment = sca.Comment.create(body="This is the body of my comment", timestamp=10) </tt> </tt> -<a name="L806"></a><tt class="py-lineno">806</tt> <tt class="py-line"><tt class="py-docstring"> >>> track.comments = comment</tt> </tt> -<a name="L807"></a><tt class="py-lineno">807</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L808"></a><tt class="py-lineno">808</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L809"></a><tt class="py-lineno">809</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">cls</tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">,</tt> <tt class="py-name">scope</tt><tt class="py-op">)</tt> </tt> -</div><a name="L810"></a><tt class="py-lineno">810</tt> <tt class="py-line"> </tt> -<a name="L811"></a><tt class="py-lineno">811</tt> <tt class="py-line"> <tt class="py-decorator">@</tt><tt class="py-decorator">classmethod</tt> </tt> -<a name="RESTBase.new"></a><div id="RESTBase.new-def"><a name="L812"></a><tt class="py-lineno">812</tt> <a class="py-toggle" href="#" id="RESTBase.new-toggle" onclick="return toggle('RESTBase.new');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.RESTBase-class.html#new">new</a><tt class="py-op">(</tt><tt class="py-param">cls</tt><tt class="py-op">,</tt> <tt class="py-param">scope</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-param">data</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="RESTBase.new-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="RESTBase.new-expanded"><a name="L813"></a><tt class="py-lineno">813</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L814"></a><tt class="py-lineno">814</tt> <tt class="py-line"><tt class="py-docstring"> Create a new resource inside a given Scope. The actual values are in data. </tt> </tt> -<a name="L815"></a><tt class="py-lineno">815</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L816"></a><tt class="py-lineno">816</tt> <tt class="py-line"><tt class="py-docstring"> So for creating new resources, you have two options:</tt> </tt> -<a name="L817"></a><tt class="py-lineno">817</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L818"></a><tt class="py-lineno">818</tt> <tt class="py-line"><tt class="py-docstring"> - create an instance directly using the class:</tt> </tt> -<a name="L819"></a><tt class="py-lineno">819</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L820"></a><tt class="py-lineno">820</tt> <tt class="py-line"><tt class="py-docstring"> >>> scope = scapi.Scope(connector)</tt> </tt> -<a name="L821"></a><tt class="py-lineno">821</tt> <tt class="py-line"><tt class="py-docstring"> >>> scope.User.new(...)</tt> </tt> -<a name="L822"></a><tt class="py-lineno">822</tt> <tt class="py-line"><tt class="py-docstring"> <scapi.User object at 0x1234></tt> </tt> -<a name="L823"></a><tt class="py-lineno">823</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L824"></a><tt class="py-lineno">824</tt> <tt class="py-line"><tt class="py-docstring"> - create a instance in a certain scope:</tt> </tt> -<a name="L825"></a><tt class="py-lineno">825</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L826"></a><tt class="py-lineno">826</tt> <tt class="py-line"><tt class="py-docstring"> >>> scope = scapi.Scope(connector)</tt> </tt> -<a name="L827"></a><tt class="py-lineno">827</tt> <tt class="py-line"><tt class="py-docstring"> >>> user = scapi.User("1")</tt> </tt> -<a name="L828"></a><tt class="py-lineno">828</tt> <tt class="py-line"><tt class="py-docstring"> >>> track = user.tracks.new()</tt> </tt> -<a name="L829"></a><tt class="py-lineno">829</tt> <tt class="py-line"><tt class="py-docstring"> <scapi.Track object at 0x1234></tt> </tt> -<a name="L830"></a><tt class="py-lineno">830</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L831"></a><tt class="py-lineno">831</tt> <tt class="py-line"><tt class="py-docstring"> @param scope: if not empty, a one-element tuple containing the Scope</tt> </tt> -<a name="L832"></a><tt class="py-lineno">832</tt> <tt class="py-line"><tt class="py-docstring"> @type scope: tuple<Scope>[1]</tt> </tt> -<a name="L833"></a><tt class="py-lineno">833</tt> <tt class="py-line"><tt class="py-docstring"> @param data: the data</tt> </tt> -<a name="L834"></a><tt class="py-lineno">834</tt> <tt class="py-line"><tt class="py-docstring"> @type data: dict</tt> </tt> -<a name="L835"></a><tt class="py-lineno">835</tt> <tt class="py-line"><tt class="py-docstring"> @return: new instance of the resource</tt> </tt> -<a name="L836"></a><tt class="py-lineno">836</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L837"></a><tt class="py-lineno">837</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">getattr</tt><tt class="py-op">(</tt><tt class="py-name">scope</tt><tt class="py-op">,</tt> <tt class="py-name">cls</tt><tt class="py-op">.</tt><tt class="py-name">__name__</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-124" class="py-name"><a title="scapi.RESTBase.new" class="py-name" href="#" onclick="return doclink('link-124', 'new', 'link-82');">new</a></tt><tt class="py-op">(</tt><tt class="py-op">**</tt><tt class="py-name">data</tt><tt class="py-op">)</tt> </tt> -</div><a name="L838"></a><tt class="py-lineno">838</tt> <tt class="py-line"> </tt> -<a name="L839"></a><tt class="py-lineno">839</tt> <tt class="py-line"> <tt class="py-decorator">@</tt><tt class="py-decorator">classmethod</tt> </tt> -<a name="RESTBase.get"></a><div id="RESTBase.get-def"><a name="L840"></a><tt class="py-lineno">840</tt> <a class="py-toggle" href="#" id="RESTBase.get-toggle" onclick="return toggle('RESTBase.get');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.RESTBase-class.html#get">get</a><tt class="py-op">(</tt><tt class="py-param">cls</tt><tt class="py-op">,</tt> <tt class="py-param">scope</tt><tt class="py-op">,</tt> <tt class="py-param">id</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="RESTBase.get-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="RESTBase.get-expanded"><a name="L841"></a><tt class="py-lineno">841</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L842"></a><tt class="py-lineno">842</tt> <tt class="py-line"><tt class="py-docstring"> Fetch a resource by id.</tt> </tt> -<a name="L843"></a><tt class="py-lineno">843</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L844"></a><tt class="py-lineno">844</tt> <tt class="py-line"><tt class="py-docstring"> Simply pass a known id as argument. For example</tt> </tt> -<a name="L845"></a><tt class="py-lineno">845</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L846"></a><tt class="py-lineno">846</tt> <tt class="py-line"><tt class="py-docstring"> >>> sca = scapi.Scope(connector)</tt> </tt> -<a name="L847"></a><tt class="py-lineno">847</tt> <tt class="py-line"><tt class="py-docstring"> >>> track = sca.Track.get(id)</tt> </tt> -<a name="L848"></a><tt class="py-lineno">848</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L849"></a><tt class="py-lineno">849</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L850"></a><tt class="py-lineno">850</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">getattr</tt><tt class="py-op">(</tt><tt class="py-name">scope</tt><tt class="py-op">,</tt> <tt class="py-name">cls</tt><tt class="py-op">.</tt><tt id="link-125" class="py-name"><a title="scapi.Comment.KIND -scapi.Event.KIND -scapi.Group.KIND -scapi.Playlist.KIND -scapi.RESTBase.KIND -scapi.Track.KIND -scapi.User.KIND" class="py-name" href="#" onclick="return doclink('link-125', 'KIND', 'link-93');">KIND</a></tt><tt class="py-op">)</tt><tt class="py-op">(</tt><tt class="py-name">id</tt><tt class="py-op">)</tt> </tt> -</div><a name="L851"></a><tt class="py-lineno">851</tt> <tt class="py-line"> </tt> -<a name="L852"></a><tt class="py-lineno">852</tt> <tt class="py-line"> </tt> -<a name="RESTBase._scope"></a><div id="RESTBase._scope-def"><a name="L853"></a><tt class="py-lineno">853</tt> <a class="py-toggle" href="#" id="RESTBase._scope-toggle" onclick="return toggle('RESTBase._scope');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.RESTBase-class.html#_scope">_scope</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="RESTBase._scope-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="RESTBase._scope-expanded"><a name="L854"></a><tt class="py-lineno">854</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L855"></a><tt class="py-lineno">855</tt> <tt class="py-line"><tt class="py-docstring"> Return the scope this resource lives in, which is the KIND and id</tt> </tt> -<a name="L856"></a><tt class="py-lineno">856</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt> -<a name="L857"></a><tt class="py-lineno">857</tt> <tt class="py-line"><tt class="py-docstring"> @return: "<KIND>/<id>"</tt> </tt> -<a name="L858"></a><tt class="py-lineno">858</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L859"></a><tt class="py-lineno">859</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-string">"%s/%s"</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-126" class="py-name"><a title="scapi.Comment.KIND -scapi.Event.KIND -scapi.Group.KIND -scapi.Playlist.KIND -scapi.RESTBase.KIND -scapi.Track.KIND -scapi.User.KIND" class="py-name" href="#" onclick="return doclink('link-126', 'KIND', 'link-93');">KIND</a></tt><tt class="py-op">,</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">id</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -</div><a name="L860"></a><tt class="py-lineno">860</tt> <tt class="py-line"> </tt> -<a name="L861"></a><tt class="py-lineno">861</tt> <tt class="py-line"> <tt class="py-decorator">@</tt><tt class="py-decorator">classmethod</tt> </tt> -<a name="RESTBase._singleton"></a><div id="RESTBase._singleton-def"><a name="L862"></a><tt class="py-lineno">862</tt> <a class="py-toggle" href="#" id="RESTBase._singleton-toggle" onclick="return toggle('RESTBase._singleton');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.RESTBase-class.html#_singleton">_singleton</a><tt class="py-op">(</tt><tt class="py-param">cls</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="RESTBase._singleton-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="RESTBase._singleton-expanded"><a name="L863"></a><tt class="py-lineno">863</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L864"></a><tt class="py-lineno">864</tt> <tt class="py-line"><tt class="py-docstring"> This method will take a resource name like "users" and</tt> </tt> -<a name="L865"></a><tt class="py-lineno">865</tt> <tt class="py-line"><tt class="py-docstring"> return the single-case, in the example "user".</tt> </tt> -<a name="L866"></a><tt class="py-lineno">866</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L867"></a><tt class="py-lineno">867</tt> <tt class="py-line"><tt class="py-docstring"> Currently, it's not very sophisticated, only strips a trailing s.</tt> </tt> -<a name="L868"></a><tt class="py-lineno">868</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L869"></a><tt class="py-lineno">869</tt> <tt class="py-line"> <tt class="py-name">name</tt> <tt class="py-op">=</tt> <tt class="py-name">cls</tt><tt class="py-op">.</tt><tt id="link-127" class="py-name"><a title="scapi.Comment.KIND -scapi.Event.KIND -scapi.Group.KIND -scapi.Playlist.KIND -scapi.RESTBase.KIND -scapi.Track.KIND -scapi.User.KIND" class="py-name" href="#" onclick="return doclink('link-127', 'KIND', 'link-93');">KIND</a></tt> </tt> -<a name="L870"></a><tt class="py-lineno">870</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">name</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-string">'s'</tt><tt class="py-op">:</tt> </tt> -<a name="L871"></a><tt class="py-lineno">871</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">name</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt> -<a name="L872"></a><tt class="py-lineno">872</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"Can't make %s to a singleton"</tt> <tt class="py-op">%</tt> <tt class="py-name">name</tt><tt class="py-op">)</tt> </tt> -</div><a name="L873"></a><tt class="py-lineno">873</tt> <tt class="py-line"> </tt> -<a name="RESTBase.__repr__"></a><div id="RESTBase.__repr__-def"><a name="L874"></a><tt class="py-lineno">874</tt> <a class="py-toggle" href="#" id="RESTBase.__repr__-toggle" onclick="return toggle('RESTBase.__repr__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.RESTBase-class.html#__repr__">__repr__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="RESTBase.__repr__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="RESTBase.__repr__-expanded"><a name="L875"></a><tt class="py-lineno">875</tt> <tt class="py-line"> <tt class="py-name">res</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt> -<a name="L876"></a><tt class="py-lineno">876</tt> <tt class="py-line"> <tt class="py-name">res</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-string">"\n\n******\n%s:"</tt> <tt class="py-op">%</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt><tt class="py-op">.</tt><tt class="py-name">__name__</tt><tt class="py-op">)</tt> </tt> -<a name="L877"></a><tt class="py-lineno">877</tt> <tt class="py-line"> <tt class="py-name">res</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-string">""</tt><tt class="py-op">)</tt> </tt> -<a name="L878"></a><tt class="py-lineno">878</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">key</tt><tt class="py-op">,</tt> <tt class="py-name">v</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__data</tt><tt class="py-op">.</tt><tt class="py-name">iteritems</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L879"></a><tt class="py-lineno">879</tt> <tt class="py-line"> <tt class="py-name">key</tt> <tt class="py-op">=</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">)</tt> </tt> -<a name="L880"></a><tt class="py-lineno">880</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">v</tt><tt class="py-op">,</tt> <tt class="py-name">unicode</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L881"></a><tt class="py-lineno">881</tt> <tt class="py-line"> <tt class="py-name">v</tt> <tt class="py-op">=</tt> <tt class="py-name">v</tt><tt class="py-op">.</tt><tt class="py-name">encode</tt><tt class="py-op">(</tt><tt class="py-string">'utf-8'</tt><tt class="py-op">)</tt> </tt> -<a name="L882"></a><tt class="py-lineno">882</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> -<a name="L883"></a><tt class="py-lineno">883</tt> <tt class="py-line"> <tt class="py-name">v</tt> <tt class="py-op">=</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">v</tt><tt class="py-op">)</tt> </tt> -<a name="L884"></a><tt class="py-lineno">884</tt> <tt class="py-line"> <tt class="py-name">res</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-string">"%s=%s"</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">,</tt> <tt class="py-name">v</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L885"></a><tt class="py-lineno">885</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-string">"\n"</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">res</tt><tt class="py-op">)</tt> </tt> -</div><a name="L886"></a><tt class="py-lineno">886</tt> <tt class="py-line"> </tt> -<a name="RESTBase.__hash__"></a><div id="RESTBase.__hash__-def"><a name="L887"></a><tt class="py-lineno">887</tt> <a class="py-toggle" href="#" id="RESTBase.__hash__-toggle" onclick="return toggle('RESTBase.__hash__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.RESTBase-class.html#__hash__">__hash__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="RESTBase.__hash__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="RESTBase.__hash__-expanded"><a name="L888"></a><tt class="py-lineno">888</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">hash</tt><tt class="py-op">(</tt><tt class="py-string">"%s%i"</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-128" class="py-name"><a title="scapi.Comment.KIND -scapi.Event.KIND -scapi.Group.KIND -scapi.Playlist.KIND -scapi.RESTBase.KIND -scapi.Track.KIND -scapi.User.KIND" class="py-name" href="#" onclick="return doclink('link-128', 'KIND', 'link-93');">KIND</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">id</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -</div><a name="L889"></a><tt class="py-lineno">889</tt> <tt class="py-line"> </tt> -<a name="RESTBase.__eq__"></a><div id="RESTBase.__eq__-def"><a name="L890"></a><tt class="py-lineno">890</tt> <a class="py-toggle" href="#" id="RESTBase.__eq__-toggle" onclick="return toggle('RESTBase.__eq__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.RESTBase-class.html#__eq__">__eq__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">other</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="RESTBase.__eq__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="RESTBase.__eq__-expanded"><a name="L891"></a><tt class="py-lineno">891</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L892"></a><tt class="py-lineno">892</tt> <tt class="py-line"><tt class="py-docstring"> Test for equality. </tt> </tt> -<a name="L893"></a><tt class="py-lineno">893</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L894"></a><tt class="py-lineno">894</tt> <tt class="py-line"><tt class="py-docstring"> Resources are considered equal if the have the same kind and id.</tt> </tt> -<a name="L895"></a><tt class="py-lineno">895</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L896"></a><tt class="py-lineno">896</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">other</tt><tt class="py-op">,</tt> <tt id="link-129" class="py-name"><a title="scapi.RESTBase" class="py-name" href="#" onclick="return doclink('link-129', 'RESTBase', 'link-71');">RESTBase</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L897"></a><tt class="py-lineno">897</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt> -<a name="L898"></a><tt class="py-lineno">898</tt> <tt class="py-line"> <tt class="py-name">res</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-130" class="py-name"><a title="scapi.Comment.KIND -scapi.Event.KIND -scapi.Group.KIND -scapi.Playlist.KIND -scapi.RESTBase.KIND -scapi.Track.KIND -scapi.User.KIND" class="py-name" href="#" onclick="return doclink('link-130', 'KIND', 'link-93');">KIND</a></tt> <tt class="py-op">==</tt> <tt class="py-name">other</tt><tt class="py-op">.</tt><tt id="link-131" class="py-name"><a title="scapi.Comment.KIND -scapi.Event.KIND -scapi.Group.KIND -scapi.Playlist.KIND -scapi.RESTBase.KIND -scapi.Track.KIND -scapi.User.KIND" class="py-name" href="#" onclick="return doclink('link-131', 'KIND', 'link-93');">KIND</a></tt> <tt class="py-keyword">and</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">id</tt> <tt class="py-op">==</tt> <tt class="py-name">other</tt><tt class="py-op">.</tt><tt class="py-name">id</tt> </tt> -<a name="L899"></a><tt class="py-lineno">899</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">res</tt> </tt> -</div><a name="L900"></a><tt class="py-lineno">900</tt> <tt class="py-line"> </tt> -<a name="RESTBase.__ne__"></a><div id="RESTBase.__ne__-def"><a name="L901"></a><tt class="py-lineno">901</tt> <a class="py-toggle" href="#" id="RESTBase.__ne__-toggle" onclick="return toggle('RESTBase.__ne__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.RESTBase-class.html#__ne__">__ne__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">other</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="RESTBase.__ne__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="RESTBase.__ne__-expanded"><a name="L902"></a><tt class="py-lineno">902</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt> <tt class="py-op">==</tt> <tt class="py-name">other</tt> </tt> -</div></div><a name="L903"></a><tt class="py-lineno">903</tt> <tt class="py-line"> </tt> -<a name="User"></a><div id="User-def"><a name="L904"></a><tt class="py-lineno">904</tt> <a class="py-toggle" href="#" id="User-toggle" onclick="return toggle('User');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="scapi.User-class.html">User</a><tt class="py-op">(</tt><tt class="py-base-class">RESTBase</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="User-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="User-expanded"><a name="L905"></a><tt class="py-lineno">905</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L906"></a><tt class="py-lineno">906</tt> <tt class="py-line"><tt class="py-docstring"> A user domain object/resource. </tt> </tt> -<a name="L907"></a><tt class="py-lineno">907</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L908"></a><tt class="py-lineno">908</tt> <tt class="py-line"> <tt id="link-132" class="py-name"><a title="scapi.Comment.KIND -scapi.Event.KIND -scapi.Group.KIND -scapi.Playlist.KIND -scapi.RESTBase.KIND -scapi.Track.KIND -scapi.User.KIND" class="py-name" href="#" onclick="return doclink('link-132', 'KIND', 'link-93');">KIND</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'users'</tt> </tt> -<a name="L909"></a><tt class="py-lineno">909</tt> <tt class="py-line"> <tt id="link-133" class="py-name"><a title="scapi.RESTBase.ALIASES -scapi.Track.ALIASES -scapi.User.ALIASES" class="py-name" href="#" onclick="return doclink('link-133', 'ALIASES', 'link-99');">ALIASES</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-string">'me'</tt><tt class="py-op">,</tt> <tt class="py-string">'permissions'</tt><tt class="py-op">,</tt> <tt class="py-string">'contacts'</tt><tt class="py-op">,</tt> <tt class="py-string">'user'</tt><tt class="py-op">]</tt> </tt> -</div><a name="L910"></a><tt class="py-lineno">910</tt> <tt class="py-line"> </tt> -<a name="Track"></a><div id="Track-def"><a name="L911"></a><tt class="py-lineno">911</tt> <a class="py-toggle" href="#" id="Track-toggle" onclick="return toggle('Track');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="scapi.Track-class.html">Track</a><tt class="py-op">(</tt><tt class="py-base-class">RESTBase</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Track-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="Track-expanded"><a name="L912"></a><tt class="py-lineno">912</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L913"></a><tt class="py-lineno">913</tt> <tt class="py-line"><tt class="py-docstring"> A track domain object/resource. </tt> </tt> -<a name="L914"></a><tt class="py-lineno">914</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L915"></a><tt class="py-lineno">915</tt> <tt class="py-line"> <tt id="link-134" class="py-name"><a title="scapi.Comment.KIND -scapi.Event.KIND -scapi.Group.KIND -scapi.Playlist.KIND -scapi.RESTBase.KIND -scapi.Track.KIND -scapi.User.KIND" class="py-name" href="#" onclick="return doclink('link-134', 'KIND', 'link-93');">KIND</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'tracks'</tt> </tt> -<a name="L916"></a><tt class="py-lineno">916</tt> <tt class="py-line"> <tt id="link-135" class="py-name"><a title="scapi.RESTBase.ALIASES -scapi.Track.ALIASES -scapi.User.ALIASES" class="py-name" href="#" onclick="return doclink('link-135', 'ALIASES', 'link-99');">ALIASES</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-string">'favorites'</tt><tt class="py-op">]</tt> </tt> -</div><a name="L917"></a><tt class="py-lineno">917</tt> <tt class="py-line"> </tt> -<a name="Comment"></a><div id="Comment-def"><a name="L918"></a><tt class="py-lineno">918</tt> <a class="py-toggle" href="#" id="Comment-toggle" onclick="return toggle('Comment');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="scapi.Comment-class.html">Comment</a><tt class="py-op">(</tt><tt class="py-base-class">RESTBase</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Comment-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="Comment-expanded"><a name="L919"></a><tt class="py-lineno">919</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L920"></a><tt class="py-lineno">920</tt> <tt class="py-line"><tt class="py-docstring"> A comment domain object/resource. </tt> </tt> -<a name="L921"></a><tt class="py-lineno">921</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L922"></a><tt class="py-lineno">922</tt> <tt class="py-line"> <tt id="link-136" class="py-name"><a title="scapi.Comment.KIND -scapi.Event.KIND -scapi.Group.KIND -scapi.Playlist.KIND -scapi.RESTBase.KIND -scapi.Track.KIND -scapi.User.KIND" class="py-name" href="#" onclick="return doclink('link-136', 'KIND', 'link-93');">KIND</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'comments'</tt> </tt> -</div><a name="L923"></a><tt class="py-lineno">923</tt> <tt class="py-line"> </tt> -<a name="Event"></a><div id="Event-def"><a name="L924"></a><tt class="py-lineno">924</tt> <a class="py-toggle" href="#" id="Event-toggle" onclick="return toggle('Event');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="scapi.Event-class.html">Event</a><tt class="py-op">(</tt><tt class="py-base-class">RESTBase</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Event-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="Event-expanded"><a name="L925"></a><tt class="py-lineno">925</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L926"></a><tt class="py-lineno">926</tt> <tt class="py-line"><tt class="py-docstring"> A event domain object/resource. </tt> </tt> -<a name="L927"></a><tt class="py-lineno">927</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L928"></a><tt class="py-lineno">928</tt> <tt class="py-line"> <tt id="link-137" class="py-name"><a title="scapi.Comment.KIND -scapi.Event.KIND -scapi.Group.KIND -scapi.Playlist.KIND -scapi.RESTBase.KIND -scapi.Track.KIND -scapi.User.KIND" class="py-name" href="#" onclick="return doclink('link-137', 'KIND', 'link-93');">KIND</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'events'</tt> </tt> -</div><a name="L929"></a><tt class="py-lineno">929</tt> <tt class="py-line"> </tt> -<a name="Playlist"></a><div id="Playlist-def"><a name="L930"></a><tt class="py-lineno">930</tt> <a class="py-toggle" href="#" id="Playlist-toggle" onclick="return toggle('Playlist');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="scapi.Playlist-class.html">Playlist</a><tt class="py-op">(</tt><tt class="py-base-class">RESTBase</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Playlist-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="Playlist-expanded"><a name="L931"></a><tt class="py-lineno">931</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L932"></a><tt class="py-lineno">932</tt> <tt class="py-line"><tt class="py-docstring"> A playlist/set domain object/resource</tt> </tt> -<a name="L933"></a><tt class="py-lineno">933</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L934"></a><tt class="py-lineno">934</tt> <tt class="py-line"> <tt id="link-138" class="py-name"><a title="scapi.Comment.KIND -scapi.Event.KIND -scapi.Group.KIND -scapi.Playlist.KIND -scapi.RESTBase.KIND -scapi.Track.KIND -scapi.User.KIND" class="py-name" href="#" onclick="return doclink('link-138', 'KIND', 'link-93');">KIND</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'playlists'</tt> </tt> -</div><a name="L935"></a><tt class="py-lineno">935</tt> <tt class="py-line"> </tt> -<a name="Group"></a><div id="Group-def"><a name="L936"></a><tt class="py-lineno">936</tt> <a class="py-toggle" href="#" id="Group-toggle" onclick="return toggle('Group');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="scapi.Group-class.html">Group</a><tt class="py-op">(</tt><tt class="py-base-class">RESTBase</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="Group-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="Group-expanded"><a name="L937"></a><tt class="py-lineno">937</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L938"></a><tt class="py-lineno">938</tt> <tt class="py-line"><tt class="py-docstring"> A group domain object/resource</tt> </tt> -<a name="L939"></a><tt class="py-lineno">939</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L940"></a><tt class="py-lineno">940</tt> <tt class="py-line"> <tt id="link-139" class="py-name"><a title="scapi.Comment.KIND -scapi.Event.KIND -scapi.Group.KIND -scapi.Playlist.KIND -scapi.RESTBase.KIND -scapi.Track.KIND -scapi.User.KIND" class="py-name" href="#" onclick="return doclink('link-139', 'KIND', 'link-93');">KIND</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'groups'</tt> </tt> -</div><a name="L941"></a><tt class="py-lineno">941</tt> <tt class="py-line"> </tt> -<a name="register_classes"></a><div id="register_classes-def"><a name="L942"></a><tt class="py-lineno">942</tt> <tt class="py-line"> </tt> -<a name="L943"></a><tt class="py-lineno">943</tt> <tt class="py-line"> </tt> -<a name="L944"></a><tt class="py-lineno">944</tt> <tt class="py-line"><tt class="py-comment"># this registers all the RESTBase subclasses.</tt> </tt> -<a name="L945"></a><tt class="py-lineno">945</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># One day using a metaclass will make this a tad</tt> </tt> -<a name="L946"></a><tt class="py-lineno">946</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># less ugly.</tt> </tt> -<a name="L947"></a><tt class="py-lineno">947</tt> <a class="py-toggle" href="#" id="register_classes-toggle" onclick="return toggle('register_classes');">-</a><tt class="py-line"><tt class="py-comment"></tt><tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi-module.html#register_classes">register_classes</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="register_classes-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="register_classes-expanded"><a name="L948"></a><tt class="py-lineno">948</tt> <tt class="py-line"> <tt class="py-name">g</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt> -<a name="L949"></a><tt class="py-lineno">949</tt> <tt class="py-line"> <tt class="py-name">g</tt><tt class="py-op">.</tt><tt class="py-name">update</tt><tt class="py-op">(</tt><tt class="py-name">globals</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L950"></a><tt class="py-lineno">950</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">name</tt><tt class="py-op">,</tt> <tt class="py-name">cls</tt> <tt class="py-keyword">in</tt> <tt class="py-op">[</tt><tt class="py-op">(</tt><tt class="py-name">k</tt><tt class="py-op">,</tt> <tt class="py-name">v</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-name">k</tt><tt class="py-op">,</tt> <tt class="py-name">v</tt> <tt class="py-keyword">in</tt> <tt class="py-name">g</tt><tt class="py-op">.</tt><tt class="py-name">iteritems</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-keyword">if</tt> <tt class="py-name">isclass</tt><tt class="py-op">(</tt><tt class="py-name">v</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-name">issubclass</tt><tt class="py-op">(</tt><tt class="py-name">v</tt><tt class="py-op">,</tt> <tt id="link-140" class="py-name"><a title="scapi.RESTBase" class="py-name" href="#" onclick="return doclink('link-140', 'RESTBase', 'link-71');">RESTBase</a></tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-keyword">not</tt> <tt class="py-name">v</tt> <tt class="py-op">==</tt> <tt id="link-141" class="py-name"><a title="scapi.RESTBase" class="py-name" href="#" onclick="return doclink('link-141', 'RESTBase', 'link-71');">RESTBase</a></tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt> -<a name="L951"></a><tt class="py-lineno">951</tt> <tt class="py-line"> <tt id="link-142" class="py-name"><a title="scapi.RESTBase" class="py-name" href="#" onclick="return doclink('link-142', 'RESTBase', 'link-71');">RESTBase</a></tt><tt class="py-op">.</tt><tt id="link-143" class="py-name"><a title="scapi.RESTBase.REGISTRY" class="py-name" href="#" onclick="return doclink('link-143', 'REGISTRY', 'link-72');">REGISTRY</a></tt><tt class="py-op">[</tt><tt class="py-name">cls</tt><tt class="py-op">.</tt><tt id="link-144" class="py-name"><a title="scapi.Comment.KIND -scapi.Event.KIND -scapi.Group.KIND -scapi.Playlist.KIND -scapi.RESTBase.KIND -scapi.Track.KIND -scapi.User.KIND" class="py-name" href="#" onclick="return doclink('link-144', 'KIND', 'link-93');">KIND</a></tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">cls</tt> </tt> -<a name="L952"></a><tt class="py-lineno">952</tt> <tt class="py-line"> <tt id="link-145" class="py-name"><a title="scapi.RESTBase" class="py-name" href="#" onclick="return doclink('link-145', 'RESTBase', 'link-71');">RESTBase</a></tt><tt class="py-op">.</tt><tt id="link-146" class="py-name"><a title="scapi.RESTBase.ALL_DOMAIN_CLASSES" class="py-name" href="#" onclick="return doclink('link-146', 'ALL_DOMAIN_CLASSES', 'link-86');">ALL_DOMAIN_CLASSES</a></tt><tt class="py-op">[</tt><tt class="py-name">cls</tt><tt class="py-op">.</tt><tt class="py-name">__name__</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">cls</tt> </tt> -<a name="L953"></a><tt class="py-lineno">953</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">alias</tt> <tt class="py-keyword">in</tt> <tt class="py-name">cls</tt><tt class="py-op">.</tt><tt id="link-147" class="py-name"><a title="scapi.RESTBase.ALIASES -scapi.Track.ALIASES -scapi.User.ALIASES" class="py-name" href="#" onclick="return doclink('link-147', 'ALIASES', 'link-99');">ALIASES</a></tt><tt class="py-op">:</tt> </tt> -<a name="L954"></a><tt class="py-lineno">954</tt> <tt class="py-line"> <tt id="link-148" class="py-name"><a title="scapi.RESTBase" class="py-name" href="#" onclick="return doclink('link-148', 'RESTBase', 'link-71');">RESTBase</a></tt><tt class="py-op">.</tt><tt id="link-149" class="py-name"><a title="scapi.RESTBase.REGISTRY" class="py-name" href="#" onclick="return doclink('link-149', 'REGISTRY', 'link-72');">REGISTRY</a></tt><tt class="py-op">[</tt><tt class="py-name">alias</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">cls</tt> </tt> -<a name="L955"></a><tt class="py-lineno">955</tt> <tt class="py-line"> <tt class="py-name">__all__</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">name</tt><tt class="py-op">)</tt> </tt> -</div><a name="L956"></a><tt class="py-lineno">956</tt> <tt class="py-line"><tt id="link-150" class="py-name" targets="Function scapi.register_classes()=scapi-module.html#register_classes"><a title="scapi.register_classes" class="py-name" href="#" onclick="return doclink('link-150', 'register_classes', 'link-150');">register_classes</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L957"></a><tt class="py-lineno">957</tt> <tt class="py-line"> </tt><script type="text/javascript"> -<!-- -expandto(location.href); -// --> -</script> -</pre> -<br /> -<!-- ==================== NAVIGATION BAR ==================== --> -<table class="navbar" border="0" width="100%" cellpadding="0" - bgcolor="#a0c0ff" cellspacing="0"> - <tr valign="middle"> - <!-- Home link --> - <th bgcolor="#70b0f0" class="navbar-select" - > Home </th> - - <!-- Tree link --> - <th> <a - href="module-tree.html">Trees</a> </th> - - <!-- Index link --> - <th> <a - href="identifier-index.html">Indices</a> </th> - - <!-- Help link --> - <th> <a - href="help.html">Help</a> </th> - - <!-- Project homepage --> - <th class="navbar" align="right" width="100%"> - <table border="0" cellpadding="0" cellspacing="0"> - <tr><th class="navbar" align="center" - >SoundCloud API</th> - </tr></table></th> - </tr> -</table> -<table border="0" cellpadding="0" cellspacing="0" width="100%%"> - <tr> - <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Thu Sep 10 00:58:50 2009 - </td> - <td align="right" class="footer"> - <a target="mainFrame" href="http://epydoc.sourceforge.net" - >http://epydoc.sourceforge.net</a> - </td> - </tr> -</table> - -<script type="text/javascript"> - <!-- - // Private objects are initially displayed (because if - // javascript is turned off then we want them to be - // visible); but by default, we want to hide them. So hide - // them unless we have a cookie that says to show them. - checkCookie(); - // --> -</script> -</body> -</html> diff --git a/python_apps/soundcloud-api/docs/api/scapi.ApiConnector-class.html b/python_apps/soundcloud-api/docs/api/scapi.ApiConnector-class.html deleted file mode 100644 index 7e4a213ac..000000000 --- a/python_apps/soundcloud-api/docs/api/scapi.ApiConnector-class.html +++ /dev/null @@ -1,544 +0,0 @@ -<?xml version="1.0" encoding="ascii"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <title>scapi.ApiConnector</title> - <link rel="stylesheet" href="epydoc.css" type="text/css" /> - <script type="text/javascript" src="epydoc.js"></script> -</head> - -<body bgcolor="white" text="black" link="blue" vlink="#204080" - alink="#204080"> -<!-- ==================== NAVIGATION BAR ==================== --> -<table class="navbar" border="0" width="100%" cellpadding="0" - bgcolor="#a0c0ff" cellspacing="0"> - <tr valign="middle"> - <!-- Home link --> - <th> <a - href="scapi-module.html">Home</a> </th> - - <!-- Tree link --> - <th> <a - href="module-tree.html">Trees</a> </th> - - <!-- Index link --> - <th> <a - href="identifier-index.html">Indices</a> </th> - - <!-- Help link --> - <th> <a - href="help.html">Help</a> </th> - - <!-- Project homepage --> - <th class="navbar" align="right" width="100%"> - <table border="0" cellpadding="0" cellspacing="0"> - <tr><th class="navbar" align="center" - >SoundCloud API</th> - </tr></table></th> - </tr> -</table> -<table width="100%" cellpadding="0" cellspacing="0"> - <tr valign="top"> - <td width="100%"> - <span class="breadcrumbs"> - <a href="scapi-module.html">Package scapi</a> :: - Class ApiConnector - </span> - </td> - <td> - <table cellpadding="0" cellspacing="0"> - <!-- hide/show private --> - <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink" - onclick="toggle_private();">hide private</a>]</span></td></tr> - <tr><td align="right"><span class="options" - >[<a href="frames.html" target="_top">frames</a - >] | <a href="scapi.ApiConnector-class.html" - target="_top">no frames</a>]</span></td></tr> - </table> - </td> - </tr> -</table> -<!-- ==================== CLASS DESCRIPTION ==================== --> -<h1 class="epydoc">Class ApiConnector</h1><p class="nomargin-top"><span class="codelink"><a href="scapi-pysrc.html#ApiConnector">source code</a></span></p> -<pre class="base-tree"> -object --+ - | - <strong class="uidshort">ApiConnector</strong> -</pre> - -<hr /> -<p>The ApiConnector holds all the data necessary to authenticate against - the soundcloud-api. You can instantiate several connectors if you like, - but usually one should be sufficient.</p> - -<!-- ==================== INSTANCE METHODS ==================== --> -<a name="section-InstanceMethods"></a> -<table class="summary" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr bgcolor="#70b0f0" class="table-header"> - <td colspan="2" class="table-header"> - <table border="0" cellpadding="0" cellspacing="0" width="100%"> - <tr valign="top"> - <td align="left"><span class="table-header">Instance Methods</span></td> - <td align="right" valign="top" - ><span class="options">[<a href="#section-InstanceMethods" - class="privatelink" onclick="toggle_private();" - >hide private</a>]</span></td> - </tr> - </table> - </td> -</tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a href="scapi.ApiConnector-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>, - <span class="summary-sig-arg">host</span>, - <span class="summary-sig-arg">user</span>=<span class="summary-sig-default">None</span>, - <span class="summary-sig-arg">password</span>=<span class="summary-sig-default">None</span>, - <span class="summary-sig-arg">authenticator</span>=<span class="summary-sig-default">None</span>, - <span class="summary-sig-arg">base</span>=<span class="summary-sig-default"><code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code></span>, - <span class="summary-sig-arg">collapse_scope</span>=<span class="summary-sig-default">True</span>)</span><br /> - Constructor for the API-Singleton.</td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi-pysrc.html#ApiConnector.__init__">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a href="scapi.ApiConnector-class.html#normalize_method" class="summary-sig-name">normalize_method</a>(<span class="summary-sig-arg">self</span>, - <span class="summary-sig-arg">method</span>)</span><br /> - This method will take a method that has been part of a redirect of - some sort and see if it's valid, which means that it's located - beneath our base.</td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi-pysrc.html#ApiConnector.normalize_method">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a href="scapi.ApiConnector-class.html#fetch_request_token" class="summary-sig-name">fetch_request_token</a>(<span class="summary-sig-arg">self</span>, - <span class="summary-sig-arg">url</span>=<span class="summary-sig-default">None</span>, - <span class="summary-sig-arg">oauth_callback</span>=<span class="summary-sig-default"><code class="variable-quote">'</code><code class="variable-string">oob</code><code class="variable-quote">'</code></span>, - <span class="summary-sig-arg">oauth_verifier</span>=<span class="summary-sig-default">None</span>)</span><br /> - Helper-function for a registered consumer to obtain a request token, - as used by oauth.</td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi-pysrc.html#ApiConnector.fetch_request_token">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a href="scapi.ApiConnector-class.html#fetch_access_token" class="summary-sig-name">fetch_access_token</a>(<span class="summary-sig-arg">self</span>, - <span class="summary-sig-arg">oauth_verifier</span>)</span><br /> - Helper-function for a registered consumer to exchange an access token - for a request token.</td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi-pysrc.html#ApiConnector.fetch_access_token">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a href="scapi.ApiConnector-class.html#get_request_token_authorization_url" class="summary-sig-name">get_request_token_authorization_url</a>(<span class="summary-sig-arg">self</span>, - <span class="summary-sig-arg">token</span>)</span><br /> - Simple helper function to generate the url needed to ask a user for - request token authorization.</td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi-pysrc.html#ApiConnector.get_request_token_authorization_url">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> - <tr> - <td colspan="2" class="summary"> - <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>: - <code>__delattr__</code>, - <code>__getattribute__</code>, - <code>__hash__</code>, - <code>__new__</code>, - <code>__reduce__</code>, - <code>__reduce_ex__</code>, - <code>__repr__</code>, - <code>__setattr__</code>, - <code>__str__</code> - </p> - </td> - </tr> -</table> -<!-- ==================== CLASS VARIABLES ==================== --> -<a name="section-ClassVariables"></a> -<table class="summary" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr bgcolor="#70b0f0" class="table-header"> - <td colspan="2" class="table-header"> - <table border="0" cellpadding="0" cellspacing="0" width="100%"> - <tr valign="top"> - <td align="left"><span class="table-header">Class Variables</span></td> - <td align="right" valign="top" - ><span class="options">[<a href="#section-ClassVariables" - class="privatelink" onclick="toggle_private();" - >hide private</a>]</span></td> - </tr> - </table> - </td> -</tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <a name="LIST_LIMIT"></a><span class="summary-name">LIST_LIMIT</span> = <code title="50">50</code><br /> - The query-parameter that is used to request results beginning from a - certain offset. - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <a href="scapi.ApiConnector-class.html#LIST_OFFSET_PARAMETER" class="summary-name">LIST_OFFSET_PARAMETER</a> = <code title="'offset'"><code class="variable-quote">'</code><code class="variable-string">offset</code><code class="variable-quote">'</code></code><br /> - The query-parameter that is used to request results being limited to - a certain amount. - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <a name="LIST_LIMIT_PARAMETER"></a><span class="summary-name">LIST_LIMIT_PARAMETER</span> = <code title="'limit'"><code class="variable-quote">'</code><code class="variable-string">limit</code><code class="variable-quote">'</code></code> - </td> - </tr> -</table> -<!-- ==================== PROPERTIES ==================== --> -<a name="section-Properties"></a> -<table class="summary" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr bgcolor="#70b0f0" class="table-header"> - <td colspan="2" class="table-header"> - <table border="0" cellpadding="0" cellspacing="0" width="100%"> - <tr valign="top"> - <td align="left"><span class="table-header">Properties</span></td> - <td align="right" valign="top" - ><span class="options">[<a href="#section-Properties" - class="privatelink" onclick="toggle_private();" - >hide private</a>]</span></td> - </tr> - </table> - </td> -</tr> - <tr> - <td colspan="2" class="summary"> - <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>: - <code>__class__</code> - </p> - </td> - </tr> -</table> -<!-- ==================== METHOD DETAILS ==================== --> -<a name="section-MethodDetails"></a> -<table class="details" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr bgcolor="#70b0f0" class="table-header"> - <td colspan="2" class="table-header"> - <table border="0" cellpadding="0" cellspacing="0" width="100%"> - <tr valign="top"> - <td align="left"><span class="table-header">Method Details</span></td> - <td align="right" valign="top" - ><span class="options">[<a href="#section-MethodDetails" - class="privatelink" onclick="toggle_private();" - >hide private</a>]</span></td> - </tr> - </table> - </td> -</tr> -</table> -<a name="__init__"></a> -<div> -<table class="details" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr><td> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr valign="top"><td> - <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>, - <span class="sig-arg">host</span>, - <span class="sig-arg">user</span>=<span class="sig-default">None</span>, - <span class="sig-arg">password</span>=<span class="sig-default">None</span>, - <span class="sig-arg">authenticator</span>=<span class="sig-default">None</span>, - <span class="sig-arg">base</span>=<span class="sig-default"><code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code></span>, - <span class="sig-arg">collapse_scope</span>=<span class="sig-default">True</span>)</span> - <br /><em class="fname">(Constructor)</em> - </h3> - </td><td align="right" valign="top" - ><span class="codelink"><a href="scapi-pysrc.html#ApiConnector.__init__">source code</a></span> - </td> - </tr></table> - - <p>Constructor for the API-Singleton. Use it once with parameters, and - then the subsequent calls internal to the API will work.</p> - <dl class="fields"> - <dt>Parameters:</dt> - <dd><ul class="nomargin-top"> - <li><strong class="pname"><code>host</code></strong> (str) - the host to connect to, e.g. "api.soundcloud.com". If a - port is needed, use "api.soundcloud.com:1234"</li> - <li><strong class="pname"><code>user</code></strong> (str) - if given, the username for basic HTTP authentication</li> - <li><strong class="pname"><code>password</code></strong> (str) - if the user is given, you have to give a password as well</li> - <li><strong class="pname"><code>authenticator</code></strong> (OAuthAuthenticator | BasicAuthenticator) - the authenticator to use, see <a - href="scapi.authentication-module.html" class="link" - onclick="show_private();">scapi.authentication</a></li> - </ul></dd> - <dt>Overrides: - object.__init__ - </dt> - </dl> -</td></tr></table> -</div> -<a name="normalize_method"></a> -<div> -<table class="details" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr><td> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr valign="top"><td> - <h3 class="epydoc"><span class="sig"><span class="sig-name">normalize_method</span>(<span class="sig-arg">self</span>, - <span class="sig-arg">method</span>)</span> - </h3> - </td><td align="right" valign="top" - ><span class="codelink"><a href="scapi-pysrc.html#ApiConnector.normalize_method">source code</a></span> - </td> - </tr></table> - - <p>This method will take a method that has been part of a redirect of - some sort and see if it's valid, which means that it's located beneath - our base. If yes, we return it normalized without that very base.</p> - <dl class="fields"> - </dl> -</td></tr></table> -</div> -<a name="fetch_request_token"></a> -<div> -<table class="details" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr><td> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr valign="top"><td> - <h3 class="epydoc"><span class="sig"><span class="sig-name">fetch_request_token</span>(<span class="sig-arg">self</span>, - <span class="sig-arg">url</span>=<span class="sig-default">None</span>, - <span class="sig-arg">oauth_callback</span>=<span class="sig-default"><code class="variable-quote">'</code><code class="variable-string">oob</code><code class="variable-quote">'</code></span>, - <span class="sig-arg">oauth_verifier</span>=<span class="sig-default">None</span>)</span> - </h3> - </td><td align="right" valign="top" - ><span class="codelink"><a href="scapi-pysrc.html#ApiConnector.fetch_request_token">source code</a></span> - </td> - </tr></table> - - <p>Helper-function for a registered consumer to obtain a request token, - as used by oauth.</p> - <p>Use it like this:</p> -<pre class="py-doctest"> -<span class="py-prompt">>>> </span>oauth_authenticator = scapi.authentication.OAuthAuthenticator(CONSUMER, -<span class="py-output"> CONSUMER_SECRET,</span> -<span class="py-output"> None, </span> -<span class="py-output"> None)</span></pre> -<pre class="py-doctest"> -<span class="py-prompt">>>> </span>sca = scapi.ApiConnector(host=API_HOST, authenticator=oauth_authenticator) -<span class="py-prompt">>>> </span>token, secret = sca.fetch_request_token() -<span class="py-prompt">>>> </span>authorization_url = sca.get_request_token_authorization_url(token)</pre> - <p>Please note the None passed as token & secret to the - authenticator.</p> - <dl class="fields"> - </dl> -</td></tr></table> -</div> -<a name="fetch_access_token"></a> -<div> -<table class="details" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr><td> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr valign="top"><td> - <h3 class="epydoc"><span class="sig"><span class="sig-name">fetch_access_token</span>(<span class="sig-arg">self</span>, - <span class="sig-arg">oauth_verifier</span>)</span> - </h3> - </td><td align="right" valign="top" - ><span class="codelink"><a href="scapi-pysrc.html#ApiConnector.fetch_access_token">source code</a></span> - </td> - </tr></table> - - <p>Helper-function for a registered consumer to exchange an access token - for a request token.</p> - <p>Use it like this:</p> -<pre class="py-doctest"> -<span class="py-prompt">>>> </span>oauth_authenticator = scapi.authentication.OAuthAuthenticator(CONSUMER, -<span class="py-output"> CONSUMER_SECRET,</span> -<span class="py-output"> request_token, </span> -<span class="py-output"> request_token_secret)</span></pre> -<pre class="py-doctest"> -<span class="py-prompt">>>> </span>sca = scapi.ApiConnector(host=API_HOST, authenticator=oauth_authenticator) -<span class="py-prompt">>>> </span>token, secret = sca.fetch_access_token()</pre> - <p>Please note the values passed as token & secret to the - authenticator.</p> - <dl class="fields"> - </dl> -</td></tr></table> -</div> -<a name="get_request_token_authorization_url"></a> -<div> -<table class="details" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr><td> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr valign="top"><td> - <h3 class="epydoc"><span class="sig"><span class="sig-name">get_request_token_authorization_url</span>(<span class="sig-arg">self</span>, - <span class="sig-arg">token</span>)</span> - </h3> - </td><td align="right" valign="top" - ><span class="codelink"><a href="scapi-pysrc.html#ApiConnector.get_request_token_authorization_url">source code</a></span> - </td> - </tr></table> - - <p>Simple helper function to generate the url needed to ask a user for - request token authorization.</p> - <p>See also <a href="scapi.ApiConnector-class.html#fetch_request_token" - class="link">fetch_request_token</a>.</p> - <p>Possible usage:</p> -<pre class="py-doctest"> -<span class="py-prompt">>>> </span><span class="py-keyword">import</span> webbrowser -<span class="py-prompt">>>> </span>sca = scapi.ApiConnector() -<span class="py-prompt">>>> </span>authorization_url = sca.get_request_token_authorization_url(token) -<span class="py-prompt">>>> </span>webbrowser.open(authorization_url)</pre> - <dl class="fields"> - </dl> -</td></tr></table> -</div> -<br /> -<!-- ==================== CLASS VARIABLE DETAILS ==================== --> -<a name="section-ClassVariableDetails"></a> -<table class="details" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr bgcolor="#70b0f0" class="table-header"> - <td colspan="2" class="table-header"> - <table border="0" cellpadding="0" cellspacing="0" width="100%"> - <tr valign="top"> - <td align="left"><span class="table-header">Class Variable Details</span></td> - <td align="right" valign="top" - ><span class="options">[<a href="#section-ClassVariableDetails" - class="privatelink" onclick="toggle_private();" - >hide private</a>]</span></td> - </tr> - </table> - </td> -</tr> -</table> -<a name="LIST_OFFSET_PARAMETER"></a> -<div> -<table class="details" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr><td> - <h3 class="epydoc">LIST_OFFSET_PARAMETER</h3> - <p>The query-parameter that is used to request results being limited to a - certain amount.</p> - <p>Currently this is of no use and just for completeness sake.</p> - <dl class="fields"> - </dl> - <dl class="fields"> - <dt>Value:</dt> - <dd><table><tr><td><pre class="variable"> -<code class="variable-quote">'</code><code class="variable-string">offset</code><code class="variable-quote">'</code> -</pre></td></tr></table> -</dd> - </dl> -</td></tr></table> -</div> -<br /> -<!-- ==================== NAVIGATION BAR ==================== --> -<table class="navbar" border="0" width="100%" cellpadding="0" - bgcolor="#a0c0ff" cellspacing="0"> - <tr valign="middle"> - <!-- Home link --> - <th> <a - href="scapi-module.html">Home</a> </th> - - <!-- Tree link --> - <th> <a - href="module-tree.html">Trees</a> </th> - - <!-- Index link --> - <th> <a - href="identifier-index.html">Indices</a> </th> - - <!-- Help link --> - <th> <a - href="help.html">Help</a> </th> - - <!-- Project homepage --> - <th class="navbar" align="right" width="100%"> - <table border="0" cellpadding="0" cellspacing="0"> - <tr><th class="navbar" align="center" - >SoundCloud API</th> - </tr></table></th> - </tr> -</table> -<table border="0" cellpadding="0" cellspacing="0" width="100%%"> - <tr> - <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Thu Sep 10 00:58:49 2009 - </td> - <td align="right" class="footer"> - <a target="mainFrame" href="http://epydoc.sourceforge.net" - >http://epydoc.sourceforge.net</a> - </td> - </tr> -</table> - -<script type="text/javascript"> - <!-- - // Private objects are initially displayed (because if - // javascript is turned off then we want them to be - // visible); but by default, we want to hide them. So hide - // them unless we have a cookie that says to show them. - checkCookie(); - // --> -</script> -</body> -</html> diff --git a/python_apps/soundcloud-api/docs/api/scapi.Asset-class.html b/python_apps/soundcloud-api/docs/api/scapi.Asset-class.html deleted file mode 100644 index f64bc0d2b..000000000 --- a/python_apps/soundcloud-api/docs/api/scapi.Asset-class.html +++ /dev/null @@ -1,258 +0,0 @@ -<?xml version="1.0" encoding="ascii"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <title>scapi.Asset</title> - <link rel="stylesheet" href="epydoc.css" type="text/css" /> - <script type="text/javascript" src="epydoc.js"></script> -</head> - -<body bgcolor="white" text="black" link="blue" vlink="#204080" - alink="#204080"> -<!-- ==================== NAVIGATION BAR ==================== --> -<table class="navbar" border="0" width="100%" cellpadding="0" - bgcolor="#a0c0ff" cellspacing="0"> - <tr valign="middle"> - <!-- Home link --> - <th> <a - href="scapi-module.html">Home</a> </th> - - <!-- Tree link --> - <th> <a - href="module-tree.html">Trees</a> </th> - - <!-- Index link --> - <th> <a - href="identifier-index.html">Indices</a> </th> - - <!-- Help link --> - <th> <a - href="help.html">Help</a> </th> - - <!-- Project homepage --> - <th class="navbar" align="right" width="100%"> - <table border="0" cellpadding="0" cellspacing="0"> - <tr><th class="navbar" align="center" - >SoundCloud API</th> - </tr></table></th> - </tr> -</table> -<table width="100%" cellpadding="0" cellspacing="0"> - <tr valign="top"> - <td width="100%"> - <span class="breadcrumbs"> - <a href="scapi-module.html">Package scapi</a> :: - Class Asset - </span> - </td> - <td> - <table cellpadding="0" cellspacing="0"> - <!-- hide/show private --> - <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink" - onclick="toggle_private();">hide private</a>]</span></td></tr> - <tr><td align="right"><span class="options" - >[<a href="frames.html" target="_top">frames</a - >] | <a href="scapi.Asset-class.html" - target="_top">no frames</a>]</span></td></tr> - </table> - </td> - </tr> -</table> -<!-- ==================== CLASS DESCRIPTION ==================== --> -<h1 class="epydoc">Class Asset</h1><span class="codelink"><a href="scapi-pysrc.html#Asset">source code</a></span><br /><br /> -<pre class="base-tree"> -object --+ - | - <a href="scapi.RESTBase-class.html">RESTBase</a> --+ - | - <strong class="uidshort">Asset</strong> -</pre> - -<hr /> -An asset domain object/resource.<br /><br /> - -<!-- ==================== INSTANCE METHODS ==================== --> -<a name="section-InstanceMethods"></a> -<table class="summary" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr bgcolor="#70b0f0" class="table-header"> - <td colspan="2" class="table-header"> - <table border="0" cellpadding="0" cellspacing="0" width="100%"> - <tr valign="top"> - <td align="left"><span class="table-header">Instance Methods</span></td> - <td align="right" valign="top" - ><span class="options">[<a href="#section-InstanceMethods" - class="privatelink" onclick="toggle_private();" - >hide private</a>]</span></td> - </tr> - </table> - </td> -</tr> - <tr> - <td colspan="2" class="summary"> - <p class="indent-wrapped-lines"><b>Inherited from <code><a href="scapi.RESTBase-class.html">RESTBase</a></code></b>: - <code><a href="scapi.RESTBase-class.html#__eq__">__eq__</a></code>, - <code><a href="scapi.RESTBase-class.html#__getattr__">__getattr__</a></code>, - <code><a href="scapi.RESTBase-class.html#__hash__">__hash__</a></code>, - <code><a href="scapi.RESTBase-class.html#__init__">__init__</a></code>, - <code><a href="scapi.RESTBase-class.html#__ne__">__ne__</a></code>, - <code><a href="scapi.RESTBase-class.html#__repr__">__repr__</a></code>, - <code><a href="scapi.RESTBase-class.html#__setattr__">__setattr__</a></code> - </p> - <div class="private"> <p class="indent-wrapped-lines"><b>Inherited from <code><a href="scapi.RESTBase-class.html">RESTBase</a></code></b> (private): - <code><a href="scapi.RESTBase-class.html#_as_arguments">_as_arguments</a></code>, - <code><a href="scapi.RESTBase-class.html#_convert_value">_convert_value</a></code>, - <code><a href="scapi.RESTBase-class.html#_scope">_scope</a></code> - </p></div> - <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>: - <code>__delattr__</code>, - <code>__getattribute__</code>, - <code>__new__</code>, - <code>__reduce__</code>, - <code>__reduce_ex__</code>, - <code>__str__</code> - </p> - </td> - </tr> -</table> -<!-- ==================== CLASS METHODS ==================== --> -<a name="section-ClassMethods"></a> -<table class="summary" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr bgcolor="#70b0f0" class="table-header"> - <td colspan="2" class="table-header"> - <table border="0" cellpadding="0" cellspacing="0" width="100%"> - <tr valign="top"> - <td align="left"><span class="table-header">Class Methods</span></td> - <td align="right" valign="top" - ><span class="options">[<a href="#section-ClassMethods" - class="privatelink" onclick="toggle_private();" - >hide private</a>]</span></td> - </tr> - </table> - </td> -</tr> - <tr> - <td colspan="2" class="summary"> - <p class="indent-wrapped-lines"><b>Inherited from <code><a href="scapi.RESTBase-class.html">RESTBase</a></code></b>: - <code><a href="scapi.RESTBase-class.html#create">create</a></code>, - <code><a href="scapi.RESTBase-class.html#get">get</a></code>, - <code><a href="scapi.RESTBase-class.html#new">new</a></code> - </p> - <div class="private"> <p class="indent-wrapped-lines"><b>Inherited from <code><a href="scapi.RESTBase-class.html">RESTBase</a></code></b> (private): - <code><a href="scapi.RESTBase-class.html#_singleton">_singleton</a></code> - </p></div> - </td> - </tr> -</table> -<!-- ==================== CLASS VARIABLES ==================== --> -<a name="section-ClassVariables"></a> -<table class="summary" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr bgcolor="#70b0f0" class="table-header"> - <td colspan="2" class="table-header"> - <table border="0" cellpadding="0" cellspacing="0" width="100%"> - <tr valign="top"> - <td align="left"><span class="table-header">Class Variables</span></td> - <td align="right" valign="top" - ><span class="options">[<a href="#section-ClassVariables" - class="privatelink" onclick="toggle_private();" - >hide private</a>]</span></td> - </tr> - </table> - </td> -</tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <a name="KIND"></a><span class="summary-name">KIND</span> = <code title="'assets'"><code class="variable-quote">'</code><code class="variable-string">assets</code><code class="variable-quote">'</code></code> - </td> - </tr> - <tr> - <td colspan="2" class="summary"> - <p class="indent-wrapped-lines"><b>Inherited from <code><a href="scapi.RESTBase-class.html">RESTBase</a></code></b>: - <code><a href="scapi.RESTBase-class.html#ALIASES">ALIASES</a></code>, - <code><a href="scapi.RESTBase-class.html#ALL_DOMAIN_CLASSES">ALL_DOMAIN_CLASSES</a></code>, - <code><a href="scapi.RESTBase-class.html#REGISTRY">REGISTRY</a></code> - </p> - </td> - </tr> -</table> -<!-- ==================== PROPERTIES ==================== --> -<a name="section-Properties"></a> -<table class="summary" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr bgcolor="#70b0f0" class="table-header"> - <td colspan="2" class="table-header"> - <table border="0" cellpadding="0" cellspacing="0" width="100%"> - <tr valign="top"> - <td align="left"><span class="table-header">Properties</span></td> - <td align="right" valign="top" - ><span class="options">[<a href="#section-Properties" - class="privatelink" onclick="toggle_private();" - >hide private</a>]</span></td> - </tr> - </table> - </td> -</tr> - <tr> - <td colspan="2" class="summary"> - <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>: - <code>__class__</code> - </p> - </td> - </tr> -</table> -<!-- ==================== NAVIGATION BAR ==================== --> -<table class="navbar" border="0" width="100%" cellpadding="0" - bgcolor="#a0c0ff" cellspacing="0"> - <tr valign="middle"> - <!-- Home link --> - <th> <a - href="scapi-module.html">Home</a> </th> - - <!-- Tree link --> - <th> <a - href="module-tree.html">Trees</a> </th> - - <!-- Index link --> - <th> <a - href="identifier-index.html">Indices</a> </th> - - <!-- Help link --> - <th> <a - href="help.html">Help</a> </th> - - <!-- Project homepage --> - <th class="navbar" align="right" width="100%"> - <table border="0" cellpadding="0" cellspacing="0"> - <tr><th class="navbar" align="center" - >SoundCloud API</th> - </tr></table></th> - </tr> -</table> -<table border="0" cellpadding="0" cellspacing="0" width="100%%"> - <tr> - <td align="left" class="footer"> - Generated by Epydoc 3.0beta1 on Fri Apr 18 16:28:18 2008 - </td> - <td align="right" class="footer"> - <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a> - </td> - </tr> -</table> - -<script type="text/javascript"> - <!-- - // Private objects are initially displayed (because if - // javascript is turned off then we want them to be - // visible); but by default, we want to hide them. So hide - // them unless we have a cookie that says to show them. - checkCookie() - // --> -</script> - -</body> -</html> diff --git a/python_apps/soundcloud-api/docs/api/scapi.Comment-class.html b/python_apps/soundcloud-api/docs/api/scapi.Comment-class.html deleted file mode 100644 index 4f2c4c950..000000000 --- a/python_apps/soundcloud-api/docs/api/scapi.Comment-class.html +++ /dev/null @@ -1,258 +0,0 @@ -<?xml version="1.0" encoding="ascii"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <title>scapi.Comment</title> - <link rel="stylesheet" href="epydoc.css" type="text/css" /> - <script type="text/javascript" src="epydoc.js"></script> -</head> - -<body bgcolor="white" text="black" link="blue" vlink="#204080" - alink="#204080"> -<!-- ==================== NAVIGATION BAR ==================== --> -<table class="navbar" border="0" width="100%" cellpadding="0" - bgcolor="#a0c0ff" cellspacing="0"> - <tr valign="middle"> - <!-- Home link --> - <th> <a - href="scapi-module.html">Home</a> </th> - - <!-- Tree link --> - <th> <a - href="module-tree.html">Trees</a> </th> - - <!-- Index link --> - <th> <a - href="identifier-index.html">Indices</a> </th> - - <!-- Help link --> - <th> <a - href="help.html">Help</a> </th> - - <!-- Project homepage --> - <th class="navbar" align="right" width="100%"> - <table border="0" cellpadding="0" cellspacing="0"> - <tr><th class="navbar" align="center" - >SoundCloud API</th> - </tr></table></th> - </tr> -</table> -<table width="100%" cellpadding="0" cellspacing="0"> - <tr valign="top"> - <td width="100%"> - <span class="breadcrumbs"> - <a href="scapi-module.html">Package scapi</a> :: - Class Comment - </span> - </td> - <td> - <table cellpadding="0" cellspacing="0"> - <!-- hide/show private --> - <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink" - onclick="toggle_private();">hide private</a>]</span></td></tr> - <tr><td align="right"><span class="options" - >[<a href="frames.html" target="_top">frames</a - >] | <a href="scapi.Comment-class.html" - target="_top">no frames</a>]</span></td></tr> - </table> - </td> - </tr> -</table> -<!-- ==================== CLASS DESCRIPTION ==================== --> -<h1 class="epydoc">Class Comment</h1><p class="nomargin-top"><span class="codelink"><a href="scapi-pysrc.html#Comment">source code</a></span></p> -<pre class="base-tree"> -object --+ - | - <a href="scapi.RESTBase-class.html" onclick="show_private();">RESTBase</a> --+ - | - <strong class="uidshort">Comment</strong> -</pre> - -<hr /> -<p>A comment domain object/resource.</p> - -<!-- ==================== INSTANCE METHODS ==================== --> -<a name="section-InstanceMethods"></a> -<table class="summary" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr bgcolor="#70b0f0" class="table-header"> - <td colspan="2" class="table-header"> - <table border="0" cellpadding="0" cellspacing="0" width="100%"> - <tr valign="top"> - <td align="left"><span class="table-header">Instance Methods</span></td> - <td align="right" valign="top" - ><span class="options">[<a href="#section-InstanceMethods" - class="privatelink" onclick="toggle_private();" - >hide private</a>]</span></td> - </tr> - </table> - </td> -</tr> - <tr> - <td colspan="2" class="summary"> - <p class="indent-wrapped-lines"><b>Inherited from <code><a href="scapi.RESTBase-class.html" onclick="show_private();">RESTBase</a></code></b>: - <code><a href="scapi.RESTBase-class.html#__eq__">__eq__</a></code>, - <code><a href="scapi.RESTBase-class.html#__getattr__">__getattr__</a></code>, - <code><a href="scapi.RESTBase-class.html#__hash__">__hash__</a></code>, - <code><a href="scapi.RESTBase-class.html#__init__">__init__</a></code>, - <code><a href="scapi.RESTBase-class.html#__ne__">__ne__</a></code>, - <code><a href="scapi.RESTBase-class.html#__repr__">__repr__</a></code>, - <code><a href="scapi.RESTBase-class.html#__setattr__">__setattr__</a></code> - </p> - <div class="private"> <p class="indent-wrapped-lines"><b>Inherited from <code><a href="scapi.RESTBase-class.html" onclick="show_private();">RESTBase</a></code></b> (private): - <code><a href="scapi.RESTBase-class.html#_as_arguments" onclick="show_private();">_as_arguments</a></code>, - <code><a href="scapi.RESTBase-class.html#_convert_value" onclick="show_private();">_convert_value</a></code>, - <code><a href="scapi.RESTBase-class.html#_scope" onclick="show_private();">_scope</a></code> - </p></div> - <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>: - <code>__delattr__</code>, - <code>__getattribute__</code>, - <code>__new__</code>, - <code>__reduce__</code>, - <code>__reduce_ex__</code>, - <code>__str__</code> - </p> - </td> - </tr> -</table> -<!-- ==================== CLASS METHODS ==================== --> -<a name="section-ClassMethods"></a> -<table class="summary" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr bgcolor="#70b0f0" class="table-header"> - <td colspan="2" class="table-header"> - <table border="0" cellpadding="0" cellspacing="0" width="100%"> - <tr valign="top"> - <td align="left"><span class="table-header">Class Methods</span></td> - <td align="right" valign="top" - ><span class="options">[<a href="#section-ClassMethods" - class="privatelink" onclick="toggle_private();" - >hide private</a>]</span></td> - </tr> - </table> - </td> -</tr> - <tr> - <td colspan="2" class="summary"> - <p class="indent-wrapped-lines"><b>Inherited from <code><a href="scapi.RESTBase-class.html" onclick="show_private();">RESTBase</a></code></b>: - <code><a href="scapi.RESTBase-class.html#create">create</a></code>, - <code><a href="scapi.RESTBase-class.html#get">get</a></code>, - <code><a href="scapi.RESTBase-class.html#new">new</a></code> - </p> - <div class="private"> <p class="indent-wrapped-lines"><b>Inherited from <code><a href="scapi.RESTBase-class.html" onclick="show_private();">RESTBase</a></code></b> (private): - <code><a href="scapi.RESTBase-class.html#_singleton" onclick="show_private();">_singleton</a></code> - </p></div> - </td> - </tr> -</table> -<!-- ==================== CLASS VARIABLES ==================== --> -<a name="section-ClassVariables"></a> -<table class="summary" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr bgcolor="#70b0f0" class="table-header"> - <td colspan="2" class="table-header"> - <table border="0" cellpadding="0" cellspacing="0" width="100%"> - <tr valign="top"> - <td align="left"><span class="table-header">Class Variables</span></td> - <td align="right" valign="top" - ><span class="options">[<a href="#section-ClassVariables" - class="privatelink" onclick="toggle_private();" - >hide private</a>]</span></td> - </tr> - </table> - </td> -</tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <a name="KIND"></a><span class="summary-name">KIND</span> = <code title="'comments'"><code class="variable-quote">'</code><code class="variable-string">comments</code><code class="variable-quote">'</code></code> - </td> - </tr> - <tr> - <td colspan="2" class="summary"> - <p class="indent-wrapped-lines"><b>Inherited from <code><a href="scapi.RESTBase-class.html" onclick="show_private();">RESTBase</a></code></b>: - <code><a href="scapi.RESTBase-class.html#ALIASES">ALIASES</a></code>, - <code><a href="scapi.RESTBase-class.html#ALL_DOMAIN_CLASSES">ALL_DOMAIN_CLASSES</a></code>, - <code><a href="scapi.RESTBase-class.html#REGISTRY">REGISTRY</a></code> - </p> - </td> - </tr> -</table> -<!-- ==================== PROPERTIES ==================== --> -<a name="section-Properties"></a> -<table class="summary" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr bgcolor="#70b0f0" class="table-header"> - <td colspan="2" class="table-header"> - <table border="0" cellpadding="0" cellspacing="0" width="100%"> - <tr valign="top"> - <td align="left"><span class="table-header">Properties</span></td> - <td align="right" valign="top" - ><span class="options">[<a href="#section-Properties" - class="privatelink" onclick="toggle_private();" - >hide private</a>]</span></td> - </tr> - </table> - </td> -</tr> - <tr> - <td colspan="2" class="summary"> - <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>: - <code>__class__</code> - </p> - </td> - </tr> -</table> -<!-- ==================== NAVIGATION BAR ==================== --> -<table class="navbar" border="0" width="100%" cellpadding="0" - bgcolor="#a0c0ff" cellspacing="0"> - <tr valign="middle"> - <!-- Home link --> - <th> <a - href="scapi-module.html">Home</a> </th> - - <!-- Tree link --> - <th> <a - href="module-tree.html">Trees</a> </th> - - <!-- Index link --> - <th> <a - href="identifier-index.html">Indices</a> </th> - - <!-- Help link --> - <th> <a - href="help.html">Help</a> </th> - - <!-- Project homepage --> - <th class="navbar" align="right" width="100%"> - <table border="0" cellpadding="0" cellspacing="0"> - <tr><th class="navbar" align="center" - >SoundCloud API</th> - </tr></table></th> - </tr> -</table> -<table border="0" cellpadding="0" cellspacing="0" width="100%%"> - <tr> - <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Thu Sep 10 00:58:49 2009 - </td> - <td align="right" class="footer"> - <a target="mainFrame" href="http://epydoc.sourceforge.net" - >http://epydoc.sourceforge.net</a> - </td> - </tr> -</table> - -<script type="text/javascript"> - <!-- - // Private objects are initially displayed (because if - // javascript is turned off then we want them to be - // visible); but by default, we want to hide them. So hide - // them unless we have a cookie that says to show them. - checkCookie(); - // --> -</script> -</body> -</html> diff --git a/python_apps/soundcloud-api/docs/api/scapi.Event-class.html b/python_apps/soundcloud-api/docs/api/scapi.Event-class.html deleted file mode 100644 index 40095b067..000000000 --- a/python_apps/soundcloud-api/docs/api/scapi.Event-class.html +++ /dev/null @@ -1,258 +0,0 @@ -<?xml version="1.0" encoding="ascii"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <title>scapi.Event</title> - <link rel="stylesheet" href="epydoc.css" type="text/css" /> - <script type="text/javascript" src="epydoc.js"></script> -</head> - -<body bgcolor="white" text="black" link="blue" vlink="#204080" - alink="#204080"> -<!-- ==================== NAVIGATION BAR ==================== --> -<table class="navbar" border="0" width="100%" cellpadding="0" - bgcolor="#a0c0ff" cellspacing="0"> - <tr valign="middle"> - <!-- Home link --> - <th> <a - href="scapi-module.html">Home</a> </th> - - <!-- Tree link --> - <th> <a - href="module-tree.html">Trees</a> </th> - - <!-- Index link --> - <th> <a - href="identifier-index.html">Indices</a> </th> - - <!-- Help link --> - <th> <a - href="help.html">Help</a> </th> - - <!-- Project homepage --> - <th class="navbar" align="right" width="100%"> - <table border="0" cellpadding="0" cellspacing="0"> - <tr><th class="navbar" align="center" - >SoundCloud API</th> - </tr></table></th> - </tr> -</table> -<table width="100%" cellpadding="0" cellspacing="0"> - <tr valign="top"> - <td width="100%"> - <span class="breadcrumbs"> - <a href="scapi-module.html">Package scapi</a> :: - Class Event - </span> - </td> - <td> - <table cellpadding="0" cellspacing="0"> - <!-- hide/show private --> - <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink" - onclick="toggle_private();">hide private</a>]</span></td></tr> - <tr><td align="right"><span class="options" - >[<a href="frames.html" target="_top">frames</a - >] | <a href="scapi.Event-class.html" - target="_top">no frames</a>]</span></td></tr> - </table> - </td> - </tr> -</table> -<!-- ==================== CLASS DESCRIPTION ==================== --> -<h1 class="epydoc">Class Event</h1><p class="nomargin-top"><span class="codelink"><a href="scapi-pysrc.html#Event">source code</a></span></p> -<pre class="base-tree"> -object --+ - | - <a href="scapi.RESTBase-class.html" onclick="show_private();">RESTBase</a> --+ - | - <strong class="uidshort">Event</strong> -</pre> - -<hr /> -<p>A event domain object/resource.</p> - -<!-- ==================== INSTANCE METHODS ==================== --> -<a name="section-InstanceMethods"></a> -<table class="summary" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr bgcolor="#70b0f0" class="table-header"> - <td colspan="2" class="table-header"> - <table border="0" cellpadding="0" cellspacing="0" width="100%"> - <tr valign="top"> - <td align="left"><span class="table-header">Instance Methods</span></td> - <td align="right" valign="top" - ><span class="options">[<a href="#section-InstanceMethods" - class="privatelink" onclick="toggle_private();" - >hide private</a>]</span></td> - </tr> - </table> - </td> -</tr> - <tr> - <td colspan="2" class="summary"> - <p class="indent-wrapped-lines"><b>Inherited from <code><a href="scapi.RESTBase-class.html" onclick="show_private();">RESTBase</a></code></b>: - <code><a href="scapi.RESTBase-class.html#__eq__">__eq__</a></code>, - <code><a href="scapi.RESTBase-class.html#__getattr__">__getattr__</a></code>, - <code><a href="scapi.RESTBase-class.html#__hash__">__hash__</a></code>, - <code><a href="scapi.RESTBase-class.html#__init__">__init__</a></code>, - <code><a href="scapi.RESTBase-class.html#__ne__">__ne__</a></code>, - <code><a href="scapi.RESTBase-class.html#__repr__">__repr__</a></code>, - <code><a href="scapi.RESTBase-class.html#__setattr__">__setattr__</a></code> - </p> - <div class="private"> <p class="indent-wrapped-lines"><b>Inherited from <code><a href="scapi.RESTBase-class.html" onclick="show_private();">RESTBase</a></code></b> (private): - <code><a href="scapi.RESTBase-class.html#_as_arguments" onclick="show_private();">_as_arguments</a></code>, - <code><a href="scapi.RESTBase-class.html#_convert_value" onclick="show_private();">_convert_value</a></code>, - <code><a href="scapi.RESTBase-class.html#_scope" onclick="show_private();">_scope</a></code> - </p></div> - <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>: - <code>__delattr__</code>, - <code>__getattribute__</code>, - <code>__new__</code>, - <code>__reduce__</code>, - <code>__reduce_ex__</code>, - <code>__str__</code> - </p> - </td> - </tr> -</table> -<!-- ==================== CLASS METHODS ==================== --> -<a name="section-ClassMethods"></a> -<table class="summary" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr bgcolor="#70b0f0" class="table-header"> - <td colspan="2" class="table-header"> - <table border="0" cellpadding="0" cellspacing="0" width="100%"> - <tr valign="top"> - <td align="left"><span class="table-header">Class Methods</span></td> - <td align="right" valign="top" - ><span class="options">[<a href="#section-ClassMethods" - class="privatelink" onclick="toggle_private();" - >hide private</a>]</span></td> - </tr> - </table> - </td> -</tr> - <tr> - <td colspan="2" class="summary"> - <p class="indent-wrapped-lines"><b>Inherited from <code><a href="scapi.RESTBase-class.html" onclick="show_private();">RESTBase</a></code></b>: - <code><a href="scapi.RESTBase-class.html#create">create</a></code>, - <code><a href="scapi.RESTBase-class.html#get">get</a></code>, - <code><a href="scapi.RESTBase-class.html#new">new</a></code> - </p> - <div class="private"> <p class="indent-wrapped-lines"><b>Inherited from <code><a href="scapi.RESTBase-class.html" onclick="show_private();">RESTBase</a></code></b> (private): - <code><a href="scapi.RESTBase-class.html#_singleton" onclick="show_private();">_singleton</a></code> - </p></div> - </td> - </tr> -</table> -<!-- ==================== CLASS VARIABLES ==================== --> -<a name="section-ClassVariables"></a> -<table class="summary" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr bgcolor="#70b0f0" class="table-header"> - <td colspan="2" class="table-header"> - <table border="0" cellpadding="0" cellspacing="0" width="100%"> - <tr valign="top"> - <td align="left"><span class="table-header">Class Variables</span></td> - <td align="right" valign="top" - ><span class="options">[<a href="#section-ClassVariables" - class="privatelink" onclick="toggle_private();" - >hide private</a>]</span></td> - </tr> - </table> - </td> -</tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <a name="KIND"></a><span class="summary-name">KIND</span> = <code title="'events'"><code class="variable-quote">'</code><code class="variable-string">events</code><code class="variable-quote">'</code></code> - </td> - </tr> - <tr> - <td colspan="2" class="summary"> - <p class="indent-wrapped-lines"><b>Inherited from <code><a href="scapi.RESTBase-class.html" onclick="show_private();">RESTBase</a></code></b>: - <code><a href="scapi.RESTBase-class.html#ALIASES">ALIASES</a></code>, - <code><a href="scapi.RESTBase-class.html#ALL_DOMAIN_CLASSES">ALL_DOMAIN_CLASSES</a></code>, - <code><a href="scapi.RESTBase-class.html#REGISTRY">REGISTRY</a></code> - </p> - </td> - </tr> -</table> -<!-- ==================== PROPERTIES ==================== --> -<a name="section-Properties"></a> -<table class="summary" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr bgcolor="#70b0f0" class="table-header"> - <td colspan="2" class="table-header"> - <table border="0" cellpadding="0" cellspacing="0" width="100%"> - <tr valign="top"> - <td align="left"><span class="table-header">Properties</span></td> - <td align="right" valign="top" - ><span class="options">[<a href="#section-Properties" - class="privatelink" onclick="toggle_private();" - >hide private</a>]</span></td> - </tr> - </table> - </td> -</tr> - <tr> - <td colspan="2" class="summary"> - <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>: - <code>__class__</code> - </p> - </td> - </tr> -</table> -<!-- ==================== NAVIGATION BAR ==================== --> -<table class="navbar" border="0" width="100%" cellpadding="0" - bgcolor="#a0c0ff" cellspacing="0"> - <tr valign="middle"> - <!-- Home link --> - <th> <a - href="scapi-module.html">Home</a> </th> - - <!-- Tree link --> - <th> <a - href="module-tree.html">Trees</a> </th> - - <!-- Index link --> - <th> <a - href="identifier-index.html">Indices</a> </th> - - <!-- Help link --> - <th> <a - href="help.html">Help</a> </th> - - <!-- Project homepage --> - <th class="navbar" align="right" width="100%"> - <table border="0" cellpadding="0" cellspacing="0"> - <tr><th class="navbar" align="center" - >SoundCloud API</th> - </tr></table></th> - </tr> -</table> -<table border="0" cellpadding="0" cellspacing="0" width="100%%"> - <tr> - <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Thu Sep 10 00:58:49 2009 - </td> - <td align="right" class="footer"> - <a target="mainFrame" href="http://epydoc.sourceforge.net" - >http://epydoc.sourceforge.net</a> - </td> - </tr> -</table> - -<script type="text/javascript"> - <!-- - // Private objects are initially displayed (because if - // javascript is turned off then we want them to be - // visible); but by default, we want to hide them. So hide - // them unless we have a cookie that says to show them. - checkCookie(); - // --> -</script> -</body> -</html> diff --git a/python_apps/soundcloud-api/docs/api/scapi.Group-class.html b/python_apps/soundcloud-api/docs/api/scapi.Group-class.html deleted file mode 100644 index eb30ab842..000000000 --- a/python_apps/soundcloud-api/docs/api/scapi.Group-class.html +++ /dev/null @@ -1,258 +0,0 @@ -<?xml version="1.0" encoding="ascii"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <title>scapi.Group</title> - <link rel="stylesheet" href="epydoc.css" type="text/css" /> - <script type="text/javascript" src="epydoc.js"></script> -</head> - -<body bgcolor="white" text="black" link="blue" vlink="#204080" - alink="#204080"> -<!-- ==================== NAVIGATION BAR ==================== --> -<table class="navbar" border="0" width="100%" cellpadding="0" - bgcolor="#a0c0ff" cellspacing="0"> - <tr valign="middle"> - <!-- Home link --> - <th> <a - href="scapi-module.html">Home</a> </th> - - <!-- Tree link --> - <th> <a - href="module-tree.html">Trees</a> </th> - - <!-- Index link --> - <th> <a - href="identifier-index.html">Indices</a> </th> - - <!-- Help link --> - <th> <a - href="help.html">Help</a> </th> - - <!-- Project homepage --> - <th class="navbar" align="right" width="100%"> - <table border="0" cellpadding="0" cellspacing="0"> - <tr><th class="navbar" align="center" - >SoundCloud API</th> - </tr></table></th> - </tr> -</table> -<table width="100%" cellpadding="0" cellspacing="0"> - <tr valign="top"> - <td width="100%"> - <span class="breadcrumbs"> - <a href="scapi-module.html">Package scapi</a> :: - Class Group - </span> - </td> - <td> - <table cellpadding="0" cellspacing="0"> - <!-- hide/show private --> - <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink" - onclick="toggle_private();">hide private</a>]</span></td></tr> - <tr><td align="right"><span class="options" - >[<a href="frames.html" target="_top">frames</a - >] | <a href="scapi.Group-class.html" - target="_top">no frames</a>]</span></td></tr> - </table> - </td> - </tr> -</table> -<!-- ==================== CLASS DESCRIPTION ==================== --> -<h1 class="epydoc">Class Group</h1><p class="nomargin-top"><span class="codelink"><a href="scapi-pysrc.html#Group">source code</a></span></p> -<pre class="base-tree"> -object --+ - | - <a href="scapi.RESTBase-class.html" onclick="show_private();">RESTBase</a> --+ - | - <strong class="uidshort">Group</strong> -</pre> - -<hr /> -<p>A group domain object/resource</p> - -<!-- ==================== INSTANCE METHODS ==================== --> -<a name="section-InstanceMethods"></a> -<table class="summary" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr bgcolor="#70b0f0" class="table-header"> - <td colspan="2" class="table-header"> - <table border="0" cellpadding="0" cellspacing="0" width="100%"> - <tr valign="top"> - <td align="left"><span class="table-header">Instance Methods</span></td> - <td align="right" valign="top" - ><span class="options">[<a href="#section-InstanceMethods" - class="privatelink" onclick="toggle_private();" - >hide private</a>]</span></td> - </tr> - </table> - </td> -</tr> - <tr> - <td colspan="2" class="summary"> - <p class="indent-wrapped-lines"><b>Inherited from <code><a href="scapi.RESTBase-class.html" onclick="show_private();">RESTBase</a></code></b>: - <code><a href="scapi.RESTBase-class.html#__eq__">__eq__</a></code>, - <code><a href="scapi.RESTBase-class.html#__getattr__">__getattr__</a></code>, - <code><a href="scapi.RESTBase-class.html#__hash__">__hash__</a></code>, - <code><a href="scapi.RESTBase-class.html#__init__">__init__</a></code>, - <code><a href="scapi.RESTBase-class.html#__ne__">__ne__</a></code>, - <code><a href="scapi.RESTBase-class.html#__repr__">__repr__</a></code>, - <code><a href="scapi.RESTBase-class.html#__setattr__">__setattr__</a></code> - </p> - <div class="private"> <p class="indent-wrapped-lines"><b>Inherited from <code><a href="scapi.RESTBase-class.html" onclick="show_private();">RESTBase</a></code></b> (private): - <code><a href="scapi.RESTBase-class.html#_as_arguments" onclick="show_private();">_as_arguments</a></code>, - <code><a href="scapi.RESTBase-class.html#_convert_value" onclick="show_private();">_convert_value</a></code>, - <code><a href="scapi.RESTBase-class.html#_scope" onclick="show_private();">_scope</a></code> - </p></div> - <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>: - <code>__delattr__</code>, - <code>__getattribute__</code>, - <code>__new__</code>, - <code>__reduce__</code>, - <code>__reduce_ex__</code>, - <code>__str__</code> - </p> - </td> - </tr> -</table> -<!-- ==================== CLASS METHODS ==================== --> -<a name="section-ClassMethods"></a> -<table class="summary" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr bgcolor="#70b0f0" class="table-header"> - <td colspan="2" class="table-header"> - <table border="0" cellpadding="0" cellspacing="0" width="100%"> - <tr valign="top"> - <td align="left"><span class="table-header">Class Methods</span></td> - <td align="right" valign="top" - ><span class="options">[<a href="#section-ClassMethods" - class="privatelink" onclick="toggle_private();" - >hide private</a>]</span></td> - </tr> - </table> - </td> -</tr> - <tr> - <td colspan="2" class="summary"> - <p class="indent-wrapped-lines"><b>Inherited from <code><a href="scapi.RESTBase-class.html" onclick="show_private();">RESTBase</a></code></b>: - <code><a href="scapi.RESTBase-class.html#create">create</a></code>, - <code><a href="scapi.RESTBase-class.html#get">get</a></code>, - <code><a href="scapi.RESTBase-class.html#new">new</a></code> - </p> - <div class="private"> <p class="indent-wrapped-lines"><b>Inherited from <code><a href="scapi.RESTBase-class.html" onclick="show_private();">RESTBase</a></code></b> (private): - <code><a href="scapi.RESTBase-class.html#_singleton" onclick="show_private();">_singleton</a></code> - </p></div> - </td> - </tr> -</table> -<!-- ==================== CLASS VARIABLES ==================== --> -<a name="section-ClassVariables"></a> -<table class="summary" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr bgcolor="#70b0f0" class="table-header"> - <td colspan="2" class="table-header"> - <table border="0" cellpadding="0" cellspacing="0" width="100%"> - <tr valign="top"> - <td align="left"><span class="table-header">Class Variables</span></td> - <td align="right" valign="top" - ><span class="options">[<a href="#section-ClassVariables" - class="privatelink" onclick="toggle_private();" - >hide private</a>]</span></td> - </tr> - </table> - </td> -</tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <a name="KIND"></a><span class="summary-name">KIND</span> = <code title="'groups'"><code class="variable-quote">'</code><code class="variable-string">groups</code><code class="variable-quote">'</code></code> - </td> - </tr> - <tr> - <td colspan="2" class="summary"> - <p class="indent-wrapped-lines"><b>Inherited from <code><a href="scapi.RESTBase-class.html" onclick="show_private();">RESTBase</a></code></b>: - <code><a href="scapi.RESTBase-class.html#ALIASES">ALIASES</a></code>, - <code><a href="scapi.RESTBase-class.html#ALL_DOMAIN_CLASSES">ALL_DOMAIN_CLASSES</a></code>, - <code><a href="scapi.RESTBase-class.html#REGISTRY">REGISTRY</a></code> - </p> - </td> - </tr> -</table> -<!-- ==================== PROPERTIES ==================== --> -<a name="section-Properties"></a> -<table class="summary" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr bgcolor="#70b0f0" class="table-header"> - <td colspan="2" class="table-header"> - <table border="0" cellpadding="0" cellspacing="0" width="100%"> - <tr valign="top"> - <td align="left"><span class="table-header">Properties</span></td> - <td align="right" valign="top" - ><span class="options">[<a href="#section-Properties" - class="privatelink" onclick="toggle_private();" - >hide private</a>]</span></td> - </tr> - </table> - </td> -</tr> - <tr> - <td colspan="2" class="summary"> - <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>: - <code>__class__</code> - </p> - </td> - </tr> -</table> -<!-- ==================== NAVIGATION BAR ==================== --> -<table class="navbar" border="0" width="100%" cellpadding="0" - bgcolor="#a0c0ff" cellspacing="0"> - <tr valign="middle"> - <!-- Home link --> - <th> <a - href="scapi-module.html">Home</a> </th> - - <!-- Tree link --> - <th> <a - href="module-tree.html">Trees</a> </th> - - <!-- Index link --> - <th> <a - href="identifier-index.html">Indices</a> </th> - - <!-- Help link --> - <th> <a - href="help.html">Help</a> </th> - - <!-- Project homepage --> - <th class="navbar" align="right" width="100%"> - <table border="0" cellpadding="0" cellspacing="0"> - <tr><th class="navbar" align="center" - >SoundCloud API</th> - </tr></table></th> - </tr> -</table> -<table border="0" cellpadding="0" cellspacing="0" width="100%%"> - <tr> - <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Thu Sep 10 00:58:49 2009 - </td> - <td align="right" class="footer"> - <a target="mainFrame" href="http://epydoc.sourceforge.net" - >http://epydoc.sourceforge.net</a> - </td> - </tr> -</table> - -<script type="text/javascript"> - <!-- - // Private objects are initially displayed (because if - // javascript is turned off then we want them to be - // visible); but by default, we want to hide them. So hide - // them unless we have a cookie that says to show them. - checkCookie(); - // --> -</script> -</body> -</html> diff --git a/python_apps/soundcloud-api/docs/api/scapi.InvalidMethodException-class.html b/python_apps/soundcloud-api/docs/api/scapi.InvalidMethodException-class.html deleted file mode 100644 index 476502352..000000000 --- a/python_apps/soundcloud-api/docs/api/scapi.InvalidMethodException-class.html +++ /dev/null @@ -1,297 +0,0 @@ -<?xml version="1.0" encoding="ascii"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <title>scapi.InvalidMethodException</title> - <link rel="stylesheet" href="epydoc.css" type="text/css" /> - <script type="text/javascript" src="epydoc.js"></script> -</head> - -<body bgcolor="white" text="black" link="blue" vlink="#204080" - alink="#204080"> -<!-- ==================== NAVIGATION BAR ==================== --> -<table class="navbar" border="0" width="100%" cellpadding="0" - bgcolor="#a0c0ff" cellspacing="0"> - <tr valign="middle"> - <!-- Home link --> - <th> <a - href="scapi-module.html">Home</a> </th> - - <!-- Tree link --> - <th> <a - href="module-tree.html">Trees</a> </th> - - <!-- Index link --> - <th> <a - href="identifier-index.html">Indices</a> </th> - - <!-- Help link --> - <th> <a - href="help.html">Help</a> </th> - - <!-- Project homepage --> - <th class="navbar" align="right" width="100%"> - <table border="0" cellpadding="0" cellspacing="0"> - <tr><th class="navbar" align="center" - >SoundCloud API</th> - </tr></table></th> - </tr> -</table> -<table width="100%" cellpadding="0" cellspacing="0"> - <tr valign="top"> - <td width="100%"> - <span class="breadcrumbs"> - <a href="scapi-module.html">Package scapi</a> :: - Class InvalidMethodException - </span> - </td> - <td> - <table cellpadding="0" cellspacing="0"> - <!-- hide/show private --> - <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink" - onclick="toggle_private();">hide private</a>]</span></td></tr> - <tr><td align="right"><span class="options" - >[<a href="frames.html" target="_top">frames</a - >] | <a href="scapi.InvalidMethodException-class.html" - target="_top">no frames</a>]</span></td></tr> - </table> - </td> - </tr> -</table> -<!-- ==================== CLASS DESCRIPTION ==================== --> -<h1 class="epydoc">Class InvalidMethodException</h1><p class="nomargin-top"><span class="codelink"><a href="scapi-pysrc.html#InvalidMethodException">source code</a></span></p> -<pre class="base-tree"> - object --+ - | -exceptions.BaseException --+ - | - exceptions.Exception --+ - | - <strong class="uidshort">InvalidMethodException</strong> -</pre> - -<hr /> -<!-- ==================== INSTANCE METHODS ==================== --> -<a name="section-InstanceMethods"></a> -<table class="summary" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr bgcolor="#70b0f0" class="table-header"> - <td colspan="2" class="table-header"> - <table border="0" cellpadding="0" cellspacing="0" width="100%"> - <tr valign="top"> - <td align="left"><span class="table-header">Instance Methods</span></td> - <td align="right" valign="top" - ><span class="options">[<a href="#section-InstanceMethods" - class="privatelink" onclick="toggle_private();" - >hide private</a>]</span></td> - </tr> - </table> - </td> -</tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a href="scapi.InvalidMethodException-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>, - <span class="summary-sig-arg">message</span>)</span><br /> - x.__init__(...) initializes x; see x.__class__.__doc__ for signature</td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi-pysrc.html#InvalidMethodException.__init__">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a href="scapi.InvalidMethodException-class.html#__repr__" class="summary-sig-name">__repr__</a>(<span class="summary-sig-arg">self</span>)</span><br /> - repr(x)</td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi-pysrc.html#InvalidMethodException.__repr__">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> - <tr> - <td colspan="2" class="summary"> - <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.Exception</code></b>: - <code>__new__</code> - </p> - <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.BaseException</code></b>: - <code>__delattr__</code>, - <code>__getattribute__</code>, - <code>__getitem__</code>, - <code>__getslice__</code>, - <code>__reduce__</code>, - <code>__setattr__</code>, - <code>__setstate__</code>, - <code>__str__</code> - </p> - <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>: - <code>__hash__</code>, - <code>__reduce_ex__</code> - </p> - </td> - </tr> -</table> -<!-- ==================== PROPERTIES ==================== --> -<a name="section-Properties"></a> -<table class="summary" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr bgcolor="#70b0f0" class="table-header"> - <td colspan="2" class="table-header"> - <table border="0" cellpadding="0" cellspacing="0" width="100%"> - <tr valign="top"> - <td align="left"><span class="table-header">Properties</span></td> - <td align="right" valign="top" - ><span class="options">[<a href="#section-Properties" - class="privatelink" onclick="toggle_private();" - >hide private</a>]</span></td> - </tr> - </table> - </td> -</tr> - <tr> - <td colspan="2" class="summary"> - <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.BaseException</code></b>: - <code>args</code>, - <code>message</code> - </p> - <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>: - <code>__class__</code> - </p> - </td> - </tr> -</table> -<!-- ==================== METHOD DETAILS ==================== --> -<a name="section-MethodDetails"></a> -<table class="details" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr bgcolor="#70b0f0" class="table-header"> - <td colspan="2" class="table-header"> - <table border="0" cellpadding="0" cellspacing="0" width="100%"> - <tr valign="top"> - <td align="left"><span class="table-header">Method Details</span></td> - <td align="right" valign="top" - ><span class="options">[<a href="#section-MethodDetails" - class="privatelink" onclick="toggle_private();" - >hide private</a>]</span></td> - </tr> - </table> - </td> -</tr> -</table> -<a name="__init__"></a> -<div> -<table class="details" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr><td> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr valign="top"><td> - <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>, - <span class="sig-arg">message</span>)</span> - <br /><em class="fname">(Constructor)</em> - </h3> - </td><td align="right" valign="top" - ><span class="codelink"><a href="scapi-pysrc.html#InvalidMethodException.__init__">source code</a></span> - </td> - </tr></table> - - <p>x.__init__(...) initializes x; see x.__class__.__doc__ for - signature</p> - <dl class="fields"> - <dt>Overrides: - object.__init__ - <dd><em class="note">(inherited documentation)</em></dd> - </dt> - </dl> -</td></tr></table> -</div> -<a name="__repr__"></a> -<div> -<table class="details" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr><td> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr valign="top"><td> - <h3 class="epydoc"><span class="sig"><span class="sig-name">__repr__</span>(<span class="sig-arg">self</span>)</span> - <br /><em class="fname">(Representation operator)</em> - </h3> - </td><td align="right" valign="top" - ><span class="codelink"><a href="scapi-pysrc.html#InvalidMethodException.__repr__">source code</a></span> - </td> - </tr></table> - - <p>repr(x)</p> - <dl class="fields"> - <dt>Overrides: - object.__repr__ - <dd><em class="note">(inherited documentation)</em></dd> - </dt> - </dl> -</td></tr></table> -</div> -<br /> -<!-- ==================== NAVIGATION BAR ==================== --> -<table class="navbar" border="0" width="100%" cellpadding="0" - bgcolor="#a0c0ff" cellspacing="0"> - <tr valign="middle"> - <!-- Home link --> - <th> <a - href="scapi-module.html">Home</a> </th> - - <!-- Tree link --> - <th> <a - href="module-tree.html">Trees</a> </th> - - <!-- Index link --> - <th> <a - href="identifier-index.html">Indices</a> </th> - - <!-- Help link --> - <th> <a - href="help.html">Help</a> </th> - - <!-- Project homepage --> - <th class="navbar" align="right" width="100%"> - <table border="0" cellpadding="0" cellspacing="0"> - <tr><th class="navbar" align="center" - >SoundCloud API</th> - </tr></table></th> - </tr> -</table> -<table border="0" cellpadding="0" cellspacing="0" width="100%%"> - <tr> - <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Thu Sep 10 00:58:49 2009 - </td> - <td align="right" class="footer"> - <a target="mainFrame" href="http://epydoc.sourceforge.net" - >http://epydoc.sourceforge.net</a> - </td> - </tr> -</table> - -<script type="text/javascript"> - <!-- - // Private objects are initially displayed (because if - // javascript is turned off then we want them to be - // visible); but by default, we want to hide them. So hide - // them unless we have a cookie that says to show them. - checkCookie(); - // --> -</script> -</body> -</html> diff --git a/python_apps/soundcloud-api/docs/api/scapi.NoResultFromRequest-class.html b/python_apps/soundcloud-api/docs/api/scapi.NoResultFromRequest-class.html deleted file mode 100644 index 5bcb71794..000000000 --- a/python_apps/soundcloud-api/docs/api/scapi.NoResultFromRequest-class.html +++ /dev/null @@ -1,195 +0,0 @@ -<?xml version="1.0" encoding="ascii"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <title>scapi.NoResultFromRequest</title> - <link rel="stylesheet" href="epydoc.css" type="text/css" /> - <script type="text/javascript" src="epydoc.js"></script> -</head> - -<body bgcolor="white" text="black" link="blue" vlink="#204080" - alink="#204080"> -<!-- ==================== NAVIGATION BAR ==================== --> -<table class="navbar" border="0" width="100%" cellpadding="0" - bgcolor="#a0c0ff" cellspacing="0"> - <tr valign="middle"> - <!-- Home link --> - <th> <a - href="scapi-module.html">Home</a> </th> - - <!-- Tree link --> - <th> <a - href="module-tree.html">Trees</a> </th> - - <!-- Index link --> - <th> <a - href="identifier-index.html">Indices</a> </th> - - <!-- Help link --> - <th> <a - href="help.html">Help</a> </th> - - <!-- Project homepage --> - <th class="navbar" align="right" width="100%"> - <table border="0" cellpadding="0" cellspacing="0"> - <tr><th class="navbar" align="center" - >SoundCloud API</th> - </tr></table></th> - </tr> -</table> -<table width="100%" cellpadding="0" cellspacing="0"> - <tr valign="top"> - <td width="100%"> - <span class="breadcrumbs"> - <a href="scapi-module.html">Package scapi</a> :: - Class NoResultFromRequest - </span> - </td> - <td> - <table cellpadding="0" cellspacing="0"> - <!-- hide/show private --> - <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink" - onclick="toggle_private();">hide private</a>]</span></td></tr> - <tr><td align="right"><span class="options" - >[<a href="frames.html" target="_top">frames</a - >] | <a href="scapi.NoResultFromRequest-class.html" - target="_top">no frames</a>]</span></td></tr> - </table> - </td> - </tr> -</table> -<!-- ==================== CLASS DESCRIPTION ==================== --> -<h1 class="epydoc">Class NoResultFromRequest</h1><p class="nomargin-top"><span class="codelink"><a href="scapi-pysrc.html#NoResultFromRequest">source code</a></span></p> -<pre class="base-tree"> - object --+ - | -exceptions.BaseException --+ - | - exceptions.Exception --+ - | - <strong class="uidshort">NoResultFromRequest</strong> -</pre> - -<hr /> -<!-- ==================== INSTANCE METHODS ==================== --> -<a name="section-InstanceMethods"></a> -<table class="summary" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr bgcolor="#70b0f0" class="table-header"> - <td colspan="2" class="table-header"> - <table border="0" cellpadding="0" cellspacing="0" width="100%"> - <tr valign="top"> - <td align="left"><span class="table-header">Instance Methods</span></td> - <td align="right" valign="top" - ><span class="options">[<a href="#section-InstanceMethods" - class="privatelink" onclick="toggle_private();" - >hide private</a>]</span></td> - </tr> - </table> - </td> -</tr> - <tr> - <td colspan="2" class="summary"> - <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.Exception</code></b>: - <code>__init__</code>, - <code>__new__</code> - </p> - <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.BaseException</code></b>: - <code>__delattr__</code>, - <code>__getattribute__</code>, - <code>__getitem__</code>, - <code>__getslice__</code>, - <code>__reduce__</code>, - <code>__repr__</code>, - <code>__setattr__</code>, - <code>__setstate__</code>, - <code>__str__</code> - </p> - <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>: - <code>__hash__</code>, - <code>__reduce_ex__</code> - </p> - </td> - </tr> -</table> -<!-- ==================== PROPERTIES ==================== --> -<a name="section-Properties"></a> -<table class="summary" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr bgcolor="#70b0f0" class="table-header"> - <td colspan="2" class="table-header"> - <table border="0" cellpadding="0" cellspacing="0" width="100%"> - <tr valign="top"> - <td align="left"><span class="table-header">Properties</span></td> - <td align="right" valign="top" - ><span class="options">[<a href="#section-Properties" - class="privatelink" onclick="toggle_private();" - >hide private</a>]</span></td> - </tr> - </table> - </td> -</tr> - <tr> - <td colspan="2" class="summary"> - <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.BaseException</code></b>: - <code>args</code>, - <code>message</code> - </p> - <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>: - <code>__class__</code> - </p> - </td> - </tr> -</table> -<!-- ==================== NAVIGATION BAR ==================== --> -<table class="navbar" border="0" width="100%" cellpadding="0" - bgcolor="#a0c0ff" cellspacing="0"> - <tr valign="middle"> - <!-- Home link --> - <th> <a - href="scapi-module.html">Home</a> </th> - - <!-- Tree link --> - <th> <a - href="module-tree.html">Trees</a> </th> - - <!-- Index link --> - <th> <a - href="identifier-index.html">Indices</a> </th> - - <!-- Help link --> - <th> <a - href="help.html">Help</a> </th> - - <!-- Project homepage --> - <th class="navbar" align="right" width="100%"> - <table border="0" cellpadding="0" cellspacing="0"> - <tr><th class="navbar" align="center" - >SoundCloud API</th> - </tr></table></th> - </tr> -</table> -<table border="0" cellpadding="0" cellspacing="0" width="100%%"> - <tr> - <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Thu Sep 10 00:58:49 2009 - </td> - <td align="right" class="footer"> - <a target="mainFrame" href="http://epydoc.sourceforge.net" - >http://epydoc.sourceforge.net</a> - </td> - </tr> -</table> - -<script type="text/javascript"> - <!-- - // Private objects are initially displayed (because if - // javascript is turned off then we want them to be - // visible); but by default, we want to hide them. So hide - // them unless we have a cookie that says to show them. - checkCookie(); - // --> -</script> -</body> -</html> diff --git a/python_apps/soundcloud-api/docs/api/scapi.Playlist-class.html b/python_apps/soundcloud-api/docs/api/scapi.Playlist-class.html deleted file mode 100644 index 557f05831..000000000 --- a/python_apps/soundcloud-api/docs/api/scapi.Playlist-class.html +++ /dev/null @@ -1,258 +0,0 @@ -<?xml version="1.0" encoding="ascii"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <title>scapi.Playlist</title> - <link rel="stylesheet" href="epydoc.css" type="text/css" /> - <script type="text/javascript" src="epydoc.js"></script> -</head> - -<body bgcolor="white" text="black" link="blue" vlink="#204080" - alink="#204080"> -<!-- ==================== NAVIGATION BAR ==================== --> -<table class="navbar" border="0" width="100%" cellpadding="0" - bgcolor="#a0c0ff" cellspacing="0"> - <tr valign="middle"> - <!-- Home link --> - <th> <a - href="scapi-module.html">Home</a> </th> - - <!-- Tree link --> - <th> <a - href="module-tree.html">Trees</a> </th> - - <!-- Index link --> - <th> <a - href="identifier-index.html">Indices</a> </th> - - <!-- Help link --> - <th> <a - href="help.html">Help</a> </th> - - <!-- Project homepage --> - <th class="navbar" align="right" width="100%"> - <table border="0" cellpadding="0" cellspacing="0"> - <tr><th class="navbar" align="center" - >SoundCloud API</th> - </tr></table></th> - </tr> -</table> -<table width="100%" cellpadding="0" cellspacing="0"> - <tr valign="top"> - <td width="100%"> - <span class="breadcrumbs"> - <a href="scapi-module.html">Package scapi</a> :: - Class Playlist - </span> - </td> - <td> - <table cellpadding="0" cellspacing="0"> - <!-- hide/show private --> - <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink" - onclick="toggle_private();">hide private</a>]</span></td></tr> - <tr><td align="right"><span class="options" - >[<a href="frames.html" target="_top">frames</a - >] | <a href="scapi.Playlist-class.html" - target="_top">no frames</a>]</span></td></tr> - </table> - </td> - </tr> -</table> -<!-- ==================== CLASS DESCRIPTION ==================== --> -<h1 class="epydoc">Class Playlist</h1><p class="nomargin-top"><span class="codelink"><a href="scapi-pysrc.html#Playlist">source code</a></span></p> -<pre class="base-tree"> -object --+ - | - <a href="scapi.RESTBase-class.html" onclick="show_private();">RESTBase</a> --+ - | - <strong class="uidshort">Playlist</strong> -</pre> - -<hr /> -<p>A playlist/set domain object/resource</p> - -<!-- ==================== INSTANCE METHODS ==================== --> -<a name="section-InstanceMethods"></a> -<table class="summary" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr bgcolor="#70b0f0" class="table-header"> - <td colspan="2" class="table-header"> - <table border="0" cellpadding="0" cellspacing="0" width="100%"> - <tr valign="top"> - <td align="left"><span class="table-header">Instance Methods</span></td> - <td align="right" valign="top" - ><span class="options">[<a href="#section-InstanceMethods" - class="privatelink" onclick="toggle_private();" - >hide private</a>]</span></td> - </tr> - </table> - </td> -</tr> - <tr> - <td colspan="2" class="summary"> - <p class="indent-wrapped-lines"><b>Inherited from <code><a href="scapi.RESTBase-class.html" onclick="show_private();">RESTBase</a></code></b>: - <code><a href="scapi.RESTBase-class.html#__eq__">__eq__</a></code>, - <code><a href="scapi.RESTBase-class.html#__getattr__">__getattr__</a></code>, - <code><a href="scapi.RESTBase-class.html#__hash__">__hash__</a></code>, - <code><a href="scapi.RESTBase-class.html#__init__">__init__</a></code>, - <code><a href="scapi.RESTBase-class.html#__ne__">__ne__</a></code>, - <code><a href="scapi.RESTBase-class.html#__repr__">__repr__</a></code>, - <code><a href="scapi.RESTBase-class.html#__setattr__">__setattr__</a></code> - </p> - <div class="private"> <p class="indent-wrapped-lines"><b>Inherited from <code><a href="scapi.RESTBase-class.html" onclick="show_private();">RESTBase</a></code></b> (private): - <code><a href="scapi.RESTBase-class.html#_as_arguments" onclick="show_private();">_as_arguments</a></code>, - <code><a href="scapi.RESTBase-class.html#_convert_value" onclick="show_private();">_convert_value</a></code>, - <code><a href="scapi.RESTBase-class.html#_scope" onclick="show_private();">_scope</a></code> - </p></div> - <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>: - <code>__delattr__</code>, - <code>__getattribute__</code>, - <code>__new__</code>, - <code>__reduce__</code>, - <code>__reduce_ex__</code>, - <code>__str__</code> - </p> - </td> - </tr> -</table> -<!-- ==================== CLASS METHODS ==================== --> -<a name="section-ClassMethods"></a> -<table class="summary" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr bgcolor="#70b0f0" class="table-header"> - <td colspan="2" class="table-header"> - <table border="0" cellpadding="0" cellspacing="0" width="100%"> - <tr valign="top"> - <td align="left"><span class="table-header">Class Methods</span></td> - <td align="right" valign="top" - ><span class="options">[<a href="#section-ClassMethods" - class="privatelink" onclick="toggle_private();" - >hide private</a>]</span></td> - </tr> - </table> - </td> -</tr> - <tr> - <td colspan="2" class="summary"> - <p class="indent-wrapped-lines"><b>Inherited from <code><a href="scapi.RESTBase-class.html" onclick="show_private();">RESTBase</a></code></b>: - <code><a href="scapi.RESTBase-class.html#create">create</a></code>, - <code><a href="scapi.RESTBase-class.html#get">get</a></code>, - <code><a href="scapi.RESTBase-class.html#new">new</a></code> - </p> - <div class="private"> <p class="indent-wrapped-lines"><b>Inherited from <code><a href="scapi.RESTBase-class.html" onclick="show_private();">RESTBase</a></code></b> (private): - <code><a href="scapi.RESTBase-class.html#_singleton" onclick="show_private();">_singleton</a></code> - </p></div> - </td> - </tr> -</table> -<!-- ==================== CLASS VARIABLES ==================== --> -<a name="section-ClassVariables"></a> -<table class="summary" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr bgcolor="#70b0f0" class="table-header"> - <td colspan="2" class="table-header"> - <table border="0" cellpadding="0" cellspacing="0" width="100%"> - <tr valign="top"> - <td align="left"><span class="table-header">Class Variables</span></td> - <td align="right" valign="top" - ><span class="options">[<a href="#section-ClassVariables" - class="privatelink" onclick="toggle_private();" - >hide private</a>]</span></td> - </tr> - </table> - </td> -</tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <a name="KIND"></a><span class="summary-name">KIND</span> = <code title="'playlists'"><code class="variable-quote">'</code><code class="variable-string">playlists</code><code class="variable-quote">'</code></code> - </td> - </tr> - <tr> - <td colspan="2" class="summary"> - <p class="indent-wrapped-lines"><b>Inherited from <code><a href="scapi.RESTBase-class.html" onclick="show_private();">RESTBase</a></code></b>: - <code><a href="scapi.RESTBase-class.html#ALIASES">ALIASES</a></code>, - <code><a href="scapi.RESTBase-class.html#ALL_DOMAIN_CLASSES">ALL_DOMAIN_CLASSES</a></code>, - <code><a href="scapi.RESTBase-class.html#REGISTRY">REGISTRY</a></code> - </p> - </td> - </tr> -</table> -<!-- ==================== PROPERTIES ==================== --> -<a name="section-Properties"></a> -<table class="summary" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr bgcolor="#70b0f0" class="table-header"> - <td colspan="2" class="table-header"> - <table border="0" cellpadding="0" cellspacing="0" width="100%"> - <tr valign="top"> - <td align="left"><span class="table-header">Properties</span></td> - <td align="right" valign="top" - ><span class="options">[<a href="#section-Properties" - class="privatelink" onclick="toggle_private();" - >hide private</a>]</span></td> - </tr> - </table> - </td> -</tr> - <tr> - <td colspan="2" class="summary"> - <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>: - <code>__class__</code> - </p> - </td> - </tr> -</table> -<!-- ==================== NAVIGATION BAR ==================== --> -<table class="navbar" border="0" width="100%" cellpadding="0" - bgcolor="#a0c0ff" cellspacing="0"> - <tr valign="middle"> - <!-- Home link --> - <th> <a - href="scapi-module.html">Home</a> </th> - - <!-- Tree link --> - <th> <a - href="module-tree.html">Trees</a> </th> - - <!-- Index link --> - <th> <a - href="identifier-index.html">Indices</a> </th> - - <!-- Help link --> - <th> <a - href="help.html">Help</a> </th> - - <!-- Project homepage --> - <th class="navbar" align="right" width="100%"> - <table border="0" cellpadding="0" cellspacing="0"> - <tr><th class="navbar" align="center" - >SoundCloud API</th> - </tr></table></th> - </tr> -</table> -<table border="0" cellpadding="0" cellspacing="0" width="100%%"> - <tr> - <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Thu Sep 10 00:58:49 2009 - </td> - <td align="right" class="footer"> - <a target="mainFrame" href="http://epydoc.sourceforge.net" - >http://epydoc.sourceforge.net</a> - </td> - </tr> -</table> - -<script type="text/javascript"> - <!-- - // Private objects are initially displayed (because if - // javascript is turned off then we want them to be - // visible); but by default, we want to hide them. So hide - // them unless we have a cookie that says to show them. - checkCookie(); - // --> -</script> -</body> -</html> diff --git a/python_apps/soundcloud-api/docs/api/scapi.RESTBase-class.html b/python_apps/soundcloud-api/docs/api/scapi.RESTBase-class.html deleted file mode 100644 index 855d8fd1e..000000000 --- a/python_apps/soundcloud-api/docs/api/scapi.RESTBase-class.html +++ /dev/null @@ -1,895 +0,0 @@ -<?xml version="1.0" encoding="ascii"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <title>scapi.RESTBase</title> - <link rel="stylesheet" href="epydoc.css" type="text/css" /> - <script type="text/javascript" src="epydoc.js"></script> -</head> - -<body bgcolor="white" text="black" link="blue" vlink="#204080" - alink="#204080"> -<!-- ==================== NAVIGATION BAR ==================== --> -<table class="navbar" border="0" width="100%" cellpadding="0" - bgcolor="#a0c0ff" cellspacing="0"> - <tr valign="middle"> - <!-- Home link --> - <th> <a - href="scapi-module.html">Home</a> </th> - - <!-- Tree link --> - <th> <a - href="module-tree.html">Trees</a> </th> - - <!-- Index link --> - <th> <a - href="identifier-index.html">Indices</a> </th> - - <!-- Help link --> - <th> <a - href="help.html">Help</a> </th> - - <!-- Project homepage --> - <th class="navbar" align="right" width="100%"> - <table border="0" cellpadding="0" cellspacing="0"> - <tr><th class="navbar" align="center" - >SoundCloud API</th> - </tr></table></th> - </tr> -</table> -<table width="100%" cellpadding="0" cellspacing="0"> - <tr valign="top"> - <td width="100%"> - <span class="breadcrumbs"> - <a href="scapi-module.html">Package scapi</a> :: - Class RESTBase - </span> - </td> - <td> - <table cellpadding="0" cellspacing="0"> - <!-- hide/show private --> - <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink" - onclick="toggle_private();">hide private</a>]</span></td></tr> - <tr><td align="right"><span class="options" - >[<a href="frames.html" target="_top">frames</a - >] | <a href="scapi.RESTBase-class.html" - target="_top">no frames</a>]</span></td></tr> - </table> - </td> - </tr> -</table> -<!-- ==================== CLASS DESCRIPTION ==================== --> -<h1 class="epydoc">Class RESTBase</h1><p class="nomargin-top"><span class="codelink"><a href="scapi-pysrc.html#RESTBase">source code</a></span></p> -<pre class="base-tree"> -object --+ - | - <strong class="uidshort">RESTBase</strong> -</pre> - -<dl><dt>Known Subclasses:</dt> -<dd> - <ul class="subclass-list"> -<li><a href="scapi.Comment-class.html">Comment</a></li><li>, <a href="scapi.Event-class.html">Event</a></li><li>, <a href="scapi.Group-class.html">Group</a></li><li>, <a href="scapi.Playlist-class.html">Playlist</a></li><li>, <a href="scapi.Track-class.html">Track</a></li><li>, <a href="scapi.User-class.html">User</a></li> </ul> -</dd></dl> - -<hr /> -<p>The baseclass for all our domain-objects/resources.</p> - -<!-- ==================== INSTANCE METHODS ==================== --> -<a name="section-InstanceMethods"></a> -<table class="summary" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr bgcolor="#70b0f0" class="table-header"> - <td colspan="2" class="table-header"> - <table border="0" cellpadding="0" cellspacing="0" width="100%"> - <tr valign="top"> - <td align="left"><span class="table-header">Instance Methods</span></td> - <td align="right" valign="top" - ><span class="options">[<a href="#section-InstanceMethods" - class="privatelink" onclick="toggle_private();" - >hide private</a>]</span></td> - </tr> - </table> - </td> -</tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a href="scapi.RESTBase-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>, - <span class="summary-sig-arg">data</span>, - <span class="summary-sig-arg">scope</span>, - <span class="summary-sig-arg">path_stack</span>=<span class="summary-sig-default">None</span>)</span><br /> - x.__init__(...) initializes x; see x.__class__.__doc__ for signature</td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi-pysrc.html#RESTBase.__init__">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a name="__getattr__"></a><span class="summary-sig-name">__getattr__</span>(<span class="summary-sig-arg">self</span>, - <span class="summary-sig-arg">name</span>)</span></td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi-pysrc.html#RESTBase.__getattr__">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a href="scapi.RESTBase-class.html#__setattr__" class="summary-sig-name">__setattr__</a>(<span class="summary-sig-arg">self</span>, - <span class="summary-sig-arg">name</span>, - <span class="summary-sig-arg">value</span>)</span><br /> - This method is used to set a property, a resource or a list of - resources as property of the resource the method is invoked on.</td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi-pysrc.html#RESTBase.__setattr__">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> -<tr class="private"> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a name="_as_arguments"></a><span class="summary-sig-name">_as_arguments</span>(<span class="summary-sig-arg">self</span>)</span><br /> - Converts a resource to a argument-string the way Rails expects it.</td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi-pysrc.html#RESTBase._as_arguments">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> -<tr class="private"> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a name="_convert_value"></a><span class="summary-sig-name">_convert_value</span>(<span class="summary-sig-arg">self</span>, - <span class="summary-sig-arg">value</span>)</span></td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi-pysrc.html#RESTBase._convert_value">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> -<tr class="private"> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a href="scapi.RESTBase-class.html#_scope" class="summary-sig-name" onclick="show_private();">_scope</a>(<span class="summary-sig-arg">self</span>)</span><br /> - Return the scope this resource lives in, which is the KIND and id</td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi-pysrc.html#RESTBase._scope">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a href="scapi.RESTBase-class.html#__repr__" class="summary-sig-name">__repr__</a>(<span class="summary-sig-arg">self</span>)</span><br /> - repr(x)</td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi-pysrc.html#RESTBase.__repr__">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a href="scapi.RESTBase-class.html#__hash__" class="summary-sig-name">__hash__</a>(<span class="summary-sig-arg">self</span>)</span><br /> - hash(x)</td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi-pysrc.html#RESTBase.__hash__">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a href="scapi.RESTBase-class.html#__eq__" class="summary-sig-name">__eq__</a>(<span class="summary-sig-arg">self</span>, - <span class="summary-sig-arg">other</span>)</span><br /> - Test for equality.</td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi-pysrc.html#RESTBase.__eq__">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a name="__ne__"></a><span class="summary-sig-name">__ne__</span>(<span class="summary-sig-arg">self</span>, - <span class="summary-sig-arg">other</span>)</span></td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi-pysrc.html#RESTBase.__ne__">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> - <tr> - <td colspan="2" class="summary"> - <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>: - <code>__delattr__</code>, - <code>__getattribute__</code>, - <code>__new__</code>, - <code>__reduce__</code>, - <code>__reduce_ex__</code>, - <code>__str__</code> - </p> - </td> - </tr> -</table> -<!-- ==================== CLASS METHODS ==================== --> -<a name="section-ClassMethods"></a> -<table class="summary" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr bgcolor="#70b0f0" class="table-header"> - <td colspan="2" class="table-header"> - <table border="0" cellpadding="0" cellspacing="0" width="100%"> - <tr valign="top"> - <td align="left"><span class="table-header">Class Methods</span></td> - <td align="right" valign="top" - ><span class="options">[<a href="#section-ClassMethods" - class="privatelink" onclick="toggle_private();" - >hide private</a>]</span></td> - </tr> - </table> - </td> -</tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a href="scapi.RESTBase-class.html#create" class="summary-sig-name">create</a>(<span class="summary-sig-arg">cls</span>, - <span class="summary-sig-arg">scope</span>, - <span class="summary-sig-arg">**data</span>)</span><br /> - This is a convenience-method for creating an object that will be - passed as parameter - e.g.</td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi-pysrc.html#RESTBase.create">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a href="scapi.RESTBase-class.html#new" class="summary-sig-name">new</a>(<span class="summary-sig-arg">cls</span>, - <span class="summary-sig-arg">scope</span>, - <span class="summary-sig-arg">**data</span>)</span><br /> - Create a new resource inside a given Scope.</td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi-pysrc.html#RESTBase.new">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a href="scapi.RESTBase-class.html#get" class="summary-sig-name">get</a>(<span class="summary-sig-arg">cls</span>, - <span class="summary-sig-arg">scope</span>, - <span class="summary-sig-arg">id</span>)</span><br /> - Fetch a resource by id.</td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi-pysrc.html#RESTBase.get">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> -<tr class="private"> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a href="scapi.RESTBase-class.html#_singleton" class="summary-sig-name" onclick="show_private();">_singleton</a>(<span class="summary-sig-arg">cls</span>)</span><br /> - This method will take a resource name like "users" and - return the single-case, in the example "user".</td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi-pysrc.html#RESTBase._singleton">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> -</table> -<!-- ==================== CLASS VARIABLES ==================== --> -<a name="section-ClassVariables"></a> -<table class="summary" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr bgcolor="#70b0f0" class="table-header"> - <td colspan="2" class="table-header"> - <table border="0" cellpadding="0" cellspacing="0" width="100%"> - <tr valign="top"> - <td align="left"><span class="table-header">Class Variables</span></td> - <td align="right" valign="top" - ><span class="options">[<a href="#section-ClassVariables" - class="privatelink" onclick="toggle_private();" - >hide private</a>]</span></td> - </tr> - </table> - </td> -</tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <a href="scapi.RESTBase-class.html#REGISTRY" class="summary-name">REGISTRY</a> = <code title="{'comments': <class 'scapi.Comment'>, - 'contacts': <class 'scapi.User'>, - 'events': <class 'scapi.Event'>, - 'favorites': <class 'scapi.Track'>, - 'groups': <class 'scapi.Group'>, - 'me': <class 'scapi.User'>, - 'permissions': <class 'scapi.User'>, - 'playlists': <class 'scapi.Playlist'>, -..."><code class="variable-group">{</code><code class="variable-quote">'</code><code class="variable-string">comments</code><code class="variable-quote">'</code><code class="variable-op">: </code><class 'scapi.Comment'><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">contacts</code><code class="variable-quote">'</code><code class="variable-op">: </code><<code class="variable-ellipsis">...</code></code> - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <a href="scapi.RESTBase-class.html#ALL_DOMAIN_CLASSES" class="summary-name">ALL_DOMAIN_CLASSES</a> = <code title="{'Comment': <class 'scapi.Comment'>, - 'Event': <class 'scapi.Event'>, - 'Group': <class 'scapi.Group'>, - 'Playlist': <class 'scapi.Playlist'>, - 'Track': <class 'scapi.Track'>, - 'User': <class 'scapi.User'>}"><code class="variable-group">{</code><code class="variable-quote">'</code><code class="variable-string">Comment</code><code class="variable-quote">'</code><code class="variable-op">: </code><class 'scapi.Comment'><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">Eve</code><code class="variable-ellipsis">...</code></code> - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <a name="ALIASES"></a><span class="summary-name">ALIASES</span> = <code title="[]"><code class="variable-group">[</code><code class="variable-group">]</code></code> - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <a name="KIND"></a><span class="summary-name">KIND</span> = <code title="None">None</code> - </td> - </tr> -</table> -<!-- ==================== PROPERTIES ==================== --> -<a name="section-Properties"></a> -<table class="summary" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr bgcolor="#70b0f0" class="table-header"> - <td colspan="2" class="table-header"> - <table border="0" cellpadding="0" cellspacing="0" width="100%"> - <tr valign="top"> - <td align="left"><span class="table-header">Properties</span></td> - <td align="right" valign="top" - ><span class="options">[<a href="#section-Properties" - class="privatelink" onclick="toggle_private();" - >hide private</a>]</span></td> - </tr> - </table> - </td> -</tr> - <tr> - <td colspan="2" class="summary"> - <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>: - <code>__class__</code> - </p> - </td> - </tr> -</table> -<!-- ==================== METHOD DETAILS ==================== --> -<a name="section-MethodDetails"></a> -<table class="details" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr bgcolor="#70b0f0" class="table-header"> - <td colspan="2" class="table-header"> - <table border="0" cellpadding="0" cellspacing="0" width="100%"> - <tr valign="top"> - <td align="left"><span class="table-header">Method Details</span></td> - <td align="right" valign="top" - ><span class="options">[<a href="#section-MethodDetails" - class="privatelink" onclick="toggle_private();" - >hide private</a>]</span></td> - </tr> - </table> - </td> -</tr> -</table> -<a name="__init__"></a> -<div> -<table class="details" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr><td> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr valign="top"><td> - <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>, - <span class="sig-arg">data</span>, - <span class="sig-arg">scope</span>, - <span class="sig-arg">path_stack</span>=<span class="sig-default">None</span>)</span> - <br /><em class="fname">(Constructor)</em> - </h3> - </td><td align="right" valign="top" - ><span class="codelink"><a href="scapi-pysrc.html#RESTBase.__init__">source code</a></span> - </td> - </tr></table> - - <p>x.__init__(...) initializes x; see x.__class__.__doc__ for - signature</p> - <dl class="fields"> - <dt>Overrides: - object.__init__ - <dd><em class="note">(inherited documentation)</em></dd> - </dt> - </dl> -</td></tr></table> -</div> -<a name="__setattr__"></a> -<div> -<table class="details" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr><td> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr valign="top"><td> - <h3 class="epydoc"><span class="sig"><span class="sig-name">__setattr__</span>(<span class="sig-arg">self</span>, - <span class="sig-arg">name</span>, - <span class="sig-arg">value</span>)</span> - </h3> - </td><td align="right" valign="top" - ><span class="codelink"><a href="scapi-pysrc.html#RESTBase.__setattr__">source code</a></span> - </td> - </tr></table> - - <p>This method is used to set a property, a resource or a list of - resources as property of the resource the method is invoked on.</p> - <p>For example, to set a comment on a track, do</p> -<pre class="py-doctest"> -<span class="py-prompt">>>> </span>sca = scapi.Scope(connector) -<span class="py-prompt">>>> </span>track = scapi.Track.new(title=<span class="py-string">'bar'</span>, sharing=<span class="py-string">"private"</span>) -<span class="py-prompt">>>> </span>comment = scapi.Comment.create(body=<span class="py-string">"This is the body of my comment"</span>, timestamp=10) -<span class="py-prompt">>>> </span>track.comments = comment</pre> - <p>To set a list of users as permissions, do</p> -<pre class="py-doctest"> -<span class="py-prompt">>>> </span>sca = scapi.Scope(connector) -<span class="py-prompt">>>> </span>me = sca.me() -<span class="py-prompt">>>> </span>track = scapi.Track.new(title=<span class="py-string">'bar'</span>, sharing=<span class="py-string">"private"</span>) -<span class="py-prompt">>>> </span>users = sca.users() -<span class="py-prompt">>>> </span>users_to_set = [user <span class="py-keyword">for</span> user <span class="py-keyword">in</span> users[:10] <span class="py-keyword">if</span> user != me] -<span class="py-prompt">>>> </span>track.permissions = users_to_set</pre> - <p>And finally, to simply change the title of a track, do</p> -<pre class="py-doctest"> -<span class="py-prompt">>>> </span>sca = scapi.Scope(connector) -<span class="py-prompt">>>> </span>track = sca.Track.get(track_id) -<span class="py-prompt">>>> </span>track.title = <span class="py-string">"new_title"</span></pre> - <dl class="fields"> - <dt>Parameters:</dt> - <dd><ul class="nomargin-top"> - <li><strong class="pname"><code>name</code></strong> (str) - the property name</li> - <li><strong class="pname"><code>value</code></strong> (RESTBase | list<RESTBase> | basestring | long | int | float) - the property, resource or resources to set</li> - </ul></dd> - <dt>Returns:</dt> - <dd>None</dd> - <dt>Overrides: - object.__setattr__ - </dt> - </dl> -</td></tr></table> -</div> -<a name="create"></a> -<div> -<table class="details" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr><td> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr valign="top"><td> - <h3 class="epydoc"><span class="sig"><span class="sig-name">create</span>(<span class="sig-arg">cls</span>, - <span class="sig-arg">scope</span>, - <span class="sig-arg">**data</span>)</span> - <br /><em class="fname">Class Method</em> - </h3> - </td><td align="right" valign="top" - ><span class="codelink"><a href="scapi-pysrc.html#RESTBase.create">source code</a></span> - </td> - </tr></table> - - <p>This is a convenience-method for creating an object that will be - passed as parameter - e.g. a comment. A usage would look like this:</p> -<pre class="py-doctest"> -<span class="py-prompt">>>> </span>sca = scapi.Scope(connector) -<span class="py-prompt">>>> </span>track = sca.Track.new(title=<span class="py-string">'bar'</span>, sharing=<span class="py-string">"private"</span>) -<span class="py-prompt">>>> </span>comment = sca.Comment.create(body=<span class="py-string">"This is the body of my comment"</span>, timestamp=10) -<span class="py-prompt">>>> </span>track.comments = comment</pre> - <dl class="fields"> - </dl> -</td></tr></table> -</div> -<a name="new"></a> -<div> -<table class="details" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr><td> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr valign="top"><td> - <h3 class="epydoc"><span class="sig"><span class="sig-name">new</span>(<span class="sig-arg">cls</span>, - <span class="sig-arg">scope</span>, - <span class="sig-arg">**data</span>)</span> - <br /><em class="fname">Class Method</em> - </h3> - </td><td align="right" valign="top" - ><span class="codelink"><a href="scapi-pysrc.html#RESTBase.new">source code</a></span> - </td> - </tr></table> - - <p>Create a new resource inside a given Scope. The actual values are in - data.</p> - <p>So for creating new resources, you have two options:</p> - <ul> - <li> - create an instance directly using the class: -<pre class="py-doctest"> -<span class="py-prompt">>>> </span>scope = scapi.Scope(connector) -<span class="py-prompt">>>> </span>scope.User.new(...) -<span class="py-output"><scapi.User object at 0x1234></span></pre> - </li> - <li> - create a instance in a certain scope: -<pre class="py-doctest"> -<span class="py-prompt">>>> </span>scope = scapi.Scope(connector) -<span class="py-prompt">>>> </span>user = scapi.User(<span class="py-string">"1"</span>) -<span class="py-prompt">>>> </span>track = user.tracks.new() -<span class="py-output"><scapi.Track object at 0x1234></span></pre> - </li> - </ul> - <dl class="fields"> - <dt>Parameters:</dt> - <dd><ul class="nomargin-top"> - <li><strong class="pname"><code>scope</code></strong> (tuple<Scope>[1]) - if not empty, a one-element tuple containing the Scope</li> - <li><strong class="pname"><code>data</code></strong> (dict) - the data</li> - </ul></dd> - <dt>Returns:</dt> - <dd>new instance of the resource</dd> - </dl> -</td></tr></table> -</div> -<a name="get"></a> -<div> -<table class="details" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr><td> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr valign="top"><td> - <h3 class="epydoc"><span class="sig"><span class="sig-name">get</span>(<span class="sig-arg">cls</span>, - <span class="sig-arg">scope</span>, - <span class="sig-arg">id</span>)</span> - <br /><em class="fname">Class Method</em> - </h3> - </td><td align="right" valign="top" - ><span class="codelink"><a href="scapi-pysrc.html#RESTBase.get">source code</a></span> - </td> - </tr></table> - - <p>Fetch a resource by id.</p> - <p>Simply pass a known id as argument. For example</p> -<pre class="py-doctest"> -<span class="py-prompt">>>> </span>sca = scapi.Scope(connector) -<span class="py-prompt">>>> </span>track = sca.Track.get(id)</pre> - <dl class="fields"> - </dl> -</td></tr></table> -</div> -<a name="_scope"></a> -<div class="private"> -<table class="details" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr><td> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr valign="top"><td> - <h3 class="epydoc"><span class="sig"><span class="sig-name">_scope</span>(<span class="sig-arg">self</span>)</span> - </h3> - </td><td align="right" valign="top" - ><span class="codelink"><a href="scapi-pysrc.html#RESTBase._scope">source code</a></span> - </td> - </tr></table> - - <p>Return the scope this resource lives in, which is the KIND and id</p> - <dl class="fields"> - <dt>Returns:</dt> - <dd>"<KIND>/<id>"</dd> - </dl> -</td></tr></table> -</div> -<a name="_singleton"></a> -<div class="private"> -<table class="details" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr><td> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr valign="top"><td> - <h3 class="epydoc"><span class="sig"><span class="sig-name">_singleton</span>(<span class="sig-arg">cls</span>)</span> - <br /><em class="fname">Class Method</em> - </h3> - </td><td align="right" valign="top" - ><span class="codelink"><a href="scapi-pysrc.html#RESTBase._singleton">source code</a></span> - </td> - </tr></table> - - <p>This method will take a resource name like "users" and - return the single-case, in the example "user".</p> - <p>Currently, it's not very sophisticated, only strips a trailing s.</p> - <dl class="fields"> - </dl> -</td></tr></table> -</div> -<a name="__repr__"></a> -<div> -<table class="details" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr><td> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr valign="top"><td> - <h3 class="epydoc"><span class="sig"><span class="sig-name">__repr__</span>(<span class="sig-arg">self</span>)</span> - <br /><em class="fname">(Representation operator)</em> - </h3> - </td><td align="right" valign="top" - ><span class="codelink"><a href="scapi-pysrc.html#RESTBase.__repr__">source code</a></span> - </td> - </tr></table> - - <p>repr(x)</p> - <dl class="fields"> - <dt>Overrides: - object.__repr__ - <dd><em class="note">(inherited documentation)</em></dd> - </dt> - </dl> -</td></tr></table> -</div> -<a name="__hash__"></a> -<div> -<table class="details" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr><td> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr valign="top"><td> - <h3 class="epydoc"><span class="sig"><span class="sig-name">__hash__</span>(<span class="sig-arg">self</span>)</span> - <br /><em class="fname">(Hashing function)</em> - </h3> - </td><td align="right" valign="top" - ><span class="codelink"><a href="scapi-pysrc.html#RESTBase.__hash__">source code</a></span> - </td> - </tr></table> - - <p>hash(x)</p> - <dl class="fields"> - <dt>Overrides: - object.__hash__ - <dd><em class="note">(inherited documentation)</em></dd> - </dt> - </dl> -</td></tr></table> -</div> -<a name="__eq__"></a> -<div> -<table class="details" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr><td> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr valign="top"><td> - <h3 class="epydoc"><span class="sig"><span class="sig-name">__eq__</span>(<span class="sig-arg">self</span>, - <span class="sig-arg">other</span>)</span> - <br /><em class="fname">(Equality operator)</em> - </h3> - </td><td align="right" valign="top" - ><span class="codelink"><a href="scapi-pysrc.html#RESTBase.__eq__">source code</a></span> - </td> - </tr></table> - - <p>Test for equality.</p> - <p>Resources are considered equal if the have the same kind and id.</p> - <dl class="fields"> - </dl> -</td></tr></table> -</div> -<br /> -<!-- ==================== CLASS VARIABLE DETAILS ==================== --> -<a name="section-ClassVariableDetails"></a> -<table class="details" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr bgcolor="#70b0f0" class="table-header"> - <td colspan="2" class="table-header"> - <table border="0" cellpadding="0" cellspacing="0" width="100%"> - <tr valign="top"> - <td align="left"><span class="table-header">Class Variable Details</span></td> - <td align="right" valign="top" - ><span class="options">[<a href="#section-ClassVariableDetails" - class="privatelink" onclick="toggle_private();" - >hide private</a>]</span></td> - </tr> - </table> - </td> -</tr> -</table> -<a name="REGISTRY"></a> -<div> -<table class="details" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr><td> - <h3 class="epydoc">REGISTRY</h3> - - <dl class="fields"> - </dl> - <dl class="fields"> - <dt>Value:</dt> - <dd><table><tr><td><pre class="variable"> -<code class="variable-group">{</code><code class="variable-quote">'</code><code class="variable-string">comments</code><code class="variable-quote">'</code><code class="variable-op">: </code><class 'scapi.Comment'><code class="variable-op">,</code> - <code class="variable-quote">'</code><code class="variable-string">contacts</code><code class="variable-quote">'</code><code class="variable-op">: </code><class 'scapi.User'><code class="variable-op">,</code> - <code class="variable-quote">'</code><code class="variable-string">events</code><code class="variable-quote">'</code><code class="variable-op">: </code><class 'scapi.Event'><code class="variable-op">,</code> - <code class="variable-quote">'</code><code class="variable-string">favorites</code><code class="variable-quote">'</code><code class="variable-op">: </code><class 'scapi.Track'><code class="variable-op">,</code> - <code class="variable-quote">'</code><code class="variable-string">groups</code><code class="variable-quote">'</code><code class="variable-op">: </code><class 'scapi.Group'><code class="variable-op">,</code> - <code class="variable-quote">'</code><code class="variable-string">me</code><code class="variable-quote">'</code><code class="variable-op">: </code><class 'scapi.User'><code class="variable-op">,</code> - <code class="variable-quote">'</code><code class="variable-string">permissions</code><code class="variable-quote">'</code><code class="variable-op">: </code><class 'scapi.User'><code class="variable-op">,</code> - <code class="variable-quote">'</code><code class="variable-string">playlists</code><code class="variable-quote">'</code><code class="variable-op">: </code><class 'scapi.Playlist'><code class="variable-op">,</code> -<code class="variable-ellipsis">...</code> -</pre></td></tr></table> -</dd> - </dl> -</td></tr></table> -</div> -<a name="ALL_DOMAIN_CLASSES"></a> -<div> -<table class="details" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr><td> - <h3 class="epydoc">ALL_DOMAIN_CLASSES</h3> - - <dl class="fields"> - </dl> - <dl class="fields"> - <dt>Value:</dt> - <dd><table><tr><td><pre class="variable"> -<code class="variable-group">{</code><code class="variable-quote">'</code><code class="variable-string">Comment</code><code class="variable-quote">'</code><code class="variable-op">: </code><class 'scapi.Comment'><code class="variable-op">,</code> - <code class="variable-quote">'</code><code class="variable-string">Event</code><code class="variable-quote">'</code><code class="variable-op">: </code><class 'scapi.Event'><code class="variable-op">,</code> - <code class="variable-quote">'</code><code class="variable-string">Group</code><code class="variable-quote">'</code><code class="variable-op">: </code><class 'scapi.Group'><code class="variable-op">,</code> - <code class="variable-quote">'</code><code class="variable-string">Playlist</code><code class="variable-quote">'</code><code class="variable-op">: </code><class 'scapi.Playlist'><code class="variable-op">,</code> - <code class="variable-quote">'</code><code class="variable-string">Track</code><code class="variable-quote">'</code><code class="variable-op">: </code><class 'scapi.Track'><code class="variable-op">,</code> - <code class="variable-quote">'</code><code class="variable-string">User</code><code class="variable-quote">'</code><code class="variable-op">: </code><class 'scapi.User'><code class="variable-group">}</code> -</pre></td></tr></table> -</dd> - </dl> -</td></tr></table> -</div> -<br /> -<!-- ==================== NAVIGATION BAR ==================== --> -<table class="navbar" border="0" width="100%" cellpadding="0" - bgcolor="#a0c0ff" cellspacing="0"> - <tr valign="middle"> - <!-- Home link --> - <th> <a - href="scapi-module.html">Home</a> </th> - - <!-- Tree link --> - <th> <a - href="module-tree.html">Trees</a> </th> - - <!-- Index link --> - <th> <a - href="identifier-index.html">Indices</a> </th> - - <!-- Help link --> - <th> <a - href="help.html">Help</a> </th> - - <!-- Project homepage --> - <th class="navbar" align="right" width="100%"> - <table border="0" cellpadding="0" cellspacing="0"> - <tr><th class="navbar" align="center" - >SoundCloud API</th> - </tr></table></th> - </tr> -</table> -<table border="0" cellpadding="0" cellspacing="0" width="100%%"> - <tr> - <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Thu Sep 10 00:58:49 2009 - </td> - <td align="right" class="footer"> - <a target="mainFrame" href="http://epydoc.sourceforge.net" - >http://epydoc.sourceforge.net</a> - </td> - </tr> -</table> - -<script type="text/javascript"> - <!-- - // Private objects are initially displayed (because if - // javascript is turned off then we want them to be - // visible); but by default, we want to hide them. So hide - // them unless we have a cookie that says to show them. - checkCookie(); - // --> -</script> -</body> -</html> diff --git a/python_apps/soundcloud-api/docs/api/scapi.SCRedirectHandler-class.html b/python_apps/soundcloud-api/docs/api/scapi.SCRedirectHandler-class.html deleted file mode 100644 index 7fa8dedee..000000000 --- a/python_apps/soundcloud-api/docs/api/scapi.SCRedirectHandler-class.html +++ /dev/null @@ -1,319 +0,0 @@ -<?xml version="1.0" encoding="ascii"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <title>scapi.SCRedirectHandler</title> - <link rel="stylesheet" href="epydoc.css" type="text/css" /> - <script type="text/javascript" src="epydoc.js"></script> -</head> - -<body bgcolor="white" text="black" link="blue" vlink="#204080" - alink="#204080"> -<!-- ==================== NAVIGATION BAR ==================== --> -<table class="navbar" border="0" width="100%" cellpadding="0" - bgcolor="#a0c0ff" cellspacing="0"> - <tr valign="middle"> - <!-- Home link --> - <th> <a - href="scapi-module.html">Home</a> </th> - - <!-- Tree link --> - <th> <a - href="module-tree.html">Trees</a> </th> - - <!-- Index link --> - <th> <a - href="identifier-index.html">Indices</a> </th> - - <!-- Help link --> - <th> <a - href="help.html">Help</a> </th> - - <!-- Project homepage --> - <th class="navbar" align="right" width="100%"> - <table border="0" cellpadding="0" cellspacing="0"> - <tr><th class="navbar" align="center" - >SoundCloud API</th> - </tr></table></th> - </tr> -</table> -<table width="100%" cellpadding="0" cellspacing="0"> - <tr valign="top"> - <td width="100%"> - <span class="breadcrumbs"> - <a href="scapi-module.html">Package scapi</a> :: - Class SCRedirectHandler - </span> - </td> - <td> - <table cellpadding="0" cellspacing="0"> - <!-- hide/show private --> - <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink" - onclick="toggle_private();">hide private</a>]</span></td></tr> - <tr><td align="right"><span class="options" - >[<a href="frames.html" target="_top">frames</a - >] | <a href="scapi.SCRedirectHandler-class.html" - target="_top">no frames</a>]</span></td></tr> - </table> - </td> - </tr> -</table> -<!-- ==================== CLASS DESCRIPTION ==================== --> -<h1 class="epydoc">Class SCRedirectHandler</h1><p class="nomargin-top"><span class="codelink"><a href="scapi-pysrc.html#SCRedirectHandler">source code</a></span></p> -<pre class="base-tree"> - urllib2.BaseHandler --+ - | -urllib2.HTTPRedirectHandler --+ - | - <strong class="uidshort">SCRedirectHandler</strong> -</pre> - -<hr /> -<p>A urllib2-Handler to deal with the redirects the RESTful API of SC - uses.</p> - -<!-- ==================== INSTANCE METHODS ==================== --> -<a name="section-InstanceMethods"></a> -<table class="summary" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr bgcolor="#70b0f0" class="table-header"> - <td colspan="2" class="table-header"> - <table border="0" cellpadding="0" cellspacing="0" width="100%"> - <tr valign="top"> - <td align="left"><span class="table-header">Instance Methods</span></td> - <td align="right" valign="top" - ><span class="options">[<a href="#section-InstanceMethods" - class="privatelink" onclick="toggle_private();" - >hide private</a>]</span></td> - </tr> - </table> - </td> -</tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a href="scapi.SCRedirectHandler-class.html#http_error_303" class="summary-sig-name">http_error_303</a>(<span class="summary-sig-arg">self</span>, - <span class="summary-sig-arg">req</span>, - <span class="summary-sig-arg">fp</span>, - <span class="summary-sig-arg">code</span>, - <span class="summary-sig-arg">msg</span>, - <span class="summary-sig-arg">hdrs</span>)</span><br /> - In case of return-code 303 (See-other), we have to store the location - we got because that will determine the actual type of resource - returned.</td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi-pysrc.html#SCRedirectHandler.http_error_303">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a href="scapi.SCRedirectHandler-class.html#http_error_201" class="summary-sig-name">http_error_201</a>(<span class="summary-sig-arg">self</span>, - <span class="summary-sig-arg">req</span>, - <span class="summary-sig-arg">fp</span>, - <span class="summary-sig-arg">code</span>, - <span class="summary-sig-arg">msg</span>, - <span class="summary-sig-arg">hdrs</span>)</span><br /> - We fake a 201 being a 303 so that our redirection-scheme takes place - for the 201 the API throws in case we created something.</td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi-pysrc.html#SCRedirectHandler.http_error_201">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> - <tr> - <td colspan="2" class="summary"> - <p class="indent-wrapped-lines"><b>Inherited from <code>urllib2.HTTPRedirectHandler</code></b>: - <code>http_error_301</code>, - <code>http_error_302</code>, - <code>http_error_307</code>, - <code>redirect_request</code> - </p> - <p class="indent-wrapped-lines"><b>Inherited from <code>urllib2.BaseHandler</code></b>: - <code>__lt__</code>, - <code>add_parent</code>, - <code>close</code> - </p> - </td> - </tr> -</table> -<!-- ==================== CLASS VARIABLES ==================== --> -<a name="section-ClassVariables"></a> -<table class="summary" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr bgcolor="#70b0f0" class="table-header"> - <td colspan="2" class="table-header"> - <table border="0" cellpadding="0" cellspacing="0" width="100%"> - <tr valign="top"> - <td align="left"><span class="table-header">Class Variables</span></td> - <td align="right" valign="top" - ><span class="options">[<a href="#section-ClassVariables" - class="privatelink" onclick="toggle_private();" - >hide private</a>]</span></td> - </tr> - </table> - </td> -</tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <a name="alternate_method"></a><span class="summary-name">alternate_method</span> = <code title="None">None</code> - </td> - </tr> - <tr> - <td colspan="2" class="summary"> - <p class="indent-wrapped-lines"><b>Inherited from <code>urllib2.HTTPRedirectHandler</code></b>: - <code>inf_msg</code>, - <code>max_redirections</code>, - <code>max_repeats</code> - </p> - <p class="indent-wrapped-lines"><b>Inherited from <code>urllib2.BaseHandler</code></b>: - <code>handler_order</code> - </p> - </td> - </tr> -</table> -<!-- ==================== METHOD DETAILS ==================== --> -<a name="section-MethodDetails"></a> -<table class="details" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr bgcolor="#70b0f0" class="table-header"> - <td colspan="2" class="table-header"> - <table border="0" cellpadding="0" cellspacing="0" width="100%"> - <tr valign="top"> - <td align="left"><span class="table-header">Method Details</span></td> - <td align="right" valign="top" - ><span class="options">[<a href="#section-MethodDetails" - class="privatelink" onclick="toggle_private();" - >hide private</a>]</span></td> - </tr> - </table> - </td> -</tr> -</table> -<a name="http_error_303"></a> -<div> -<table class="details" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr><td> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr valign="top"><td> - <h3 class="epydoc"><span class="sig"><span class="sig-name">http_error_303</span>(<span class="sig-arg">self</span>, - <span class="sig-arg">req</span>, - <span class="sig-arg">fp</span>, - <span class="sig-arg">code</span>, - <span class="sig-arg">msg</span>, - <span class="sig-arg">hdrs</span>)</span> - </h3> - </td><td align="right" valign="top" - ><span class="codelink"><a href="scapi-pysrc.html#SCRedirectHandler.http_error_303">source code</a></span> - </td> - </tr></table> - - <p>In case of return-code 303 (See-other), we have to store the location - we got because that will determine the actual type of resource - returned.</p> - <dl class="fields"> - <dt>Overrides: - urllib2.HTTPRedirectHandler.http_error_302 - </dt> - </dl> -</td></tr></table> -</div> -<a name="http_error_201"></a> -<div> -<table class="details" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr><td> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr valign="top"><td> - <h3 class="epydoc"><span class="sig"><span class="sig-name">http_error_201</span>(<span class="sig-arg">self</span>, - <span class="sig-arg">req</span>, - <span class="sig-arg">fp</span>, - <span class="sig-arg">code</span>, - <span class="sig-arg">msg</span>, - <span class="sig-arg">hdrs</span>)</span> - </h3> - </td><td align="right" valign="top" - ><span class="codelink"><a href="scapi-pysrc.html#SCRedirectHandler.http_error_201">source code</a></span> - </td> - </tr></table> - - <p>We fake a 201 being a 303 so that our redirection-scheme takes place - for the 201 the API throws in case we created something. If the location - is not available though, that means that whatever we created has succeded - - without being a named resource. Assigning an asset to a track is an - example of such case.</p> - <dl class="fields"> - </dl> -</td></tr></table> -</div> -<br /> -<!-- ==================== NAVIGATION BAR ==================== --> -<table class="navbar" border="0" width="100%" cellpadding="0" - bgcolor="#a0c0ff" cellspacing="0"> - <tr valign="middle"> - <!-- Home link --> - <th> <a - href="scapi-module.html">Home</a> </th> - - <!-- Tree link --> - <th> <a - href="module-tree.html">Trees</a> </th> - - <!-- Index link --> - <th> <a - href="identifier-index.html">Indices</a> </th> - - <!-- Help link --> - <th> <a - href="help.html">Help</a> </th> - - <!-- Project homepage --> - <th class="navbar" align="right" width="100%"> - <table border="0" cellpadding="0" cellspacing="0"> - <tr><th class="navbar" align="center" - >SoundCloud API</th> - </tr></table></th> - </tr> -</table> -<table border="0" cellpadding="0" cellspacing="0" width="100%%"> - <tr> - <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Thu Sep 10 00:58:49 2009 - </td> - <td align="right" class="footer"> - <a target="mainFrame" href="http://epydoc.sourceforge.net" - >http://epydoc.sourceforge.net</a> - </td> - </tr> -</table> - -<script type="text/javascript"> - <!-- - // Private objects are initially displayed (because if - // javascript is turned off then we want them to be - // visible); but by default, we want to hide them. So hide - // them unless we have a cookie that says to show them. - checkCookie(); - // --> -</script> -</body> -</html> diff --git a/python_apps/soundcloud-api/docs/api/scapi.Scope-class.html b/python_apps/soundcloud-api/docs/api/scapi.Scope-class.html deleted file mode 100644 index 0b008e17f..000000000 --- a/python_apps/soundcloud-api/docs/api/scapi.Scope-class.html +++ /dev/null @@ -1,682 +0,0 @@ -<?xml version="1.0" encoding="ascii"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <title>scapi.Scope</title> - <link rel="stylesheet" href="epydoc.css" type="text/css" /> - <script type="text/javascript" src="epydoc.js"></script> -</head> - -<body bgcolor="white" text="black" link="blue" vlink="#204080" - alink="#204080"> -<!-- ==================== NAVIGATION BAR ==================== --> -<table class="navbar" border="0" width="100%" cellpadding="0" - bgcolor="#a0c0ff" cellspacing="0"> - <tr valign="middle"> - <!-- Home link --> - <th> <a - href="scapi-module.html">Home</a> </th> - - <!-- Tree link --> - <th> <a - href="module-tree.html">Trees</a> </th> - - <!-- Index link --> - <th> <a - href="identifier-index.html">Indices</a> </th> - - <!-- Help link --> - <th> <a - href="help.html">Help</a> </th> - - <!-- Project homepage --> - <th class="navbar" align="right" width="100%"> - <table border="0" cellpadding="0" cellspacing="0"> - <tr><th class="navbar" align="center" - >SoundCloud API</th> - </tr></table></th> - </tr> -</table> -<table width="100%" cellpadding="0" cellspacing="0"> - <tr valign="top"> - <td width="100%"> - <span class="breadcrumbs"> - <a href="scapi-module.html">Package scapi</a> :: - Class Scope - </span> - </td> - <td> - <table cellpadding="0" cellspacing="0"> - <!-- hide/show private --> - <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink" - onclick="toggle_private();">hide private</a>]</span></td></tr> - <tr><td align="right"><span class="options" - >[<a href="frames.html" target="_top">frames</a - >] | <a href="scapi.Scope-class.html" - target="_top">no frames</a>]</span></td></tr> - </table> - </td> - </tr> -</table> -<!-- ==================== CLASS DESCRIPTION ==================== --> -<h1 class="epydoc">Class Scope</h1><p class="nomargin-top"><span class="codelink"><a href="scapi-pysrc.html#Scope">source code</a></span></p> -<pre class="base-tree"> -object --+ - | - <strong class="uidshort">Scope</strong> -</pre> - -<hr /> -<p>The basic means to query and create resources. The Scope uses the <a - href="scapi.ApiConnector-class.html" class="link" - onclick="show_private();">ApiConnector</a> to create the proper URIs for - querying or creating resources.</p> - <p>For accessing resources from the root level, you explcitly create a - Scope and pass it an <a href="scapi.ApiConnector-class.html" class="link" - onclick="show_private();">ApiConnector</a>-instance. Then you can query - it or create new resources like this:</p> -<pre class="py-doctest"> -<span class="py-prompt">>>> </span>connector = scapi.ApiConnector(host=<span class="py-string">'host'</span>, user=<span class="py-string">'user'</span>, password=<span class="py-string">'password'</span>) <span class="py-comment"># initialize the API</span> -<span class="py-prompt">>>> </span>scope = scapi.Scope(connector) <span class="py-comment"># get the root scope</span> -<span class="py-prompt">>>> </span>users = list(scope.users()) -<span class="py-output">[<scapi.User object at 0x12345>, ...]</span></pre> - <p>Please not that all resources that are lists are returned as - <b>generator</b>. So you need to either iterate over them, or call - list(resources) on them.</p> - <p>When accessing resources that belong to another resource, like - contacts of a user, you access the parent's resource scope implicitly - through the resource instance like this:</p> -<pre class="py-doctest"> -<span class="py-prompt">>>> </span>user = scope.users().next() -<span class="py-prompt">>>> </span>list(user.contacts()) -<span class="py-output">[<scapi.Contact object at 0x12345>, ...]</span></pre> - -<!-- ==================== INSTANCE METHODS ==================== --> -<a name="section-InstanceMethods"></a> -<table class="summary" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr bgcolor="#70b0f0" class="table-header"> - <td colspan="2" class="table-header"> - <table border="0" cellpadding="0" cellspacing="0" width="100%"> - <tr valign="top"> - <td align="left"><span class="table-header">Instance Methods</span></td> - <td align="right" valign="top" - ><span class="options">[<a href="#section-InstanceMethods" - class="privatelink" onclick="toggle_private();" - >hide private</a>]</span></td> - </tr> - </table> - </td> -</tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a href="scapi.Scope-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>, - <span class="summary-sig-arg">connector</span>, - <span class="summary-sig-arg">scope</span>=<span class="summary-sig-default">None</span>, - <span class="summary-sig-arg">parent</span>=<span class="summary-sig-default">None</span>)</span><br /> - Create the Scope.</td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi-pysrc.html#Scope.__init__">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> -<tr class="private"> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a name="_get_connector"></a><span class="summary-sig-name">_get_connector</span>(<span class="summary-sig-arg">self</span>)</span></td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi-pysrc.html#Scope._get_connector">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a href="scapi.Scope-class.html#oauth_sign_get_request" class="summary-sig-name">oauth_sign_get_request</a>(<span class="summary-sig-arg">self</span>, - <span class="summary-sig-arg">url</span>)</span><br /> - This method will take an arbitrary url, and rewrite it so that the - current authenticator's oauth-headers are appended as - query-parameters.</td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi-pysrc.html#Scope.oauth_sign_get_request">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> -<tr class="private"> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type">urllib2.Request</span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a href="scapi.Scope-class.html#_create_request" class="summary-sig-name" onclick="show_private();">_create_request</a>(<span class="summary-sig-arg">self</span>, - <span class="summary-sig-arg">url</span>, - <span class="summary-sig-arg">connector</span>, - <span class="summary-sig-arg">parameters</span>, - <span class="summary-sig-arg">queryparams</span>, - <span class="summary-sig-arg">alternate_http_method</span>=<span class="summary-sig-default">None</span>, - <span class="summary-sig-arg">use_multipart</span>=<span class="summary-sig-default">False</span>)</span><br /> - This method returnes the urllib2.Request to perform the actual - HTTP-request.</td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi-pysrc.html#Scope._create_request">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> -<tr class="private"> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type">str</span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a href="scapi.Scope-class.html#_create_query_string" class="summary-sig-name" onclick="show_private();">_create_query_string</a>(<span class="summary-sig-arg">self</span>, - <span class="summary-sig-arg">queryparams</span>)</span><br /> - Small helpermethod to create the querystring from a dict.</td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi-pysrc.html#Scope._create_query_string">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> -<tr class="private"> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a href="scapi.Scope-class.html#_call" class="summary-sig-name" onclick="show_private();">_call</a>(<span class="summary-sig-arg">self</span>, - <span class="summary-sig-arg">method</span>, - <span class="summary-sig-arg">*args</span>, - <span class="summary-sig-arg">**kwargs</span>)</span><br /> - The workhorse.</td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi-pysrc.html#Scope._call">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> -<tr class="private"> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a href="scapi.Scope-class.html#_map" class="summary-sig-name" onclick="show_private();">_map</a>(<span class="summary-sig-arg">self</span>, - <span class="summary-sig-arg">res</span>, - <span class="summary-sig-arg">method</span>, - <span class="summary-sig-arg">continue_list_fetching</span>)</span><br /> - This method will take the JSON-result of a HTTP-call and return our - domain-objects.</td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi-pysrc.html#Scope._map">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a href="scapi.Scope-class.html#__getattr__" class="summary-sig-name">__getattr__</a>(<span class="summary-sig-arg">self</span>, - <span class="summary-sig-arg">_name</span>)</span><br /> - Retrieve an API-method or a scoped domain-class.</td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi-pysrc.html#Scope.__getattr__">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a href="scapi.Scope-class.html#__repr__" class="summary-sig-name">__repr__</a>(<span class="summary-sig-arg">self</span>)</span><br /> - repr(x)</td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi-pysrc.html#Scope.__repr__">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a href="scapi.Scope-class.html#__str__" class="summary-sig-name">__str__</a>(<span class="summary-sig-arg">self</span>)</span><br /> - str(x)</td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi-pysrc.html#Scope.__str__">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> - <tr> - <td colspan="2" class="summary"> - <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>: - <code>__delattr__</code>, - <code>__getattribute__</code>, - <code>__hash__</code>, - <code>__new__</code>, - <code>__reduce__</code>, - <code>__reduce_ex__</code>, - <code>__setattr__</code> - </p> - </td> - </tr> -</table> -<!-- ==================== PROPERTIES ==================== --> -<a name="section-Properties"></a> -<table class="summary" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr bgcolor="#70b0f0" class="table-header"> - <td colspan="2" class="table-header"> - <table border="0" cellpadding="0" cellspacing="0" width="100%"> - <tr valign="top"> - <td align="left"><span class="table-header">Properties</span></td> - <td align="right" valign="top" - ><span class="options">[<a href="#section-Properties" - class="privatelink" onclick="toggle_private();" - >hide private</a>]</span></td> - </tr> - </table> - </td> -</tr> - <tr> - <td colspan="2" class="summary"> - <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>: - <code>__class__</code> - </p> - </td> - </tr> -</table> -<!-- ==================== METHOD DETAILS ==================== --> -<a name="section-MethodDetails"></a> -<table class="details" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr bgcolor="#70b0f0" class="table-header"> - <td colspan="2" class="table-header"> - <table border="0" cellpadding="0" cellspacing="0" width="100%"> - <tr valign="top"> - <td align="left"><span class="table-header">Method Details</span></td> - <td align="right" valign="top" - ><span class="options">[<a href="#section-MethodDetails" - class="privatelink" onclick="toggle_private();" - >hide private</a>]</span></td> - </tr> - </table> - </td> -</tr> -</table> -<a name="__init__"></a> -<div> -<table class="details" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr><td> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr valign="top"><td> - <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>, - <span class="sig-arg">connector</span>, - <span class="sig-arg">scope</span>=<span class="sig-default">None</span>, - <span class="sig-arg">parent</span>=<span class="sig-default">None</span>)</span> - <br /><em class="fname">(Constructor)</em> - </h3> - </td><td align="right" valign="top" - ><span class="codelink"><a href="scapi-pysrc.html#Scope.__init__">source code</a></span> - </td> - </tr></table> - - <p>Create the Scope. It can have a resource as scope, and possibly a - parent-scope.</p> - <dl class="fields"> - <dt>Parameters:</dt> - <dd><ul class="nomargin-top"> - <li><strong class="pname"><code>connector</code></strong> (ApiConnector) - The connector to use.</li> - <li><strong class="pname"><code>scope</code></strong> (scapi.RESTBase) - the resource to make this scope belong to</li> - <li><strong class="pname"><code>parent</code></strong> (scapi.Scope) - the parent scope of this scope</li> - </ul></dd> - <dt>Overrides: - object.__init__ - </dt> - </dl> -</td></tr></table> -</div> -<a name="oauth_sign_get_request"></a> -<div> -<table class="details" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr><td> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr valign="top"><td> - <h3 class="epydoc"><span class="sig"><span class="sig-name">oauth_sign_get_request</span>(<span class="sig-arg">self</span>, - <span class="sig-arg">url</span>)</span> - </h3> - </td><td align="right" valign="top" - ><span class="codelink"><a href="scapi-pysrc.html#Scope.oauth_sign_get_request">source code</a></span> - </td> - </tr></table> - - <p>This method will take an arbitrary url, and rewrite it so that the - current authenticator's oauth-headers are appended as - query-parameters.</p> - <p>This is used in streaming and downloading, because those content isn't - served from the SoundCloud servers themselves.</p> - <p>A usage example would look like this:</p> -<pre class="py-doctest"> -<span class="py-prompt">>>> </span>sca = scapi.Scope(connector) -<span class="py-prompt">>>> </span>track = sca.tracks(params={ -<span class="py-output"> "filter" : "downloadable",</span> -<span class="py-output"> }).next()</span></pre> -<pre class="py-doctest"> -<span class="py-prompt">>>> </span>download_url = track.download_url -<span class="py-prompt">>>> </span>signed_url = track.oauth_sign_get_request(download_url) -<span class="py-prompt">>>> </span>data = urllib2.urlopen(signed_url).read()</pre> - <dl class="fields"> - </dl> -</td></tr></table> -</div> -<a name="_create_request"></a> -<div class="private"> -<table class="details" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr><td> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr valign="top"><td> - <h3 class="epydoc"><span class="sig"><span class="sig-name">_create_request</span>(<span class="sig-arg">self</span>, - <span class="sig-arg">url</span>, - <span class="sig-arg">connector</span>, - <span class="sig-arg">parameters</span>, - <span class="sig-arg">queryparams</span>, - <span class="sig-arg">alternate_http_method</span>=<span class="sig-default">None</span>, - <span class="sig-arg">use_multipart</span>=<span class="sig-default">False</span>)</span> - </h3> - </td><td align="right" valign="top" - ><span class="codelink"><a href="scapi-pysrc.html#Scope._create_request">source code</a></span> - </td> - </tr></table> - - <p>This method returnes the urllib2.Request to perform the actual - HTTP-request.</p> - <p>We return a subclass that overload the get_method-method to return a - custom method like "PUT". Additionally, the request is enhanced - with the current authenticators authorization scheme headers.</p> - <dl class="fields"> - <dt>Parameters:</dt> - <dd><ul class="nomargin-top"> - <li><strong class="pname"><code>url</code></strong> - the destination url</li> - <li><strong class="pname"><code>connector</code></strong> - our connector-instance</li> - <li><strong class="pname"><code>parameters</code></strong> (None|dict<str, basestring|list<basestring>>) - the POST-parameters to use.</li> - <li><strong class="pname"><code>queryparams</code></strong> (None|dict<str, basestring|list<basestring>>) - the queryparams to use</li> - <li><strong class="pname"><code>alternate_http_method</code></strong> (str) - an alternate HTTP-method to use</li> - </ul></dd> - <dt>Returns: urllib2.Request</dt> - <dd>the fully equipped request</dd> - </dl> -</td></tr></table> -</div> -<a name="_create_query_string"></a> -<div class="private"> -<table class="details" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr><td> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr valign="top"><td> - <h3 class="epydoc"><span class="sig"><span class="sig-name">_create_query_string</span>(<span class="sig-arg">self</span>, - <span class="sig-arg">queryparams</span>)</span> - </h3> - </td><td align="right" valign="top" - ><span class="codelink"><a href="scapi-pysrc.html#Scope._create_query_string">source code</a></span> - </td> - </tr></table> - - <p>Small helpermethod to create the querystring from a dict.</p> - <dl class="fields"> - <dt>Parameters:</dt> - <dd><ul class="nomargin-top"> - <li><strong class="pname"><code>queryparams</code></strong> (None|dict<str, basestring|list<basestring>>) - the queryparameters.</li> - </ul></dd> - <dt>Returns: str</dt> - <dd>either the empty string, or a "?" followed by the - parameters joined by "&"</dd> - </dl> -</td></tr></table> -</div> -<a name="_call"></a> -<div class="private"> -<table class="details" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr><td> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr valign="top"><td> - <h3 class="epydoc"><span class="sig"><span class="sig-name">_call</span>(<span class="sig-arg">self</span>, - <span class="sig-arg">method</span>, - <span class="sig-arg">*args</span>, - <span class="sig-arg">**kwargs</span>)</span> - </h3> - </td><td align="right" valign="top" - ><span class="codelink"><a href="scapi-pysrc.html#Scope._call">source code</a></span> - </td> - </tr></table> - - <p>The workhorse. It's complicated, convoluted and beyond understanding - of a mortal being.</p> - <p>You have been warned.</p> - <dl class="fields"> - </dl> -</td></tr></table> -</div> -<a name="_map"></a> -<div class="private"> -<table class="details" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr><td> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr valign="top"><td> - <h3 class="epydoc"><span class="sig"><span class="sig-name">_map</span>(<span class="sig-arg">self</span>, - <span class="sig-arg">res</span>, - <span class="sig-arg">method</span>, - <span class="sig-arg">continue_list_fetching</span>)</span> - </h3> - </td><td align="right" valign="top" - ><span class="codelink"><a href="scapi-pysrc.html#Scope._map">source code</a></span> - </td> - </tr></table> - - <p>This method will take the JSON-result of a HTTP-call and return our - domain-objects.</p> - <p>It's also deep magic, don't look.</p> - <dl class="fields"> - </dl> -</td></tr></table> -</div> -<a name="__getattr__"></a> -<div> -<table class="details" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr><td> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr valign="top"><td> - <h3 class="epydoc"><span class="sig"><span class="sig-name">__getattr__</span>(<span class="sig-arg">self</span>, - <span class="sig-arg">_name</span>)</span> - <br /><em class="fname">(Qualification operator)</em> - </h3> - </td><td align="right" valign="top" - ><span class="codelink"><a href="scapi-pysrc.html#Scope.__getattr__">source code</a></span> - </td> - </tr></table> - - <p>Retrieve an API-method or a scoped domain-class.</p> - <p>If the former, result is a callable that supports the following - invocations:</p> - <ul> - <li> - calling (...), with possible arguments (positional/keyword), return - the resulting resource or list of resources. When calling, you can - pass a keyword-argument <b>params</b>. This must be a dict or <a - href="scapi.util.MultiDict-class.html" class="link">MultiDict</a> and - will be used to add additional query-get-parameters. - </li> - <li> - invoking append(resource) on it will PUT the resource, making it part - of the current resource. Makes sense only if it's a collection of - course. - </li> - <li> - invoking remove(resource) on it will DELETE the resource from it's - container. Also only usable on collections. - <p>TODO: describe the latter</p> - </li> - </ul> - <dl class="fields"> - </dl> -</td></tr></table> -</div> -<a name="__repr__"></a> -<div> -<table class="details" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr><td> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr valign="top"><td> - <h3 class="epydoc"><span class="sig"><span class="sig-name">__repr__</span>(<span class="sig-arg">self</span>)</span> - <br /><em class="fname">(Representation operator)</em> - </h3> - </td><td align="right" valign="top" - ><span class="codelink"><a href="scapi-pysrc.html#Scope.__repr__">source code</a></span> - </td> - </tr></table> - - <p>repr(x)</p> - <dl class="fields"> - <dt>Overrides: - object.__repr__ - <dd><em class="note">(inherited documentation)</em></dd> - </dt> - </dl> -</td></tr></table> -</div> -<a name="__str__"></a> -<div> -<table class="details" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr><td> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr valign="top"><td> - <h3 class="epydoc"><span class="sig"><span class="sig-name">__str__</span>(<span class="sig-arg">self</span>)</span> - <br /><em class="fname">(Informal representation operator)</em> - </h3> - </td><td align="right" valign="top" - ><span class="codelink"><a href="scapi-pysrc.html#Scope.__str__">source code</a></span> - </td> - </tr></table> - - <p>str(x)</p> - <dl class="fields"> - <dt>Overrides: - object.__str__ - <dd><em class="note">(inherited documentation)</em></dd> - </dt> - </dl> -</td></tr></table> -</div> -<br /> -<!-- ==================== NAVIGATION BAR ==================== --> -<table class="navbar" border="0" width="100%" cellpadding="0" - bgcolor="#a0c0ff" cellspacing="0"> - <tr valign="middle"> - <!-- Home link --> - <th> <a - href="scapi-module.html">Home</a> </th> - - <!-- Tree link --> - <th> <a - href="module-tree.html">Trees</a> </th> - - <!-- Index link --> - <th> <a - href="identifier-index.html">Indices</a> </th> - - <!-- Help link --> - <th> <a - href="help.html">Help</a> </th> - - <!-- Project homepage --> - <th class="navbar" align="right" width="100%"> - <table border="0" cellpadding="0" cellspacing="0"> - <tr><th class="navbar" align="center" - >SoundCloud API</th> - </tr></table></th> - </tr> -</table> -<table border="0" cellpadding="0" cellspacing="0" width="100%%"> - <tr> - <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Thu Sep 10 00:58:49 2009 - </td> - <td align="right" class="footer"> - <a target="mainFrame" href="http://epydoc.sourceforge.net" - >http://epydoc.sourceforge.net</a> - </td> - </tr> -</table> - -<script type="text/javascript"> - <!-- - // Private objects are initially displayed (because if - // javascript is turned off then we want them to be - // visible); but by default, we want to hide them. So hide - // them unless we have a cookie that says to show them. - checkCookie(); - // --> -</script> -</body> -</html> diff --git a/python_apps/soundcloud-api/docs/api/scapi.Track-class.html b/python_apps/soundcloud-api/docs/api/scapi.Track-class.html deleted file mode 100644 index e8257566a..000000000 --- a/python_apps/soundcloud-api/docs/api/scapi.Track-class.html +++ /dev/null @@ -1,264 +0,0 @@ -<?xml version="1.0" encoding="ascii"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <title>scapi.Track</title> - <link rel="stylesheet" href="epydoc.css" type="text/css" /> - <script type="text/javascript" src="epydoc.js"></script> -</head> - -<body bgcolor="white" text="black" link="blue" vlink="#204080" - alink="#204080"> -<!-- ==================== NAVIGATION BAR ==================== --> -<table class="navbar" border="0" width="100%" cellpadding="0" - bgcolor="#a0c0ff" cellspacing="0"> - <tr valign="middle"> - <!-- Home link --> - <th> <a - href="scapi-module.html">Home</a> </th> - - <!-- Tree link --> - <th> <a - href="module-tree.html">Trees</a> </th> - - <!-- Index link --> - <th> <a - href="identifier-index.html">Indices</a> </th> - - <!-- Help link --> - <th> <a - href="help.html">Help</a> </th> - - <!-- Project homepage --> - <th class="navbar" align="right" width="100%"> - <table border="0" cellpadding="0" cellspacing="0"> - <tr><th class="navbar" align="center" - >SoundCloud API</th> - </tr></table></th> - </tr> -</table> -<table width="100%" cellpadding="0" cellspacing="0"> - <tr valign="top"> - <td width="100%"> - <span class="breadcrumbs"> - <a href="scapi-module.html">Package scapi</a> :: - Class Track - </span> - </td> - <td> - <table cellpadding="0" cellspacing="0"> - <!-- hide/show private --> - <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink" - onclick="toggle_private();">hide private</a>]</span></td></tr> - <tr><td align="right"><span class="options" - >[<a href="frames.html" target="_top">frames</a - >] | <a href="scapi.Track-class.html" - target="_top">no frames</a>]</span></td></tr> - </table> - </td> - </tr> -</table> -<!-- ==================== CLASS DESCRIPTION ==================== --> -<h1 class="epydoc">Class Track</h1><p class="nomargin-top"><span class="codelink"><a href="scapi-pysrc.html#Track">source code</a></span></p> -<pre class="base-tree"> -object --+ - | - <a href="scapi.RESTBase-class.html" onclick="show_private();">RESTBase</a> --+ - | - <strong class="uidshort">Track</strong> -</pre> - -<hr /> -<p>A track domain object/resource.</p> - -<!-- ==================== INSTANCE METHODS ==================== --> -<a name="section-InstanceMethods"></a> -<table class="summary" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr bgcolor="#70b0f0" class="table-header"> - <td colspan="2" class="table-header"> - <table border="0" cellpadding="0" cellspacing="0" width="100%"> - <tr valign="top"> - <td align="left"><span class="table-header">Instance Methods</span></td> - <td align="right" valign="top" - ><span class="options">[<a href="#section-InstanceMethods" - class="privatelink" onclick="toggle_private();" - >hide private</a>]</span></td> - </tr> - </table> - </td> -</tr> - <tr> - <td colspan="2" class="summary"> - <p class="indent-wrapped-lines"><b>Inherited from <code><a href="scapi.RESTBase-class.html" onclick="show_private();">RESTBase</a></code></b>: - <code><a href="scapi.RESTBase-class.html#__eq__">__eq__</a></code>, - <code><a href="scapi.RESTBase-class.html#__getattr__">__getattr__</a></code>, - <code><a href="scapi.RESTBase-class.html#__hash__">__hash__</a></code>, - <code><a href="scapi.RESTBase-class.html#__init__">__init__</a></code>, - <code><a href="scapi.RESTBase-class.html#__ne__">__ne__</a></code>, - <code><a href="scapi.RESTBase-class.html#__repr__">__repr__</a></code>, - <code><a href="scapi.RESTBase-class.html#__setattr__">__setattr__</a></code> - </p> - <div class="private"> <p class="indent-wrapped-lines"><b>Inherited from <code><a href="scapi.RESTBase-class.html" onclick="show_private();">RESTBase</a></code></b> (private): - <code><a href="scapi.RESTBase-class.html#_as_arguments" onclick="show_private();">_as_arguments</a></code>, - <code><a href="scapi.RESTBase-class.html#_convert_value" onclick="show_private();">_convert_value</a></code>, - <code><a href="scapi.RESTBase-class.html#_scope" onclick="show_private();">_scope</a></code> - </p></div> - <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>: - <code>__delattr__</code>, - <code>__getattribute__</code>, - <code>__new__</code>, - <code>__reduce__</code>, - <code>__reduce_ex__</code>, - <code>__str__</code> - </p> - </td> - </tr> -</table> -<!-- ==================== CLASS METHODS ==================== --> -<a name="section-ClassMethods"></a> -<table class="summary" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr bgcolor="#70b0f0" class="table-header"> - <td colspan="2" class="table-header"> - <table border="0" cellpadding="0" cellspacing="0" width="100%"> - <tr valign="top"> - <td align="left"><span class="table-header">Class Methods</span></td> - <td align="right" valign="top" - ><span class="options">[<a href="#section-ClassMethods" - class="privatelink" onclick="toggle_private();" - >hide private</a>]</span></td> - </tr> - </table> - </td> -</tr> - <tr> - <td colspan="2" class="summary"> - <p class="indent-wrapped-lines"><b>Inherited from <code><a href="scapi.RESTBase-class.html" onclick="show_private();">RESTBase</a></code></b>: - <code><a href="scapi.RESTBase-class.html#create">create</a></code>, - <code><a href="scapi.RESTBase-class.html#get">get</a></code>, - <code><a href="scapi.RESTBase-class.html#new">new</a></code> - </p> - <div class="private"> <p class="indent-wrapped-lines"><b>Inherited from <code><a href="scapi.RESTBase-class.html" onclick="show_private();">RESTBase</a></code></b> (private): - <code><a href="scapi.RESTBase-class.html#_singleton" onclick="show_private();">_singleton</a></code> - </p></div> - </td> - </tr> -</table> -<!-- ==================== CLASS VARIABLES ==================== --> -<a name="section-ClassVariables"></a> -<table class="summary" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr bgcolor="#70b0f0" class="table-header"> - <td colspan="2" class="table-header"> - <table border="0" cellpadding="0" cellspacing="0" width="100%"> - <tr valign="top"> - <td align="left"><span class="table-header">Class Variables</span></td> - <td align="right" valign="top" - ><span class="options">[<a href="#section-ClassVariables" - class="privatelink" onclick="toggle_private();" - >hide private</a>]</span></td> - </tr> - </table> - </td> -</tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <a name="KIND"></a><span class="summary-name">KIND</span> = <code title="'tracks'"><code class="variable-quote">'</code><code class="variable-string">tracks</code><code class="variable-quote">'</code></code> - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <a name="ALIASES"></a><span class="summary-name">ALIASES</span> = <code title="['favorites']"><code class="variable-group">[</code><code class="variable-quote">'</code><code class="variable-string">favorites</code><code class="variable-quote">'</code><code class="variable-group">]</code></code> - </td> - </tr> - <tr> - <td colspan="2" class="summary"> - <p class="indent-wrapped-lines"><b>Inherited from <code><a href="scapi.RESTBase-class.html" onclick="show_private();">RESTBase</a></code></b>: - <code><a href="scapi.RESTBase-class.html#ALL_DOMAIN_CLASSES">ALL_DOMAIN_CLASSES</a></code>, - <code><a href="scapi.RESTBase-class.html#REGISTRY">REGISTRY</a></code> - </p> - </td> - </tr> -</table> -<!-- ==================== PROPERTIES ==================== --> -<a name="section-Properties"></a> -<table class="summary" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr bgcolor="#70b0f0" class="table-header"> - <td colspan="2" class="table-header"> - <table border="0" cellpadding="0" cellspacing="0" width="100%"> - <tr valign="top"> - <td align="left"><span class="table-header">Properties</span></td> - <td align="right" valign="top" - ><span class="options">[<a href="#section-Properties" - class="privatelink" onclick="toggle_private();" - >hide private</a>]</span></td> - </tr> - </table> - </td> -</tr> - <tr> - <td colspan="2" class="summary"> - <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>: - <code>__class__</code> - </p> - </td> - </tr> -</table> -<!-- ==================== NAVIGATION BAR ==================== --> -<table class="navbar" border="0" width="100%" cellpadding="0" - bgcolor="#a0c0ff" cellspacing="0"> - <tr valign="middle"> - <!-- Home link --> - <th> <a - href="scapi-module.html">Home</a> </th> - - <!-- Tree link --> - <th> <a - href="module-tree.html">Trees</a> </th> - - <!-- Index link --> - <th> <a - href="identifier-index.html">Indices</a> </th> - - <!-- Help link --> - <th> <a - href="help.html">Help</a> </th> - - <!-- Project homepage --> - <th class="navbar" align="right" width="100%"> - <table border="0" cellpadding="0" cellspacing="0"> - <tr><th class="navbar" align="center" - >SoundCloud API</th> - </tr></table></th> - </tr> -</table> -<table border="0" cellpadding="0" cellspacing="0" width="100%%"> - <tr> - <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Thu Sep 10 00:58:49 2009 - </td> - <td align="right" class="footer"> - <a target="mainFrame" href="http://epydoc.sourceforge.net" - >http://epydoc.sourceforge.net</a> - </td> - </tr> -</table> - -<script type="text/javascript"> - <!-- - // Private objects are initially displayed (because if - // javascript is turned off then we want them to be - // visible); but by default, we want to hide them. So hide - // them unless we have a cookie that says to show them. - checkCookie(); - // --> -</script> -</body> -</html> diff --git a/python_apps/soundcloud-api/docs/api/scapi.UnknownContentType-class.html b/python_apps/soundcloud-api/docs/api/scapi.UnknownContentType-class.html deleted file mode 100644 index 94f9ee872..000000000 --- a/python_apps/soundcloud-api/docs/api/scapi.UnknownContentType-class.html +++ /dev/null @@ -1,337 +0,0 @@ -<?xml version="1.0" encoding="ascii"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <title>scapi.UnknownContentType</title> - <link rel="stylesheet" href="epydoc.css" type="text/css" /> - <script type="text/javascript" src="epydoc.js"></script> -</head> - -<body bgcolor="white" text="black" link="blue" vlink="#204080" - alink="#204080"> -<!-- ==================== NAVIGATION BAR ==================== --> -<table class="navbar" border="0" width="100%" cellpadding="0" - bgcolor="#a0c0ff" cellspacing="0"> - <tr valign="middle"> - <!-- Home link --> - <th> <a - href="scapi-module.html">Home</a> </th> - - <!-- Tree link --> - <th> <a - href="module-tree.html">Trees</a> </th> - - <!-- Index link --> - <th> <a - href="identifier-index.html">Indices</a> </th> - - <!-- Help link --> - <th> <a - href="help.html">Help</a> </th> - - <!-- Project homepage --> - <th class="navbar" align="right" width="100%"> - <table border="0" cellpadding="0" cellspacing="0"> - <tr><th class="navbar" align="center" - >SoundCloud API</th> - </tr></table></th> - </tr> -</table> -<table width="100%" cellpadding="0" cellspacing="0"> - <tr valign="top"> - <td width="100%"> - <span class="breadcrumbs"> - <a href="scapi-module.html">Package scapi</a> :: - Class UnknownContentType - </span> - </td> - <td> - <table cellpadding="0" cellspacing="0"> - <!-- hide/show private --> - <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink" - onclick="toggle_private();">hide private</a>]</span></td></tr> - <tr><td align="right"><span class="options" - >[<a href="frames.html" target="_top">frames</a - >] | <a href="scapi.UnknownContentType-class.html" - target="_top">no frames</a>]</span></td></tr> - </table> - </td> - </tr> -</table> -<!-- ==================== CLASS DESCRIPTION ==================== --> -<h1 class="epydoc">Class UnknownContentType</h1><p class="nomargin-top"><span class="codelink"><a href="scapi-pysrc.html#UnknownContentType">source code</a></span></p> -<pre class="base-tree"> - object --+ - | -exceptions.BaseException --+ - | - exceptions.Exception --+ - | - <strong class="uidshort">UnknownContentType</strong> -</pre> - -<hr /> -<!-- ==================== INSTANCE METHODS ==================== --> -<a name="section-InstanceMethods"></a> -<table class="summary" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr bgcolor="#70b0f0" class="table-header"> - <td colspan="2" class="table-header"> - <table border="0" cellpadding="0" cellspacing="0" width="100%"> - <tr valign="top"> - <td align="left"><span class="table-header">Instance Methods</span></td> - <td align="right" valign="top" - ><span class="options">[<a href="#section-InstanceMethods" - class="privatelink" onclick="toggle_private();" - >hide private</a>]</span></td> - </tr> - </table> - </td> -</tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a href="scapi.UnknownContentType-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>, - <span class="summary-sig-arg">msg</span>)</span><br /> - x.__init__(...) initializes x; see x.__class__.__doc__ for signature</td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi-pysrc.html#UnknownContentType.__init__">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a href="scapi.UnknownContentType-class.html#__repr__" class="summary-sig-name">__repr__</a>(<span class="summary-sig-arg">self</span>)</span><br /> - repr(x)</td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi-pysrc.html#UnknownContentType.__repr__">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a href="scapi.UnknownContentType-class.html#__str__" class="summary-sig-name">__str__</a>(<span class="summary-sig-arg">self</span>)</span><br /> - str(x)</td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi-pysrc.html#UnknownContentType.__str__">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> - <tr> - <td colspan="2" class="summary"> - <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.Exception</code></b>: - <code>__new__</code> - </p> - <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.BaseException</code></b>: - <code>__delattr__</code>, - <code>__getattribute__</code>, - <code>__getitem__</code>, - <code>__getslice__</code>, - <code>__reduce__</code>, - <code>__setattr__</code>, - <code>__setstate__</code> - </p> - <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>: - <code>__hash__</code>, - <code>__reduce_ex__</code> - </p> - </td> - </tr> -</table> -<!-- ==================== PROPERTIES ==================== --> -<a name="section-Properties"></a> -<table class="summary" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr bgcolor="#70b0f0" class="table-header"> - <td colspan="2" class="table-header"> - <table border="0" cellpadding="0" cellspacing="0" width="100%"> - <tr valign="top"> - <td align="left"><span class="table-header">Properties</span></td> - <td align="right" valign="top" - ><span class="options">[<a href="#section-Properties" - class="privatelink" onclick="toggle_private();" - >hide private</a>]</span></td> - </tr> - </table> - </td> -</tr> - <tr> - <td colspan="2" class="summary"> - <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.BaseException</code></b>: - <code>args</code>, - <code>message</code> - </p> - <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>: - <code>__class__</code> - </p> - </td> - </tr> -</table> -<!-- ==================== METHOD DETAILS ==================== --> -<a name="section-MethodDetails"></a> -<table class="details" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr bgcolor="#70b0f0" class="table-header"> - <td colspan="2" class="table-header"> - <table border="0" cellpadding="0" cellspacing="0" width="100%"> - <tr valign="top"> - <td align="left"><span class="table-header">Method Details</span></td> - <td align="right" valign="top" - ><span class="options">[<a href="#section-MethodDetails" - class="privatelink" onclick="toggle_private();" - >hide private</a>]</span></td> - </tr> - </table> - </td> -</tr> -</table> -<a name="__init__"></a> -<div> -<table class="details" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr><td> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr valign="top"><td> - <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>, - <span class="sig-arg">msg</span>)</span> - <br /><em class="fname">(Constructor)</em> - </h3> - </td><td align="right" valign="top" - ><span class="codelink"><a href="scapi-pysrc.html#UnknownContentType.__init__">source code</a></span> - </td> - </tr></table> - - <p>x.__init__(...) initializes x; see x.__class__.__doc__ for - signature</p> - <dl class="fields"> - <dt>Overrides: - object.__init__ - <dd><em class="note">(inherited documentation)</em></dd> - </dt> - </dl> -</td></tr></table> -</div> -<a name="__repr__"></a> -<div> -<table class="details" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr><td> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr valign="top"><td> - <h3 class="epydoc"><span class="sig"><span class="sig-name">__repr__</span>(<span class="sig-arg">self</span>)</span> - <br /><em class="fname">(Representation operator)</em> - </h3> - </td><td align="right" valign="top" - ><span class="codelink"><a href="scapi-pysrc.html#UnknownContentType.__repr__">source code</a></span> - </td> - </tr></table> - - <p>repr(x)</p> - <dl class="fields"> - <dt>Overrides: - object.__repr__ - <dd><em class="note">(inherited documentation)</em></dd> - </dt> - </dl> -</td></tr></table> -</div> -<a name="__str__"></a> -<div> -<table class="details" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr><td> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr valign="top"><td> - <h3 class="epydoc"><span class="sig"><span class="sig-name">__str__</span>(<span class="sig-arg">self</span>)</span> - <br /><em class="fname">(Informal representation operator)</em> - </h3> - </td><td align="right" valign="top" - ><span class="codelink"><a href="scapi-pysrc.html#UnknownContentType.__str__">source code</a></span> - </td> - </tr></table> - - <p>str(x)</p> - <dl class="fields"> - <dt>Overrides: - object.__str__ - <dd><em class="note">(inherited documentation)</em></dd> - </dt> - </dl> -</td></tr></table> -</div> -<br /> -<!-- ==================== NAVIGATION BAR ==================== --> -<table class="navbar" border="0" width="100%" cellpadding="0" - bgcolor="#a0c0ff" cellspacing="0"> - <tr valign="middle"> - <!-- Home link --> - <th> <a - href="scapi-module.html">Home</a> </th> - - <!-- Tree link --> - <th> <a - href="module-tree.html">Trees</a> </th> - - <!-- Index link --> - <th> <a - href="identifier-index.html">Indices</a> </th> - - <!-- Help link --> - <th> <a - href="help.html">Help</a> </th> - - <!-- Project homepage --> - <th class="navbar" align="right" width="100%"> - <table border="0" cellpadding="0" cellspacing="0"> - <tr><th class="navbar" align="center" - >SoundCloud API</th> - </tr></table></th> - </tr> -</table> -<table border="0" cellpadding="0" cellspacing="0" width="100%%"> - <tr> - <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Thu Sep 10 00:58:49 2009 - </td> - <td align="right" class="footer"> - <a target="mainFrame" href="http://epydoc.sourceforge.net" - >http://epydoc.sourceforge.net</a> - </td> - </tr> -</table> - -<script type="text/javascript"> - <!-- - // Private objects are initially displayed (because if - // javascript is turned off then we want them to be - // visible); but by default, we want to hide them. So hide - // them unless we have a cookie that says to show them. - checkCookie(); - // --> -</script> -</body> -</html> diff --git a/python_apps/soundcloud-api/docs/api/scapi.User-class.html b/python_apps/soundcloud-api/docs/api/scapi.User-class.html deleted file mode 100644 index 19b1053a9..000000000 --- a/python_apps/soundcloud-api/docs/api/scapi.User-class.html +++ /dev/null @@ -1,264 +0,0 @@ -<?xml version="1.0" encoding="ascii"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <title>scapi.User</title> - <link rel="stylesheet" href="epydoc.css" type="text/css" /> - <script type="text/javascript" src="epydoc.js"></script> -</head> - -<body bgcolor="white" text="black" link="blue" vlink="#204080" - alink="#204080"> -<!-- ==================== NAVIGATION BAR ==================== --> -<table class="navbar" border="0" width="100%" cellpadding="0" - bgcolor="#a0c0ff" cellspacing="0"> - <tr valign="middle"> - <!-- Home link --> - <th> <a - href="scapi-module.html">Home</a> </th> - - <!-- Tree link --> - <th> <a - href="module-tree.html">Trees</a> </th> - - <!-- Index link --> - <th> <a - href="identifier-index.html">Indices</a> </th> - - <!-- Help link --> - <th> <a - href="help.html">Help</a> </th> - - <!-- Project homepage --> - <th class="navbar" align="right" width="100%"> - <table border="0" cellpadding="0" cellspacing="0"> - <tr><th class="navbar" align="center" - >SoundCloud API</th> - </tr></table></th> - </tr> -</table> -<table width="100%" cellpadding="0" cellspacing="0"> - <tr valign="top"> - <td width="100%"> - <span class="breadcrumbs"> - <a href="scapi-module.html">Package scapi</a> :: - Class User - </span> - </td> - <td> - <table cellpadding="0" cellspacing="0"> - <!-- hide/show private --> - <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink" - onclick="toggle_private();">hide private</a>]</span></td></tr> - <tr><td align="right"><span class="options" - >[<a href="frames.html" target="_top">frames</a - >] | <a href="scapi.User-class.html" - target="_top">no frames</a>]</span></td></tr> - </table> - </td> - </tr> -</table> -<!-- ==================== CLASS DESCRIPTION ==================== --> -<h1 class="epydoc">Class User</h1><p class="nomargin-top"><span class="codelink"><a href="scapi-pysrc.html#User">source code</a></span></p> -<pre class="base-tree"> -object --+ - | - <a href="scapi.RESTBase-class.html" onclick="show_private();">RESTBase</a> --+ - | - <strong class="uidshort">User</strong> -</pre> - -<hr /> -<p>A user domain object/resource.</p> - -<!-- ==================== INSTANCE METHODS ==================== --> -<a name="section-InstanceMethods"></a> -<table class="summary" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr bgcolor="#70b0f0" class="table-header"> - <td colspan="2" class="table-header"> - <table border="0" cellpadding="0" cellspacing="0" width="100%"> - <tr valign="top"> - <td align="left"><span class="table-header">Instance Methods</span></td> - <td align="right" valign="top" - ><span class="options">[<a href="#section-InstanceMethods" - class="privatelink" onclick="toggle_private();" - >hide private</a>]</span></td> - </tr> - </table> - </td> -</tr> - <tr> - <td colspan="2" class="summary"> - <p class="indent-wrapped-lines"><b>Inherited from <code><a href="scapi.RESTBase-class.html" onclick="show_private();">RESTBase</a></code></b>: - <code><a href="scapi.RESTBase-class.html#__eq__">__eq__</a></code>, - <code><a href="scapi.RESTBase-class.html#__getattr__">__getattr__</a></code>, - <code><a href="scapi.RESTBase-class.html#__hash__">__hash__</a></code>, - <code><a href="scapi.RESTBase-class.html#__init__">__init__</a></code>, - <code><a href="scapi.RESTBase-class.html#__ne__">__ne__</a></code>, - <code><a href="scapi.RESTBase-class.html#__repr__">__repr__</a></code>, - <code><a href="scapi.RESTBase-class.html#__setattr__">__setattr__</a></code> - </p> - <div class="private"> <p class="indent-wrapped-lines"><b>Inherited from <code><a href="scapi.RESTBase-class.html" onclick="show_private();">RESTBase</a></code></b> (private): - <code><a href="scapi.RESTBase-class.html#_as_arguments" onclick="show_private();">_as_arguments</a></code>, - <code><a href="scapi.RESTBase-class.html#_convert_value" onclick="show_private();">_convert_value</a></code>, - <code><a href="scapi.RESTBase-class.html#_scope" onclick="show_private();">_scope</a></code> - </p></div> - <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>: - <code>__delattr__</code>, - <code>__getattribute__</code>, - <code>__new__</code>, - <code>__reduce__</code>, - <code>__reduce_ex__</code>, - <code>__str__</code> - </p> - </td> - </tr> -</table> -<!-- ==================== CLASS METHODS ==================== --> -<a name="section-ClassMethods"></a> -<table class="summary" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr bgcolor="#70b0f0" class="table-header"> - <td colspan="2" class="table-header"> - <table border="0" cellpadding="0" cellspacing="0" width="100%"> - <tr valign="top"> - <td align="left"><span class="table-header">Class Methods</span></td> - <td align="right" valign="top" - ><span class="options">[<a href="#section-ClassMethods" - class="privatelink" onclick="toggle_private();" - >hide private</a>]</span></td> - </tr> - </table> - </td> -</tr> - <tr> - <td colspan="2" class="summary"> - <p class="indent-wrapped-lines"><b>Inherited from <code><a href="scapi.RESTBase-class.html" onclick="show_private();">RESTBase</a></code></b>: - <code><a href="scapi.RESTBase-class.html#create">create</a></code>, - <code><a href="scapi.RESTBase-class.html#get">get</a></code>, - <code><a href="scapi.RESTBase-class.html#new">new</a></code> - </p> - <div class="private"> <p class="indent-wrapped-lines"><b>Inherited from <code><a href="scapi.RESTBase-class.html" onclick="show_private();">RESTBase</a></code></b> (private): - <code><a href="scapi.RESTBase-class.html#_singleton" onclick="show_private();">_singleton</a></code> - </p></div> - </td> - </tr> -</table> -<!-- ==================== CLASS VARIABLES ==================== --> -<a name="section-ClassVariables"></a> -<table class="summary" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr bgcolor="#70b0f0" class="table-header"> - <td colspan="2" class="table-header"> - <table border="0" cellpadding="0" cellspacing="0" width="100%"> - <tr valign="top"> - <td align="left"><span class="table-header">Class Variables</span></td> - <td align="right" valign="top" - ><span class="options">[<a href="#section-ClassVariables" - class="privatelink" onclick="toggle_private();" - >hide private</a>]</span></td> - </tr> - </table> - </td> -</tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <a name="KIND"></a><span class="summary-name">KIND</span> = <code title="'users'"><code class="variable-quote">'</code><code class="variable-string">users</code><code class="variable-quote">'</code></code> - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <a name="ALIASES"></a><span class="summary-name">ALIASES</span> = <code title="['me', 'permissions', 'contacts', 'user']"><code class="variable-group">[</code><code class="variable-quote">'</code><code class="variable-string">me</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">permissions</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">contacts</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">user</code><code class="variable-quote">'</code><code class="variable-group">]</code></code> - </td> - </tr> - <tr> - <td colspan="2" class="summary"> - <p class="indent-wrapped-lines"><b>Inherited from <code><a href="scapi.RESTBase-class.html" onclick="show_private();">RESTBase</a></code></b>: - <code><a href="scapi.RESTBase-class.html#ALL_DOMAIN_CLASSES">ALL_DOMAIN_CLASSES</a></code>, - <code><a href="scapi.RESTBase-class.html#REGISTRY">REGISTRY</a></code> - </p> - </td> - </tr> -</table> -<!-- ==================== PROPERTIES ==================== --> -<a name="section-Properties"></a> -<table class="summary" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr bgcolor="#70b0f0" class="table-header"> - <td colspan="2" class="table-header"> - <table border="0" cellpadding="0" cellspacing="0" width="100%"> - <tr valign="top"> - <td align="left"><span class="table-header">Properties</span></td> - <td align="right" valign="top" - ><span class="options">[<a href="#section-Properties" - class="privatelink" onclick="toggle_private();" - >hide private</a>]</span></td> - </tr> - </table> - </td> -</tr> - <tr> - <td colspan="2" class="summary"> - <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>: - <code>__class__</code> - </p> - </td> - </tr> -</table> -<!-- ==================== NAVIGATION BAR ==================== --> -<table class="navbar" border="0" width="100%" cellpadding="0" - bgcolor="#a0c0ff" cellspacing="0"> - <tr valign="middle"> - <!-- Home link --> - <th> <a - href="scapi-module.html">Home</a> </th> - - <!-- Tree link --> - <th> <a - href="module-tree.html">Trees</a> </th> - - <!-- Index link --> - <th> <a - href="identifier-index.html">Indices</a> </th> - - <!-- Help link --> - <th> <a - href="help.html">Help</a> </th> - - <!-- Project homepage --> - <th class="navbar" align="right" width="100%"> - <table border="0" cellpadding="0" cellspacing="0"> - <tr><th class="navbar" align="center" - >SoundCloud API</th> - </tr></table></th> - </tr> -</table> -<table border="0" cellpadding="0" cellspacing="0" width="100%%"> - <tr> - <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Thu Sep 10 00:58:49 2009 - </td> - <td align="right" class="footer"> - <a target="mainFrame" href="http://epydoc.sourceforge.net" - >http://epydoc.sourceforge.net</a> - </td> - </tr> -</table> - -<script type="text/javascript"> - <!-- - // Private objects are initially displayed (because if - // javascript is turned off then we want them to be - // visible); but by default, we want to hide them. So hide - // them unless we have a cookie that says to show them. - checkCookie(); - // --> -</script> -</body> -</html> diff --git a/python_apps/soundcloud-api/docs/api/scapi.authentication-module.html b/python_apps/soundcloud-api/docs/api/scapi.authentication-module.html deleted file mode 100644 index 2f6f5fb8e..000000000 --- a/python_apps/soundcloud-api/docs/api/scapi.authentication-module.html +++ /dev/null @@ -1,228 +0,0 @@ -<?xml version="1.0" encoding="ascii"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <title>scapi.authentication</title> - <link rel="stylesheet" href="epydoc.css" type="text/css" /> - <script type="text/javascript" src="epydoc.js"></script> -</head> - -<body bgcolor="white" text="black" link="blue" vlink="#204080" - alink="#204080"> -<!-- ==================== NAVIGATION BAR ==================== --> -<table class="navbar" border="0" width="100%" cellpadding="0" - bgcolor="#a0c0ff" cellspacing="0"> - <tr valign="middle"> - <!-- Home link --> - <th> <a - href="scapi-module.html">Home</a> </th> - - <!-- Tree link --> - <th> <a - href="module-tree.html">Trees</a> </th> - - <!-- Index link --> - <th> <a - href="identifier-index.html">Indices</a> </th> - - <!-- Help link --> - <th> <a - href="help.html">Help</a> </th> - - <!-- Project homepage --> - <th class="navbar" align="right" width="100%"> - <table border="0" cellpadding="0" cellspacing="0"> - <tr><th class="navbar" align="center" - >SoundCloud API</th> - </tr></table></th> - </tr> -</table> -<table width="100%" cellpadding="0" cellspacing="0"> - <tr valign="top"> - <td width="100%"> - <span class="breadcrumbs"> - <a href="scapi-module.html">Package scapi</a> :: - Module authentication - </span> - </td> - <td> - <table cellpadding="0" cellspacing="0"> - <!-- hide/show private --> - <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink" - onclick="toggle_private();">hide private</a>]</span></td></tr> - <tr><td align="right"><span class="options" - >[<a href="frames.html" target="_top">frames</a - >] | <a href="scapi.authentication-module.html" - target="_top">no frames</a>]</span></td></tr> - </table> - </td> - </tr> -</table> -<!-- ==================== MODULE DESCRIPTION ==================== --> -<h1 class="epydoc">Module authentication</h1><p class="nomargin-top"><span class="codelink"><a href="scapi.authentication-pysrc.html">source code</a></span></p> -<!-- ==================== CLASSES ==================== --> -<a name="section-Classes"></a> -<table class="summary" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr bgcolor="#70b0f0" class="table-header"> - <td colspan="2" class="table-header"> - <table border="0" cellpadding="0" cellspacing="0" width="100%"> - <tr valign="top"> - <td align="left"><span class="table-header">Classes</span></td> - <td align="right" valign="top" - ><span class="options">[<a href="#section-Classes" - class="privatelink" onclick="toggle_private();" - >hide private</a>]</span></td> - </tr> - </table> - </td> -</tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <a href="scapi.authentication.OAuthSignatureMethod_HMAC_SHA1-class.html" class="summary-name">OAuthSignatureMethod_HMAC_SHA1</a> - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <a href="scapi.authentication.OAuthAuthenticator-class.html" class="summary-name">OAuthAuthenticator</a> - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <a href="scapi.authentication.BasicAuthenticator-class.html" class="summary-name">BasicAuthenticator</a> - </td> - </tr> -</table> -<!-- ==================== VARIABLES ==================== --> -<a name="section-Variables"></a> -<table class="summary" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr bgcolor="#70b0f0" class="table-header"> - <td colspan="2" class="table-header"> - <table border="0" cellpadding="0" cellspacing="0" width="100%"> - <tr valign="top"> - <td align="left"><span class="table-header">Variables</span></td> - <td align="right" valign="top" - ><span class="options">[<a href="#section-Variables" - class="privatelink" onclick="toggle_private();" - >hide private</a>]</span></td> - </tr> - </table> - </td> -</tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <a href="scapi.authentication-module.html#USE_DOUBLE_ESCAPE_HACK" class="summary-name">USE_DOUBLE_ESCAPE_HACK</a> = <code title="True">True</code><br /> - There seems to be an uncertainty on the way parameters are to be - escaped. - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <a name="logger"></a><span class="summary-name">logger</span> = <code title="logging.getLogger(__name__)">logging.getLogger(__name__)</code> - </td> - </tr> -</table> -<!-- ==================== VARIABLES DETAILS ==================== --> -<a name="section-VariablesDetails"></a> -<table class="details" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr bgcolor="#70b0f0" class="table-header"> - <td colspan="2" class="table-header"> - <table border="0" cellpadding="0" cellspacing="0" width="100%"> - <tr valign="top"> - <td align="left"><span class="table-header">Variables Details</span></td> - <td align="right" valign="top" - ><span class="options">[<a href="#section-VariablesDetails" - class="privatelink" onclick="toggle_private();" - >hide private</a>]</span></td> - </tr> - </table> - </td> -</tr> -</table> -<a name="USE_DOUBLE_ESCAPE_HACK"></a> -<div> -<table class="details" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr><td> - <h3 class="epydoc">USE_DOUBLE_ESCAPE_HACK</h3> - <p>There seems to be an uncertainty on the way parameters are to be - escaped. For now, this variable switches between two escaping - mechanisms.</p> - <p>If True, the passed parameters - GET or POST - are escaped - *twice*.</p> - <dl class="fields"> - </dl> - <dl class="fields"> - <dt>Value:</dt> - <dd><table><tr><td><pre class="variable"> -True -</pre></td></tr></table> -</dd> - </dl> -</td></tr></table> -</div> -<br /> -<!-- ==================== NAVIGATION BAR ==================== --> -<table class="navbar" border="0" width="100%" cellpadding="0" - bgcolor="#a0c0ff" cellspacing="0"> - <tr valign="middle"> - <!-- Home link --> - <th> <a - href="scapi-module.html">Home</a> </th> - - <!-- Tree link --> - <th> <a - href="module-tree.html">Trees</a> </th> - - <!-- Index link --> - <th> <a - href="identifier-index.html">Indices</a> </th> - - <!-- Help link --> - <th> <a - href="help.html">Help</a> </th> - - <!-- Project homepage --> - <th class="navbar" align="right" width="100%"> - <table border="0" cellpadding="0" cellspacing="0"> - <tr><th class="navbar" align="center" - >SoundCloud API</th> - </tr></table></th> - </tr> -</table> -<table border="0" cellpadding="0" cellspacing="0" width="100%%"> - <tr> - <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Thu Sep 10 00:58:49 2009 - </td> - <td align="right" class="footer"> - <a target="mainFrame" href="http://epydoc.sourceforge.net" - >http://epydoc.sourceforge.net</a> - </td> - </tr> -</table> - -<script type="text/javascript"> - <!-- - // Private objects are initially displayed (because if - // javascript is turned off then we want them to be - // visible); but by default, we want to hide them. So hide - // them unless we have a cookie that says to show them. - checkCookie(); - // --> -</script> -</body> -</html> diff --git a/python_apps/soundcloud-api/docs/api/scapi.authentication-pysrc.html b/python_apps/soundcloud-api/docs/api/scapi.authentication-pysrc.html deleted file mode 100644 index 65492b3c9..000000000 --- a/python_apps/soundcloud-api/docs/api/scapi.authentication-pysrc.html +++ /dev/null @@ -1,348 +0,0 @@ -<?xml version="1.0" encoding="ascii"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <title>scapi.authentication</title> - <link rel="stylesheet" href="epydoc.css" type="text/css" /> - <script type="text/javascript" src="epydoc.js"></script> -</head> - -<body bgcolor="white" text="black" link="blue" vlink="#204080" - alink="#204080"> -<!-- ==================== NAVIGATION BAR ==================== --> -<table class="navbar" border="0" width="100%" cellpadding="0" - bgcolor="#a0c0ff" cellspacing="0"> - <tr valign="middle"> - <!-- Home link --> - <th> <a - href="scapi-module.html">Home</a> </th> - - <!-- Tree link --> - <th> <a - href="module-tree.html">Trees</a> </th> - - <!-- Index link --> - <th> <a - href="identifier-index.html">Indices</a> </th> - - <!-- Help link --> - <th> <a - href="help.html">Help</a> </th> - - <!-- Project homepage --> - <th class="navbar" align="right" width="100%"> - <table border="0" cellpadding="0" cellspacing="0"> - <tr><th class="navbar" align="center" - >SoundCloud API</th> - </tr></table></th> - </tr> -</table> -<table width="100%" cellpadding="0" cellspacing="0"> - <tr valign="top"> - <td width="100%"> - <span class="breadcrumbs"> - <a href="scapi-module.html">Package scapi</a> :: - Module authentication - </span> - </td> - <td> - <table cellpadding="0" cellspacing="0"> - <!-- hide/show private --> - <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink" - onclick="toggle_private();">hide private</a>]</span></td></tr> - <tr><td align="right"><span class="options" - >[<a href="frames.html" target="_top">frames</a - >] | <a href="scapi.authentication-pysrc.html" - target="_top">no frames</a>]</span></td></tr> - </table> - </td> - </tr> -</table> -<h1 class="epydoc">Source Code for <a href="scapi.authentication-module.html" onclick="show_private();">Module scapi.authentication</a></h1> -<pre class="py-src"> -<a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-comment">## SouncCloudAPI implements a Python wrapper around the SoundCloud RESTful</tt> </tt> -<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## API</tt> </tt> -<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">##</tt> </tt> -<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## Copyright (C) 2008 Diez B. Roggisch</tt> </tt> -<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## Contact mailto:deets@soundcloud.com</tt> </tt> -<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">##</tt> </tt> -<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## This library is free software; you can redistribute it and/or</tt> </tt> -<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## modify it under the terms of the GNU Lesser General Public</tt> </tt> -<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## License as published by the Free Software Foundation; either</tt> </tt> -<a name="L10"></a><tt class="py-lineno"> 10</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## version 2.1 of the License, or (at your option) any later version.</tt> </tt> -<a name="L11"></a><tt class="py-lineno"> 11</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">##</tt> </tt> -<a name="L12"></a><tt class="py-lineno"> 12</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## This library is distributed in the hope that it will be useful,</tt> </tt> -<a name="L13"></a><tt class="py-lineno"> 13</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## but WITHOUT ANY WARRANTY; without even the implied warranty of</tt> </tt> -<a name="L14"></a><tt class="py-lineno"> 14</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</tt> </tt> -<a name="L15"></a><tt class="py-lineno"> 15</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## Lesser General Public License for more details.</tt> </tt> -<a name="L16"></a><tt class="py-lineno"> 16</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">##</tt> </tt> -<a name="L17"></a><tt class="py-lineno"> 17</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## You should have received a copy of the GNU Lesser General Public</tt> </tt> -<a name="L18"></a><tt class="py-lineno"> 18</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## License along with this library; if not, write to the Free Software</tt> </tt> -<a name="L19"></a><tt class="py-lineno"> 19</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA</tt> </tt> -<a name="L20"></a><tt class="py-lineno"> 20</tt> <tt class="py-line"><tt class="py-comment"></tt> </tt> -<a name="L21"></a><tt class="py-lineno"> 21</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">base64</tt> </tt> -<a name="L22"></a><tt class="py-lineno"> 22</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">time</tt><tt class="py-op">,</tt> <tt class="py-name">random</tt> </tt> -<a name="L23"></a><tt class="py-lineno"> 23</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">urlparse</tt> </tt> -<a name="L24"></a><tt class="py-lineno"> 24</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">hmac</tt> </tt> -<a name="L25"></a><tt class="py-lineno"> 25</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">hashlib</tt> </tt> -<a name="L26"></a><tt class="py-lineno"> 26</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-0" class="py-name" targets="Package scapi=scapi-module.html"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-0', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-1" class="py-name" targets="Module scapi.util=scapi.util-module.html"><a title="scapi.util" class="py-name" href="#" onclick="return doclink('link-1', 'util', 'link-1');">util</a></tt> <tt class="py-keyword">import</tt> <tt id="link-2" class="py-name" targets="Function scapi.util.escape()=scapi.util-module.html#escape"><a title="scapi.util.escape" class="py-name" href="#" onclick="return doclink('link-2', 'escape', 'link-2');">escape</a></tt> </tt> -<a name="L27"></a><tt class="py-lineno"> 27</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">logging</tt> </tt> -<a name="L28"></a><tt class="py-lineno"> 28</tt> <tt class="py-line"> </tt> -<a name="L29"></a><tt class="py-lineno"> 29</tt> <tt class="py-line"> </tt> -<a name="L30"></a><tt class="py-lineno"> 30</tt> <tt class="py-line"><tt id="link-3" class="py-name" targets="Variable scapi.authentication.USE_DOUBLE_ESCAPE_HACK=scapi.authentication-module.html#USE_DOUBLE_ESCAPE_HACK"><a title="scapi.authentication.USE_DOUBLE_ESCAPE_HACK" class="py-name" href="#" onclick="return doclink('link-3', 'USE_DOUBLE_ESCAPE_HACK', 'link-3');">USE_DOUBLE_ESCAPE_HACK</a></tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt> -<a name="L31"></a><tt class="py-lineno"> 31</tt> <tt class="py-line"><tt class="py-string">"""</tt> </tt> -<a name="L32"></a><tt class="py-lineno"> 32</tt> <tt class="py-line"><tt class="py-string">There seems to be an uncertainty on the way</tt> </tt> -<a name="L33"></a><tt class="py-lineno"> 33</tt> <tt class="py-line"><tt class="py-string">parameters are to be escaped. For now, this</tt> </tt> -<a name="L34"></a><tt class="py-lineno"> 34</tt> <tt class="py-line"><tt class="py-string">variable switches between two escaping mechanisms.</tt> </tt> -<a name="L35"></a><tt class="py-lineno"> 35</tt> <tt class="py-line"><tt class="py-string"></tt> </tt> -<a name="L36"></a><tt class="py-lineno"> 36</tt> <tt class="py-line"><tt class="py-string">If True, the passed parameters - GET or POST - are</tt> </tt> -<a name="L37"></a><tt class="py-lineno"> 37</tt> <tt class="py-line"><tt class="py-string">escaped *twice*.</tt> </tt> -<a name="L38"></a><tt class="py-lineno"> 38</tt> <tt class="py-line"><tt class="py-string">"""</tt> </tt> -<a name="L39"></a><tt class="py-lineno"> 39</tt> <tt class="py-line"> </tt> -<a name="L40"></a><tt class="py-lineno"> 40</tt> <tt class="py-line"><tt id="link-4" class="py-name" targets="Variable scapi.authentication.logger=scapi.authentication-module.html#logger,Variable scapi.logger=scapi-module.html#logger,Variable scapi.tests.scapi_tests.logger=scapi.tests.scapi_tests-module.html#logger,Variable scapi.tests.test_connect.logger=scapi.tests.test_connect-module.html#logger,Variable scapi.tests.test_oauth.logger=scapi.tests.test_oauth-module.html#logger"><a title="scapi.authentication.logger -scapi.logger -scapi.tests.scapi_tests.logger -scapi.tests.test_connect.logger -scapi.tests.test_oauth.logger" class="py-name" href="#" onclick="return doclink('link-4', 'logger', 'link-4');">logger</a></tt> <tt class="py-op">=</tt> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">getLogger</tt><tt class="py-op">(</tt><tt class="py-name">__name__</tt><tt class="py-op">)</tt> </tt> -<a name="L41"></a><tt class="py-lineno"> 41</tt> <tt class="py-line"> </tt> -<a name="OAuthSignatureMethod_HMAC_SHA1"></a><div id="OAuthSignatureMethod_HMAC_SHA1-def"><a name="L42"></a><tt class="py-lineno"> 42</tt> <a class="py-toggle" href="#" id="OAuthSignatureMethod_HMAC_SHA1-toggle" onclick="return toggle('OAuthSignatureMethod_HMAC_SHA1');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="scapi.authentication.OAuthSignatureMethod_HMAC_SHA1-class.html">OAuthSignatureMethod_HMAC_SHA1</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="OAuthSignatureMethod_HMAC_SHA1-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="OAuthSignatureMethod_HMAC_SHA1-expanded"><a name="L43"></a><tt class="py-lineno"> 43</tt> <tt class="py-line"> </tt> -<a name="L44"></a><tt class="py-lineno"> 44</tt> <tt class="py-line"> <tt id="link-5" class="py-name" targets="Variable scapi.authentication.OAuthSignatureMethod_HMAC_SHA1.FORBIDDEN=scapi.authentication.OAuthSignatureMethod_HMAC_SHA1-class.html#FORBIDDEN"><a title="scapi.authentication.OAuthSignatureMethod_HMAC_SHA1.FORBIDDEN" class="py-name" href="#" onclick="return doclink('link-5', 'FORBIDDEN', 'link-5');">FORBIDDEN</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-string">'realm'</tt><tt class="py-op">,</tt> <tt class="py-string">'oauth_signature'</tt><tt class="py-op">]</tt> </tt> -<a name="L45"></a><tt class="py-lineno"> 45</tt> <tt class="py-line"> </tt> -<a name="OAuthSignatureMethod_HMAC_SHA1.get_name"></a><div id="OAuthSignatureMethod_HMAC_SHA1.get_name-def"><a name="L46"></a><tt class="py-lineno"> 46</tt> <a class="py-toggle" href="#" id="OAuthSignatureMethod_HMAC_SHA1.get_name-toggle" onclick="return toggle('OAuthSignatureMethod_HMAC_SHA1.get_name');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.authentication.OAuthSignatureMethod_HMAC_SHA1-class.html#get_name">get_name</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="OAuthSignatureMethod_HMAC_SHA1.get_name-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="OAuthSignatureMethod_HMAC_SHA1.get_name-expanded"><a name="L47"></a><tt class="py-lineno"> 47</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-string">'HMAC-SHA1'</tt> </tt> -</div><a name="L48"></a><tt class="py-lineno"> 48</tt> <tt class="py-line"> </tt> -<a name="OAuthSignatureMethod_HMAC_SHA1.build_signature"></a><div id="OAuthSignatureMethod_HMAC_SHA1.build_signature-def"><a name="L49"></a><tt class="py-lineno"> 49</tt> <a class="py-toggle" href="#" id="OAuthSignatureMethod_HMAC_SHA1.build_signature-toggle" onclick="return toggle('OAuthSignatureMethod_HMAC_SHA1.build_signature');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.authentication.OAuthSignatureMethod_HMAC_SHA1-class.html#build_signature">build_signature</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">request</tt><tt class="py-op">,</tt> <tt class="py-param">parameters</tt><tt class="py-op">,</tt> <tt class="py-param">consumer_secret</tt><tt class="py-op">,</tt> <tt class="py-param">token_secret</tt><tt class="py-op">,</tt> <tt class="py-param">oauth_parameters</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="OAuthSignatureMethod_HMAC_SHA1.build_signature-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="OAuthSignatureMethod_HMAC_SHA1.build_signature-expanded"><a name="L50"></a><tt class="py-lineno"> 50</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-6" class="py-name"><a title="scapi.authentication.logger -scapi.logger -scapi.tests.scapi_tests.logger -scapi.tests.test_connect.logger -scapi.tests.test_oauth.logger" class="py-name" href="#" onclick="return doclink('link-6', 'logger', 'link-4');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">level</tt> <tt class="py-op">==</tt> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">DEBUG</tt><tt class="py-op">:</tt> </tt> -<a name="L51"></a><tt class="py-lineno"> 51</tt> <tt class="py-line"> <tt id="link-7" class="py-name"><a title="scapi.authentication.logger -scapi.logger -scapi.tests.scapi_tests.logger -scapi.tests.test_connect.logger -scapi.tests.test_oauth.logger" class="py-name" href="#" onclick="return doclink('link-7', 'logger', 'link-4');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-string">"request: %r"</tt><tt class="py-op">,</tt> <tt class="py-name">request</tt><tt class="py-op">)</tt> </tt> -<a name="L52"></a><tt class="py-lineno"> 52</tt> <tt class="py-line"> <tt id="link-8" class="py-name"><a title="scapi.authentication.logger -scapi.logger -scapi.tests.scapi_tests.logger -scapi.tests.test_connect.logger -scapi.tests.test_oauth.logger" class="py-name" href="#" onclick="return doclink('link-8', 'logger', 'link-4');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-string">"parameters: %r"</tt><tt class="py-op">,</tt> <tt class="py-name">parameters</tt><tt class="py-op">)</tt> </tt> -<a name="L53"></a><tt class="py-lineno"> 53</tt> <tt class="py-line"> <tt id="link-9" class="py-name"><a title="scapi.authentication.logger -scapi.logger -scapi.tests.scapi_tests.logger -scapi.tests.test_connect.logger -scapi.tests.test_oauth.logger" class="py-name" href="#" onclick="return doclink('link-9', 'logger', 'link-4');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-string">"consumer_secret: %r"</tt><tt class="py-op">,</tt> <tt class="py-name">consumer_secret</tt><tt class="py-op">)</tt> </tt> -<a name="L54"></a><tt class="py-lineno"> 54</tt> <tt class="py-line"> <tt id="link-10" class="py-name"><a title="scapi.authentication.logger -scapi.logger -scapi.tests.scapi_tests.logger -scapi.tests.test_connect.logger -scapi.tests.test_oauth.logger" class="py-name" href="#" onclick="return doclink('link-10', 'logger', 'link-4');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-string">"token_secret: %r"</tt><tt class="py-op">,</tt> <tt class="py-name">token_secret</tt><tt class="py-op">)</tt> </tt> -<a name="L55"></a><tt class="py-lineno"> 55</tt> <tt class="py-line"> <tt id="link-11" class="py-name"><a title="scapi.authentication.logger -scapi.logger -scapi.tests.scapi_tests.logger -scapi.tests.test_connect.logger -scapi.tests.test_oauth.logger" class="py-name" href="#" onclick="return doclink('link-11', 'logger', 'link-4');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-string">"oauth_parameters: %r"</tt><tt class="py-op">,</tt> <tt class="py-name">oauth_parameters</tt><tt class="py-op">)</tt> </tt> -<a name="L56"></a><tt class="py-lineno"> 56</tt> <tt class="py-line"> </tt> -<a name="L57"></a><tt class="py-lineno"> 57</tt> <tt class="py-line"> </tt> -<a name="L58"></a><tt class="py-lineno"> 58</tt> <tt class="py-line"> <tt class="py-name">temp</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt> -<a name="L59"></a><tt class="py-lineno"> 59</tt> <tt class="py-line"> <tt class="py-name">temp</tt><tt class="py-op">.</tt><tt class="py-name">update</tt><tt class="py-op">(</tt><tt class="py-name">oauth_parameters</tt><tt class="py-op">)</tt> </tt> -<a name="L60"></a><tt class="py-lineno"> 60</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">p</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-12" class="py-name"><a title="scapi.authentication.OAuthSignatureMethod_HMAC_SHA1.FORBIDDEN" class="py-name" href="#" onclick="return doclink('link-12', 'FORBIDDEN', 'link-5');">FORBIDDEN</a></tt><tt class="py-op">:</tt> </tt> -<a name="L61"></a><tt class="py-lineno"> 61</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">p</tt> <tt class="py-keyword">in</tt> <tt class="py-name">temp</tt><tt class="py-op">:</tt> </tt> -<a name="L62"></a><tt class="py-lineno"> 62</tt> <tt class="py-line"> <tt class="py-keyword">del</tt> <tt class="py-name">temp</tt><tt class="py-op">[</tt><tt class="py-name">p</tt><tt class="py-op">]</tt> </tt> -<a name="L63"></a><tt class="py-lineno"> 63</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">parameters</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> -<a name="L64"></a><tt class="py-lineno"> 64</tt> <tt class="py-line"> <tt class="py-name">temp</tt><tt class="py-op">.</tt><tt class="py-name">update</tt><tt class="py-op">(</tt><tt class="py-name">parameters</tt><tt class="py-op">)</tt> </tt> -<a name="L65"></a><tt class="py-lineno"> 65</tt> <tt class="py-line"> <tt class="py-name">sig</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt> </tt> -<a name="L66"></a><tt class="py-lineno"> 66</tt> <tt class="py-line"> <tt id="link-13" class="py-name"><a title="scapi.util.escape" class="py-name" href="#" onclick="return doclink('link-13', 'escape', 'link-2');">escape</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-14" class="py-name" targets="Method scapi.authentication.OAuthSignatureMethod_HMAC_SHA1.get_normalized_http_method()=scapi.authentication.OAuthSignatureMethod_HMAC_SHA1-class.html#get_normalized_http_method"><a title="scapi.authentication.OAuthSignatureMethod_HMAC_SHA1.get_normalized_http_method" class="py-name" href="#" onclick="return doclink('link-14', 'get_normalized_http_method', 'link-14');">get_normalized_http_method</a></tt><tt class="py-op">(</tt><tt class="py-name">request</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt> -<a name="L67"></a><tt class="py-lineno"> 67</tt> <tt class="py-line"> <tt id="link-15" class="py-name"><a title="scapi.util.escape" class="py-name" href="#" onclick="return doclink('link-15', 'escape', 'link-2');">escape</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-16" class="py-name" targets="Method scapi.authentication.OAuthSignatureMethod_HMAC_SHA1.get_normalized_http_url()=scapi.authentication.OAuthSignatureMethod_HMAC_SHA1-class.html#get_normalized_http_url"><a title="scapi.authentication.OAuthSignatureMethod_HMAC_SHA1.get_normalized_http_url" class="py-name" href="#" onclick="return doclink('link-16', 'get_normalized_http_url', 'link-16');">get_normalized_http_url</a></tt><tt class="py-op">(</tt><tt class="py-name">request</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt> -<a name="L68"></a><tt class="py-lineno"> 68</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-17" class="py-name" targets="Method scapi.authentication.OAuthSignatureMethod_HMAC_SHA1.get_normalized_parameters()=scapi.authentication.OAuthSignatureMethod_HMAC_SHA1-class.html#get_normalized_parameters"><a title="scapi.authentication.OAuthSignatureMethod_HMAC_SHA1.get_normalized_parameters" class="py-name" href="#" onclick="return doclink('link-17', 'get_normalized_parameters', 'link-17');">get_normalized_parameters</a></tt><tt class="py-op">(</tt><tt class="py-name">temp</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-comment"># these are escaped in the method already</tt> </tt> -<a name="L69"></a><tt class="py-lineno"> 69</tt> <tt class="py-line"> <tt class="py-op">)</tt> </tt> -<a name="L70"></a><tt class="py-lineno"> 70</tt> <tt class="py-line"> </tt> -<a name="L71"></a><tt class="py-lineno"> 71</tt> <tt class="py-line"> <tt class="py-name">key</tt> <tt class="py-op">=</tt> <tt class="py-string">'%s&'</tt> <tt class="py-op">%</tt> <tt class="py-name">consumer_secret</tt> </tt> -<a name="L72"></a><tt class="py-lineno"> 72</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">token_secret</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> -<a name="L73"></a><tt class="py-lineno"> 73</tt> <tt class="py-line"> <tt class="py-name">key</tt> <tt class="py-op">+=</tt> <tt class="py-name">token_secret</tt> </tt> -<a name="L74"></a><tt class="py-lineno"> 74</tt> <tt class="py-line"> <tt class="py-name">raw</tt> <tt class="py-op">=</tt> <tt class="py-string">'&'</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">sig</tt><tt class="py-op">)</tt> </tt> -<a name="L75"></a><tt class="py-lineno"> 75</tt> <tt class="py-line"> <tt id="link-18" class="py-name"><a title="scapi.authentication.logger -scapi.logger -scapi.tests.scapi_tests.logger -scapi.tests.test_connect.logger -scapi.tests.test_oauth.logger" class="py-name" href="#" onclick="return doclink('link-18', 'logger', 'link-4');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-string">"raw basestring: %s"</tt><tt class="py-op">,</tt> <tt class="py-name">raw</tt><tt class="py-op">)</tt> </tt> -<a name="L76"></a><tt class="py-lineno"> 76</tt> <tt class="py-line"> <tt id="link-19" class="py-name"><a title="scapi.authentication.logger -scapi.logger -scapi.tests.scapi_tests.logger -scapi.tests.test_connect.logger -scapi.tests.test_oauth.logger" class="py-name" href="#" onclick="return doclink('link-19', 'logger', 'link-4');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-string">"key: %s"</tt><tt class="py-op">,</tt> <tt class="py-name">key</tt><tt class="py-op">)</tt> </tt> -<a name="L77"></a><tt class="py-lineno"> 77</tt> <tt class="py-line"> <tt class="py-comment"># hmac object</tt> </tt> -<a name="L78"></a><tt class="py-lineno"> 78</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">hashed</tt> <tt class="py-op">=</tt> <tt class="py-name">hmac</tt><tt class="py-op">.</tt><tt id="link-20" class="py-name" targets="Class Method scapi.RESTBase.new()=scapi.RESTBase-class.html#new"><a title="scapi.RESTBase.new" class="py-name" href="#" onclick="return doclink('link-20', 'new', 'link-20');">new</a></tt><tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">,</tt> <tt class="py-name">raw</tt><tt class="py-op">,</tt> <tt class="py-name">hashlib</tt><tt class="py-op">.</tt><tt class="py-name">sha1</tt><tt class="py-op">)</tt> </tt> -<a name="L79"></a><tt class="py-lineno"> 79</tt> <tt class="py-line"> <tt class="py-comment"># calculate the digest base 64</tt> </tt> -<a name="L80"></a><tt class="py-lineno"> 80</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">signature</tt> <tt class="py-op">=</tt> <tt id="link-21" class="py-name"><a title="scapi.util.escape" class="py-name" href="#" onclick="return doclink('link-21', 'escape', 'link-2');">escape</a></tt><tt class="py-op">(</tt><tt class="py-name">base64</tt><tt class="py-op">.</tt><tt class="py-name">b64encode</tt><tt class="py-op">(</tt><tt class="py-name">hashed</tt><tt class="py-op">.</tt><tt class="py-name">digest</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L81"></a><tt class="py-lineno"> 81</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">signature</tt> </tt> -</div><a name="L82"></a><tt class="py-lineno"> 82</tt> <tt class="py-line"> </tt> -<a name="L83"></a><tt class="py-lineno"> 83</tt> <tt class="py-line"> </tt> -<a name="OAuthSignatureMethod_HMAC_SHA1.get_normalized_http_method"></a><div id="OAuthSignatureMethod_HMAC_SHA1.get_normalized_http_method-def"><a name="L84"></a><tt class="py-lineno"> 84</tt> <a class="py-toggle" href="#" id="OAuthSignatureMethod_HMAC_SHA1.get_normalized_http_method-toggle" onclick="return toggle('OAuthSignatureMethod_HMAC_SHA1.get_normalized_http_method');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.authentication.OAuthSignatureMethod_HMAC_SHA1-class.html#get_normalized_http_method">get_normalized_http_method</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">request</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="OAuthSignatureMethod_HMAC_SHA1.get_normalized_http_method-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="OAuthSignatureMethod_HMAC_SHA1.get_normalized_http_method-expanded"><a name="L85"></a><tt class="py-lineno"> 85</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">request</tt><tt class="py-op">.</tt><tt class="py-name">get_method</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">upper</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -</div><a name="L86"></a><tt class="py-lineno"> 86</tt> <tt class="py-line"> </tt> -<a name="L87"></a><tt class="py-lineno"> 87</tt> <tt class="py-line"> </tt> -<a name="L88"></a><tt class="py-lineno"> 88</tt> <tt class="py-line"> <tt class="py-comment"># parses the url and rebuilds it to be scheme://host/path</tt> </tt> -<a name="OAuthSignatureMethod_HMAC_SHA1.get_normalized_http_url"></a><div id="OAuthSignatureMethod_HMAC_SHA1.get_normalized_http_url-def"><a name="L89"></a><tt class="py-lineno"> 89</tt> <a class="py-toggle" href="#" id="OAuthSignatureMethod_HMAC_SHA1.get_normalized_http_url-toggle" onclick="return toggle('OAuthSignatureMethod_HMAC_SHA1.get_normalized_http_url');">-</a><tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.authentication.OAuthSignatureMethod_HMAC_SHA1-class.html#get_normalized_http_url">get_normalized_http_url</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">request</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="OAuthSignatureMethod_HMAC_SHA1.get_normalized_http_url-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="OAuthSignatureMethod_HMAC_SHA1.get_normalized_http_url-expanded"><a name="L90"></a><tt class="py-lineno"> 90</tt> <tt class="py-line"> <tt class="py-name">url</tt> <tt class="py-op">=</tt> <tt class="py-name">request</tt><tt class="py-op">.</tt><tt class="py-name">get_full_url</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L91"></a><tt class="py-lineno"> 91</tt> <tt class="py-line"> <tt class="py-name">parts</tt> <tt class="py-op">=</tt> <tt class="py-name">urlparse</tt><tt class="py-op">.</tt><tt class="py-name">urlparse</tt><tt class="py-op">(</tt><tt class="py-name">url</tt><tt class="py-op">)</tt> </tt> -<a name="L92"></a><tt class="py-lineno"> 92</tt> <tt class="py-line"> <tt class="py-name">url_string</tt> <tt class="py-op">=</tt> <tt class="py-string">'%s://%s%s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">parts</tt><tt class="py-op">.</tt><tt class="py-name">scheme</tt><tt class="py-op">,</tt> <tt class="py-name">parts</tt><tt class="py-op">.</tt><tt class="py-name">netloc</tt><tt class="py-op">,</tt> <tt class="py-name">parts</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">)</tt> </tt> -<a name="L93"></a><tt class="py-lineno"> 93</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">url_string</tt> </tt> -</div><a name="L94"></a><tt class="py-lineno"> 94</tt> <tt class="py-line"> </tt> -<a name="L95"></a><tt class="py-lineno"> 95</tt> <tt class="py-line"> </tt> -<a name="OAuthSignatureMethod_HMAC_SHA1.get_normalized_parameters"></a><div id="OAuthSignatureMethod_HMAC_SHA1.get_normalized_parameters-def"><a name="L96"></a><tt class="py-lineno"> 96</tt> <a class="py-toggle" href="#" id="OAuthSignatureMethod_HMAC_SHA1.get_normalized_parameters-toggle" onclick="return toggle('OAuthSignatureMethod_HMAC_SHA1.get_normalized_parameters');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.authentication.OAuthSignatureMethod_HMAC_SHA1-class.html#get_normalized_parameters">get_normalized_parameters</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">params</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="OAuthSignatureMethod_HMAC_SHA1.get_normalized_parameters-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="OAuthSignatureMethod_HMAC_SHA1.get_normalized_parameters-expanded"><a name="L97"></a><tt class="py-lineno"> 97</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">params</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> -<a name="L98"></a><tt class="py-lineno"> 98</tt> <tt class="py-line"> <tt class="py-name">params</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt> -<a name="L99"></a><tt class="py-lineno"> 99</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> -<a name="L100"></a><tt class="py-lineno">100</tt> <tt class="py-line"> <tt class="py-comment"># exclude the signature if it exists</tt> </tt> -<a name="L101"></a><tt class="py-lineno">101</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">del</tt> <tt class="py-name">params</tt><tt class="py-op">[</tt><tt class="py-string">'oauth_signature'</tt><tt class="py-op">]</tt> </tt> -<a name="L102"></a><tt class="py-lineno">102</tt> <tt class="py-line"> <tt class="py-keyword">except</tt><tt class="py-op">:</tt> </tt> -<a name="L103"></a><tt class="py-lineno">103</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt> -<a name="L104"></a><tt class="py-lineno">104</tt> <tt class="py-line"> <tt class="py-name">key_values</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt> -<a name="L105"></a><tt class="py-lineno">105</tt> <tt class="py-line"> </tt> -<a name="L106"></a><tt class="py-lineno">106</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">key</tt><tt class="py-op">,</tt> <tt class="py-name">values</tt> <tt class="py-keyword">in</tt> <tt class="py-name">params</tt><tt class="py-op">.</tt><tt class="py-name">iteritems</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L107"></a><tt class="py-lineno">107</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">values</tt><tt class="py-op">,</tt> <tt class="py-name">file</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L108"></a><tt class="py-lineno">108</tt> <tt class="py-line"> <tt class="py-keyword">continue</tt> </tt> -<a name="L109"></a><tt class="py-lineno">109</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">values</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-name">int</tt><tt class="py-op">,</tt> <tt class="py-name">long</tt><tt class="py-op">,</tt> <tt class="py-name">float</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L110"></a><tt class="py-lineno">110</tt> <tt class="py-line"> <tt class="py-name">values</tt> <tt class="py-op">=</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">values</tt><tt class="py-op">)</tt> </tt> -<a name="L111"></a><tt class="py-lineno">111</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">values</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-name">list</tt><tt class="py-op">,</tt> <tt class="py-name">tuple</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L112"></a><tt class="py-lineno">112</tt> <tt class="py-line"> <tt class="py-name">values</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">v</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-name">v</tt> <tt class="py-keyword">in</tt> <tt class="py-name">values</tt><tt class="py-op">]</tt> </tt> -<a name="L113"></a><tt class="py-lineno">113</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">values</tt><tt class="py-op">,</tt> <tt class="py-name">basestring</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L114"></a><tt class="py-lineno">114</tt> <tt class="py-line"> <tt class="py-name">values</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">values</tt><tt class="py-op">]</tt> </tt> -<a name="L115"></a><tt class="py-lineno">115</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-22" class="py-name"><a title="scapi.authentication.USE_DOUBLE_ESCAPE_HACK" class="py-name" href="#" onclick="return doclink('link-22', 'USE_DOUBLE_ESCAPE_HACK', 'link-3');">USE_DOUBLE_ESCAPE_HACK</a></tt> <tt class="py-keyword">and</tt> <tt class="py-keyword">not</tt> <tt class="py-name">key</tt><tt class="py-op">.</tt><tt class="py-name">startswith</tt><tt class="py-op">(</tt><tt class="py-string">"ouath"</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L116"></a><tt class="py-lineno">116</tt> <tt class="py-line"> <tt class="py-name">key</tt> <tt class="py-op">=</tt> <tt id="link-23" class="py-name"><a title="scapi.util.escape" class="py-name" href="#" onclick="return doclink('link-23', 'escape', 'link-2');">escape</a></tt><tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">)</tt> </tt> -<a name="L117"></a><tt class="py-lineno">117</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">v</tt> <tt class="py-keyword">in</tt> <tt class="py-name">values</tt><tt class="py-op">:</tt> </tt> -<a name="L118"></a><tt class="py-lineno">118</tt> <tt class="py-line"> <tt class="py-name">v</tt> <tt class="py-op">=</tt> <tt class="py-name">v</tt><tt class="py-op">.</tt><tt class="py-name">encode</tt><tt class="py-op">(</tt><tt class="py-string">"utf-8"</tt><tt class="py-op">)</tt> </tt> -<a name="L119"></a><tt class="py-lineno">119</tt> <tt class="py-line"> <tt class="py-name">key</tt> <tt class="py-op">=</tt> <tt class="py-name">key</tt><tt class="py-op">.</tt><tt class="py-name">encode</tt><tt class="py-op">(</tt><tt class="py-string">"utf-8"</tt><tt class="py-op">)</tt> </tt> -<a name="L120"></a><tt class="py-lineno">120</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-24" class="py-name"><a title="scapi.authentication.USE_DOUBLE_ESCAPE_HACK" class="py-name" href="#" onclick="return doclink('link-24', 'USE_DOUBLE_ESCAPE_HACK', 'link-3');">USE_DOUBLE_ESCAPE_HACK</a></tt> <tt class="py-keyword">and</tt> <tt class="py-keyword">not</tt> <tt class="py-name">key</tt><tt class="py-op">.</tt><tt class="py-name">startswith</tt><tt class="py-op">(</tt><tt class="py-string">"oauth"</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L121"></a><tt class="py-lineno">121</tt> <tt class="py-line"> <tt class="py-comment"># this is a dirty hack to make the</tt> </tt> -<a name="L122"></a><tt class="py-lineno">122</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># thing work with the current server-side</tt> </tt> -<a name="L123"></a><tt class="py-lineno">123</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># implementation. Or is it by spec? </tt> </tt> -<a name="L124"></a><tt class="py-lineno">124</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">v</tt> <tt class="py-op">=</tt> <tt id="link-25" class="py-name"><a title="scapi.util.escape" class="py-name" href="#" onclick="return doclink('link-25', 'escape', 'link-2');">escape</a></tt><tt class="py-op">(</tt><tt class="py-name">v</tt><tt class="py-op">)</tt> </tt> -<a name="L125"></a><tt class="py-lineno">125</tt> <tt class="py-line"> <tt class="py-name">key_values</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt id="link-26" class="py-name"><a title="scapi.util.escape" class="py-name" href="#" onclick="return doclink('link-26', 'escape', 'link-2');">escape</a></tt><tt class="py-op">(</tt><tt class="py-string">"%s=%s"</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">,</tt> <tt class="py-name">v</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L126"></a><tt class="py-lineno">126</tt> <tt class="py-line"> <tt class="py-comment"># sort lexicographically, first after key, then after value</tt> </tt> -<a name="L127"></a><tt class="py-lineno">127</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">key_values</tt><tt class="py-op">.</tt><tt class="py-name">sort</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L128"></a><tt class="py-lineno">128</tt> <tt class="py-line"> <tt class="py-comment"># combine key value pairs in string</tt> </tt> -<a name="L129"></a><tt class="py-lineno">129</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">return</tt> <tt id="link-27" class="py-name"><a title="scapi.util.escape" class="py-name" href="#" onclick="return doclink('link-27', 'escape', 'link-2');">escape</a></tt><tt class="py-op">(</tt><tt class="py-string">'&'</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">key_values</tt><tt class="py-op">)</tt> </tt> -</div></div><a name="L130"></a><tt class="py-lineno">130</tt> <tt class="py-line"> </tt> -<a name="L131"></a><tt class="py-lineno">131</tt> <tt class="py-line"> </tt> -<a name="OAuthAuthenticator"></a><div id="OAuthAuthenticator-def"><a name="L132"></a><tt class="py-lineno">132</tt> <a class="py-toggle" href="#" id="OAuthAuthenticator-toggle" onclick="return toggle('OAuthAuthenticator');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="scapi.authentication.OAuthAuthenticator-class.html">OAuthAuthenticator</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="OAuthAuthenticator-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="OAuthAuthenticator-expanded"><a name="L133"></a><tt class="py-lineno">133</tt> <tt class="py-line"> <tt id="link-28" class="py-name" targets="Variable scapi.authentication.OAuthAuthenticator.OAUTH_API_VERSION=scapi.authentication.OAuthAuthenticator-class.html#OAUTH_API_VERSION"><a title="scapi.authentication.OAuthAuthenticator.OAUTH_API_VERSION" class="py-name" href="#" onclick="return doclink('link-28', 'OAUTH_API_VERSION', 'link-28');">OAUTH_API_VERSION</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'1.0'</tt> </tt> -<a name="L134"></a><tt class="py-lineno">134</tt> <tt class="py-line"> <tt id="link-29" class="py-name" targets="Variable scapi.authentication.OAuthAuthenticator.AUTHORIZATION_HEADER=scapi.authentication.OAuthAuthenticator-class.html#AUTHORIZATION_HEADER"><a title="scapi.authentication.OAuthAuthenticator.AUTHORIZATION_HEADER" class="py-name" href="#" onclick="return doclink('link-29', 'AUTHORIZATION_HEADER', 'link-29');">AUTHORIZATION_HEADER</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"Authorization"</tt> </tt> -<a name="L135"></a><tt class="py-lineno">135</tt> <tt class="py-line"> </tt> -<a name="OAuthAuthenticator.__init__"></a><div id="OAuthAuthenticator.__init__-def"><a name="L136"></a><tt class="py-lineno">136</tt> <a class="py-toggle" href="#" id="OAuthAuthenticator.__init__-toggle" onclick="return toggle('OAuthAuthenticator.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.authentication.OAuthAuthenticator-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">consumer</tt><tt class="py-op">,</tt> <tt class="py-param">consumer_secret</tt><tt class="py-op">,</tt> <tt class="py-param">token</tt><tt class="py-op">,</tt> <tt class="py-param">secret</tt><tt class="py-op">,</tt> <tt class="py-param">signature_method</tt><tt class="py-op">=</tt><tt id="link-30" class="py-name" targets="Class scapi.authentication.OAuthSignatureMethod_HMAC_SHA1=scapi.authentication.OAuthSignatureMethod_HMAC_SHA1-class.html"><a title="scapi.authentication.OAuthSignatureMethod_HMAC_SHA1" class="py-name" href="#" onclick="return doclink('link-30', 'OAuthSignatureMethod_HMAC_SHA1', 'link-30');">OAuthSignatureMethod_HMAC_SHA1</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="OAuthAuthenticator.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="OAuthAuthenticator.__init__-expanded"><a name="L137"></a><tt class="py-lineno">137</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_consumer</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_token</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_secret</tt> <tt class="py-op">=</tt> <tt class="py-name">consumer</tt><tt class="py-op">,</tt> <tt class="py-name">token</tt><tt class="py-op">,</tt> <tt class="py-name">secret</tt> </tt> -<a name="L138"></a><tt class="py-lineno">138</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_consumer_secret</tt> <tt class="py-op">=</tt> <tt class="py-name">consumer_secret</tt> </tt> -<a name="L139"></a><tt class="py-lineno">139</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_signature_method</tt> <tt class="py-op">=</tt> <tt class="py-name">signature_method</tt> </tt> -<a name="L140"></a><tt class="py-lineno">140</tt> <tt class="py-line"> <tt class="py-name">random</tt><tt class="py-op">.</tt><tt class="py-name">seed</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -</div><a name="L141"></a><tt class="py-lineno">141</tt> <tt class="py-line"> </tt> -<a name="L142"></a><tt class="py-lineno">142</tt> <tt class="py-line"> </tt> -<a name="OAuthAuthenticator.augment_request"></a><div id="OAuthAuthenticator.augment_request-def"><a name="L143"></a><tt class="py-lineno">143</tt> <a class="py-toggle" href="#" id="OAuthAuthenticator.augment_request-toggle" onclick="return toggle('OAuthAuthenticator.augment_request');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.authentication.OAuthAuthenticator-class.html#augment_request">augment_request</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">req</tt><tt class="py-op">,</tt> <tt class="py-param">parameters</tt><tt class="py-op">,</tt> <tt class="py-param">use_multipart</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">,</tt> <tt class="py-param">oauth_callback</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">oauth_verifier</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="OAuthAuthenticator.augment_request-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="OAuthAuthenticator.augment_request-expanded"><a name="L144"></a><tt class="py-lineno">144</tt> <tt class="py-line"> <tt class="py-name">oauth_parameters</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> </tt> -<a name="L145"></a><tt class="py-lineno">145</tt> <tt class="py-line"> <tt class="py-string">'oauth_consumer_key'</tt><tt class="py-op">:</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_consumer</tt><tt class="py-op">,</tt> </tt> -<a name="L146"></a><tt class="py-lineno">146</tt> <tt class="py-line"> <tt class="py-string">'oauth_timestamp'</tt><tt class="py-op">:</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-31" class="py-name" targets="Method scapi.authentication.OAuthAuthenticator.generate_timestamp()=scapi.authentication.OAuthAuthenticator-class.html#generate_timestamp"><a title="scapi.authentication.OAuthAuthenticator.generate_timestamp" class="py-name" href="#" onclick="return doclink('link-31', 'generate_timestamp', 'link-31');">generate_timestamp</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt> -<a name="L147"></a><tt class="py-lineno">147</tt> <tt class="py-line"> <tt class="py-string">'oauth_nonce'</tt><tt class="py-op">:</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-32" class="py-name" targets="Method scapi.authentication.OAuthAuthenticator.generate_nonce()=scapi.authentication.OAuthAuthenticator-class.html#generate_nonce"><a title="scapi.authentication.OAuthAuthenticator.generate_nonce" class="py-name" href="#" onclick="return doclink('link-32', 'generate_nonce', 'link-32');">generate_nonce</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt> -<a name="L148"></a><tt class="py-lineno">148</tt> <tt class="py-line"> <tt class="py-string">'oauth_version'</tt><tt class="py-op">:</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-33" class="py-name"><a title="scapi.authentication.OAuthAuthenticator.OAUTH_API_VERSION" class="py-name" href="#" onclick="return doclink('link-33', 'OAUTH_API_VERSION', 'link-28');">OAUTH_API_VERSION</a></tt><tt class="py-op">,</tt> </tt> -<a name="L149"></a><tt class="py-lineno">149</tt> <tt class="py-line"> <tt class="py-string">'oauth_signature_method'</tt> <tt class="py-op">:</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_signature_method</tt><tt class="py-op">.</tt><tt id="link-34" class="py-name" targets="Method scapi.authentication.OAuthSignatureMethod_HMAC_SHA1.get_name()=scapi.authentication.OAuthSignatureMethod_HMAC_SHA1-class.html#get_name"><a title="scapi.authentication.OAuthSignatureMethod_HMAC_SHA1.get_name" class="py-name" href="#" onclick="return doclink('link-34', 'get_name', 'link-34');">get_name</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt> -<a name="L150"></a><tt class="py-lineno">150</tt> <tt class="py-line"> <tt class="py-comment">#'realm' : "http://soundcloud.com",</tt> </tt> -<a name="L151"></a><tt class="py-lineno">151</tt> <tt class="py-line"> <tt class="py-op">}</tt> </tt> -<a name="L152"></a><tt class="py-lineno">152</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_token</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> -<a name="L153"></a><tt class="py-lineno">153</tt> <tt class="py-line"> <tt class="py-name">oauth_parameters</tt><tt class="py-op">[</tt><tt class="py-string">'oauth_token'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_token</tt> </tt> -<a name="L154"></a><tt class="py-lineno">154</tt> <tt class="py-line"> </tt> -<a name="L155"></a><tt class="py-lineno">155</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">oauth_callback</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> -<a name="L156"></a><tt class="py-lineno">156</tt> <tt class="py-line"> <tt class="py-name">oauth_parameters</tt><tt class="py-op">[</tt><tt class="py-string">'oauth_callback'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">oauth_callback</tt> </tt> -<a name="L157"></a><tt class="py-lineno">157</tt> <tt class="py-line"> </tt> -<a name="L158"></a><tt class="py-lineno">158</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">oauth_verifier</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> -<a name="L159"></a><tt class="py-lineno">159</tt> <tt class="py-line"> <tt class="py-name">oauth_parameters</tt><tt class="py-op">[</tt><tt class="py-string">'oauth_verifier'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">oauth_verifier</tt> </tt> -<a name="L160"></a><tt class="py-lineno">160</tt> <tt class="py-line"> </tt> -<a name="L161"></a><tt class="py-lineno">161</tt> <tt class="py-line"> <tt class="py-comment"># in case we upload large files, we don't</tt> </tt> -<a name="L162"></a><tt class="py-lineno">162</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># sign the request over the parameters</tt> </tt> -<a name="L163"></a><tt class="py-lineno">163</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">if</tt> <tt class="py-name">use_multipart</tt><tt class="py-op">:</tt> </tt> -<a name="L164"></a><tt class="py-lineno">164</tt> <tt class="py-line"> <tt class="py-name">parameters</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt> -<a name="L165"></a><tt class="py-lineno">165</tt> <tt class="py-line"> </tt> -<a name="L166"></a><tt class="py-lineno">166</tt> <tt class="py-line"> <tt class="py-name">oauth_parameters</tt><tt class="py-op">[</tt><tt class="py-string">'oauth_signature'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_signature_method</tt><tt class="py-op">.</tt><tt id="link-35" class="py-name" targets="Method scapi.authentication.OAuthSignatureMethod_HMAC_SHA1.build_signature()=scapi.authentication.OAuthSignatureMethod_HMAC_SHA1-class.html#build_signature"><a title="scapi.authentication.OAuthSignatureMethod_HMAC_SHA1.build_signature" class="py-name" href="#" onclick="return doclink('link-35', 'build_signature', 'link-35');">build_signature</a></tt><tt class="py-op">(</tt><tt class="py-name">req</tt><tt class="py-op">,</tt> </tt> -<a name="L167"></a><tt class="py-lineno">167</tt> <tt class="py-line"> <tt class="py-name">parameters</tt><tt class="py-op">,</tt> </tt> -<a name="L168"></a><tt class="py-lineno">168</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_consumer_secret</tt><tt class="py-op">,</tt> </tt> -<a name="L169"></a><tt class="py-lineno">169</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_secret</tt><tt class="py-op">,</tt> </tt> -<a name="L170"></a><tt class="py-lineno">170</tt> <tt class="py-line"> <tt class="py-name">oauth_parameters</tt><tt class="py-op">)</tt> </tt> -<a name="L171"></a><tt class="py-lineno">171</tt> <tt class="py-line"> <tt class="py-keyword">def</tt> <tt class="py-def-name">to_header</tt><tt class="py-op">(</tt><tt class="py-param">d</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L172"></a><tt class="py-lineno">172</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-string">","</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-string">'%s="%s"'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">,</tt> <tt class="py-name">value</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-name">key</tt><tt class="py-op">,</tt> <tt class="py-name">value</tt> <tt class="py-keyword">in</tt> <tt class="py-name">sorted</tt><tt class="py-op">(</tt><tt class="py-name">oauth_parameters</tt><tt class="py-op">.</tt><tt class="py-name">items</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -</div><a name="L173"></a><tt class="py-lineno">173</tt> <tt class="py-line"> </tt> -<a name="L174"></a><tt class="py-lineno">174</tt> <tt class="py-line"> <tt class="py-name">req</tt><tt class="py-op">.</tt><tt class="py-name">add_header</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-36" class="py-name"><a title="scapi.authentication.OAuthAuthenticator.AUTHORIZATION_HEADER" class="py-name" href="#" onclick="return doclink('link-36', 'AUTHORIZATION_HEADER', 'link-29');">AUTHORIZATION_HEADER</a></tt><tt class="py-op">,</tt> <tt class="py-string">"OAuth %s"</tt> <tt class="py-op">%</tt> <tt class="py-name">to_header</tt><tt class="py-op">(</tt><tt class="py-name">oauth_parameters</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -</div><a name="L175"></a><tt class="py-lineno">175</tt> <tt class="py-line"> </tt> -<a name="OAuthAuthenticator.generate_timestamp"></a><div id="OAuthAuthenticator.generate_timestamp-def"><a name="L176"></a><tt class="py-lineno">176</tt> <a class="py-toggle" href="#" id="OAuthAuthenticator.generate_timestamp-toggle" onclick="return toggle('OAuthAuthenticator.generate_timestamp');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.authentication.OAuthAuthenticator-class.html#generate_timestamp">generate_timestamp</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="OAuthAuthenticator.generate_timestamp-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="OAuthAuthenticator.generate_timestamp-expanded"><a name="L177"></a><tt class="py-lineno">177</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">int</tt><tt class="py-op">(</tt><tt class="py-name">time</tt><tt class="py-op">.</tt><tt class="py-name">time</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-comment"># * 1000.0)</tt> </tt> -</div><a name="L178"></a><tt class="py-lineno">178</tt> <tt class="py-line"> </tt> -<a name="OAuthAuthenticator.generate_nonce"></a><div id="OAuthAuthenticator.generate_nonce-def"><a name="L179"></a><tt class="py-lineno">179</tt> <a class="py-toggle" href="#" id="OAuthAuthenticator.generate_nonce-toggle" onclick="return toggle('OAuthAuthenticator.generate_nonce');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.authentication.OAuthAuthenticator-class.html#generate_nonce">generate_nonce</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">length</tt><tt class="py-op">=</tt><tt class="py-number">8</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="OAuthAuthenticator.generate_nonce-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="OAuthAuthenticator.generate_nonce-expanded"><a name="L180"></a><tt class="py-lineno">180</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-string">''</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">random</tt><tt class="py-op">.</tt><tt class="py-name">randint</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-number">9</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-name">length</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -</div></div><a name="L181"></a><tt class="py-lineno">181</tt> <tt class="py-line"> </tt> -<a name="L182"></a><tt class="py-lineno">182</tt> <tt class="py-line"> </tt> -<a name="BasicAuthenticator"></a><div id="BasicAuthenticator-def"><a name="L183"></a><tt class="py-lineno">183</tt> <a class="py-toggle" href="#" id="BasicAuthenticator-toggle" onclick="return toggle('BasicAuthenticator');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="scapi.authentication.BasicAuthenticator-class.html">BasicAuthenticator</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="BasicAuthenticator-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="BasicAuthenticator-expanded"><a name="L184"></a><tt class="py-lineno">184</tt> <tt class="py-line"> </tt> -<a name="BasicAuthenticator.__init__"></a><div id="BasicAuthenticator.__init__-def"><a name="L185"></a><tt class="py-lineno">185</tt> <a class="py-toggle" href="#" id="BasicAuthenticator.__init__-toggle" onclick="return toggle('BasicAuthenticator.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.authentication.BasicAuthenticator-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">user</tt><tt class="py-op">,</tt> <tt class="py-param">password</tt><tt class="py-op">,</tt> <tt class="py-param">consumer</tt><tt class="py-op">,</tt> <tt class="py-param">consumer_secret</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="BasicAuthenticator.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="BasicAuthenticator.__init__-expanded"><a name="L186"></a><tt class="py-lineno">186</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_base64string</tt> <tt class="py-op">=</tt> <tt class="py-name">base64</tt><tt class="py-op">.</tt><tt class="py-name">encodestring</tt><tt class="py-op">(</tt><tt class="py-string">"%s:%s"</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">user</tt><tt class="py-op">,</tt> <tt class="py-name">password</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt> -<a name="L187"></a><tt class="py-lineno">187</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_x_auth_header</tt> <tt class="py-op">=</tt> <tt class="py-string">'OAuth oauth_consumer_key="%s" oauth_consumer_secret="%s"'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">consumer</tt><tt class="py-op">,</tt> <tt class="py-name">consumer_secret</tt><tt class="py-op">)</tt> </tt> -</div><a name="L188"></a><tt class="py-lineno">188</tt> <tt class="py-line"> </tt> -<a name="BasicAuthenticator.augment_request"></a><div id="BasicAuthenticator.augment_request-def"><a name="L189"></a><tt class="py-lineno">189</tt> <a class="py-toggle" href="#" id="BasicAuthenticator.augment_request-toggle" onclick="return toggle('BasicAuthenticator.augment_request');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.authentication.BasicAuthenticator-class.html#augment_request">augment_request</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">req</tt><tt class="py-op">,</tt> <tt class="py-param">parameters</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="BasicAuthenticator.augment_request-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="BasicAuthenticator.augment_request-expanded"><a name="L190"></a><tt class="py-lineno">190</tt> <tt class="py-line"> <tt class="py-name">req</tt><tt class="py-op">.</tt><tt class="py-name">add_header</tt><tt class="py-op">(</tt><tt class="py-string">"Authorization"</tt><tt class="py-op">,</tt> <tt class="py-string">"Basic %s"</tt> <tt class="py-op">%</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_base64string</tt><tt class="py-op">)</tt> </tt> -<a name="L191"></a><tt class="py-lineno">191</tt> <tt class="py-line"> <tt class="py-name">req</tt><tt class="py-op">.</tt><tt class="py-name">add_header</tt><tt class="py-op">(</tt><tt class="py-string">"X-Authorization"</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_x_auth_header</tt><tt class="py-op">)</tt> </tt> -</div></div><a name="L192"></a><tt class="py-lineno">192</tt> <tt class="py-line"> </tt><script type="text/javascript"> -<!-- -expandto(location.href); -// --> -</script> -</pre> -<br /> -<!-- ==================== NAVIGATION BAR ==================== --> -<table class="navbar" border="0" width="100%" cellpadding="0" - bgcolor="#a0c0ff" cellspacing="0"> - <tr valign="middle"> - <!-- Home link --> - <th> <a - href="scapi-module.html">Home</a> </th> - - <!-- Tree link --> - <th> <a - href="module-tree.html">Trees</a> </th> - - <!-- Index link --> - <th> <a - href="identifier-index.html">Indices</a> </th> - - <!-- Help link --> - <th> <a - href="help.html">Help</a> </th> - - <!-- Project homepage --> - <th class="navbar" align="right" width="100%"> - <table border="0" cellpadding="0" cellspacing="0"> - <tr><th class="navbar" align="center" - >SoundCloud API</th> - </tr></table></th> - </tr> -</table> -<table border="0" cellpadding="0" cellspacing="0" width="100%%"> - <tr> - <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Thu Sep 10 00:58:50 2009 - </td> - <td align="right" class="footer"> - <a target="mainFrame" href="http://epydoc.sourceforge.net" - >http://epydoc.sourceforge.net</a> - </td> - </tr> -</table> - -<script type="text/javascript"> - <!-- - // Private objects are initially displayed (because if - // javascript is turned off then we want them to be - // visible); but by default, we want to hide them. So hide - // them unless we have a cookie that says to show them. - checkCookie(); - // --> -</script> -</body> -</html> diff --git a/python_apps/soundcloud-api/docs/api/scapi.authentication.BasicAuthenticator-class.html b/python_apps/soundcloud-api/docs/api/scapi.authentication.BasicAuthenticator-class.html deleted file mode 100644 index 437ef8444..000000000 --- a/python_apps/soundcloud-api/docs/api/scapi.authentication.BasicAuthenticator-class.html +++ /dev/null @@ -1,267 +0,0 @@ -<?xml version="1.0" encoding="ascii"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <title>scapi.authentication.BasicAuthenticator</title> - <link rel="stylesheet" href="epydoc.css" type="text/css" /> - <script type="text/javascript" src="epydoc.js"></script> -</head> - -<body bgcolor="white" text="black" link="blue" vlink="#204080" - alink="#204080"> -<!-- ==================== NAVIGATION BAR ==================== --> -<table class="navbar" border="0" width="100%" cellpadding="0" - bgcolor="#a0c0ff" cellspacing="0"> - <tr valign="middle"> - <!-- Home link --> - <th> <a - href="scapi-module.html">Home</a> </th> - - <!-- Tree link --> - <th> <a - href="module-tree.html">Trees</a> </th> - - <!-- Index link --> - <th> <a - href="identifier-index.html">Indices</a> </th> - - <!-- Help link --> - <th> <a - href="help.html">Help</a> </th> - - <!-- Project homepage --> - <th class="navbar" align="right" width="100%"> - <table border="0" cellpadding="0" cellspacing="0"> - <tr><th class="navbar" align="center" - >SoundCloud API</th> - </tr></table></th> - </tr> -</table> -<table width="100%" cellpadding="0" cellspacing="0"> - <tr valign="top"> - <td width="100%"> - <span class="breadcrumbs"> - <a href="scapi-module.html">Package scapi</a> :: - <a href="scapi.authentication-module.html" onclick="show_private();">Module authentication</a> :: - Class BasicAuthenticator - </span> - </td> - <td> - <table cellpadding="0" cellspacing="0"> - <!-- hide/show private --> - <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink" - onclick="toggle_private();">hide private</a>]</span></td></tr> - <tr><td align="right"><span class="options" - >[<a href="frames.html" target="_top">frames</a - >] | <a href="scapi.authentication.BasicAuthenticator-class.html" - target="_top">no frames</a>]</span></td></tr> - </table> - </td> - </tr> -</table> -<!-- ==================== CLASS DESCRIPTION ==================== --> -<h1 class="epydoc">Class BasicAuthenticator</h1><p class="nomargin-top"><span class="codelink"><a href="scapi.authentication-pysrc.html#BasicAuthenticator">source code</a></span></p> -<pre class="base-tree"> -object --+ - | - <strong class="uidshort">BasicAuthenticator</strong> -</pre> - -<hr /> -<!-- ==================== INSTANCE METHODS ==================== --> -<a name="section-InstanceMethods"></a> -<table class="summary" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr bgcolor="#70b0f0" class="table-header"> - <td colspan="2" class="table-header"> - <table border="0" cellpadding="0" cellspacing="0" width="100%"> - <tr valign="top"> - <td align="left"><span class="table-header">Instance Methods</span></td> - <td align="right" valign="top" - ><span class="options">[<a href="#section-InstanceMethods" - class="privatelink" onclick="toggle_private();" - >hide private</a>]</span></td> - </tr> - </table> - </td> -</tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a href="scapi.authentication.BasicAuthenticator-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>, - <span class="summary-sig-arg">user</span>, - <span class="summary-sig-arg">password</span>, - <span class="summary-sig-arg">consumer</span>, - <span class="summary-sig-arg">consumer_secret</span>)</span><br /> - x.__init__(...) initializes x; see x.__class__.__doc__ for signature</td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi.authentication-pysrc.html#BasicAuthenticator.__init__">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a name="augment_request"></a><span class="summary-sig-name">augment_request</span>(<span class="summary-sig-arg">self</span>, - <span class="summary-sig-arg">req</span>, - <span class="summary-sig-arg">parameters</span>)</span></td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi.authentication-pysrc.html#BasicAuthenticator.augment_request">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> - <tr> - <td colspan="2" class="summary"> - <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>: - <code>__delattr__</code>, - <code>__getattribute__</code>, - <code>__hash__</code>, - <code>__new__</code>, - <code>__reduce__</code>, - <code>__reduce_ex__</code>, - <code>__repr__</code>, - <code>__setattr__</code>, - <code>__str__</code> - </p> - </td> - </tr> -</table> -<!-- ==================== PROPERTIES ==================== --> -<a name="section-Properties"></a> -<table class="summary" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr bgcolor="#70b0f0" class="table-header"> - <td colspan="2" class="table-header"> - <table border="0" cellpadding="0" cellspacing="0" width="100%"> - <tr valign="top"> - <td align="left"><span class="table-header">Properties</span></td> - <td align="right" valign="top" - ><span class="options">[<a href="#section-Properties" - class="privatelink" onclick="toggle_private();" - >hide private</a>]</span></td> - </tr> - </table> - </td> -</tr> - <tr> - <td colspan="2" class="summary"> - <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>: - <code>__class__</code> - </p> - </td> - </tr> -</table> -<!-- ==================== METHOD DETAILS ==================== --> -<a name="section-MethodDetails"></a> -<table class="details" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr bgcolor="#70b0f0" class="table-header"> - <td colspan="2" class="table-header"> - <table border="0" cellpadding="0" cellspacing="0" width="100%"> - <tr valign="top"> - <td align="left"><span class="table-header">Method Details</span></td> - <td align="right" valign="top" - ><span class="options">[<a href="#section-MethodDetails" - class="privatelink" onclick="toggle_private();" - >hide private</a>]</span></td> - </tr> - </table> - </td> -</tr> -</table> -<a name="__init__"></a> -<div> -<table class="details" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr><td> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr valign="top"><td> - <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>, - <span class="sig-arg">user</span>, - <span class="sig-arg">password</span>, - <span class="sig-arg">consumer</span>, - <span class="sig-arg">consumer_secret</span>)</span> - <br /><em class="fname">(Constructor)</em> - </h3> - </td><td align="right" valign="top" - ><span class="codelink"><a href="scapi.authentication-pysrc.html#BasicAuthenticator.__init__">source code</a></span> - </td> - </tr></table> - - <p>x.__init__(...) initializes x; see x.__class__.__doc__ for - signature</p> - <dl class="fields"> - <dt>Overrides: - object.__init__ - <dd><em class="note">(inherited documentation)</em></dd> - </dt> - </dl> -</td></tr></table> -</div> -<br /> -<!-- ==================== NAVIGATION BAR ==================== --> -<table class="navbar" border="0" width="100%" cellpadding="0" - bgcolor="#a0c0ff" cellspacing="0"> - <tr valign="middle"> - <!-- Home link --> - <th> <a - href="scapi-module.html">Home</a> </th> - - <!-- Tree link --> - <th> <a - href="module-tree.html">Trees</a> </th> - - <!-- Index link --> - <th> <a - href="identifier-index.html">Indices</a> </th> - - <!-- Help link --> - <th> <a - href="help.html">Help</a> </th> - - <!-- Project homepage --> - <th class="navbar" align="right" width="100%"> - <table border="0" cellpadding="0" cellspacing="0"> - <tr><th class="navbar" align="center" - >SoundCloud API</th> - </tr></table></th> - </tr> -</table> -<table border="0" cellpadding="0" cellspacing="0" width="100%%"> - <tr> - <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Thu Sep 10 00:58:49 2009 - </td> - <td align="right" class="footer"> - <a target="mainFrame" href="http://epydoc.sourceforge.net" - >http://epydoc.sourceforge.net</a> - </td> - </tr> -</table> - -<script type="text/javascript"> - <!-- - // Private objects are initially displayed (because if - // javascript is turned off then we want them to be - // visible); but by default, we want to hide them. So hide - // them unless we have a cookie that says to show them. - checkCookie(); - // --> -</script> -</body> -</html> diff --git a/python_apps/soundcloud-api/docs/api/scapi.authentication.OAuthAuthenticator-class.html b/python_apps/soundcloud-api/docs/api/scapi.authentication.OAuthAuthenticator-class.html deleted file mode 100644 index de4541aa2..000000000 --- a/python_apps/soundcloud-api/docs/api/scapi.authentication.OAuthAuthenticator-class.html +++ /dev/null @@ -1,337 +0,0 @@ -<?xml version="1.0" encoding="ascii"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <title>scapi.authentication.OAuthAuthenticator</title> - <link rel="stylesheet" href="epydoc.css" type="text/css" /> - <script type="text/javascript" src="epydoc.js"></script> -</head> - -<body bgcolor="white" text="black" link="blue" vlink="#204080" - alink="#204080"> -<!-- ==================== NAVIGATION BAR ==================== --> -<table class="navbar" border="0" width="100%" cellpadding="0" - bgcolor="#a0c0ff" cellspacing="0"> - <tr valign="middle"> - <!-- Home link --> - <th> <a - href="scapi-module.html">Home</a> </th> - - <!-- Tree link --> - <th> <a - href="module-tree.html">Trees</a> </th> - - <!-- Index link --> - <th> <a - href="identifier-index.html">Indices</a> </th> - - <!-- Help link --> - <th> <a - href="help.html">Help</a> </th> - - <!-- Project homepage --> - <th class="navbar" align="right" width="100%"> - <table border="0" cellpadding="0" cellspacing="0"> - <tr><th class="navbar" align="center" - >SoundCloud API</th> - </tr></table></th> - </tr> -</table> -<table width="100%" cellpadding="0" cellspacing="0"> - <tr valign="top"> - <td width="100%"> - <span class="breadcrumbs"> - <a href="scapi-module.html">Package scapi</a> :: - <a href="scapi.authentication-module.html" onclick="show_private();">Module authentication</a> :: - Class OAuthAuthenticator - </span> - </td> - <td> - <table cellpadding="0" cellspacing="0"> - <!-- hide/show private --> - <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink" - onclick="toggle_private();">hide private</a>]</span></td></tr> - <tr><td align="right"><span class="options" - >[<a href="frames.html" target="_top">frames</a - >] | <a href="scapi.authentication.OAuthAuthenticator-class.html" - target="_top">no frames</a>]</span></td></tr> - </table> - </td> - </tr> -</table> -<!-- ==================== CLASS DESCRIPTION ==================== --> -<h1 class="epydoc">Class OAuthAuthenticator</h1><p class="nomargin-top"><span class="codelink"><a href="scapi.authentication-pysrc.html#OAuthAuthenticator">source code</a></span></p> -<pre class="base-tree"> -object --+ - | - <strong class="uidshort">OAuthAuthenticator</strong> -</pre> - -<hr /> -<!-- ==================== INSTANCE METHODS ==================== --> -<a name="section-InstanceMethods"></a> -<table class="summary" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr bgcolor="#70b0f0" class="table-header"> - <td colspan="2" class="table-header"> - <table border="0" cellpadding="0" cellspacing="0" width="100%"> - <tr valign="top"> - <td align="left"><span class="table-header">Instance Methods</span></td> - <td align="right" valign="top" - ><span class="options">[<a href="#section-InstanceMethods" - class="privatelink" onclick="toggle_private();" - >hide private</a>]</span></td> - </tr> - </table> - </td> -</tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a href="scapi.authentication.OAuthAuthenticator-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>, - <span class="summary-sig-arg">consumer</span>, - <span class="summary-sig-arg">consumer_secret</span>, - <span class="summary-sig-arg">token</span>, - <span class="summary-sig-arg">secret</span>, - <span class="summary-sig-arg">signature_method</span>=<span class="summary-sig-default">OAuthSignatureMethod_HMAC_SHA1()</span>)</span><br /> - x.__init__(...) initializes x; see x.__class__.__doc__ for signature</td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi.authentication-pysrc.html#OAuthAuthenticator.__init__">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a name="augment_request"></a><span class="summary-sig-name">augment_request</span>(<span class="summary-sig-arg">self</span>, - <span class="summary-sig-arg">req</span>, - <span class="summary-sig-arg">parameters</span>, - <span class="summary-sig-arg">use_multipart</span>=<span class="summary-sig-default">False</span>, - <span class="summary-sig-arg">oauth_callback</span>=<span class="summary-sig-default">None</span>, - <span class="summary-sig-arg">oauth_verifier</span>=<span class="summary-sig-default">None</span>)</span></td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi.authentication-pysrc.html#OAuthAuthenticator.augment_request">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a name="generate_timestamp"></a><span class="summary-sig-name">generate_timestamp</span>(<span class="summary-sig-arg">self</span>)</span></td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi.authentication-pysrc.html#OAuthAuthenticator.generate_timestamp">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a name="generate_nonce"></a><span class="summary-sig-name">generate_nonce</span>(<span class="summary-sig-arg">self</span>, - <span class="summary-sig-arg">length</span>=<span class="summary-sig-default">8</span>)</span></td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi.authentication-pysrc.html#OAuthAuthenticator.generate_nonce">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> - <tr> - <td colspan="2" class="summary"> - <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>: - <code>__delattr__</code>, - <code>__getattribute__</code>, - <code>__hash__</code>, - <code>__new__</code>, - <code>__reduce__</code>, - <code>__reduce_ex__</code>, - <code>__repr__</code>, - <code>__setattr__</code>, - <code>__str__</code> - </p> - </td> - </tr> -</table> -<!-- ==================== CLASS VARIABLES ==================== --> -<a name="section-ClassVariables"></a> -<table class="summary" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr bgcolor="#70b0f0" class="table-header"> - <td colspan="2" class="table-header"> - <table border="0" cellpadding="0" cellspacing="0" width="100%"> - <tr valign="top"> - <td align="left"><span class="table-header">Class Variables</span></td> - <td align="right" valign="top" - ><span class="options">[<a href="#section-ClassVariables" - class="privatelink" onclick="toggle_private();" - >hide private</a>]</span></td> - </tr> - </table> - </td> -</tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <a name="OAUTH_API_VERSION"></a><span class="summary-name">OAUTH_API_VERSION</span> = <code title="'1.0'"><code class="variable-quote">'</code><code class="variable-string">1.0</code><code class="variable-quote">'</code></code> - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <a name="AUTHORIZATION_HEADER"></a><span class="summary-name">AUTHORIZATION_HEADER</span> = <code title="'Authorization'"><code class="variable-quote">'</code><code class="variable-string">Authorization</code><code class="variable-quote">'</code></code> - </td> - </tr> -</table> -<!-- ==================== PROPERTIES ==================== --> -<a name="section-Properties"></a> -<table class="summary" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr bgcolor="#70b0f0" class="table-header"> - <td colspan="2" class="table-header"> - <table border="0" cellpadding="0" cellspacing="0" width="100%"> - <tr valign="top"> - <td align="left"><span class="table-header">Properties</span></td> - <td align="right" valign="top" - ><span class="options">[<a href="#section-Properties" - class="privatelink" onclick="toggle_private();" - >hide private</a>]</span></td> - </tr> - </table> - </td> -</tr> - <tr> - <td colspan="2" class="summary"> - <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>: - <code>__class__</code> - </p> - </td> - </tr> -</table> -<!-- ==================== METHOD DETAILS ==================== --> -<a name="section-MethodDetails"></a> -<table class="details" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr bgcolor="#70b0f0" class="table-header"> - <td colspan="2" class="table-header"> - <table border="0" cellpadding="0" cellspacing="0" width="100%"> - <tr valign="top"> - <td align="left"><span class="table-header">Method Details</span></td> - <td align="right" valign="top" - ><span class="options">[<a href="#section-MethodDetails" - class="privatelink" onclick="toggle_private();" - >hide private</a>]</span></td> - </tr> - </table> - </td> -</tr> -</table> -<a name="__init__"></a> -<div> -<table class="details" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr><td> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr valign="top"><td> - <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>, - <span class="sig-arg">consumer</span>, - <span class="sig-arg">consumer_secret</span>, - <span class="sig-arg">token</span>, - <span class="sig-arg">secret</span>, - <span class="sig-arg">signature_method</span>=<span class="sig-default">OAuthSignatureMethod_HMAC_SHA1()</span>)</span> - <br /><em class="fname">(Constructor)</em> - </h3> - </td><td align="right" valign="top" - ><span class="codelink"><a href="scapi.authentication-pysrc.html#OAuthAuthenticator.__init__">source code</a></span> - </td> - </tr></table> - - <p>x.__init__(...) initializes x; see x.__class__.__doc__ for - signature</p> - <dl class="fields"> - <dt>Overrides: - object.__init__ - <dd><em class="note">(inherited documentation)</em></dd> - </dt> - </dl> -</td></tr></table> -</div> -<br /> -<!-- ==================== NAVIGATION BAR ==================== --> -<table class="navbar" border="0" width="100%" cellpadding="0" - bgcolor="#a0c0ff" cellspacing="0"> - <tr valign="middle"> - <!-- Home link --> - <th> <a - href="scapi-module.html">Home</a> </th> - - <!-- Tree link --> - <th> <a - href="module-tree.html">Trees</a> </th> - - <!-- Index link --> - <th> <a - href="identifier-index.html">Indices</a> </th> - - <!-- Help link --> - <th> <a - href="help.html">Help</a> </th> - - <!-- Project homepage --> - <th class="navbar" align="right" width="100%"> - <table border="0" cellpadding="0" cellspacing="0"> - <tr><th class="navbar" align="center" - >SoundCloud API</th> - </tr></table></th> - </tr> -</table> -<table border="0" cellpadding="0" cellspacing="0" width="100%%"> - <tr> - <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Thu Sep 10 00:58:49 2009 - </td> - <td align="right" class="footer"> - <a target="mainFrame" href="http://epydoc.sourceforge.net" - >http://epydoc.sourceforge.net</a> - </td> - </tr> -</table> - -<script type="text/javascript"> - <!-- - // Private objects are initially displayed (because if - // javascript is turned off then we want them to be - // visible); but by default, we want to hide them. So hide - // them unless we have a cookie that says to show them. - checkCookie(); - // --> -</script> -</body> -</html> diff --git a/python_apps/soundcloud-api/docs/api/scapi.authentication.OAuthSignatureMethod_HMAC_SHA1-class.html b/python_apps/soundcloud-api/docs/api/scapi.authentication.OAuthSignatureMethod_HMAC_SHA1-class.html deleted file mode 100644 index 82e3a5ee0..000000000 --- a/python_apps/soundcloud-api/docs/api/scapi.authentication.OAuthSignatureMethod_HMAC_SHA1-class.html +++ /dev/null @@ -1,294 +0,0 @@ -<?xml version="1.0" encoding="ascii"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <title>scapi.authentication.OAuthSignatureMethod_HMAC_SHA1</title> - <link rel="stylesheet" href="epydoc.css" type="text/css" /> - <script type="text/javascript" src="epydoc.js"></script> -</head> - -<body bgcolor="white" text="black" link="blue" vlink="#204080" - alink="#204080"> -<!-- ==================== NAVIGATION BAR ==================== --> -<table class="navbar" border="0" width="100%" cellpadding="0" - bgcolor="#a0c0ff" cellspacing="0"> - <tr valign="middle"> - <!-- Home link --> - <th> <a - href="scapi-module.html">Home</a> </th> - - <!-- Tree link --> - <th> <a - href="module-tree.html">Trees</a> </th> - - <!-- Index link --> - <th> <a - href="identifier-index.html">Indices</a> </th> - - <!-- Help link --> - <th> <a - href="help.html">Help</a> </th> - - <!-- Project homepage --> - <th class="navbar" align="right" width="100%"> - <table border="0" cellpadding="0" cellspacing="0"> - <tr><th class="navbar" align="center" - >SoundCloud API</th> - </tr></table></th> - </tr> -</table> -<table width="100%" cellpadding="0" cellspacing="0"> - <tr valign="top"> - <td width="100%"> - <span class="breadcrumbs"> - <a href="scapi-module.html">Package scapi</a> :: - <a href="scapi.authentication-module.html" onclick="show_private();">Module authentication</a> :: - Class OAuthSignatureMethod_HMAC_SHA1 - </span> - </td> - <td> - <table cellpadding="0" cellspacing="0"> - <!-- hide/show private --> - <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink" - onclick="toggle_private();">hide private</a>]</span></td></tr> - <tr><td align="right"><span class="options" - >[<a href="frames.html" target="_top">frames</a - >] | <a href="scapi.authentication.OAuthSignatureMethod_HMAC_SHA1-class.html" - target="_top">no frames</a>]</span></td></tr> - </table> - </td> - </tr> -</table> -<!-- ==================== CLASS DESCRIPTION ==================== --> -<h1 class="epydoc">Class OAuthSignatureMethod_HMAC_SHA1</h1><p class="nomargin-top"><span class="codelink"><a href="scapi.authentication-pysrc.html#OAuthSignatureMethod_HMAC_SHA1">source code</a></span></p> -<pre class="base-tree"> -object --+ - | - <strong class="uidshort">OAuthSignatureMethod_HMAC_SHA1</strong> -</pre> - -<hr /> -<!-- ==================== INSTANCE METHODS ==================== --> -<a name="section-InstanceMethods"></a> -<table class="summary" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr bgcolor="#70b0f0" class="table-header"> - <td colspan="2" class="table-header"> - <table border="0" cellpadding="0" cellspacing="0" width="100%"> - <tr valign="top"> - <td align="left"><span class="table-header">Instance Methods</span></td> - <td align="right" valign="top" - ><span class="options">[<a href="#section-InstanceMethods" - class="privatelink" onclick="toggle_private();" - >hide private</a>]</span></td> - </tr> - </table> - </td> -</tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a name="get_name"></a><span class="summary-sig-name">get_name</span>(<span class="summary-sig-arg">self</span>)</span></td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi.authentication-pysrc.html#OAuthSignatureMethod_HMAC_SHA1.get_name">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a name="build_signature"></a><span class="summary-sig-name">build_signature</span>(<span class="summary-sig-arg">self</span>, - <span class="summary-sig-arg">request</span>, - <span class="summary-sig-arg">parameters</span>, - <span class="summary-sig-arg">consumer_secret</span>, - <span class="summary-sig-arg">token_secret</span>, - <span class="summary-sig-arg">oauth_parameters</span>)</span></td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi.authentication-pysrc.html#OAuthSignatureMethod_HMAC_SHA1.build_signature">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a name="get_normalized_http_method"></a><span class="summary-sig-name">get_normalized_http_method</span>(<span class="summary-sig-arg">self</span>, - <span class="summary-sig-arg">request</span>)</span></td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi.authentication-pysrc.html#OAuthSignatureMethod_HMAC_SHA1.get_normalized_http_method">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a name="get_normalized_http_url"></a><span class="summary-sig-name">get_normalized_http_url</span>(<span class="summary-sig-arg">self</span>, - <span class="summary-sig-arg">request</span>)</span></td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi.authentication-pysrc.html#OAuthSignatureMethod_HMAC_SHA1.get_normalized_http_url">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a name="get_normalized_parameters"></a><span class="summary-sig-name">get_normalized_parameters</span>(<span class="summary-sig-arg">self</span>, - <span class="summary-sig-arg">params</span>)</span></td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi.authentication-pysrc.html#OAuthSignatureMethod_HMAC_SHA1.get_normalized_parameters">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> - <tr> - <td colspan="2" class="summary"> - <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>: - <code>__delattr__</code>, - <code>__getattribute__</code>, - <code>__hash__</code>, - <code>__init__</code>, - <code>__new__</code>, - <code>__reduce__</code>, - <code>__reduce_ex__</code>, - <code>__repr__</code>, - <code>__setattr__</code>, - <code>__str__</code> - </p> - </td> - </tr> -</table> -<!-- ==================== CLASS VARIABLES ==================== --> -<a name="section-ClassVariables"></a> -<table class="summary" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr bgcolor="#70b0f0" class="table-header"> - <td colspan="2" class="table-header"> - <table border="0" cellpadding="0" cellspacing="0" width="100%"> - <tr valign="top"> - <td align="left"><span class="table-header">Class Variables</span></td> - <td align="right" valign="top" - ><span class="options">[<a href="#section-ClassVariables" - class="privatelink" onclick="toggle_private();" - >hide private</a>]</span></td> - </tr> - </table> - </td> -</tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <a name="FORBIDDEN"></a><span class="summary-name">FORBIDDEN</span> = <code title="['realm', 'oauth_signature']"><code class="variable-group">[</code><code class="variable-quote">'</code><code class="variable-string">realm</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">oauth_signature</code><code class="variable-quote">'</code><code class="variable-group">]</code></code> - </td> - </tr> -</table> -<!-- ==================== PROPERTIES ==================== --> -<a name="section-Properties"></a> -<table class="summary" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr bgcolor="#70b0f0" class="table-header"> - <td colspan="2" class="table-header"> - <table border="0" cellpadding="0" cellspacing="0" width="100%"> - <tr valign="top"> - <td align="left"><span class="table-header">Properties</span></td> - <td align="right" valign="top" - ><span class="options">[<a href="#section-Properties" - class="privatelink" onclick="toggle_private();" - >hide private</a>]</span></td> - </tr> - </table> - </td> -</tr> - <tr> - <td colspan="2" class="summary"> - <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>: - <code>__class__</code> - </p> - </td> - </tr> -</table> -<!-- ==================== NAVIGATION BAR ==================== --> -<table class="navbar" border="0" width="100%" cellpadding="0" - bgcolor="#a0c0ff" cellspacing="0"> - <tr valign="middle"> - <!-- Home link --> - <th> <a - href="scapi-module.html">Home</a> </th> - - <!-- Tree link --> - <th> <a - href="module-tree.html">Trees</a> </th> - - <!-- Index link --> - <th> <a - href="identifier-index.html">Indices</a> </th> - - <!-- Help link --> - <th> <a - href="help.html">Help</a> </th> - - <!-- Project homepage --> - <th class="navbar" align="right" width="100%"> - <table border="0" cellpadding="0" cellspacing="0"> - <tr><th class="navbar" align="center" - >SoundCloud API</th> - </tr></table></th> - </tr> -</table> -<table border="0" cellpadding="0" cellspacing="0" width="100%%"> - <tr> - <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Thu Sep 10 00:58:49 2009 - </td> - <td align="right" class="footer"> - <a target="mainFrame" href="http://epydoc.sourceforge.net" - >http://epydoc.sourceforge.net</a> - </td> - </tr> -</table> - -<script type="text/javascript"> - <!-- - // Private objects are initially displayed (because if - // javascript is turned off then we want them to be - // visible); but by default, we want to hide them. So hide - // them unless we have a cookie that says to show them. - checkCookie(); - // --> -</script> -</body> -</html> diff --git a/python_apps/soundcloud-api/docs/api/scapi.config-module.html b/python_apps/soundcloud-api/docs/api/scapi.config-module.html deleted file mode 100644 index 41aa49291..000000000 --- a/python_apps/soundcloud-api/docs/api/scapi.config-module.html +++ /dev/null @@ -1,114 +0,0 @@ -<?xml version="1.0" encoding="ascii"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <title>scapi.config</title> - <link rel="stylesheet" href="epydoc.css" type="text/css" /> - <script type="text/javascript" src="epydoc.js"></script> -</head> - -<body bgcolor="white" text="black" link="blue" vlink="#204080" - alink="#204080"> -<!-- ==================== NAVIGATION BAR ==================== --> -<table class="navbar" border="0" width="100%" cellpadding="0" - bgcolor="#a0c0ff" cellspacing="0"> - <tr valign="middle"> - <!-- Home link --> - <th> <a - href="scapi-module.html">Home</a> </th> - - <!-- Tree link --> - <th> <a - href="module-tree.html">Trees</a> </th> - - <!-- Index link --> - <th> <a - href="identifier-index.html">Indices</a> </th> - - <!-- Help link --> - <th> <a - href="help.html">Help</a> </th> - - <!-- Project homepage --> - <th class="navbar" align="right" width="100%"> - <table border="0" cellpadding="0" cellspacing="0"> - <tr><th class="navbar" align="center" - >SoundCloud API</th> - </tr></table></th> - </tr> -</table> -<table width="100%" cellpadding="0" cellspacing="0"> - <tr valign="top"> - <td width="100%"> - <span class="breadcrumbs"> - <a href="scapi-module.html">Package scapi</a> :: - Module config - </span> - </td> - <td> - <table cellpadding="0" cellspacing="0"> - <!-- hide/show private --> - <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink" - onclick="toggle_private();">hide private</a>]</span></td></tr> - <tr><td align="right"><span class="options" - >[<a href="frames.html" target="_top">frames</a - >] | <a href="scapi.config-module.html" - target="_top">no frames</a>]</span></td></tr> - </table> - </td> - </tr> -</table> -<!-- ==================== MODULE DESCRIPTION ==================== --> -<h1 class="epydoc">Module config</h1><p class="nomargin-top"><span class="codelink"><a href="scapi.config-pysrc.html">source code</a></span></p> -<!-- ==================== NAVIGATION BAR ==================== --> -<table class="navbar" border="0" width="100%" cellpadding="0" - bgcolor="#a0c0ff" cellspacing="0"> - <tr valign="middle"> - <!-- Home link --> - <th> <a - href="scapi-module.html">Home</a> </th> - - <!-- Tree link --> - <th> <a - href="module-tree.html">Trees</a> </th> - - <!-- Index link --> - <th> <a - href="identifier-index.html">Indices</a> </th> - - <!-- Help link --> - <th> <a - href="help.html">Help</a> </th> - - <!-- Project homepage --> - <th class="navbar" align="right" width="100%"> - <table border="0" cellpadding="0" cellspacing="0"> - <tr><th class="navbar" align="center" - >SoundCloud API</th> - </tr></table></th> - </tr> -</table> -<table border="0" cellpadding="0" cellspacing="0" width="100%%"> - <tr> - <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Thu Sep 10 00:58:49 2009 - </td> - <td align="right" class="footer"> - <a target="mainFrame" href="http://epydoc.sourceforge.net" - >http://epydoc.sourceforge.net</a> - </td> - </tr> -</table> - -<script type="text/javascript"> - <!-- - // Private objects are initially displayed (because if - // javascript is turned off then we want them to be - // visible); but by default, we want to hide them. So hide - // them unless we have a cookie that says to show them. - checkCookie(); - // --> -</script> -</body> -</html> diff --git a/python_apps/soundcloud-api/docs/api/scapi.config-pysrc.html b/python_apps/soundcloud-api/docs/api/scapi.config-pysrc.html deleted file mode 100644 index 27eedf60c..000000000 --- a/python_apps/soundcloud-api/docs/api/scapi.config-pysrc.html +++ /dev/null @@ -1,122 +0,0 @@ -<?xml version="1.0" encoding="ascii"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <title>scapi.config</title> - <link rel="stylesheet" href="epydoc.css" type="text/css" /> - <script type="text/javascript" src="epydoc.js"></script> -</head> - -<body bgcolor="white" text="black" link="blue" vlink="#204080" - alink="#204080"> -<!-- ==================== NAVIGATION BAR ==================== --> -<table class="navbar" border="0" width="100%" cellpadding="0" - bgcolor="#a0c0ff" cellspacing="0"> - <tr valign="middle"> - <!-- Home link --> - <th> <a - href="scapi-module.html">Home</a> </th> - - <!-- Tree link --> - <th> <a - href="module-tree.html">Trees</a> </th> - - <!-- Index link --> - <th> <a - href="identifier-index.html">Indices</a> </th> - - <!-- Help link --> - <th> <a - href="help.html">Help</a> </th> - - <!-- Project homepage --> - <th class="navbar" align="right" width="100%"> - <table border="0" cellpadding="0" cellspacing="0"> - <tr><th class="navbar" align="center" - >SoundCloud API</th> - </tr></table></th> - </tr> -</table> -<table width="100%" cellpadding="0" cellspacing="0"> - <tr valign="top"> - <td width="100%"> - <span class="breadcrumbs"> - <a href="scapi-module.html">Package scapi</a> :: - Module config - </span> - </td> - <td> - <table cellpadding="0" cellspacing="0"> - <!-- hide/show private --> - <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink" - onclick="toggle_private();">hide private</a>]</span></td></tr> - <tr><td align="right"><span class="options" - >[<a href="frames.html" target="_top">frames</a - >] | <a href="scapi.config-pysrc.html" - target="_top">no frames</a>]</span></td></tr> - </table> - </td> - </tr> -</table> -<h1 class="epydoc">Source Code for <a href="scapi.config-module.html">Module scapi.config</a></h1> -<pre class="py-src"> -<a name="L1"></a><tt class="py-lineno">1</tt> <tt class="py-line"> </tt> -<a name="L2"></a><tt class="py-lineno">2</tt> <tt class="py-line"> </tt><script type="text/javascript"> -<!-- -expandto(location.href); -// --> -</script> -</pre> -<br /> -<!-- ==================== NAVIGATION BAR ==================== --> -<table class="navbar" border="0" width="100%" cellpadding="0" - bgcolor="#a0c0ff" cellspacing="0"> - <tr valign="middle"> - <!-- Home link --> - <th> <a - href="scapi-module.html">Home</a> </th> - - <!-- Tree link --> - <th> <a - href="module-tree.html">Trees</a> </th> - - <!-- Index link --> - <th> <a - href="identifier-index.html">Indices</a> </th> - - <!-- Help link --> - <th> <a - href="help.html">Help</a> </th> - - <!-- Project homepage --> - <th class="navbar" align="right" width="100%"> - <table border="0" cellpadding="0" cellspacing="0"> - <tr><th class="navbar" align="center" - >SoundCloud API</th> - </tr></table></th> - </tr> -</table> -<table border="0" cellpadding="0" cellspacing="0" width="100%%"> - <tr> - <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Thu Sep 10 00:58:50 2009 - </td> - <td align="right" class="footer"> - <a target="mainFrame" href="http://epydoc.sourceforge.net" - >http://epydoc.sourceforge.net</a> - </td> - </tr> -</table> - -<script type="text/javascript"> - <!-- - // Private objects are initially displayed (because if - // javascript is turned off then we want them to be - // visible); but by default, we want to hide them. So hide - // them unless we have a cookie that says to show them. - checkCookie(); - // --> -</script> -</body> -</html> diff --git a/python_apps/soundcloud-api/docs/api/scapi.json-module.html b/python_apps/soundcloud-api/docs/api/scapi.json-module.html deleted file mode 100644 index 9ac8f0d48..000000000 --- a/python_apps/soundcloud-api/docs/api/scapi.json-module.html +++ /dev/null @@ -1,218 +0,0 @@ -<?xml version="1.0" encoding="ascii"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <title>scapi.json</title> - <link rel="stylesheet" href="epydoc.css" type="text/css" /> - <script type="text/javascript" src="epydoc.js"></script> -</head> - -<body bgcolor="white" text="black" link="blue" vlink="#204080" - alink="#204080"> -<!-- ==================== NAVIGATION BAR ==================== --> -<table class="navbar" border="0" width="100%" cellpadding="0" - bgcolor="#a0c0ff" cellspacing="0"> - <tr valign="middle"> - <!-- Home link --> - <th> <a - href="scapi-module.html">Home</a> </th> - - <!-- Tree link --> - <th> <a - href="module-tree.html">Trees</a> </th> - - <!-- Index link --> - <th> <a - href="identifier-index.html">Indices</a> </th> - - <!-- Help link --> - <th> <a - href="help.html">Help</a> </th> - - <!-- Project homepage --> - <th class="navbar" align="right" width="100%"> - <table border="0" cellpadding="0" cellspacing="0"> - <tr><th class="navbar" align="center" - >SoundCloud API</th> - </tr></table></th> - </tr> -</table> -<table width="100%" cellpadding="0" cellspacing="0"> - <tr valign="top"> - <td width="100%"> - <span class="breadcrumbs"> - <a href="scapi-module.html">Package scapi</a> :: - Module json - </span> - </td> - <td> - <table cellpadding="0" cellspacing="0"> - <!-- hide/show private --> - <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink" - onclick="toggle_private();">hide private</a>]</span></td></tr> - <tr><td align="right"><span class="options" - >[<a href="frames.html" target="_top">frames</a - >] | <a href="scapi.json-module.html" - target="_top">no frames</a>]</span></td></tr> - </table> - </td> - </tr> -</table> -<!-- ==================== MODULE DESCRIPTION ==================== --> -<h1 class="epydoc">Module json</h1><p class="nomargin-top"><span class="codelink"><a href="scapi.json-pysrc.html">source code</a></span></p> -<!-- ==================== CLASSES ==================== --> -<a name="section-Classes"></a> -<table class="summary" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr bgcolor="#70b0f0" class="table-header"> - <td colspan="2" class="table-header"> - <table border="0" cellpadding="0" cellspacing="0" width="100%"> - <tr valign="top"> - <td align="left"><span class="table-header">Classes</span></td> - <td align="right" valign="top" - ><span class="options">[<a href="#section-Classes" - class="privatelink" onclick="toggle_private();" - >hide private</a>]</span></td> - </tr> - </table> - </td> -</tr> -<tr class="private"> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <a href="scapi.json._StringGenerator-class.html" class="summary-name" onclick="show_private();">_StringGenerator</a> - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <a href="scapi.json.WriteException-class.html" class="summary-name">WriteException</a> - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <a href="scapi.json.ReadException-class.html" class="summary-name">ReadException</a> - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <a href="scapi.json.JsonReader-class.html" class="summary-name">JsonReader</a> - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <a href="scapi.json.JsonWriter-class.html" class="summary-name">JsonWriter</a> - </td> - </tr> -</table> -<!-- ==================== FUNCTIONS ==================== --> -<a name="section-Functions"></a> -<table class="summary" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr bgcolor="#70b0f0" class="table-header"> - <td colspan="2" class="table-header"> - <table border="0" cellpadding="0" cellspacing="0" width="100%"> - <tr valign="top"> - <td align="left"><span class="table-header">Functions</span></td> - <td align="right" valign="top" - ><span class="options">[<a href="#section-Functions" - class="privatelink" onclick="toggle_private();" - >hide private</a>]</span></td> - </tr> - </table> - </td> -</tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a name="write"></a><span class="summary-sig-name">write</span>(<span class="summary-sig-arg">obj</span>, - <span class="summary-sig-arg">escaped_forward_slash</span>=<span class="summary-sig-default">False</span>)</span></td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi.json-pysrc.html#write">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a name="read"></a><span class="summary-sig-name">read</span>(<span class="summary-sig-arg">s</span>)</span></td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi.json-pysrc.html#read">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> -</table> -<!-- ==================== NAVIGATION BAR ==================== --> -<table class="navbar" border="0" width="100%" cellpadding="0" - bgcolor="#a0c0ff" cellspacing="0"> - <tr valign="middle"> - <!-- Home link --> - <th> <a - href="scapi-module.html">Home</a> </th> - - <!-- Tree link --> - <th> <a - href="module-tree.html">Trees</a> </th> - - <!-- Index link --> - <th> <a - href="identifier-index.html">Indices</a> </th> - - <!-- Help link --> - <th> <a - href="help.html">Help</a> </th> - - <!-- Project homepage --> - <th class="navbar" align="right" width="100%"> - <table border="0" cellpadding="0" cellspacing="0"> - <tr><th class="navbar" align="center" - >SoundCloud API</th> - </tr></table></th> - </tr> -</table> -<table border="0" cellpadding="0" cellspacing="0" width="100%%"> - <tr> - <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Thu Sep 10 00:58:49 2009 - </td> - <td align="right" class="footer"> - <a target="mainFrame" href="http://epydoc.sourceforge.net" - >http://epydoc.sourceforge.net</a> - </td> - </tr> -</table> - -<script type="text/javascript"> - <!-- - // Private objects are initially displayed (because if - // javascript is turned off then we want them to be - // visible); but by default, we want to hide them. So hide - // them unless we have a cookie that says to show them. - checkCookie(); - // --> -</script> -</body> -</html> diff --git a/python_apps/soundcloud-api/docs/api/scapi.json-pysrc.html b/python_apps/soundcloud-api/docs/api/scapi.json-pysrc.html deleted file mode 100644 index cde009caf..000000000 --- a/python_apps/soundcloud-api/docs/api/scapi.json-pysrc.html +++ /dev/null @@ -1,433 +0,0 @@ -<?xml version="1.0" encoding="ascii"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <title>scapi.json</title> - <link rel="stylesheet" href="epydoc.css" type="text/css" /> - <script type="text/javascript" src="epydoc.js"></script> -</head> - -<body bgcolor="white" text="black" link="blue" vlink="#204080" - alink="#204080"> -<!-- ==================== NAVIGATION BAR ==================== --> -<table class="navbar" border="0" width="100%" cellpadding="0" - bgcolor="#a0c0ff" cellspacing="0"> - <tr valign="middle"> - <!-- Home link --> - <th> <a - href="scapi-module.html">Home</a> </th> - - <!-- Tree link --> - <th> <a - href="module-tree.html">Trees</a> </th> - - <!-- Index link --> - <th> <a - href="identifier-index.html">Indices</a> </th> - - <!-- Help link --> - <th> <a - href="help.html">Help</a> </th> - - <!-- Project homepage --> - <th class="navbar" align="right" width="100%"> - <table border="0" cellpadding="0" cellspacing="0"> - <tr><th class="navbar" align="center" - >SoundCloud API</th> - </tr></table></th> - </tr> -</table> -<table width="100%" cellpadding="0" cellspacing="0"> - <tr valign="top"> - <td width="100%"> - <span class="breadcrumbs"> - <a href="scapi-module.html">Package scapi</a> :: - Module json - </span> - </td> - <td> - <table cellpadding="0" cellspacing="0"> - <!-- hide/show private --> - <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink" - onclick="toggle_private();">hide private</a>]</span></td></tr> - <tr><td align="right"><span class="options" - >[<a href="frames.html" target="_top">frames</a - >] | <a href="scapi.json-pysrc.html" - target="_top">no frames</a>]</span></td></tr> - </table> - </td> - </tr> -</table> -<h1 class="epydoc">Source Code for <a href="scapi.json-module.html">Module scapi.json</a></h1> -<pre class="py-src"> -<a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">string</tt> </tt> -<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">types</tt> </tt> -<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"> </tt> -<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-comment">## json.py implements a JSON (http://json.org) reader and writer.</tt> </tt> -<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## Copyright (C) 2005 Patrick D. Logan</tt> </tt> -<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## Contact mailto:patrickdlogan@stardecisions.com</tt> </tt> -<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">##</tt> </tt> -<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## This library is free software; you can redistribute it and/or</tt> </tt> -<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## modify it under the terms of the GNU Lesser General Public</tt> </tt> -<a name="L10"></a><tt class="py-lineno"> 10</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## License as published by the Free Software Foundation; either</tt> </tt> -<a name="L11"></a><tt class="py-lineno"> 11</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## version 2.1 of the License, or (at your option) any later version.</tt> </tt> -<a name="L12"></a><tt class="py-lineno"> 12</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">##</tt> </tt> -<a name="L13"></a><tt class="py-lineno"> 13</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## This library is distributed in the hope that it will be useful,</tt> </tt> -<a name="L14"></a><tt class="py-lineno"> 14</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## but WITHOUT ANY WARRANTY; without even the implied warranty of</tt> </tt> -<a name="L15"></a><tt class="py-lineno"> 15</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</tt> </tt> -<a name="L16"></a><tt class="py-lineno"> 16</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## Lesser General Public License for more details.</tt> </tt> -<a name="L17"></a><tt class="py-lineno"> 17</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">##</tt> </tt> -<a name="L18"></a><tt class="py-lineno"> 18</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## You should have received a copy of the GNU Lesser General Public</tt> </tt> -<a name="L19"></a><tt class="py-lineno"> 19</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## License along with this library; if not, write to the Free Software</tt> </tt> -<a name="L20"></a><tt class="py-lineno"> 20</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA</tt> </tt> -<a name="L21"></a><tt class="py-lineno"> 21</tt> <tt class="py-line"><tt class="py-comment"></tt> </tt> -<a name="L22"></a><tt class="py-lineno"> 22</tt> <tt class="py-line"> </tt> -<a name="_StringGenerator"></a><div id="_StringGenerator-def"><a name="L23"></a><tt class="py-lineno"> 23</tt> <a class="py-toggle" href="#" id="_StringGenerator-toggle" onclick="return toggle('_StringGenerator');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="scapi.json._StringGenerator-class.html">_StringGenerator</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="_StringGenerator-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="_StringGenerator-expanded"><a name="_StringGenerator.__init__"></a><div id="_StringGenerator.__init__-def"><a name="L24"></a><tt class="py-lineno"> 24</tt> <a class="py-toggle" href="#" id="_StringGenerator.__init__-toggle" onclick="return toggle('_StringGenerator.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.json._StringGenerator-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">string</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="_StringGenerator.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++++++"></div><div id="_StringGenerator.__init__-expanded"><a name="L25"></a><tt class="py-lineno"> 25</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">string</tt> <tt class="py-op">=</tt> <tt class="py-name">string</tt> </tt> -<a name="L26"></a><tt class="py-lineno"> 26</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">index</tt> <tt class="py-op">=</tt> <tt class="py-op">-</tt><tt class="py-number">1</tt> </tt> -</div><a name="_StringGenerator.peek"></a><div id="_StringGenerator.peek-def"><a name="L27"></a><tt class="py-lineno"> 27</tt> <a class="py-toggle" href="#" id="_StringGenerator.peek-toggle" onclick="return toggle('_StringGenerator.peek');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.json._StringGenerator-class.html#peek">peek</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="_StringGenerator.peek-collapsed" style="display:none;" pad="+++" indent="++++++++++++"></div><div id="_StringGenerator.peek-expanded"><a name="L28"></a><tt class="py-lineno"> 28</tt> <tt class="py-line"> <tt class="py-name">i</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">index</tt> <tt class="py-op">+</tt> <tt class="py-number">1</tt> </tt> -<a name="L29"></a><tt class="py-lineno"> 29</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">i</tt> <tt class="py-op"><</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">string</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L30"></a><tt class="py-lineno"> 30</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">string</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">]</tt> </tt> -<a name="L31"></a><tt class="py-lineno"> 31</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> -<a name="L32"></a><tt class="py-lineno"> 32</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt> -</div><a name="_StringGenerator.next"></a><div id="_StringGenerator.next-def"><a name="L33"></a><tt class="py-lineno"> 33</tt> <a class="py-toggle" href="#" id="_StringGenerator.next-toggle" onclick="return toggle('_StringGenerator.next');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.json._StringGenerator-class.html#next">next</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="_StringGenerator.next-collapsed" style="display:none;" pad="+++" indent="++++++++++++"></div><div id="_StringGenerator.next-expanded"><a name="L34"></a><tt class="py-lineno"> 34</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">index</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt> -<a name="L35"></a><tt class="py-lineno"> 35</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">index</tt> <tt class="py-op"><</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">string</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L36"></a><tt class="py-lineno"> 36</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">string</tt><tt class="py-op">[</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">index</tt><tt class="py-op">]</tt> </tt> -<a name="L37"></a><tt class="py-lineno"> 37</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> -<a name="L38"></a><tt class="py-lineno"> 38</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">StopIteration</tt> </tt> -</div><a name="_StringGenerator.all"></a><div id="_StringGenerator.all-def"><a name="L39"></a><tt class="py-lineno"> 39</tt> <a class="py-toggle" href="#" id="_StringGenerator.all-toggle" onclick="return toggle('_StringGenerator.all');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.json._StringGenerator-class.html#all">all</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="_StringGenerator.all-collapsed" style="display:none;" pad="+++" indent="++++++++++++"></div><div id="_StringGenerator.all-expanded"><a name="L40"></a><tt class="py-lineno"> 40</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">string</tt> </tt> -</div></div><a name="L41"></a><tt class="py-lineno"> 41</tt> <tt class="py-line"> </tt> -<a name="WriteException"></a><div id="WriteException-def"><a name="L42"></a><tt class="py-lineno"> 42</tt> <a class="py-toggle" href="#" id="WriteException-toggle" onclick="return toggle('WriteException');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="scapi.json.WriteException-class.html">WriteException</a><tt class="py-op">(</tt><tt class="py-base-class">Exception</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="WriteException-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="WriteException-expanded"><a name="L43"></a><tt class="py-lineno"> 43</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt> -</div><a name="L44"></a><tt class="py-lineno"> 44</tt> <tt class="py-line"> </tt> -<a name="ReadException"></a><div id="ReadException-def"><a name="L45"></a><tt class="py-lineno"> 45</tt> <a class="py-toggle" href="#" id="ReadException-toggle" onclick="return toggle('ReadException');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="scapi.json.ReadException-class.html">ReadException</a><tt class="py-op">(</tt><tt class="py-base-class">Exception</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="ReadException-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="ReadException-expanded"><a name="L46"></a><tt class="py-lineno"> 46</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt> -</div><a name="L47"></a><tt class="py-lineno"> 47</tt> <tt class="py-line"> </tt> -<a name="JsonReader"></a><div id="JsonReader-def"><a name="L48"></a><tt class="py-lineno"> 48</tt> <a class="py-toggle" href="#" id="JsonReader-toggle" onclick="return toggle('JsonReader');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="scapi.json.JsonReader-class.html">JsonReader</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="JsonReader-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="JsonReader-expanded"><a name="L49"></a><tt class="py-lineno"> 49</tt> <tt class="py-line"> <tt id="link-0" class="py-name" targets="Variable scapi.json.JsonReader.hex_digits=scapi.json.JsonReader-class.html#hex_digits"><a title="scapi.json.JsonReader.hex_digits" class="py-name" href="#" onclick="return doclink('link-0', 'hex_digits', 'link-0');">hex_digits</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-string">'A'</tt><tt class="py-op">:</tt> <tt class="py-number">10</tt><tt class="py-op">,</tt><tt class="py-string">'B'</tt><tt class="py-op">:</tt> <tt class="py-number">11</tt><tt class="py-op">,</tt><tt class="py-string">'C'</tt><tt class="py-op">:</tt> <tt class="py-number">12</tt><tt class="py-op">,</tt><tt class="py-string">'D'</tt><tt class="py-op">:</tt> <tt class="py-number">13</tt><tt class="py-op">,</tt><tt class="py-string">'E'</tt><tt class="py-op">:</tt> <tt class="py-number">14</tt><tt class="py-op">,</tt><tt class="py-string">'F'</tt><tt class="py-op">:</tt><tt class="py-number">15</tt><tt class="py-op">}</tt> </tt> -<a name="L50"></a><tt class="py-lineno"> 50</tt> <tt class="py-line"> <tt id="link-1" class="py-name" targets="Variable scapi.json.JsonReader.escapes=scapi.json.JsonReader-class.html#escapes"><a title="scapi.json.JsonReader.escapes" class="py-name" href="#" onclick="return doclink('link-1', 'escapes', 'link-1');">escapes</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-string">'t'</tt><tt class="py-op">:</tt><tt class="py-string">'\t'</tt><tt class="py-op">,</tt><tt class="py-string">'n'</tt><tt class="py-op">:</tt><tt class="py-string">'\n'</tt><tt class="py-op">,</tt><tt class="py-string">'f'</tt><tt class="py-op">:</tt><tt class="py-string">'\f'</tt><tt class="py-op">,</tt><tt class="py-string">'r'</tt><tt class="py-op">:</tt><tt class="py-string">'\r'</tt><tt class="py-op">,</tt><tt class="py-string">'b'</tt><tt class="py-op">:</tt><tt class="py-string">'\b'</tt><tt class="py-op">}</tt> </tt> -<a name="L51"></a><tt class="py-lineno"> 51</tt> <tt class="py-line"> </tt> -<a name="JsonReader.read"></a><div id="JsonReader.read-def"><a name="L52"></a><tt class="py-lineno"> 52</tt> <a class="py-toggle" href="#" id="JsonReader.read-toggle" onclick="return toggle('JsonReader.read');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.json.JsonReader-class.html#read">read</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">s</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="JsonReader.read-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="JsonReader.read-expanded"><a name="L53"></a><tt class="py-lineno"> 53</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_generator</tt> <tt class="py-op">=</tt> <tt id="link-2" class="py-name" targets="Class scapi.json._StringGenerator=scapi.json._StringGenerator-class.html"><a title="scapi.json._StringGenerator" class="py-name" href="#" onclick="return doclink('link-2', '_StringGenerator', 'link-2');">_StringGenerator</a></tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">)</tt> </tt> -<a name="L54"></a><tt class="py-lineno"> 54</tt> <tt class="py-line"> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3" class="py-name" targets="Method scapi.json.JsonReader._read()=scapi.json.JsonReader-class.html#_read"><a title="scapi.json.JsonReader._read" class="py-name" href="#" onclick="return doclink('link-3', '_read', 'link-3');">_read</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L55"></a><tt class="py-lineno"> 55</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">result</tt> </tt> -</div><a name="L56"></a><tt class="py-lineno"> 56</tt> <tt class="py-line"> </tt> -<a name="JsonReader._read"></a><div id="JsonReader._read-def"><a name="L57"></a><tt class="py-lineno"> 57</tt> <a class="py-toggle" href="#" id="JsonReader._read-toggle" onclick="return toggle('JsonReader._read');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.json.JsonReader-class.html#_read">_read</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="JsonReader._read-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="JsonReader._read-expanded"><a name="L58"></a><tt class="py-lineno"> 58</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-4" class="py-name" targets="Method scapi.json.JsonReader._eatWhitespace()=scapi.json.JsonReader-class.html#_eatWhitespace"><a title="scapi.json.JsonReader._eatWhitespace" class="py-name" href="#" onclick="return doclink('link-4', '_eatWhitespace', 'link-4');">_eatWhitespace</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L59"></a><tt class="py-lineno"> 59</tt> <tt class="py-line"> <tt id="link-5" class="py-name" targets="Method scapi.json._StringGenerator.peek()=scapi.json._StringGenerator-class.html#peek"><a title="scapi.json._StringGenerator.peek" class="py-name" href="#" onclick="return doclink('link-5', 'peek', 'link-5');">peek</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-6" class="py-name" targets="Method scapi.json.JsonReader._peek()=scapi.json.JsonReader-class.html#_peek"><a title="scapi.json.JsonReader._peek" class="py-name" href="#" onclick="return doclink('link-6', '_peek', 'link-6');">_peek</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L60"></a><tt class="py-lineno"> 60</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-7" class="py-name"><a title="scapi.json._StringGenerator.peek" class="py-name" href="#" onclick="return doclink('link-7', 'peek', 'link-5');">peek</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> -<a name="L61"></a><tt class="py-lineno"> 61</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-8" class="py-name" targets="Class scapi.json.ReadException=scapi.json.ReadException-class.html"><a title="scapi.json.ReadException" class="py-name" href="#" onclick="return doclink('link-8', 'ReadException', 'link-8');">ReadException</a></tt><tt class="py-op">,</tt> <tt class="py-string">"Nothing to read: '%s'"</tt> <tt class="py-op">%</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_generator</tt><tt class="py-op">.</tt><tt id="link-9" class="py-name" targets="Method scapi.json._StringGenerator.all()=scapi.json._StringGenerator-class.html#all"><a title="scapi.json._StringGenerator.all" class="py-name" href="#" onclick="return doclink('link-9', 'all', 'link-9');">all</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L62"></a><tt class="py-lineno"> 62</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-10" class="py-name"><a title="scapi.json._StringGenerator.peek" class="py-name" href="#" onclick="return doclink('link-10', 'peek', 'link-5');">peek</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'{'</tt><tt class="py-op">:</tt> </tt> -<a name="L63"></a><tt class="py-lineno"> 63</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-11" class="py-name" targets="Method scapi.json.JsonReader._readObject()=scapi.json.JsonReader-class.html#_readObject"><a title="scapi.json.JsonReader._readObject" class="py-name" href="#" onclick="return doclink('link-11', '_readObject', 'link-11');">_readObject</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L64"></a><tt class="py-lineno"> 64</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt id="link-12" class="py-name"><a title="scapi.json._StringGenerator.peek" class="py-name" href="#" onclick="return doclink('link-12', 'peek', 'link-5');">peek</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'['</tt><tt class="py-op">:</tt> </tt> -<a name="L65"></a><tt class="py-lineno"> 65</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-13" class="py-name" targets="Method scapi.json.JsonReader._readArray()=scapi.json.JsonReader-class.html#_readArray"><a title="scapi.json.JsonReader._readArray" class="py-name" href="#" onclick="return doclink('link-13', '_readArray', 'link-13');">_readArray</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L66"></a><tt class="py-lineno"> 66</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt id="link-14" class="py-name"><a title="scapi.json._StringGenerator.peek" class="py-name" href="#" onclick="return doclink('link-14', 'peek', 'link-5');">peek</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'"'</tt><tt class="py-op">:</tt> </tt> -<a name="L67"></a><tt class="py-lineno"> 67</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-15" class="py-name" targets="Method scapi.json.JsonReader._readString()=scapi.json.JsonReader-class.html#_readString"><a title="scapi.json.JsonReader._readString" class="py-name" href="#" onclick="return doclink('link-15', '_readString', 'link-15');">_readString</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L68"></a><tt class="py-lineno"> 68</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt id="link-16" class="py-name"><a title="scapi.json._StringGenerator.peek" class="py-name" href="#" onclick="return doclink('link-16', 'peek', 'link-5');">peek</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'-'</tt> <tt class="py-keyword">or</tt> <tt id="link-17" class="py-name"><a title="scapi.json._StringGenerator.peek" class="py-name" href="#" onclick="return doclink('link-17', 'peek', 'link-5');">peek</a></tt><tt class="py-op">.</tt><tt class="py-name">isdigit</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L69"></a><tt class="py-lineno"> 69</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-18" class="py-name" targets="Method scapi.json.JsonReader._readNumber()=scapi.json.JsonReader-class.html#_readNumber"><a title="scapi.json.JsonReader._readNumber" class="py-name" href="#" onclick="return doclink('link-18', '_readNumber', 'link-18');">_readNumber</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L70"></a><tt class="py-lineno"> 70</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt id="link-19" class="py-name"><a title="scapi.json._StringGenerator.peek" class="py-name" href="#" onclick="return doclink('link-19', 'peek', 'link-5');">peek</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'t'</tt><tt class="py-op">:</tt> </tt> -<a name="L71"></a><tt class="py-lineno"> 71</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-20" class="py-name" targets="Method scapi.json.JsonReader._readTrue()=scapi.json.JsonReader-class.html#_readTrue"><a title="scapi.json.JsonReader._readTrue" class="py-name" href="#" onclick="return doclink('link-20', '_readTrue', 'link-20');">_readTrue</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L72"></a><tt class="py-lineno"> 72</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt id="link-21" class="py-name"><a title="scapi.json._StringGenerator.peek" class="py-name" href="#" onclick="return doclink('link-21', 'peek', 'link-5');">peek</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'f'</tt><tt class="py-op">:</tt> </tt> -<a name="L73"></a><tt class="py-lineno"> 73</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-22" class="py-name" targets="Method scapi.json.JsonReader._readFalse()=scapi.json.JsonReader-class.html#_readFalse"><a title="scapi.json.JsonReader._readFalse" class="py-name" href="#" onclick="return doclink('link-22', '_readFalse', 'link-22');">_readFalse</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L74"></a><tt class="py-lineno"> 74</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt id="link-23" class="py-name"><a title="scapi.json._StringGenerator.peek" class="py-name" href="#" onclick="return doclink('link-23', 'peek', 'link-5');">peek</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'n'</tt><tt class="py-op">:</tt> </tt> -<a name="L75"></a><tt class="py-lineno"> 75</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-24" class="py-name" targets="Method scapi.json.JsonReader._readNull()=scapi.json.JsonReader-class.html#_readNull"><a title="scapi.json.JsonReader._readNull" class="py-name" href="#" onclick="return doclink('link-24', '_readNull', 'link-24');">_readNull</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L76"></a><tt class="py-lineno"> 76</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt id="link-25" class="py-name"><a title="scapi.json._StringGenerator.peek" class="py-name" href="#" onclick="return doclink('link-25', 'peek', 'link-5');">peek</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'/'</tt><tt class="py-op">:</tt> </tt> -<a name="L77"></a><tt class="py-lineno"> 77</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-26" class="py-name" targets="Method scapi.json.JsonReader._readComment()=scapi.json.JsonReader-class.html#_readComment"><a title="scapi.json.JsonReader._readComment" class="py-name" href="#" onclick="return doclink('link-26', '_readComment', 'link-26');">_readComment</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L78"></a><tt class="py-lineno"> 78</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-27" class="py-name"><a title="scapi.json.JsonReader._read" class="py-name" href="#" onclick="return doclink('link-27', '_read', 'link-3');">_read</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L79"></a><tt class="py-lineno"> 79</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> -<a name="L80"></a><tt class="py-lineno"> 80</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-28" class="py-name"><a title="scapi.json.ReadException" class="py-name" href="#" onclick="return doclink('link-28', 'ReadException', 'link-8');">ReadException</a></tt><tt class="py-op">,</tt> <tt class="py-string">"Input is not valid JSON: '%s'"</tt> <tt class="py-op">%</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_generator</tt><tt class="py-op">.</tt><tt id="link-29" class="py-name"><a title="scapi.json._StringGenerator.all" class="py-name" href="#" onclick="return doclink('link-29', 'all', 'link-9');">all</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -</div><a name="L81"></a><tt class="py-lineno"> 81</tt> <tt class="py-line"> </tt> -<a name="JsonReader._readTrue"></a><div id="JsonReader._readTrue-def"><a name="L82"></a><tt class="py-lineno"> 82</tt> <a class="py-toggle" href="#" id="JsonReader._readTrue-toggle" onclick="return toggle('JsonReader._readTrue');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.json.JsonReader-class.html#_readTrue">_readTrue</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="JsonReader._readTrue-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="JsonReader._readTrue-expanded"><a name="L83"></a><tt class="py-lineno"> 83</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-30" class="py-name" targets="Method scapi.json.JsonReader._assertNext()=scapi.json.JsonReader-class.html#_assertNext"><a title="scapi.json.JsonReader._assertNext" class="py-name" href="#" onclick="return doclink('link-30', '_assertNext', 'link-30');">_assertNext</a></tt><tt class="py-op">(</tt><tt class="py-string">'t'</tt><tt class="py-op">,</tt> <tt class="py-string">"true"</tt><tt class="py-op">)</tt> </tt> -<a name="L84"></a><tt class="py-lineno"> 84</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-31" class="py-name"><a title="scapi.json.JsonReader._assertNext" class="py-name" href="#" onclick="return doclink('link-31', '_assertNext', 'link-30');">_assertNext</a></tt><tt class="py-op">(</tt><tt class="py-string">'r'</tt><tt class="py-op">,</tt> <tt class="py-string">"true"</tt><tt class="py-op">)</tt> </tt> -<a name="L85"></a><tt class="py-lineno"> 85</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-32" class="py-name"><a title="scapi.json.JsonReader._assertNext" class="py-name" href="#" onclick="return doclink('link-32', '_assertNext', 'link-30');">_assertNext</a></tt><tt class="py-op">(</tt><tt class="py-string">'u'</tt><tt class="py-op">,</tt> <tt class="py-string">"true"</tt><tt class="py-op">)</tt> </tt> -<a name="L86"></a><tt class="py-lineno"> 86</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-33" class="py-name"><a title="scapi.json.JsonReader._assertNext" class="py-name" href="#" onclick="return doclink('link-33', '_assertNext', 'link-30');">_assertNext</a></tt><tt class="py-op">(</tt><tt class="py-string">'e'</tt><tt class="py-op">,</tt> <tt class="py-string">"true"</tt><tt class="py-op">)</tt> </tt> -<a name="L87"></a><tt class="py-lineno"> 87</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">True</tt> </tt> -</div><a name="L88"></a><tt class="py-lineno"> 88</tt> <tt class="py-line"> </tt> -<a name="JsonReader._readFalse"></a><div id="JsonReader._readFalse-def"><a name="L89"></a><tt class="py-lineno"> 89</tt> <a class="py-toggle" href="#" id="JsonReader._readFalse-toggle" onclick="return toggle('JsonReader._readFalse');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.json.JsonReader-class.html#_readFalse">_readFalse</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="JsonReader._readFalse-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="JsonReader._readFalse-expanded"><a name="L90"></a><tt class="py-lineno"> 90</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-34" class="py-name"><a title="scapi.json.JsonReader._assertNext" class="py-name" href="#" onclick="return doclink('link-34', '_assertNext', 'link-30');">_assertNext</a></tt><tt class="py-op">(</tt><tt class="py-string">'f'</tt><tt class="py-op">,</tt> <tt class="py-string">"false"</tt><tt class="py-op">)</tt> </tt> -<a name="L91"></a><tt class="py-lineno"> 91</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-35" class="py-name"><a title="scapi.json.JsonReader._assertNext" class="py-name" href="#" onclick="return doclink('link-35', '_assertNext', 'link-30');">_assertNext</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">,</tt> <tt class="py-string">"false"</tt><tt class="py-op">)</tt> </tt> -<a name="L92"></a><tt class="py-lineno"> 92</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-36" class="py-name"><a title="scapi.json.JsonReader._assertNext" class="py-name" href="#" onclick="return doclink('link-36', '_assertNext', 'link-30');">_assertNext</a></tt><tt class="py-op">(</tt><tt class="py-string">'l'</tt><tt class="py-op">,</tt> <tt class="py-string">"false"</tt><tt class="py-op">)</tt> </tt> -<a name="L93"></a><tt class="py-lineno"> 93</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-37" class="py-name"><a title="scapi.json.JsonReader._assertNext" class="py-name" href="#" onclick="return doclink('link-37', '_assertNext', 'link-30');">_assertNext</a></tt><tt class="py-op">(</tt><tt class="py-string">'s'</tt><tt class="py-op">,</tt> <tt class="py-string">"false"</tt><tt class="py-op">)</tt> </tt> -<a name="L94"></a><tt class="py-lineno"> 94</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-38" class="py-name"><a title="scapi.json.JsonReader._assertNext" class="py-name" href="#" onclick="return doclink('link-38', '_assertNext', 'link-30');">_assertNext</a></tt><tt class="py-op">(</tt><tt class="py-string">'e'</tt><tt class="py-op">,</tt> <tt class="py-string">"false"</tt><tt class="py-op">)</tt> </tt> -<a name="L95"></a><tt class="py-lineno"> 95</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt> -</div><a name="L96"></a><tt class="py-lineno"> 96</tt> <tt class="py-line"> </tt> -<a name="JsonReader._readNull"></a><div id="JsonReader._readNull-def"><a name="L97"></a><tt class="py-lineno"> 97</tt> <a class="py-toggle" href="#" id="JsonReader._readNull-toggle" onclick="return toggle('JsonReader._readNull');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.json.JsonReader-class.html#_readNull">_readNull</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="JsonReader._readNull-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="JsonReader._readNull-expanded"><a name="L98"></a><tt class="py-lineno"> 98</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-39" class="py-name"><a title="scapi.json.JsonReader._assertNext" class="py-name" href="#" onclick="return doclink('link-39', '_assertNext', 'link-30');">_assertNext</a></tt><tt class="py-op">(</tt><tt class="py-string">'n'</tt><tt class="py-op">,</tt> <tt class="py-string">"null"</tt><tt class="py-op">)</tt> </tt> -<a name="L99"></a><tt class="py-lineno"> 99</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-40" class="py-name"><a title="scapi.json.JsonReader._assertNext" class="py-name" href="#" onclick="return doclink('link-40', '_assertNext', 'link-30');">_assertNext</a></tt><tt class="py-op">(</tt><tt class="py-string">'u'</tt><tt class="py-op">,</tt> <tt class="py-string">"null"</tt><tt class="py-op">)</tt> </tt> -<a name="L100"></a><tt class="py-lineno">100</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-41" class="py-name"><a title="scapi.json.JsonReader._assertNext" class="py-name" href="#" onclick="return doclink('link-41', '_assertNext', 'link-30');">_assertNext</a></tt><tt class="py-op">(</tt><tt class="py-string">'l'</tt><tt class="py-op">,</tt> <tt class="py-string">"null"</tt><tt class="py-op">)</tt> </tt> -<a name="L101"></a><tt class="py-lineno">101</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-42" class="py-name"><a title="scapi.json.JsonReader._assertNext" class="py-name" href="#" onclick="return doclink('link-42', '_assertNext', 'link-30');">_assertNext</a></tt><tt class="py-op">(</tt><tt class="py-string">'l'</tt><tt class="py-op">,</tt> <tt class="py-string">"null"</tt><tt class="py-op">)</tt> </tt> -<a name="L102"></a><tt class="py-lineno">102</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt> -</div><a name="L103"></a><tt class="py-lineno">103</tt> <tt class="py-line"> </tt> -<a name="JsonReader._assertNext"></a><div id="JsonReader._assertNext-def"><a name="L104"></a><tt class="py-lineno">104</tt> <a class="py-toggle" href="#" id="JsonReader._assertNext-toggle" onclick="return toggle('JsonReader._assertNext');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.json.JsonReader-class.html#_assertNext">_assertNext</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">ch</tt><tt class="py-op">,</tt> <tt class="py-param">target</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="JsonReader._assertNext-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="JsonReader._assertNext-expanded"><a name="L105"></a><tt class="py-lineno">105</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-43" class="py-name" targets="Method scapi.json.JsonReader._next()=scapi.json.JsonReader-class.html#_next"><a title="scapi.json.JsonReader._next" class="py-name" href="#" onclick="return doclink('link-43', '_next', 'link-43');">_next</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">!=</tt> <tt class="py-name">ch</tt><tt class="py-op">:</tt> </tt> -<a name="L106"></a><tt class="py-lineno">106</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-44" class="py-name"><a title="scapi.json.ReadException" class="py-name" href="#" onclick="return doclink('link-44', 'ReadException', 'link-8');">ReadException</a></tt><tt class="py-op">,</tt> <tt class="py-string">"Trying to read %s: '%s'"</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">target</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_generator</tt><tt class="py-op">.</tt><tt id="link-45" class="py-name"><a title="scapi.json._StringGenerator.all" class="py-name" href="#" onclick="return doclink('link-45', 'all', 'link-9');">all</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -</div><a name="L107"></a><tt class="py-lineno">107</tt> <tt class="py-line"> </tt> -<a name="JsonReader._readNumber"></a><div id="JsonReader._readNumber-def"><a name="L108"></a><tt class="py-lineno">108</tt> <a class="py-toggle" href="#" id="JsonReader._readNumber-toggle" onclick="return toggle('JsonReader._readNumber');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.json.JsonReader-class.html#_readNumber">_readNumber</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="JsonReader._readNumber-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="JsonReader._readNumber-expanded"><a name="L109"></a><tt class="py-lineno">109</tt> <tt class="py-line"> <tt class="py-name">isfloat</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt> -<a name="L110"></a><tt class="py-lineno">110</tt> <tt class="py-line"> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-46" class="py-name"><a title="scapi.json.JsonReader._next" class="py-name" href="#" onclick="return doclink('link-46', '_next', 'link-43');">_next</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L111"></a><tt class="py-lineno">111</tt> <tt class="py-line"> <tt id="link-47" class="py-name"><a title="scapi.json._StringGenerator.peek" class="py-name" href="#" onclick="return doclink('link-47', 'peek', 'link-5');">peek</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-48" class="py-name"><a title="scapi.json.JsonReader._peek" class="py-name" href="#" onclick="return doclink('link-48', '_peek', 'link-6');">_peek</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L112"></a><tt class="py-lineno">112</tt> <tt class="py-line"> <tt class="py-keyword">while</tt> <tt id="link-49" class="py-name"><a title="scapi.json._StringGenerator.peek" class="py-name" href="#" onclick="return doclink('link-49', 'peek', 'link-5');">peek</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt> <tt class="py-keyword">and</tt> <tt class="py-op">(</tt><tt id="link-50" class="py-name"><a title="scapi.json._StringGenerator.peek" class="py-name" href="#" onclick="return doclink('link-50', 'peek', 'link-5');">peek</a></tt><tt class="py-op">.</tt><tt class="py-name">isdigit</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt id="link-51" class="py-name"><a title="scapi.json._StringGenerator.peek" class="py-name" href="#" onclick="return doclink('link-51', 'peek', 'link-5');">peek</a></tt> <tt class="py-op">==</tt> <tt class="py-string">"."</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L113"></a><tt class="py-lineno">113</tt> <tt class="py-line"> <tt class="py-name">isfloat</tt> <tt class="py-op">=</tt> <tt class="py-name">isfloat</tt> <tt class="py-keyword">or</tt> <tt id="link-52" class="py-name"><a title="scapi.json._StringGenerator.peek" class="py-name" href="#" onclick="return doclink('link-52', 'peek', 'link-5');">peek</a></tt> <tt class="py-op">==</tt> <tt class="py-string">"."</tt> </tt> -<a name="L114"></a><tt class="py-lineno">114</tt> <tt class="py-line"> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-name">result</tt> <tt class="py-op">+</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-53" class="py-name"><a title="scapi.json.JsonReader._next" class="py-name" href="#" onclick="return doclink('link-53', '_next', 'link-43');">_next</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L115"></a><tt class="py-lineno">115</tt> <tt class="py-line"> <tt id="link-54" class="py-name"><a title="scapi.json._StringGenerator.peek" class="py-name" href="#" onclick="return doclink('link-54', 'peek', 'link-5');">peek</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-55" class="py-name"><a title="scapi.json.JsonReader._peek" class="py-name" href="#" onclick="return doclink('link-55', '_peek', 'link-6');">_peek</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L116"></a><tt class="py-lineno">116</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> -<a name="L117"></a><tt class="py-lineno">117</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">isfloat</tt><tt class="py-op">:</tt> </tt> -<a name="L118"></a><tt class="py-lineno">118</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">float</tt><tt class="py-op">(</tt><tt class="py-name">result</tt><tt class="py-op">)</tt> </tt> -<a name="L119"></a><tt class="py-lineno">119</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> -<a name="L120"></a><tt class="py-lineno">120</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">int</tt><tt class="py-op">(</tt><tt class="py-name">result</tt><tt class="py-op">)</tt> </tt> -<a name="L121"></a><tt class="py-lineno">121</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">ValueError</tt><tt class="py-op">:</tt> </tt> -<a name="L122"></a><tt class="py-lineno">122</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-56" class="py-name"><a title="scapi.json.ReadException" class="py-name" href="#" onclick="return doclink('link-56', 'ReadException', 'link-8');">ReadException</a></tt><tt class="py-op">,</tt> <tt class="py-string">"Not a valid JSON number: '%s'"</tt> <tt class="py-op">%</tt> <tt class="py-name">result</tt> </tt> -</div><a name="L123"></a><tt class="py-lineno">123</tt> <tt class="py-line"> </tt> -<a name="JsonReader._readString"></a><div id="JsonReader._readString-def"><a name="L124"></a><tt class="py-lineno">124</tt> <a class="py-toggle" href="#" id="JsonReader._readString-toggle" onclick="return toggle('JsonReader._readString');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.json.JsonReader-class.html#_readString">_readString</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="JsonReader._readString-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="JsonReader._readString-expanded"><a name="L125"></a><tt class="py-lineno">125</tt> <tt class="py-line"> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-string">""</tt> </tt> -<a name="L126"></a><tt class="py-lineno">126</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-57" class="py-name"><a title="scapi.json.JsonReader._next" class="py-name" href="#" onclick="return doclink('link-57', '_next', 'link-43');">_next</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-string">'"'</tt> </tt> -<a name="L127"></a><tt class="py-lineno">127</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> -<a name="L128"></a><tt class="py-lineno">128</tt> <tt class="py-line"> <tt class="py-keyword">while</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-58" class="py-name"><a title="scapi.json.JsonReader._peek" class="py-name" href="#" onclick="return doclink('link-58', '_peek', 'link-6');">_peek</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">!=</tt> <tt class="py-string">'"'</tt><tt class="py-op">:</tt> </tt> -<a name="L129"></a><tt class="py-lineno">129</tt> <tt class="py-line"> <tt class="py-name">ch</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-59" class="py-name"><a title="scapi.json.JsonReader._next" class="py-name" href="#" onclick="return doclink('link-59', '_next', 'link-43');">_next</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L130"></a><tt class="py-lineno">130</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">ch</tt> <tt class="py-op">==</tt> <tt class="py-string">"\\"</tt><tt class="py-op">:</tt> </tt> -<a name="L131"></a><tt class="py-lineno">131</tt> <tt class="py-line"> <tt class="py-name">ch</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-60" class="py-name"><a title="scapi.json.JsonReader._next" class="py-name" href="#" onclick="return doclink('link-60', '_next', 'link-43');">_next</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L132"></a><tt class="py-lineno">132</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">ch</tt> <tt class="py-keyword">in</tt> <tt class="py-string">'brnft'</tt><tt class="py-op">:</tt> </tt> -<a name="L133"></a><tt class="py-lineno">133</tt> <tt class="py-line"> <tt class="py-name">ch</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-61" class="py-name"><a title="scapi.json.JsonReader.escapes" class="py-name" href="#" onclick="return doclink('link-61', 'escapes', 'link-1');">escapes</a></tt><tt class="py-op">[</tt><tt class="py-name">ch</tt><tt class="py-op">]</tt> </tt> -<a name="L134"></a><tt class="py-lineno">134</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">ch</tt> <tt class="py-op">==</tt> <tt class="py-string">"u"</tt><tt class="py-op">:</tt> </tt> -<a name="L135"></a><tt class="py-lineno">135</tt> <tt class="py-line"> <tt class="py-name">ch4096</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-62" class="py-name"><a title="scapi.json.JsonReader._next" class="py-name" href="#" onclick="return doclink('link-62', '_next', 'link-43');">_next</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L136"></a><tt class="py-lineno">136</tt> <tt class="py-line"> <tt class="py-name">ch256</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-63" class="py-name"><a title="scapi.json.JsonReader._next" class="py-name" href="#" onclick="return doclink('link-63', '_next', 'link-43');">_next</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L137"></a><tt class="py-lineno">137</tt> <tt class="py-line"> <tt class="py-name">ch16</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-64" class="py-name"><a title="scapi.json.JsonReader._next" class="py-name" href="#" onclick="return doclink('link-64', '_next', 'link-43');">_next</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L138"></a><tt class="py-lineno">138</tt> <tt class="py-line"> <tt class="py-name">ch1</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-65" class="py-name"><a title="scapi.json.JsonReader._next" class="py-name" href="#" onclick="return doclink('link-65', '_next', 'link-43');">_next</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L139"></a><tt class="py-lineno">139</tt> <tt class="py-line"> <tt class="py-name">n</tt> <tt class="py-op">=</tt> <tt class="py-number">4096</tt> <tt class="py-op">*</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-66" class="py-name" targets="Method scapi.json.JsonReader._hexDigitToInt()=scapi.json.JsonReader-class.html#_hexDigitToInt"><a title="scapi.json.JsonReader._hexDigitToInt" class="py-name" href="#" onclick="return doclink('link-66', '_hexDigitToInt', 'link-66');">_hexDigitToInt</a></tt><tt class="py-op">(</tt><tt class="py-name">ch4096</tt><tt class="py-op">)</tt> </tt> -<a name="L140"></a><tt class="py-lineno">140</tt> <tt class="py-line"> <tt class="py-name">n</tt> <tt class="py-op">+=</tt> <tt class="py-number">256</tt> <tt class="py-op">*</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-67" class="py-name"><a title="scapi.json.JsonReader._hexDigitToInt" class="py-name" href="#" onclick="return doclink('link-67', '_hexDigitToInt', 'link-66');">_hexDigitToInt</a></tt><tt class="py-op">(</tt><tt class="py-name">ch256</tt><tt class="py-op">)</tt> </tt> -<a name="L141"></a><tt class="py-lineno">141</tt> <tt class="py-line"> <tt class="py-name">n</tt> <tt class="py-op">+=</tt> <tt class="py-number">16</tt> <tt class="py-op">*</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-68" class="py-name"><a title="scapi.json.JsonReader._hexDigitToInt" class="py-name" href="#" onclick="return doclink('link-68', '_hexDigitToInt', 'link-66');">_hexDigitToInt</a></tt><tt class="py-op">(</tt><tt class="py-name">ch16</tt><tt class="py-op">)</tt> </tt> -<a name="L142"></a><tt class="py-lineno">142</tt> <tt class="py-line"> <tt class="py-name">n</tt> <tt class="py-op">+=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-69" class="py-name"><a title="scapi.json.JsonReader._hexDigitToInt" class="py-name" href="#" onclick="return doclink('link-69', '_hexDigitToInt', 'link-66');">_hexDigitToInt</a></tt><tt class="py-op">(</tt><tt class="py-name">ch1</tt><tt class="py-op">)</tt> </tt> -<a name="L143"></a><tt class="py-lineno">143</tt> <tt class="py-line"> <tt class="py-name">ch</tt> <tt class="py-op">=</tt> <tt class="py-name">unichr</tt><tt class="py-op">(</tt><tt class="py-name">n</tt><tt class="py-op">)</tt> </tt> -<a name="L144"></a><tt class="py-lineno">144</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">ch</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-string">'"/\\'</tt><tt class="py-op">:</tt> </tt> -<a name="L145"></a><tt class="py-lineno">145</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-70" class="py-name"><a title="scapi.json.ReadException" class="py-name" href="#" onclick="return doclink('link-70', 'ReadException', 'link-8');">ReadException</a></tt><tt class="py-op">,</tt> <tt class="py-string">"Not a valid escaped JSON character: '%s' in %s"</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">ch</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_generator</tt><tt class="py-op">.</tt><tt id="link-71" class="py-name"><a title="scapi.json._StringGenerator.all" class="py-name" href="#" onclick="return doclink('link-71', 'all', 'link-9');">all</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L146"></a><tt class="py-lineno">146</tt> <tt class="py-line"> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-name">result</tt> <tt class="py-op">+</tt> <tt class="py-name">ch</tt> </tt> -<a name="L147"></a><tt class="py-lineno">147</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">StopIteration</tt><tt class="py-op">:</tt> </tt> -<a name="L148"></a><tt class="py-lineno">148</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-72" class="py-name"><a title="scapi.json.ReadException" class="py-name" href="#" onclick="return doclink('link-72', 'ReadException', 'link-8');">ReadException</a></tt><tt class="py-op">,</tt> <tt class="py-string">"Not a valid JSON string: '%s'"</tt> <tt class="py-op">%</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_generator</tt><tt class="py-op">.</tt><tt id="link-73" class="py-name"><a title="scapi.json._StringGenerator.all" class="py-name" href="#" onclick="return doclink('link-73', 'all', 'link-9');">all</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L149"></a><tt class="py-lineno">149</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-74" class="py-name"><a title="scapi.json.JsonReader._next" class="py-name" href="#" onclick="return doclink('link-74', '_next', 'link-43');">_next</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-string">'"'</tt> </tt> -<a name="L150"></a><tt class="py-lineno">150</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">result</tt> </tt> -</div><a name="L151"></a><tt class="py-lineno">151</tt> <tt class="py-line"> </tt> -<a name="JsonReader._hexDigitToInt"></a><div id="JsonReader._hexDigitToInt-def"><a name="L152"></a><tt class="py-lineno">152</tt> <a class="py-toggle" href="#" id="JsonReader._hexDigitToInt-toggle" onclick="return toggle('JsonReader._hexDigitToInt');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.json.JsonReader-class.html#_hexDigitToInt">_hexDigitToInt</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">ch</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="JsonReader._hexDigitToInt-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="JsonReader._hexDigitToInt-expanded"><a name="L153"></a><tt class="py-lineno">153</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> -<a name="L154"></a><tt class="py-lineno">154</tt> <tt class="py-line"> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-75" class="py-name"><a title="scapi.json.JsonReader.hex_digits" class="py-name" href="#" onclick="return doclink('link-75', 'hex_digits', 'link-0');">hex_digits</a></tt><tt class="py-op">[</tt><tt class="py-name">ch</tt><tt class="py-op">.</tt><tt class="py-name">upper</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">]</tt> </tt> -<a name="L155"></a><tt class="py-lineno">155</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">KeyError</tt><tt class="py-op">:</tt> </tt> -<a name="L156"></a><tt class="py-lineno">156</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> -<a name="L157"></a><tt class="py-lineno">157</tt> <tt class="py-line"> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-name">int</tt><tt class="py-op">(</tt><tt class="py-name">ch</tt><tt class="py-op">)</tt> </tt> -<a name="L158"></a><tt class="py-lineno">158</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">ValueError</tt><tt class="py-op">:</tt> </tt> -<a name="L159"></a><tt class="py-lineno">159</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-76" class="py-name"><a title="scapi.json.ReadException" class="py-name" href="#" onclick="return doclink('link-76', 'ReadException', 'link-8');">ReadException</a></tt><tt class="py-op">,</tt> <tt class="py-string">"The character %s is not a hex digit."</tt> <tt class="py-op">%</tt> <tt class="py-name">ch</tt> </tt> -<a name="L160"></a><tt class="py-lineno">160</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">result</tt> </tt> -</div><a name="L161"></a><tt class="py-lineno">161</tt> <tt class="py-line"> </tt> -<a name="JsonReader._readComment"></a><div id="JsonReader._readComment-def"><a name="L162"></a><tt class="py-lineno">162</tt> <a class="py-toggle" href="#" id="JsonReader._readComment-toggle" onclick="return toggle('JsonReader._readComment');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.json.JsonReader-class.html#_readComment">_readComment</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="JsonReader._readComment-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="JsonReader._readComment-expanded"><a name="L163"></a><tt class="py-lineno">163</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-77" class="py-name"><a title="scapi.json.JsonReader._next" class="py-name" href="#" onclick="return doclink('link-77', '_next', 'link-43');">_next</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-string">"/"</tt> </tt> -<a name="L164"></a><tt class="py-lineno">164</tt> <tt class="py-line"> <tt class="py-name">second</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-78" class="py-name"><a title="scapi.json.JsonReader._next" class="py-name" href="#" onclick="return doclink('link-78', '_next', 'link-43');">_next</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L165"></a><tt class="py-lineno">165</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">second</tt> <tt class="py-op">==</tt> <tt class="py-string">"/"</tt><tt class="py-op">:</tt> </tt> -<a name="L166"></a><tt class="py-lineno">166</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-79" class="py-name" targets="Method scapi.json.JsonReader._readDoubleSolidusComment()=scapi.json.JsonReader-class.html#_readDoubleSolidusComment"><a title="scapi.json.JsonReader._readDoubleSolidusComment" class="py-name" href="#" onclick="return doclink('link-79', '_readDoubleSolidusComment', 'link-79');">_readDoubleSolidusComment</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L167"></a><tt class="py-lineno">167</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">second</tt> <tt class="py-op">==</tt> <tt class="py-string">'*'</tt><tt class="py-op">:</tt> </tt> -<a name="L168"></a><tt class="py-lineno">168</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-80" class="py-name" targets="Method scapi.json.JsonReader._readCStyleComment()=scapi.json.JsonReader-class.html#_readCStyleComment"><a title="scapi.json.JsonReader._readCStyleComment" class="py-name" href="#" onclick="return doclink('link-80', '_readCStyleComment', 'link-80');">_readCStyleComment</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L169"></a><tt class="py-lineno">169</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> -<a name="L170"></a><tt class="py-lineno">170</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-81" class="py-name"><a title="scapi.json.ReadException" class="py-name" href="#" onclick="return doclink('link-81', 'ReadException', 'link-8');">ReadException</a></tt><tt class="py-op">,</tt> <tt class="py-string">"Not a valid JSON comment: %s"</tt> <tt class="py-op">%</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_generator</tt><tt class="py-op">.</tt><tt id="link-82" class="py-name"><a title="scapi.json._StringGenerator.all" class="py-name" href="#" onclick="return doclink('link-82', 'all', 'link-9');">all</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -</div><a name="L171"></a><tt class="py-lineno">171</tt> <tt class="py-line"> </tt> -<a name="JsonReader._readCStyleComment"></a><div id="JsonReader._readCStyleComment-def"><a name="L172"></a><tt class="py-lineno">172</tt> <a class="py-toggle" href="#" id="JsonReader._readCStyleComment-toggle" onclick="return toggle('JsonReader._readCStyleComment');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.json.JsonReader-class.html#_readCStyleComment">_readCStyleComment</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="JsonReader._readCStyleComment-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="JsonReader._readCStyleComment-expanded"><a name="L173"></a><tt class="py-lineno">173</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> -<a name="L174"></a><tt class="py-lineno">174</tt> <tt class="py-line"> <tt class="py-name">done</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt> -<a name="L175"></a><tt class="py-lineno">175</tt> <tt class="py-line"> <tt class="py-keyword">while</tt> <tt class="py-keyword">not</tt> <tt class="py-name">done</tt><tt class="py-op">:</tt> </tt> -<a name="L176"></a><tt class="py-lineno">176</tt> <tt class="py-line"> <tt class="py-name">ch</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-83" class="py-name"><a title="scapi.json.JsonReader._next" class="py-name" href="#" onclick="return doclink('link-83', '_next', 'link-43');">_next</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L177"></a><tt class="py-lineno">177</tt> <tt class="py-line"> <tt class="py-name">done</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">ch</tt> <tt class="py-op">==</tt> <tt class="py-string">"*"</tt> <tt class="py-keyword">and</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-84" class="py-name"><a title="scapi.json.JsonReader._peek" class="py-name" href="#" onclick="return doclink('link-84', '_peek', 'link-6');">_peek</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-string">"/"</tt><tt class="py-op">)</tt> </tt> -<a name="L178"></a><tt class="py-lineno">178</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">done</tt> <tt class="py-keyword">and</tt> <tt class="py-name">ch</tt> <tt class="py-op">==</tt> <tt class="py-string">"/"</tt> <tt class="py-keyword">and</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-85" class="py-name"><a title="scapi.json.JsonReader._peek" class="py-name" href="#" onclick="return doclink('link-85', '_peek', 'link-6');">_peek</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-string">"*"</tt><tt class="py-op">:</tt> </tt> -<a name="L179"></a><tt class="py-lineno">179</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-86" class="py-name"><a title="scapi.json.ReadException" class="py-name" href="#" onclick="return doclink('link-86', 'ReadException', 'link-8');">ReadException</a></tt><tt class="py-op">,</tt> <tt class="py-string">"Not a valid JSON comment: %s, '/*' cannot be embedded in the comment."</tt> <tt class="py-op">%</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_generator</tt><tt class="py-op">.</tt><tt id="link-87" class="py-name"><a title="scapi.json._StringGenerator.all" class="py-name" href="#" onclick="return doclink('link-87', 'all', 'link-9');">all</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L180"></a><tt class="py-lineno">180</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-88" class="py-name"><a title="scapi.json.JsonReader._next" class="py-name" href="#" onclick="return doclink('link-88', '_next', 'link-43');">_next</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L181"></a><tt class="py-lineno">181</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">StopIteration</tt><tt class="py-op">:</tt> </tt> -<a name="L182"></a><tt class="py-lineno">182</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-89" class="py-name"><a title="scapi.json.ReadException" class="py-name" href="#" onclick="return doclink('link-89', 'ReadException', 'link-8');">ReadException</a></tt><tt class="py-op">,</tt> <tt class="py-string">"Not a valid JSON comment: %s, expected */"</tt> <tt class="py-op">%</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_generator</tt><tt class="py-op">.</tt><tt id="link-90" class="py-name"><a title="scapi.json._StringGenerator.all" class="py-name" href="#" onclick="return doclink('link-90', 'all', 'link-9');">all</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -</div><a name="L183"></a><tt class="py-lineno">183</tt> <tt class="py-line"> </tt> -<a name="JsonReader._readDoubleSolidusComment"></a><div id="JsonReader._readDoubleSolidusComment-def"><a name="L184"></a><tt class="py-lineno">184</tt> <a class="py-toggle" href="#" id="JsonReader._readDoubleSolidusComment-toggle" onclick="return toggle('JsonReader._readDoubleSolidusComment');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.json.JsonReader-class.html#_readDoubleSolidusComment">_readDoubleSolidusComment</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="JsonReader._readDoubleSolidusComment-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="JsonReader._readDoubleSolidusComment-expanded"><a name="L185"></a><tt class="py-lineno">185</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> -<a name="L186"></a><tt class="py-lineno">186</tt> <tt class="py-line"> <tt class="py-name">ch</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-91" class="py-name"><a title="scapi.json.JsonReader._next" class="py-name" href="#" onclick="return doclink('link-91', '_next', 'link-43');">_next</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L187"></a><tt class="py-lineno">187</tt> <tt class="py-line"> <tt class="py-keyword">while</tt> <tt class="py-name">ch</tt> <tt class="py-op">!=</tt> <tt class="py-string">"\r"</tt> <tt class="py-keyword">and</tt> <tt class="py-name">ch</tt> <tt class="py-op">!=</tt> <tt class="py-string">"\n"</tt><tt class="py-op">:</tt> </tt> -<a name="L188"></a><tt class="py-lineno">188</tt> <tt class="py-line"> <tt class="py-name">ch</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-92" class="py-name"><a title="scapi.json.JsonReader._next" class="py-name" href="#" onclick="return doclink('link-92', '_next', 'link-43');">_next</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L189"></a><tt class="py-lineno">189</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">StopIteration</tt><tt class="py-op">:</tt> </tt> -<a name="L190"></a><tt class="py-lineno">190</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt> -</div><a name="L191"></a><tt class="py-lineno">191</tt> <tt class="py-line"> </tt> -<a name="JsonReader._readArray"></a><div id="JsonReader._readArray-def"><a name="L192"></a><tt class="py-lineno">192</tt> <a class="py-toggle" href="#" id="JsonReader._readArray-toggle" onclick="return toggle('JsonReader._readArray');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.json.JsonReader-class.html#_readArray">_readArray</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="JsonReader._readArray-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="JsonReader._readArray-expanded"><a name="L193"></a><tt class="py-lineno">193</tt> <tt class="py-line"> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt> -<a name="L194"></a><tt class="py-lineno">194</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-93" class="py-name"><a title="scapi.json.JsonReader._next" class="py-name" href="#" onclick="return doclink('link-93', '_next', 'link-43');">_next</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-string">'['</tt> </tt> -<a name="L195"></a><tt class="py-lineno">195</tt> <tt class="py-line"> <tt class="py-name">done</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-94" class="py-name"><a title="scapi.json.JsonReader._peek" class="py-name" href="#" onclick="return doclink('link-94', '_peek', 'link-6');">_peek</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-string">']'</tt> </tt> -<a name="L196"></a><tt class="py-lineno">196</tt> <tt class="py-line"> <tt class="py-keyword">while</tt> <tt class="py-keyword">not</tt> <tt class="py-name">done</tt><tt class="py-op">:</tt> </tt> -<a name="L197"></a><tt class="py-lineno">197</tt> <tt class="py-line"> <tt class="py-name">item</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-95" class="py-name"><a title="scapi.json.JsonReader._read" class="py-name" href="#" onclick="return doclink('link-95', '_read', 'link-3');">_read</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L198"></a><tt class="py-lineno">198</tt> <tt class="py-line"> <tt class="py-name">result</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">item</tt><tt class="py-op">)</tt> </tt> -<a name="L199"></a><tt class="py-lineno">199</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-96" class="py-name"><a title="scapi.json.JsonReader._eatWhitespace" class="py-name" href="#" onclick="return doclink('link-96', '_eatWhitespace', 'link-4');">_eatWhitespace</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L200"></a><tt class="py-lineno">200</tt> <tt class="py-line"> <tt class="py-name">done</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-97" class="py-name"><a title="scapi.json.JsonReader._peek" class="py-name" href="#" onclick="return doclink('link-97', '_peek', 'link-6');">_peek</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-string">']'</tt> </tt> -<a name="L201"></a><tt class="py-lineno">201</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">done</tt><tt class="py-op">:</tt> </tt> -<a name="L202"></a><tt class="py-lineno">202</tt> <tt class="py-line"> <tt class="py-name">ch</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-98" class="py-name"><a title="scapi.json.JsonReader._next" class="py-name" href="#" onclick="return doclink('link-98', '_next', 'link-43');">_next</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L203"></a><tt class="py-lineno">203</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">ch</tt> <tt class="py-op">!=</tt> <tt class="py-string">","</tt><tt class="py-op">:</tt> </tt> -<a name="L204"></a><tt class="py-lineno">204</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-99" class="py-name"><a title="scapi.json.ReadException" class="py-name" href="#" onclick="return doclink('link-99', 'ReadException', 'link-8');">ReadException</a></tt><tt class="py-op">,</tt> <tt class="py-string">"Not a valid JSON array: '%s' due to: '%s'"</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_generator</tt><tt class="py-op">.</tt><tt id="link-100" class="py-name"><a title="scapi.json._StringGenerator.all" class="py-name" href="#" onclick="return doclink('link-100', 'all', 'link-9');">all</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">ch</tt><tt class="py-op">)</tt> </tt> -<a name="L205"></a><tt class="py-lineno">205</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-string">']'</tt> <tt class="py-op">==</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-101" class="py-name"><a title="scapi.json.JsonReader._next" class="py-name" href="#" onclick="return doclink('link-101', '_next', 'link-43');">_next</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L206"></a><tt class="py-lineno">206</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">result</tt> </tt> -</div><a name="L207"></a><tt class="py-lineno">207</tt> <tt class="py-line"> </tt> -<a name="JsonReader._readObject"></a><div id="JsonReader._readObject-def"><a name="L208"></a><tt class="py-lineno">208</tt> <a class="py-toggle" href="#" id="JsonReader._readObject-toggle" onclick="return toggle('JsonReader._readObject');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.json.JsonReader-class.html#_readObject">_readObject</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="JsonReader._readObject-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="JsonReader._readObject-expanded"><a name="L209"></a><tt class="py-lineno">209</tt> <tt class="py-line"> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt> -<a name="L210"></a><tt class="py-lineno">210</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-102" class="py-name"><a title="scapi.json.JsonReader._next" class="py-name" href="#" onclick="return doclink('link-102', '_next', 'link-43');">_next</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-string">'{'</tt> </tt> -<a name="L211"></a><tt class="py-lineno">211</tt> <tt class="py-line"> <tt class="py-name">done</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-103" class="py-name"><a title="scapi.json.JsonReader._peek" class="py-name" href="#" onclick="return doclink('link-103', '_peek', 'link-6');">_peek</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-string">'}'</tt> </tt> -<a name="L212"></a><tt class="py-lineno">212</tt> <tt class="py-line"> <tt class="py-keyword">while</tt> <tt class="py-keyword">not</tt> <tt class="py-name">done</tt><tt class="py-op">:</tt> </tt> -<a name="L213"></a><tt class="py-lineno">213</tt> <tt class="py-line"> <tt class="py-name">key</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-104" class="py-name"><a title="scapi.json.JsonReader._read" class="py-name" href="#" onclick="return doclink('link-104', '_read', 'link-3');">_read</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L214"></a><tt class="py-lineno">214</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">)</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">types</tt><tt class="py-op">.</tt><tt class="py-name">StringType</tt><tt class="py-op">:</tt> </tt> -<a name="L215"></a><tt class="py-lineno">215</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-105" class="py-name"><a title="scapi.json.ReadException" class="py-name" href="#" onclick="return doclink('link-105', 'ReadException', 'link-8');">ReadException</a></tt><tt class="py-op">,</tt> <tt class="py-string">"Not a valid JSON object key (should be a string): %s"</tt> <tt class="py-op">%</tt> <tt class="py-name">key</tt> </tt> -<a name="L216"></a><tt class="py-lineno">216</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-106" class="py-name"><a title="scapi.json.JsonReader._eatWhitespace" class="py-name" href="#" onclick="return doclink('link-106', '_eatWhitespace', 'link-4');">_eatWhitespace</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L217"></a><tt class="py-lineno">217</tt> <tt class="py-line"> <tt class="py-name">ch</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-107" class="py-name"><a title="scapi.json.JsonReader._next" class="py-name" href="#" onclick="return doclink('link-107', '_next', 'link-43');">_next</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L218"></a><tt class="py-lineno">218</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">ch</tt> <tt class="py-op">!=</tt> <tt class="py-string">":"</tt><tt class="py-op">:</tt> </tt> -<a name="L219"></a><tt class="py-lineno">219</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-108" class="py-name"><a title="scapi.json.ReadException" class="py-name" href="#" onclick="return doclink('link-108', 'ReadException', 'link-8');">ReadException</a></tt><tt class="py-op">,</tt> <tt class="py-string">"Not a valid JSON object: '%s' due to: '%s'"</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_generator</tt><tt class="py-op">.</tt><tt id="link-109" class="py-name"><a title="scapi.json._StringGenerator.all" class="py-name" href="#" onclick="return doclink('link-109', 'all', 'link-9');">all</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">ch</tt><tt class="py-op">)</tt> </tt> -<a name="L220"></a><tt class="py-lineno">220</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-110" class="py-name"><a title="scapi.json.JsonReader._eatWhitespace" class="py-name" href="#" onclick="return doclink('link-110', '_eatWhitespace', 'link-4');">_eatWhitespace</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L221"></a><tt class="py-lineno">221</tt> <tt class="py-line"> <tt class="py-name">val</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-111" class="py-name"><a title="scapi.json.JsonReader._read" class="py-name" href="#" onclick="return doclink('link-111', '_read', 'link-3');">_read</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L222"></a><tt class="py-lineno">222</tt> <tt class="py-line"> <tt class="py-name">result</tt><tt class="py-op">[</tt><tt class="py-name">key</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">val</tt> </tt> -<a name="L223"></a><tt class="py-lineno">223</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-112" class="py-name"><a title="scapi.json.JsonReader._eatWhitespace" class="py-name" href="#" onclick="return doclink('link-112', '_eatWhitespace', 'link-4');">_eatWhitespace</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L224"></a><tt class="py-lineno">224</tt> <tt class="py-line"> <tt class="py-name">done</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-113" class="py-name"><a title="scapi.json.JsonReader._peek" class="py-name" href="#" onclick="return doclink('link-113', '_peek', 'link-6');">_peek</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-string">'}'</tt> </tt> -<a name="L225"></a><tt class="py-lineno">225</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">done</tt><tt class="py-op">:</tt> </tt> -<a name="L226"></a><tt class="py-lineno">226</tt> <tt class="py-line"> <tt class="py-name">ch</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-114" class="py-name"><a title="scapi.json.JsonReader._next" class="py-name" href="#" onclick="return doclink('link-114', '_next', 'link-43');">_next</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L227"></a><tt class="py-lineno">227</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">ch</tt> <tt class="py-op">!=</tt> <tt class="py-string">","</tt><tt class="py-op">:</tt> </tt> -<a name="L228"></a><tt class="py-lineno">228</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-115" class="py-name"><a title="scapi.json.ReadException" class="py-name" href="#" onclick="return doclink('link-115', 'ReadException', 'link-8');">ReadException</a></tt><tt class="py-op">,</tt> <tt class="py-string">"Not a valid JSON array: '%s' due to: '%s'"</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_generator</tt><tt class="py-op">.</tt><tt id="link-116" class="py-name"><a title="scapi.json._StringGenerator.all" class="py-name" href="#" onclick="return doclink('link-116', 'all', 'link-9');">all</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">ch</tt><tt class="py-op">)</tt> </tt> -<a name="L229"></a><tt class="py-lineno">229</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-117" class="py-name"><a title="scapi.json.JsonReader._next" class="py-name" href="#" onclick="return doclink('link-117', '_next', 'link-43');">_next</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-string">"}"</tt> </tt> -<a name="L230"></a><tt class="py-lineno">230</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">result</tt> </tt> -</div><a name="L231"></a><tt class="py-lineno">231</tt> <tt class="py-line"> </tt> -<a name="JsonReader._eatWhitespace"></a><div id="JsonReader._eatWhitespace-def"><a name="L232"></a><tt class="py-lineno">232</tt> <a class="py-toggle" href="#" id="JsonReader._eatWhitespace-toggle" onclick="return toggle('JsonReader._eatWhitespace');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.json.JsonReader-class.html#_eatWhitespace">_eatWhitespace</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="JsonReader._eatWhitespace-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="JsonReader._eatWhitespace-expanded"><a name="L233"></a><tt class="py-lineno">233</tt> <tt class="py-line"> <tt class="py-name">p</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-118" class="py-name"><a title="scapi.json.JsonReader._peek" class="py-name" href="#" onclick="return doclink('link-118', '_peek', 'link-6');">_peek</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L234"></a><tt class="py-lineno">234</tt> <tt class="py-line"> <tt class="py-keyword">while</tt> <tt class="py-name">p</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt> <tt class="py-keyword">and</tt> <tt class="py-name">p</tt> <tt class="py-keyword">in</tt> <tt class="py-name">string</tt><tt class="py-op">.</tt><tt class="py-name">whitespace</tt> <tt class="py-keyword">or</tt> <tt class="py-name">p</tt> <tt class="py-op">==</tt> <tt class="py-string">'/'</tt><tt class="py-op">:</tt> </tt> -<a name="L235"></a><tt class="py-lineno">235</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">p</tt> <tt class="py-op">==</tt> <tt class="py-string">'/'</tt><tt class="py-op">:</tt> </tt> -<a name="L236"></a><tt class="py-lineno">236</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-119" class="py-name"><a title="scapi.json.JsonReader._readComment" class="py-name" href="#" onclick="return doclink('link-119', '_readComment', 'link-26');">_readComment</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L237"></a><tt class="py-lineno">237</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> -<a name="L238"></a><tt class="py-lineno">238</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-120" class="py-name"><a title="scapi.json.JsonReader._next" class="py-name" href="#" onclick="return doclink('link-120', '_next', 'link-43');">_next</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L239"></a><tt class="py-lineno">239</tt> <tt class="py-line"> <tt class="py-name">p</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-121" class="py-name"><a title="scapi.json.JsonReader._peek" class="py-name" href="#" onclick="return doclink('link-121', '_peek', 'link-6');">_peek</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -</div><a name="L240"></a><tt class="py-lineno">240</tt> <tt class="py-line"> </tt> -<a name="JsonReader._peek"></a><div id="JsonReader._peek-def"><a name="L241"></a><tt class="py-lineno">241</tt> <a class="py-toggle" href="#" id="JsonReader._peek-toggle" onclick="return toggle('JsonReader._peek');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.json.JsonReader-class.html#_peek">_peek</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="JsonReader._peek-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="JsonReader._peek-expanded"><a name="L242"></a><tt class="py-lineno">242</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_generator</tt><tt class="py-op">.</tt><tt id="link-122" class="py-name"><a title="scapi.json._StringGenerator.peek" class="py-name" href="#" onclick="return doclink('link-122', 'peek', 'link-5');">peek</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -</div><a name="L243"></a><tt class="py-lineno">243</tt> <tt class="py-line"> </tt> -<a name="JsonReader._next"></a><div id="JsonReader._next-def"><a name="L244"></a><tt class="py-lineno">244</tt> <a class="py-toggle" href="#" id="JsonReader._next-toggle" onclick="return toggle('JsonReader._next');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.json.JsonReader-class.html#_next">_next</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="JsonReader._next-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="JsonReader._next-expanded"><a name="L245"></a><tt class="py-lineno">245</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_generator</tt><tt class="py-op">.</tt><tt id="link-123" class="py-name" targets="Method scapi.json._StringGenerator.next()=scapi.json._StringGenerator-class.html#next"><a title="scapi.json._StringGenerator.next" class="py-name" href="#" onclick="return doclink('link-123', 'next', 'link-123');">next</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -</div></div><a name="L246"></a><tt class="py-lineno">246</tt> <tt class="py-line"> </tt> -<a name="JsonWriter"></a><div id="JsonWriter-def"><a name="L247"></a><tt class="py-lineno">247</tt> <a class="py-toggle" href="#" id="JsonWriter-toggle" onclick="return toggle('JsonWriter');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="scapi.json.JsonWriter-class.html">JsonWriter</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="JsonWriter-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="JsonWriter-expanded"><a name="L248"></a><tt class="py-lineno">248</tt> <tt class="py-line"> </tt> -<a name="JsonWriter._append"></a><div id="JsonWriter._append-def"><a name="L249"></a><tt class="py-lineno">249</tt> <a class="py-toggle" href="#" id="JsonWriter._append-toggle" onclick="return toggle('JsonWriter._append');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.json.JsonWriter-class.html#_append">_append</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">s</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="JsonWriter._append-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="JsonWriter._append-expanded"><a name="L250"></a><tt class="py-lineno">250</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_results</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">)</tt> </tt> -</div><a name="L251"></a><tt class="py-lineno">251</tt> <tt class="py-line"> </tt> -<a name="JsonWriter.write"></a><div id="JsonWriter.write-def"><a name="L252"></a><tt class="py-lineno">252</tt> <a class="py-toggle" href="#" id="JsonWriter.write-toggle" onclick="return toggle('JsonWriter.write');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.json.JsonWriter-class.html#write">write</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">obj</tt><tt class="py-op">,</tt> <tt class="py-param">escaped_forward_slash</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="JsonWriter.write-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="JsonWriter.write-expanded"><a name="L253"></a><tt class="py-lineno">253</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_escaped_forward_slash</tt> <tt class="py-op">=</tt> <tt class="py-name">escaped_forward_slash</tt> </tt> -<a name="L254"></a><tt class="py-lineno">254</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_results</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt> -<a name="L255"></a><tt class="py-lineno">255</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-124" class="py-name" targets="Method scapi.json.JsonWriter._write()=scapi.json.JsonWriter-class.html#_write"><a title="scapi.json.JsonWriter._write" class="py-name" href="#" onclick="return doclink('link-124', '_write', 'link-124');">_write</a></tt><tt class="py-op">(</tt><tt class="py-name">obj</tt><tt class="py-op">)</tt> </tt> -<a name="L256"></a><tt class="py-lineno">256</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-string">""</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_results</tt><tt class="py-op">)</tt> </tt> -</div><a name="L257"></a><tt class="py-lineno">257</tt> <tt class="py-line"> </tt> -<a name="JsonWriter._write"></a><div id="JsonWriter._write-def"><a name="L258"></a><tt class="py-lineno">258</tt> <a class="py-toggle" href="#" id="JsonWriter._write-toggle" onclick="return toggle('JsonWriter._write');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.json.JsonWriter-class.html#_write">_write</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">obj</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="JsonWriter._write-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="JsonWriter._write-expanded"><a name="L259"></a><tt class="py-lineno">259</tt> <tt class="py-line"> <tt class="py-name">ty</tt> <tt class="py-op">=</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">obj</tt><tt class="py-op">)</tt> </tt> -<a name="L260"></a><tt class="py-lineno">260</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">ty</tt> <tt class="py-keyword">is</tt> <tt class="py-name">types</tt><tt class="py-op">.</tt><tt class="py-name">DictType</tt><tt class="py-op">:</tt> </tt> -<a name="L261"></a><tt class="py-lineno">261</tt> <tt class="py-line"> <tt class="py-name">n</tt> <tt class="py-op">=</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">obj</tt><tt class="py-op">)</tt> </tt> -<a name="L262"></a><tt class="py-lineno">262</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-125" class="py-name" targets="Method scapi.json.JsonWriter._append()=scapi.json.JsonWriter-class.html#_append"><a title="scapi.json.JsonWriter._append" class="py-name" href="#" onclick="return doclink('link-125', '_append', 'link-125');">_append</a></tt><tt class="py-op">(</tt><tt class="py-string">"{"</tt><tt class="py-op">)</tt> </tt> -<a name="L263"></a><tt class="py-lineno">263</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">k</tt><tt class="py-op">,</tt> <tt class="py-name">v</tt> <tt class="py-keyword">in</tt> <tt class="py-name">obj</tt><tt class="py-op">.</tt><tt class="py-name">items</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L264"></a><tt class="py-lineno">264</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-126" class="py-name"><a title="scapi.json.JsonWriter._write" class="py-name" href="#" onclick="return doclink('link-126', '_write', 'link-124');">_write</a></tt><tt class="py-op">(</tt><tt class="py-name">k</tt><tt class="py-op">)</tt> </tt> -<a name="L265"></a><tt class="py-lineno">265</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-127" class="py-name"><a title="scapi.json.JsonWriter._append" class="py-name" href="#" onclick="return doclink('link-127', '_append', 'link-125');">_append</a></tt><tt class="py-op">(</tt><tt class="py-string">":"</tt><tt class="py-op">)</tt> </tt> -<a name="L266"></a><tt class="py-lineno">266</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-128" class="py-name"><a title="scapi.json.JsonWriter._write" class="py-name" href="#" onclick="return doclink('link-128', '_write', 'link-124');">_write</a></tt><tt class="py-op">(</tt><tt class="py-name">v</tt><tt class="py-op">)</tt> </tt> -<a name="L267"></a><tt class="py-lineno">267</tt> <tt class="py-line"> <tt class="py-name">n</tt> <tt class="py-op">=</tt> <tt class="py-name">n</tt> <tt class="py-op">-</tt> <tt class="py-number">1</tt> </tt> -<a name="L268"></a><tt class="py-lineno">268</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">n</tt> <tt class="py-op">></tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt> -<a name="L269"></a><tt class="py-lineno">269</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-129" class="py-name"><a title="scapi.json.JsonWriter._append" class="py-name" href="#" onclick="return doclink('link-129', '_append', 'link-125');">_append</a></tt><tt class="py-op">(</tt><tt class="py-string">","</tt><tt class="py-op">)</tt> </tt> -<a name="L270"></a><tt class="py-lineno">270</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-130" class="py-name"><a title="scapi.json.JsonWriter._append" class="py-name" href="#" onclick="return doclink('link-130', '_append', 'link-125');">_append</a></tt><tt class="py-op">(</tt><tt class="py-string">"}"</tt><tt class="py-op">)</tt> </tt> -<a name="L271"></a><tt class="py-lineno">271</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">ty</tt> <tt class="py-keyword">is</tt> <tt class="py-name">types</tt><tt class="py-op">.</tt><tt class="py-name">ListType</tt> <tt class="py-keyword">or</tt> <tt class="py-name">ty</tt> <tt class="py-keyword">is</tt> <tt class="py-name">types</tt><tt class="py-op">.</tt><tt class="py-name">TupleType</tt><tt class="py-op">:</tt> </tt> -<a name="L272"></a><tt class="py-lineno">272</tt> <tt class="py-line"> <tt class="py-name">n</tt> <tt class="py-op">=</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">obj</tt><tt class="py-op">)</tt> </tt> -<a name="L273"></a><tt class="py-lineno">273</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-131" class="py-name"><a title="scapi.json.JsonWriter._append" class="py-name" href="#" onclick="return doclink('link-131', '_append', 'link-125');">_append</a></tt><tt class="py-op">(</tt><tt class="py-string">"["</tt><tt class="py-op">)</tt> </tt> -<a name="L274"></a><tt class="py-lineno">274</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">item</tt> <tt class="py-keyword">in</tt> <tt class="py-name">obj</tt><tt class="py-op">:</tt> </tt> -<a name="L275"></a><tt class="py-lineno">275</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-132" class="py-name"><a title="scapi.json.JsonWriter._write" class="py-name" href="#" onclick="return doclink('link-132', '_write', 'link-124');">_write</a></tt><tt class="py-op">(</tt><tt class="py-name">item</tt><tt class="py-op">)</tt> </tt> -<a name="L276"></a><tt class="py-lineno">276</tt> <tt class="py-line"> <tt class="py-name">n</tt> <tt class="py-op">=</tt> <tt class="py-name">n</tt> <tt class="py-op">-</tt> <tt class="py-number">1</tt> </tt> -<a name="L277"></a><tt class="py-lineno">277</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">n</tt> <tt class="py-op">></tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt> -<a name="L278"></a><tt class="py-lineno">278</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-133" class="py-name"><a title="scapi.json.JsonWriter._append" class="py-name" href="#" onclick="return doclink('link-133', '_append', 'link-125');">_append</a></tt><tt class="py-op">(</tt><tt class="py-string">","</tt><tt class="py-op">)</tt> </tt> -<a name="L279"></a><tt class="py-lineno">279</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-134" class="py-name"><a title="scapi.json.JsonWriter._append" class="py-name" href="#" onclick="return doclink('link-134', '_append', 'link-125');">_append</a></tt><tt class="py-op">(</tt><tt class="py-string">"]"</tt><tt class="py-op">)</tt> </tt> -<a name="L280"></a><tt class="py-lineno">280</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">ty</tt> <tt class="py-keyword">is</tt> <tt class="py-name">types</tt><tt class="py-op">.</tt><tt class="py-name">StringType</tt> <tt class="py-keyword">or</tt> <tt class="py-name">ty</tt> <tt class="py-keyword">is</tt> <tt class="py-name">types</tt><tt class="py-op">.</tt><tt class="py-name">UnicodeType</tt><tt class="py-op">:</tt> </tt> -<a name="L281"></a><tt class="py-lineno">281</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-135" class="py-name"><a title="scapi.json.JsonWriter._append" class="py-name" href="#" onclick="return doclink('link-135', '_append', 'link-125');">_append</a></tt><tt class="py-op">(</tt><tt class="py-string">'"'</tt><tt class="py-op">)</tt> </tt> -<a name="L282"></a><tt class="py-lineno">282</tt> <tt class="py-line"> <tt class="py-name">obj</tt> <tt class="py-op">=</tt> <tt class="py-name">obj</tt><tt class="py-op">.</tt><tt class="py-name">replace</tt><tt class="py-op">(</tt><tt class="py-string">'\\'</tt><tt class="py-op">,</tt> <tt class="py-string">r'\\'</tt><tt class="py-op">)</tt> </tt> -<a name="L283"></a><tt class="py-lineno">283</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_escaped_forward_slash</tt><tt class="py-op">:</tt> </tt> -<a name="L284"></a><tt class="py-lineno">284</tt> <tt class="py-line"> <tt class="py-name">obj</tt> <tt class="py-op">=</tt> <tt class="py-name">obj</tt><tt class="py-op">.</tt><tt class="py-name">replace</tt><tt class="py-op">(</tt><tt class="py-string">'/'</tt><tt class="py-op">,</tt> <tt class="py-string">r'\/'</tt><tt class="py-op">)</tt> </tt> -<a name="L285"></a><tt class="py-lineno">285</tt> <tt class="py-line"> <tt class="py-name">obj</tt> <tt class="py-op">=</tt> <tt class="py-name">obj</tt><tt class="py-op">.</tt><tt class="py-name">replace</tt><tt class="py-op">(</tt><tt class="py-string">'"'</tt><tt class="py-op">,</tt> <tt class="py-string">r'\"'</tt><tt class="py-op">)</tt> </tt> -<a name="L286"></a><tt class="py-lineno">286</tt> <tt class="py-line"> <tt class="py-name">obj</tt> <tt class="py-op">=</tt> <tt class="py-name">obj</tt><tt class="py-op">.</tt><tt class="py-name">replace</tt><tt class="py-op">(</tt><tt class="py-string">'\b'</tt><tt class="py-op">,</tt> <tt class="py-string">r'\b'</tt><tt class="py-op">)</tt> </tt> -<a name="L287"></a><tt class="py-lineno">287</tt> <tt class="py-line"> <tt class="py-name">obj</tt> <tt class="py-op">=</tt> <tt class="py-name">obj</tt><tt class="py-op">.</tt><tt class="py-name">replace</tt><tt class="py-op">(</tt><tt class="py-string">'\f'</tt><tt class="py-op">,</tt> <tt class="py-string">r'\f'</tt><tt class="py-op">)</tt> </tt> -<a name="L288"></a><tt class="py-lineno">288</tt> <tt class="py-line"> <tt class="py-name">obj</tt> <tt class="py-op">=</tt> <tt class="py-name">obj</tt><tt class="py-op">.</tt><tt class="py-name">replace</tt><tt class="py-op">(</tt><tt class="py-string">'\n'</tt><tt class="py-op">,</tt> <tt class="py-string">r'\n'</tt><tt class="py-op">)</tt> </tt> -<a name="L289"></a><tt class="py-lineno">289</tt> <tt class="py-line"> <tt class="py-name">obj</tt> <tt class="py-op">=</tt> <tt class="py-name">obj</tt><tt class="py-op">.</tt><tt class="py-name">replace</tt><tt class="py-op">(</tt><tt class="py-string">'\r'</tt><tt class="py-op">,</tt> <tt class="py-string">r'\r'</tt><tt class="py-op">)</tt> </tt> -<a name="L290"></a><tt class="py-lineno">290</tt> <tt class="py-line"> <tt class="py-name">obj</tt> <tt class="py-op">=</tt> <tt class="py-name">obj</tt><tt class="py-op">.</tt><tt class="py-name">replace</tt><tt class="py-op">(</tt><tt class="py-string">'\t'</tt><tt class="py-op">,</tt> <tt class="py-string">r'\t'</tt><tt class="py-op">)</tt> </tt> -<a name="L291"></a><tt class="py-lineno">291</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-136" class="py-name"><a title="scapi.json.JsonWriter._append" class="py-name" href="#" onclick="return doclink('link-136', '_append', 'link-125');">_append</a></tt><tt class="py-op">(</tt><tt class="py-name">obj</tt><tt class="py-op">)</tt> </tt> -<a name="L292"></a><tt class="py-lineno">292</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-137" class="py-name"><a title="scapi.json.JsonWriter._append" class="py-name" href="#" onclick="return doclink('link-137', '_append', 'link-125');">_append</a></tt><tt class="py-op">(</tt><tt class="py-string">'"'</tt><tt class="py-op">)</tt> </tt> -<a name="L293"></a><tt class="py-lineno">293</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">ty</tt> <tt class="py-keyword">is</tt> <tt class="py-name">types</tt><tt class="py-op">.</tt><tt class="py-name">IntType</tt> <tt class="py-keyword">or</tt> <tt class="py-name">ty</tt> <tt class="py-keyword">is</tt> <tt class="py-name">types</tt><tt class="py-op">.</tt><tt class="py-name">LongType</tt><tt class="py-op">:</tt> </tt> -<a name="L294"></a><tt class="py-lineno">294</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-138" class="py-name"><a title="scapi.json.JsonWriter._append" class="py-name" href="#" onclick="return doclink('link-138', '_append', 'link-125');">_append</a></tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">obj</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L295"></a><tt class="py-lineno">295</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">ty</tt> <tt class="py-keyword">is</tt> <tt class="py-name">types</tt><tt class="py-op">.</tt><tt class="py-name">FloatType</tt><tt class="py-op">:</tt> </tt> -<a name="L296"></a><tt class="py-lineno">296</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-139" class="py-name"><a title="scapi.json.JsonWriter._append" class="py-name" href="#" onclick="return doclink('link-139', '_append', 'link-125');">_append</a></tt><tt class="py-op">(</tt><tt class="py-string">"%f"</tt> <tt class="py-op">%</tt> <tt class="py-name">obj</tt><tt class="py-op">)</tt> </tt> -<a name="L297"></a><tt class="py-lineno">297</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">obj</tt> <tt class="py-keyword">is</tt> <tt class="py-name">True</tt><tt class="py-op">:</tt> </tt> -<a name="L298"></a><tt class="py-lineno">298</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-140" class="py-name"><a title="scapi.json.JsonWriter._append" class="py-name" href="#" onclick="return doclink('link-140', '_append', 'link-125');">_append</a></tt><tt class="py-op">(</tt><tt class="py-string">"true"</tt><tt class="py-op">)</tt> </tt> -<a name="L299"></a><tt class="py-lineno">299</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">obj</tt> <tt class="py-keyword">is</tt> <tt class="py-name">False</tt><tt class="py-op">:</tt> </tt> -<a name="L300"></a><tt class="py-lineno">300</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-141" class="py-name"><a title="scapi.json.JsonWriter._append" class="py-name" href="#" onclick="return doclink('link-141', '_append', 'link-125');">_append</a></tt><tt class="py-op">(</tt><tt class="py-string">"false"</tt><tt class="py-op">)</tt> </tt> -<a name="L301"></a><tt class="py-lineno">301</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">obj</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> -<a name="L302"></a><tt class="py-lineno">302</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-142" class="py-name"><a title="scapi.json.JsonWriter._append" class="py-name" href="#" onclick="return doclink('link-142', '_append', 'link-125');">_append</a></tt><tt class="py-op">(</tt><tt class="py-string">"null"</tt><tt class="py-op">)</tt> </tt> -<a name="L303"></a><tt class="py-lineno">303</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> -<a name="L304"></a><tt class="py-lineno">304</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-143" class="py-name" targets="Class scapi.json.WriteException=scapi.json.WriteException-class.html"><a title="scapi.json.WriteException" class="py-name" href="#" onclick="return doclink('link-143', 'WriteException', 'link-143');">WriteException</a></tt><tt class="py-op">,</tt> <tt class="py-string">"Cannot write in JSON: %s"</tt> <tt class="py-op">%</tt> <tt class="py-name">repr</tt><tt class="py-op">(</tt><tt class="py-name">obj</tt><tt class="py-op">)</tt> </tt> -</div></div><a name="L305"></a><tt class="py-lineno">305</tt> <tt class="py-line"> </tt> -<a name="write"></a><div id="write-def"><a name="L306"></a><tt class="py-lineno">306</tt> <a class="py-toggle" href="#" id="write-toggle" onclick="return toggle('write');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.json-module.html#write">write</a><tt class="py-op">(</tt><tt class="py-param">obj</tt><tt class="py-op">,</tt> <tt class="py-param">escaped_forward_slash</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="write-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="write-expanded"><a name="L307"></a><tt class="py-lineno">307</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-144" class="py-name" targets="Class scapi.json.JsonWriter=scapi.json.JsonWriter-class.html"><a title="scapi.json.JsonWriter" class="py-name" href="#" onclick="return doclink('link-144', 'JsonWriter', 'link-144');">JsonWriter</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-145" class="py-name" targets="Method scapi.json.JsonWriter.write()=scapi.json.JsonWriter-class.html#write,Function scapi.json.write()=scapi.json-module.html#write"><a title="scapi.json.JsonWriter.write -scapi.json.write" class="py-name" href="#" onclick="return doclink('link-145', 'write', 'link-145');">write</a></tt><tt class="py-op">(</tt><tt class="py-name">obj</tt><tt class="py-op">,</tt> <tt class="py-name">escaped_forward_slash</tt><tt class="py-op">)</tt> </tt> -</div><a name="L308"></a><tt class="py-lineno">308</tt> <tt class="py-line"> </tt> -<a name="read"></a><div id="read-def"><a name="L309"></a><tt class="py-lineno">309</tt> <a class="py-toggle" href="#" id="read-toggle" onclick="return toggle('read');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.json-module.html#read">read</a><tt class="py-op">(</tt><tt class="py-param">s</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="read-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="read-expanded"><a name="L310"></a><tt class="py-lineno">310</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-146" class="py-name" targets="Class scapi.json.JsonReader=scapi.json.JsonReader-class.html"><a title="scapi.json.JsonReader" class="py-name" href="#" onclick="return doclink('link-146', 'JsonReader', 'link-146');">JsonReader</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-147" class="py-name" targets="Method scapi.json.JsonReader.read()=scapi.json.JsonReader-class.html#read,Function scapi.json.read()=scapi.json-module.html#read"><a title="scapi.json.JsonReader.read -scapi.json.read" class="py-name" href="#" onclick="return doclink('link-147', 'read', 'link-147');">read</a></tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">)</tt> </tt> -</div><a name="L311"></a><tt class="py-lineno">311</tt> <tt class="py-line"> </tt><script type="text/javascript"> -<!-- -expandto(location.href); -// --> -</script> -</pre> -<br /> -<!-- ==================== NAVIGATION BAR ==================== --> -<table class="navbar" border="0" width="100%" cellpadding="0" - bgcolor="#a0c0ff" cellspacing="0"> - <tr valign="middle"> - <!-- Home link --> - <th> <a - href="scapi-module.html">Home</a> </th> - - <!-- Tree link --> - <th> <a - href="module-tree.html">Trees</a> </th> - - <!-- Index link --> - <th> <a - href="identifier-index.html">Indices</a> </th> - - <!-- Help link --> - <th> <a - href="help.html">Help</a> </th> - - <!-- Project homepage --> - <th class="navbar" align="right" width="100%"> - <table border="0" cellpadding="0" cellspacing="0"> - <tr><th class="navbar" align="center" - >SoundCloud API</th> - </tr></table></th> - </tr> -</table> -<table border="0" cellpadding="0" cellspacing="0" width="100%%"> - <tr> - <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Thu Sep 10 00:58:50 2009 - </td> - <td align="right" class="footer"> - <a target="mainFrame" href="http://epydoc.sourceforge.net" - >http://epydoc.sourceforge.net</a> - </td> - </tr> -</table> - -<script type="text/javascript"> - <!-- - // Private objects are initially displayed (because if - // javascript is turned off then we want them to be - // visible); but by default, we want to hide them. So hide - // them unless we have a cookie that says to show them. - checkCookie(); - // --> -</script> -</body> -</html> diff --git a/python_apps/soundcloud-api/docs/api/scapi.json.JsonReader-class.html b/python_apps/soundcloud-api/docs/api/scapi.json.JsonReader-class.html deleted file mode 100644 index bad1801ae..000000000 --- a/python_apps/soundcloud-api/docs/api/scapi.json.JsonReader-class.html +++ /dev/null @@ -1,544 +0,0 @@ -<?xml version="1.0" encoding="ascii"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <title>scapi.json.JsonReader</title> - <link rel="stylesheet" href="epydoc.css" type="text/css" /> - <script type="text/javascript" src="epydoc.js"></script> -</head> - -<body bgcolor="white" text="black" link="blue" vlink="#204080" - alink="#204080"> -<!-- ==================== NAVIGATION BAR ==================== --> -<table class="navbar" border="0" width="100%" cellpadding="0" - bgcolor="#a0c0ff" cellspacing="0"> - <tr valign="middle"> - <!-- Home link --> - <th> <a - href="scapi-module.html">Home</a> </th> - - <!-- Tree link --> - <th> <a - href="module-tree.html">Trees</a> </th> - - <!-- Index link --> - <th> <a - href="identifier-index.html">Indices</a> </th> - - <!-- Help link --> - <th> <a - href="help.html">Help</a> </th> - - <!-- Project homepage --> - <th class="navbar" align="right" width="100%"> - <table border="0" cellpadding="0" cellspacing="0"> - <tr><th class="navbar" align="center" - >SoundCloud API</th> - </tr></table></th> - </tr> -</table> -<table width="100%" cellpadding="0" cellspacing="0"> - <tr valign="top"> - <td width="100%"> - <span class="breadcrumbs"> - <a href="scapi-module.html">Package scapi</a> :: - <a href="scapi.json-module.html">Module json</a> :: - Class JsonReader - </span> - </td> - <td> - <table cellpadding="0" cellspacing="0"> - <!-- hide/show private --> - <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink" - onclick="toggle_private();">hide private</a>]</span></td></tr> - <tr><td align="right"><span class="options" - >[<a href="frames.html" target="_top">frames</a - >] | <a href="scapi.json.JsonReader-class.html" - target="_top">no frames</a>]</span></td></tr> - </table> - </td> - </tr> -</table> -<!-- ==================== CLASS DESCRIPTION ==================== --> -<h1 class="epydoc">Class JsonReader</h1><p class="nomargin-top"><span class="codelink"><a href="scapi.json-pysrc.html#JsonReader">source code</a></span></p> -<pre class="base-tree"> -object --+ - | - <strong class="uidshort">JsonReader</strong> -</pre> - -<hr /> -<!-- ==================== INSTANCE METHODS ==================== --> -<a name="section-InstanceMethods"></a> -<table class="summary" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr bgcolor="#70b0f0" class="table-header"> - <td colspan="2" class="table-header"> - <table border="0" cellpadding="0" cellspacing="0" width="100%"> - <tr valign="top"> - <td align="left"><span class="table-header">Instance Methods</span></td> - <td align="right" valign="top" - ><span class="options">[<a href="#section-InstanceMethods" - class="privatelink" onclick="toggle_private();" - >hide private</a>]</span></td> - </tr> - </table> - </td> -</tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a name="read"></a><span class="summary-sig-name">read</span>(<span class="summary-sig-arg">self</span>, - <span class="summary-sig-arg">s</span>)</span></td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi.json-pysrc.html#JsonReader.read">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> -<tr class="private"> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a name="_read"></a><span class="summary-sig-name">_read</span>(<span class="summary-sig-arg">self</span>)</span></td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi.json-pysrc.html#JsonReader._read">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> -<tr class="private"> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a name="_readTrue"></a><span class="summary-sig-name">_readTrue</span>(<span class="summary-sig-arg">self</span>)</span></td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi.json-pysrc.html#JsonReader._readTrue">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> -<tr class="private"> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a name="_readFalse"></a><span class="summary-sig-name">_readFalse</span>(<span class="summary-sig-arg">self</span>)</span></td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi.json-pysrc.html#JsonReader._readFalse">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> -<tr class="private"> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a name="_readNull"></a><span class="summary-sig-name">_readNull</span>(<span class="summary-sig-arg">self</span>)</span></td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi.json-pysrc.html#JsonReader._readNull">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> -<tr class="private"> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a name="_assertNext"></a><span class="summary-sig-name">_assertNext</span>(<span class="summary-sig-arg">self</span>, - <span class="summary-sig-arg">ch</span>, - <span class="summary-sig-arg">target</span>)</span></td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi.json-pysrc.html#JsonReader._assertNext">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> -<tr class="private"> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a name="_readNumber"></a><span class="summary-sig-name">_readNumber</span>(<span class="summary-sig-arg">self</span>)</span></td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi.json-pysrc.html#JsonReader._readNumber">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> -<tr class="private"> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a name="_readString"></a><span class="summary-sig-name">_readString</span>(<span class="summary-sig-arg">self</span>)</span></td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi.json-pysrc.html#JsonReader._readString">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> -<tr class="private"> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a name="_hexDigitToInt"></a><span class="summary-sig-name">_hexDigitToInt</span>(<span class="summary-sig-arg">self</span>, - <span class="summary-sig-arg">ch</span>)</span></td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi.json-pysrc.html#JsonReader._hexDigitToInt">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> -<tr class="private"> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a name="_readComment"></a><span class="summary-sig-name">_readComment</span>(<span class="summary-sig-arg">self</span>)</span></td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi.json-pysrc.html#JsonReader._readComment">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> -<tr class="private"> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a name="_readCStyleComment"></a><span class="summary-sig-name">_readCStyleComment</span>(<span class="summary-sig-arg">self</span>)</span></td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi.json-pysrc.html#JsonReader._readCStyleComment">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> -<tr class="private"> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a name="_readDoubleSolidusComment"></a><span class="summary-sig-name">_readDoubleSolidusComment</span>(<span class="summary-sig-arg">self</span>)</span></td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi.json-pysrc.html#JsonReader._readDoubleSolidusComment">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> -<tr class="private"> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a name="_readArray"></a><span class="summary-sig-name">_readArray</span>(<span class="summary-sig-arg">self</span>)</span></td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi.json-pysrc.html#JsonReader._readArray">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> -<tr class="private"> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a name="_readObject"></a><span class="summary-sig-name">_readObject</span>(<span class="summary-sig-arg">self</span>)</span></td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi.json-pysrc.html#JsonReader._readObject">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> -<tr class="private"> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a name="_eatWhitespace"></a><span class="summary-sig-name">_eatWhitespace</span>(<span class="summary-sig-arg">self</span>)</span></td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi.json-pysrc.html#JsonReader._eatWhitespace">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> -<tr class="private"> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a name="_peek"></a><span class="summary-sig-name">_peek</span>(<span class="summary-sig-arg">self</span>)</span></td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi.json-pysrc.html#JsonReader._peek">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> -<tr class="private"> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a name="_next"></a><span class="summary-sig-name">_next</span>(<span class="summary-sig-arg">self</span>)</span></td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi.json-pysrc.html#JsonReader._next">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> - <tr> - <td colspan="2" class="summary"> - <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>: - <code>__delattr__</code>, - <code>__getattribute__</code>, - <code>__hash__</code>, - <code>__init__</code>, - <code>__new__</code>, - <code>__reduce__</code>, - <code>__reduce_ex__</code>, - <code>__repr__</code>, - <code>__setattr__</code>, - <code>__str__</code> - </p> - </td> - </tr> -</table> -<!-- ==================== CLASS VARIABLES ==================== --> -<a name="section-ClassVariables"></a> -<table class="summary" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr bgcolor="#70b0f0" class="table-header"> - <td colspan="2" class="table-header"> - <table border="0" cellpadding="0" cellspacing="0" width="100%"> - <tr valign="top"> - <td align="left"><span class="table-header">Class Variables</span></td> - <td align="right" valign="top" - ><span class="options">[<a href="#section-ClassVariables" - class="privatelink" onclick="toggle_private();" - >hide private</a>]</span></td> - </tr> - </table> - </td> -</tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <a href="scapi.json.JsonReader-class.html#hex_digits" class="summary-name">hex_digits</a> = <code title="{'A': 10, 'B': 11, 'C': 12, 'D': 13, 'E': 14, 'F': 15}"><code class="variable-group">{</code><code class="variable-quote">'</code><code class="variable-string">A</code><code class="variable-quote">'</code><code class="variable-op">: </code>10<code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">B</code><code class="variable-quote">'</code><code class="variable-op">: </code>11<code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">C</code><code class="variable-quote">'</code><code class="variable-op">: </code>12<code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">D</code><code class="variable-quote">'</code><code class="variable-op">: </code>13<code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">E</code><code class="variable-quote">'</code><code class="variable-op">: </code>14<code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">F</code><code class="variable-quote">'</code><code class="variable-ellipsis">...</code></code> - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <a href="scapi.json.JsonReader-class.html#escapes" class="summary-name">escapes</a> = <code title="{'b': '\x08', 'f': '\x0c', 'n': '\n', 'r': '\r', 't': '\t'}"><code class="variable-group">{</code><code class="variable-quote">'</code><code class="variable-string">b</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">\x08</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">f</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">\x0c</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">n</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">\n</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">r</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">\r</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">t</code><code class="variable-quote">'</code><code class="variable-ellipsis">...</code></code> - </td> - </tr> -</table> -<!-- ==================== PROPERTIES ==================== --> -<a name="section-Properties"></a> -<table class="summary" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr bgcolor="#70b0f0" class="table-header"> - <td colspan="2" class="table-header"> - <table border="0" cellpadding="0" cellspacing="0" width="100%"> - <tr valign="top"> - <td align="left"><span class="table-header">Properties</span></td> - <td align="right" valign="top" - ><span class="options">[<a href="#section-Properties" - class="privatelink" onclick="toggle_private();" - >hide private</a>]</span></td> - </tr> - </table> - </td> -</tr> - <tr> - <td colspan="2" class="summary"> - <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>: - <code>__class__</code> - </p> - </td> - </tr> -</table> -<!-- ==================== CLASS VARIABLE DETAILS ==================== --> -<a name="section-ClassVariableDetails"></a> -<table class="details" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr bgcolor="#70b0f0" class="table-header"> - <td colspan="2" class="table-header"> - <table border="0" cellpadding="0" cellspacing="0" width="100%"> - <tr valign="top"> - <td align="left"><span class="table-header">Class Variable Details</span></td> - <td align="right" valign="top" - ><span class="options">[<a href="#section-ClassVariableDetails" - class="privatelink" onclick="toggle_private();" - >hide private</a>]</span></td> - </tr> - </table> - </td> -</tr> -</table> -<a name="hex_digits"></a> -<div> -<table class="details" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr><td> - <h3 class="epydoc">hex_digits</h3> - - <dl class="fields"> - </dl> - <dl class="fields"> - <dt>Value:</dt> - <dd><table><tr><td><pre class="variable"> -<code class="variable-group">{</code><code class="variable-quote">'</code><code class="variable-string">A</code><code class="variable-quote">'</code><code class="variable-op">: </code>10<code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">B</code><code class="variable-quote">'</code><code class="variable-op">: </code>11<code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">C</code><code class="variable-quote">'</code><code class="variable-op">: </code>12<code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">D</code><code class="variable-quote">'</code><code class="variable-op">: </code>13<code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">E</code><code class="variable-quote">'</code><code class="variable-op">: </code>14<code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">F</code><code class="variable-quote">'</code><code class="variable-op">: </code>15<code class="variable-group">}</code> -</pre></td></tr></table> -</dd> - </dl> -</td></tr></table> -</div> -<a name="escapes"></a> -<div> -<table class="details" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr><td> - <h3 class="epydoc">escapes</h3> - - <dl class="fields"> - </dl> - <dl class="fields"> - <dt>Value:</dt> - <dd><table><tr><td><pre class="variable"> -<code class="variable-group">{</code><code class="variable-quote">'</code><code class="variable-string">b</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">\x08</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">f</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">\x0c</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">n</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">\n</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">r</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">\r</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">t</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">\t</code><code class="variable-quote">'</code><code class="variable-group">}</code> -</pre></td></tr></table> -</dd> - </dl> -</td></tr></table> -</div> -<br /> -<!-- ==================== NAVIGATION BAR ==================== --> -<table class="navbar" border="0" width="100%" cellpadding="0" - bgcolor="#a0c0ff" cellspacing="0"> - <tr valign="middle"> - <!-- Home link --> - <th> <a - href="scapi-module.html">Home</a> </th> - - <!-- Tree link --> - <th> <a - href="module-tree.html">Trees</a> </th> - - <!-- Index link --> - <th> <a - href="identifier-index.html">Indices</a> </th> - - <!-- Help link --> - <th> <a - href="help.html">Help</a> </th> - - <!-- Project homepage --> - <th class="navbar" align="right" width="100%"> - <table border="0" cellpadding="0" cellspacing="0"> - <tr><th class="navbar" align="center" - >SoundCloud API</th> - </tr></table></th> - </tr> -</table> -<table border="0" cellpadding="0" cellspacing="0" width="100%%"> - <tr> - <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Thu Sep 10 00:58:49 2009 - </td> - <td align="right" class="footer"> - <a target="mainFrame" href="http://epydoc.sourceforge.net" - >http://epydoc.sourceforge.net</a> - </td> - </tr> -</table> - -<script type="text/javascript"> - <!-- - // Private objects are initially displayed (because if - // javascript is turned off then we want them to be - // visible); but by default, we want to hide them. So hide - // them unless we have a cookie that says to show them. - checkCookie(); - // --> -</script> -</body> -</html> diff --git a/python_apps/soundcloud-api/docs/api/scapi.json.JsonWriter-class.html b/python_apps/soundcloud-api/docs/api/scapi.json.JsonWriter-class.html deleted file mode 100644 index c376a942f..000000000 --- a/python_apps/soundcloud-api/docs/api/scapi.json.JsonWriter-class.html +++ /dev/null @@ -1,233 +0,0 @@ -<?xml version="1.0" encoding="ascii"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <title>scapi.json.JsonWriter</title> - <link rel="stylesheet" href="epydoc.css" type="text/css" /> - <script type="text/javascript" src="epydoc.js"></script> -</head> - -<body bgcolor="white" text="black" link="blue" vlink="#204080" - alink="#204080"> -<!-- ==================== NAVIGATION BAR ==================== --> -<table class="navbar" border="0" width="100%" cellpadding="0" - bgcolor="#a0c0ff" cellspacing="0"> - <tr valign="middle"> - <!-- Home link --> - <th> <a - href="scapi-module.html">Home</a> </th> - - <!-- Tree link --> - <th> <a - href="module-tree.html">Trees</a> </th> - - <!-- Index link --> - <th> <a - href="identifier-index.html">Indices</a> </th> - - <!-- Help link --> - <th> <a - href="help.html">Help</a> </th> - - <!-- Project homepage --> - <th class="navbar" align="right" width="100%"> - <table border="0" cellpadding="0" cellspacing="0"> - <tr><th class="navbar" align="center" - >SoundCloud API</th> - </tr></table></th> - </tr> -</table> -<table width="100%" cellpadding="0" cellspacing="0"> - <tr valign="top"> - <td width="100%"> - <span class="breadcrumbs"> - <a href="scapi-module.html">Package scapi</a> :: - <a href="scapi.json-module.html">Module json</a> :: - Class JsonWriter - </span> - </td> - <td> - <table cellpadding="0" cellspacing="0"> - <!-- hide/show private --> - <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink" - onclick="toggle_private();">hide private</a>]</span></td></tr> - <tr><td align="right"><span class="options" - >[<a href="frames.html" target="_top">frames</a - >] | <a href="scapi.json.JsonWriter-class.html" - target="_top">no frames</a>]</span></td></tr> - </table> - </td> - </tr> -</table> -<!-- ==================== CLASS DESCRIPTION ==================== --> -<h1 class="epydoc">Class JsonWriter</h1><p class="nomargin-top"><span class="codelink"><a href="scapi.json-pysrc.html#JsonWriter">source code</a></span></p> -<pre class="base-tree"> -object --+ - | - <strong class="uidshort">JsonWriter</strong> -</pre> - -<hr /> -<!-- ==================== INSTANCE METHODS ==================== --> -<a name="section-InstanceMethods"></a> -<table class="summary" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr bgcolor="#70b0f0" class="table-header"> - <td colspan="2" class="table-header"> - <table border="0" cellpadding="0" cellspacing="0" width="100%"> - <tr valign="top"> - <td align="left"><span class="table-header">Instance Methods</span></td> - <td align="right" valign="top" - ><span class="options">[<a href="#section-InstanceMethods" - class="privatelink" onclick="toggle_private();" - >hide private</a>]</span></td> - </tr> - </table> - </td> -</tr> -<tr class="private"> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a name="_append"></a><span class="summary-sig-name">_append</span>(<span class="summary-sig-arg">self</span>, - <span class="summary-sig-arg">s</span>)</span></td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi.json-pysrc.html#JsonWriter._append">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a name="write"></a><span class="summary-sig-name">write</span>(<span class="summary-sig-arg">self</span>, - <span class="summary-sig-arg">obj</span>, - <span class="summary-sig-arg">escaped_forward_slash</span>=<span class="summary-sig-default">False</span>)</span></td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi.json-pysrc.html#JsonWriter.write">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> -<tr class="private"> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a name="_write"></a><span class="summary-sig-name">_write</span>(<span class="summary-sig-arg">self</span>, - <span class="summary-sig-arg">obj</span>)</span></td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi.json-pysrc.html#JsonWriter._write">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> - <tr> - <td colspan="2" class="summary"> - <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>: - <code>__delattr__</code>, - <code>__getattribute__</code>, - <code>__hash__</code>, - <code>__init__</code>, - <code>__new__</code>, - <code>__reduce__</code>, - <code>__reduce_ex__</code>, - <code>__repr__</code>, - <code>__setattr__</code>, - <code>__str__</code> - </p> - </td> - </tr> -</table> -<!-- ==================== PROPERTIES ==================== --> -<a name="section-Properties"></a> -<table class="summary" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr bgcolor="#70b0f0" class="table-header"> - <td colspan="2" class="table-header"> - <table border="0" cellpadding="0" cellspacing="0" width="100%"> - <tr valign="top"> - <td align="left"><span class="table-header">Properties</span></td> - <td align="right" valign="top" - ><span class="options">[<a href="#section-Properties" - class="privatelink" onclick="toggle_private();" - >hide private</a>]</span></td> - </tr> - </table> - </td> -</tr> - <tr> - <td colspan="2" class="summary"> - <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>: - <code>__class__</code> - </p> - </td> - </tr> -</table> -<!-- ==================== NAVIGATION BAR ==================== --> -<table class="navbar" border="0" width="100%" cellpadding="0" - bgcolor="#a0c0ff" cellspacing="0"> - <tr valign="middle"> - <!-- Home link --> - <th> <a - href="scapi-module.html">Home</a> </th> - - <!-- Tree link --> - <th> <a - href="module-tree.html">Trees</a> </th> - - <!-- Index link --> - <th> <a - href="identifier-index.html">Indices</a> </th> - - <!-- Help link --> - <th> <a - href="help.html">Help</a> </th> - - <!-- Project homepage --> - <th class="navbar" align="right" width="100%"> - <table border="0" cellpadding="0" cellspacing="0"> - <tr><th class="navbar" align="center" - >SoundCloud API</th> - </tr></table></th> - </tr> -</table> -<table border="0" cellpadding="0" cellspacing="0" width="100%%"> - <tr> - <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Thu Sep 10 00:58:49 2009 - </td> - <td align="right" class="footer"> - <a target="mainFrame" href="http://epydoc.sourceforge.net" - >http://epydoc.sourceforge.net</a> - </td> - </tr> -</table> - -<script type="text/javascript"> - <!-- - // Private objects are initially displayed (because if - // javascript is turned off then we want them to be - // visible); but by default, we want to hide them. So hide - // them unless we have a cookie that says to show them. - checkCookie(); - // --> -</script> -</body> -</html> diff --git a/python_apps/soundcloud-api/docs/api/scapi.json.ReadException-class.html b/python_apps/soundcloud-api/docs/api/scapi.json.ReadException-class.html deleted file mode 100644 index acbf8e4c3..000000000 --- a/python_apps/soundcloud-api/docs/api/scapi.json.ReadException-class.html +++ /dev/null @@ -1,196 +0,0 @@ -<?xml version="1.0" encoding="ascii"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <title>scapi.json.ReadException</title> - <link rel="stylesheet" href="epydoc.css" type="text/css" /> - <script type="text/javascript" src="epydoc.js"></script> -</head> - -<body bgcolor="white" text="black" link="blue" vlink="#204080" - alink="#204080"> -<!-- ==================== NAVIGATION BAR ==================== --> -<table class="navbar" border="0" width="100%" cellpadding="0" - bgcolor="#a0c0ff" cellspacing="0"> - <tr valign="middle"> - <!-- Home link --> - <th> <a - href="scapi-module.html">Home</a> </th> - - <!-- Tree link --> - <th> <a - href="module-tree.html">Trees</a> </th> - - <!-- Index link --> - <th> <a - href="identifier-index.html">Indices</a> </th> - - <!-- Help link --> - <th> <a - href="help.html">Help</a> </th> - - <!-- Project homepage --> - <th class="navbar" align="right" width="100%"> - <table border="0" cellpadding="0" cellspacing="0"> - <tr><th class="navbar" align="center" - >SoundCloud API</th> - </tr></table></th> - </tr> -</table> -<table width="100%" cellpadding="0" cellspacing="0"> - <tr valign="top"> - <td width="100%"> - <span class="breadcrumbs"> - <a href="scapi-module.html">Package scapi</a> :: - <a href="scapi.json-module.html">Module json</a> :: - Class ReadException - </span> - </td> - <td> - <table cellpadding="0" cellspacing="0"> - <!-- hide/show private --> - <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink" - onclick="toggle_private();">hide private</a>]</span></td></tr> - <tr><td align="right"><span class="options" - >[<a href="frames.html" target="_top">frames</a - >] | <a href="scapi.json.ReadException-class.html" - target="_top">no frames</a>]</span></td></tr> - </table> - </td> - </tr> -</table> -<!-- ==================== CLASS DESCRIPTION ==================== --> -<h1 class="epydoc">Class ReadException</h1><p class="nomargin-top"><span class="codelink"><a href="scapi.json-pysrc.html#ReadException">source code</a></span></p> -<pre class="base-tree"> - object --+ - | -exceptions.BaseException --+ - | - exceptions.Exception --+ - | - <strong class="uidshort">ReadException</strong> -</pre> - -<hr /> -<!-- ==================== INSTANCE METHODS ==================== --> -<a name="section-InstanceMethods"></a> -<table class="summary" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr bgcolor="#70b0f0" class="table-header"> - <td colspan="2" class="table-header"> - <table border="0" cellpadding="0" cellspacing="0" width="100%"> - <tr valign="top"> - <td align="left"><span class="table-header">Instance Methods</span></td> - <td align="right" valign="top" - ><span class="options">[<a href="#section-InstanceMethods" - class="privatelink" onclick="toggle_private();" - >hide private</a>]</span></td> - </tr> - </table> - </td> -</tr> - <tr> - <td colspan="2" class="summary"> - <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.Exception</code></b>: - <code>__init__</code>, - <code>__new__</code> - </p> - <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.BaseException</code></b>: - <code>__delattr__</code>, - <code>__getattribute__</code>, - <code>__getitem__</code>, - <code>__getslice__</code>, - <code>__reduce__</code>, - <code>__repr__</code>, - <code>__setattr__</code>, - <code>__setstate__</code>, - <code>__str__</code> - </p> - <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>: - <code>__hash__</code>, - <code>__reduce_ex__</code> - </p> - </td> - </tr> -</table> -<!-- ==================== PROPERTIES ==================== --> -<a name="section-Properties"></a> -<table class="summary" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr bgcolor="#70b0f0" class="table-header"> - <td colspan="2" class="table-header"> - <table border="0" cellpadding="0" cellspacing="0" width="100%"> - <tr valign="top"> - <td align="left"><span class="table-header">Properties</span></td> - <td align="right" valign="top" - ><span class="options">[<a href="#section-Properties" - class="privatelink" onclick="toggle_private();" - >hide private</a>]</span></td> - </tr> - </table> - </td> -</tr> - <tr> - <td colspan="2" class="summary"> - <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.BaseException</code></b>: - <code>args</code>, - <code>message</code> - </p> - <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>: - <code>__class__</code> - </p> - </td> - </tr> -</table> -<!-- ==================== NAVIGATION BAR ==================== --> -<table class="navbar" border="0" width="100%" cellpadding="0" - bgcolor="#a0c0ff" cellspacing="0"> - <tr valign="middle"> - <!-- Home link --> - <th> <a - href="scapi-module.html">Home</a> </th> - - <!-- Tree link --> - <th> <a - href="module-tree.html">Trees</a> </th> - - <!-- Index link --> - <th> <a - href="identifier-index.html">Indices</a> </th> - - <!-- Help link --> - <th> <a - href="help.html">Help</a> </th> - - <!-- Project homepage --> - <th class="navbar" align="right" width="100%"> - <table border="0" cellpadding="0" cellspacing="0"> - <tr><th class="navbar" align="center" - >SoundCloud API</th> - </tr></table></th> - </tr> -</table> -<table border="0" cellpadding="0" cellspacing="0" width="100%%"> - <tr> - <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Thu Sep 10 00:58:49 2009 - </td> - <td align="right" class="footer"> - <a target="mainFrame" href="http://epydoc.sourceforge.net" - >http://epydoc.sourceforge.net</a> - </td> - </tr> -</table> - -<script type="text/javascript"> - <!-- - // Private objects are initially displayed (because if - // javascript is turned off then we want them to be - // visible); but by default, we want to hide them. So hide - // them unless we have a cookie that says to show them. - checkCookie(); - // --> -</script> -</body> -</html> diff --git a/python_apps/soundcloud-api/docs/api/scapi.json.WriteException-class.html b/python_apps/soundcloud-api/docs/api/scapi.json.WriteException-class.html deleted file mode 100644 index b97e08ff6..000000000 --- a/python_apps/soundcloud-api/docs/api/scapi.json.WriteException-class.html +++ /dev/null @@ -1,196 +0,0 @@ -<?xml version="1.0" encoding="ascii"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <title>scapi.json.WriteException</title> - <link rel="stylesheet" href="epydoc.css" type="text/css" /> - <script type="text/javascript" src="epydoc.js"></script> -</head> - -<body bgcolor="white" text="black" link="blue" vlink="#204080" - alink="#204080"> -<!-- ==================== NAVIGATION BAR ==================== --> -<table class="navbar" border="0" width="100%" cellpadding="0" - bgcolor="#a0c0ff" cellspacing="0"> - <tr valign="middle"> - <!-- Home link --> - <th> <a - href="scapi-module.html">Home</a> </th> - - <!-- Tree link --> - <th> <a - href="module-tree.html">Trees</a> </th> - - <!-- Index link --> - <th> <a - href="identifier-index.html">Indices</a> </th> - - <!-- Help link --> - <th> <a - href="help.html">Help</a> </th> - - <!-- Project homepage --> - <th class="navbar" align="right" width="100%"> - <table border="0" cellpadding="0" cellspacing="0"> - <tr><th class="navbar" align="center" - >SoundCloud API</th> - </tr></table></th> - </tr> -</table> -<table width="100%" cellpadding="0" cellspacing="0"> - <tr valign="top"> - <td width="100%"> - <span class="breadcrumbs"> - <a href="scapi-module.html">Package scapi</a> :: - <a href="scapi.json-module.html">Module json</a> :: - Class WriteException - </span> - </td> - <td> - <table cellpadding="0" cellspacing="0"> - <!-- hide/show private --> - <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink" - onclick="toggle_private();">hide private</a>]</span></td></tr> - <tr><td align="right"><span class="options" - >[<a href="frames.html" target="_top">frames</a - >] | <a href="scapi.json.WriteException-class.html" - target="_top">no frames</a>]</span></td></tr> - </table> - </td> - </tr> -</table> -<!-- ==================== CLASS DESCRIPTION ==================== --> -<h1 class="epydoc">Class WriteException</h1><p class="nomargin-top"><span class="codelink"><a href="scapi.json-pysrc.html#WriteException">source code</a></span></p> -<pre class="base-tree"> - object --+ - | -exceptions.BaseException --+ - | - exceptions.Exception --+ - | - <strong class="uidshort">WriteException</strong> -</pre> - -<hr /> -<!-- ==================== INSTANCE METHODS ==================== --> -<a name="section-InstanceMethods"></a> -<table class="summary" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr bgcolor="#70b0f0" class="table-header"> - <td colspan="2" class="table-header"> - <table border="0" cellpadding="0" cellspacing="0" width="100%"> - <tr valign="top"> - <td align="left"><span class="table-header">Instance Methods</span></td> - <td align="right" valign="top" - ><span class="options">[<a href="#section-InstanceMethods" - class="privatelink" onclick="toggle_private();" - >hide private</a>]</span></td> - </tr> - </table> - </td> -</tr> - <tr> - <td colspan="2" class="summary"> - <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.Exception</code></b>: - <code>__init__</code>, - <code>__new__</code> - </p> - <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.BaseException</code></b>: - <code>__delattr__</code>, - <code>__getattribute__</code>, - <code>__getitem__</code>, - <code>__getslice__</code>, - <code>__reduce__</code>, - <code>__repr__</code>, - <code>__setattr__</code>, - <code>__setstate__</code>, - <code>__str__</code> - </p> - <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>: - <code>__hash__</code>, - <code>__reduce_ex__</code> - </p> - </td> - </tr> -</table> -<!-- ==================== PROPERTIES ==================== --> -<a name="section-Properties"></a> -<table class="summary" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr bgcolor="#70b0f0" class="table-header"> - <td colspan="2" class="table-header"> - <table border="0" cellpadding="0" cellspacing="0" width="100%"> - <tr valign="top"> - <td align="left"><span class="table-header">Properties</span></td> - <td align="right" valign="top" - ><span class="options">[<a href="#section-Properties" - class="privatelink" onclick="toggle_private();" - >hide private</a>]</span></td> - </tr> - </table> - </td> -</tr> - <tr> - <td colspan="2" class="summary"> - <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.BaseException</code></b>: - <code>args</code>, - <code>message</code> - </p> - <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>: - <code>__class__</code> - </p> - </td> - </tr> -</table> -<!-- ==================== NAVIGATION BAR ==================== --> -<table class="navbar" border="0" width="100%" cellpadding="0" - bgcolor="#a0c0ff" cellspacing="0"> - <tr valign="middle"> - <!-- Home link --> - <th> <a - href="scapi-module.html">Home</a> </th> - - <!-- Tree link --> - <th> <a - href="module-tree.html">Trees</a> </th> - - <!-- Index link --> - <th> <a - href="identifier-index.html">Indices</a> </th> - - <!-- Help link --> - <th> <a - href="help.html">Help</a> </th> - - <!-- Project homepage --> - <th class="navbar" align="right" width="100%"> - <table border="0" cellpadding="0" cellspacing="0"> - <tr><th class="navbar" align="center" - >SoundCloud API</th> - </tr></table></th> - </tr> -</table> -<table border="0" cellpadding="0" cellspacing="0" width="100%%"> - <tr> - <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Thu Sep 10 00:58:49 2009 - </td> - <td align="right" class="footer"> - <a target="mainFrame" href="http://epydoc.sourceforge.net" - >http://epydoc.sourceforge.net</a> - </td> - </tr> -</table> - -<script type="text/javascript"> - <!-- - // Private objects are initially displayed (because if - // javascript is turned off then we want them to be - // visible); but by default, we want to hide them. So hide - // them unless we have a cookie that says to show them. - checkCookie(); - // --> -</script> -</body> -</html> diff --git a/python_apps/soundcloud-api/docs/api/scapi.json._StringGenerator-class.html b/python_apps/soundcloud-api/docs/api/scapi.json._StringGenerator-class.html deleted file mode 100644 index ead736d6f..000000000 --- a/python_apps/soundcloud-api/docs/api/scapi.json._StringGenerator-class.html +++ /dev/null @@ -1,291 +0,0 @@ -<?xml version="1.0" encoding="ascii"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <title>scapi.json._StringGenerator</title> - <link rel="stylesheet" href="epydoc.css" type="text/css" /> - <script type="text/javascript" src="epydoc.js"></script> -</head> - -<body bgcolor="white" text="black" link="blue" vlink="#204080" - alink="#204080"> -<!-- ==================== NAVIGATION BAR ==================== --> -<table class="navbar" border="0" width="100%" cellpadding="0" - bgcolor="#a0c0ff" cellspacing="0"> - <tr valign="middle"> - <!-- Home link --> - <th> <a - href="scapi-module.html">Home</a> </th> - - <!-- Tree link --> - <th> <a - href="module-tree.html">Trees</a> </th> - - <!-- Index link --> - <th> <a - href="identifier-index.html">Indices</a> </th> - - <!-- Help link --> - <th> <a - href="help.html">Help</a> </th> - - <!-- Project homepage --> - <th class="navbar" align="right" width="100%"> - <table border="0" cellpadding="0" cellspacing="0"> - <tr><th class="navbar" align="center" - >SoundCloud API</th> - </tr></table></th> - </tr> -</table> -<table width="100%" cellpadding="0" cellspacing="0"> - <tr valign="top"> - <td width="100%"> - <span class="breadcrumbs"> - <a href="scapi-module.html">Package scapi</a> :: - <a href="scapi.json-module.html">Module json</a> :: - Class _StringGenerator - </span> - </td> - <td> - <table cellpadding="0" cellspacing="0"> - <!-- hide/show private --> - <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink" - onclick="toggle_private();">hide private</a>]</span></td></tr> - <tr><td align="right"><span class="options" - >[<a href="frames.html" target="_top">frames</a - >] | <a href="scapi.json._StringGenerator-class.html" - target="_top">no frames</a>]</span></td></tr> - </table> - </td> - </tr> -</table> -<!-- ==================== CLASS DESCRIPTION ==================== --> -<h1 class="epydoc">Class _StringGenerator</h1><p class="nomargin-top"><span class="codelink"><a href="scapi.json-pysrc.html#_StringGenerator">source code</a></span></p> -<pre class="base-tree"> -object --+ - | - <strong class="uidshort">_StringGenerator</strong> -</pre> - -<hr /> -<!-- ==================== INSTANCE METHODS ==================== --> -<a name="section-InstanceMethods"></a> -<table class="summary" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr bgcolor="#70b0f0" class="table-header"> - <td colspan="2" class="table-header"> - <table border="0" cellpadding="0" cellspacing="0" width="100%"> - <tr valign="top"> - <td align="left"><span class="table-header">Instance Methods</span></td> - <td align="right" valign="top" - ><span class="options">[<a href="#section-InstanceMethods" - class="privatelink" onclick="toggle_private();" - >hide private</a>]</span></td> - </tr> - </table> - </td> -</tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a href="scapi.json._StringGenerator-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>, - <span class="summary-sig-arg">string</span>)</span><br /> - x.__init__(...) initializes x; see x.__class__.__doc__ for signature</td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi.json-pysrc.html#_StringGenerator.__init__">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a name="peek"></a><span class="summary-sig-name">peek</span>(<span class="summary-sig-arg">self</span>)</span></td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi.json-pysrc.html#_StringGenerator.peek">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a name="next"></a><span class="summary-sig-name">next</span>(<span class="summary-sig-arg">self</span>)</span></td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi.json-pysrc.html#_StringGenerator.next">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a name="all"></a><span class="summary-sig-name">all</span>(<span class="summary-sig-arg">self</span>)</span></td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi.json-pysrc.html#_StringGenerator.all">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> - <tr> - <td colspan="2" class="summary"> - <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>: - <code>__delattr__</code>, - <code>__getattribute__</code>, - <code>__hash__</code>, - <code>__new__</code>, - <code>__reduce__</code>, - <code>__reduce_ex__</code>, - <code>__repr__</code>, - <code>__setattr__</code>, - <code>__str__</code> - </p> - </td> - </tr> -</table> -<!-- ==================== PROPERTIES ==================== --> -<a name="section-Properties"></a> -<table class="summary" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr bgcolor="#70b0f0" class="table-header"> - <td colspan="2" class="table-header"> - <table border="0" cellpadding="0" cellspacing="0" width="100%"> - <tr valign="top"> - <td align="left"><span class="table-header">Properties</span></td> - <td align="right" valign="top" - ><span class="options">[<a href="#section-Properties" - class="privatelink" onclick="toggle_private();" - >hide private</a>]</span></td> - </tr> - </table> - </td> -</tr> - <tr> - <td colspan="2" class="summary"> - <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>: - <code>__class__</code> - </p> - </td> - </tr> -</table> -<!-- ==================== METHOD DETAILS ==================== --> -<a name="section-MethodDetails"></a> -<table class="details" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr bgcolor="#70b0f0" class="table-header"> - <td colspan="2" class="table-header"> - <table border="0" cellpadding="0" cellspacing="0" width="100%"> - <tr valign="top"> - <td align="left"><span class="table-header">Method Details</span></td> - <td align="right" valign="top" - ><span class="options">[<a href="#section-MethodDetails" - class="privatelink" onclick="toggle_private();" - >hide private</a>]</span></td> - </tr> - </table> - </td> -</tr> -</table> -<a name="__init__"></a> -<div> -<table class="details" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr><td> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr valign="top"><td> - <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>, - <span class="sig-arg">string</span>)</span> - <br /><em class="fname">(Constructor)</em> - </h3> - </td><td align="right" valign="top" - ><span class="codelink"><a href="scapi.json-pysrc.html#_StringGenerator.__init__">source code</a></span> - </td> - </tr></table> - - <p>x.__init__(...) initializes x; see x.__class__.__doc__ for - signature</p> - <dl class="fields"> - <dt>Overrides: - object.__init__ - <dd><em class="note">(inherited documentation)</em></dd> - </dt> - </dl> -</td></tr></table> -</div> -<br /> -<!-- ==================== NAVIGATION BAR ==================== --> -<table class="navbar" border="0" width="100%" cellpadding="0" - bgcolor="#a0c0ff" cellspacing="0"> - <tr valign="middle"> - <!-- Home link --> - <th> <a - href="scapi-module.html">Home</a> </th> - - <!-- Tree link --> - <th> <a - href="module-tree.html">Trees</a> </th> - - <!-- Index link --> - <th> <a - href="identifier-index.html">Indices</a> </th> - - <!-- Help link --> - <th> <a - href="help.html">Help</a> </th> - - <!-- Project homepage --> - <th class="navbar" align="right" width="100%"> - <table border="0" cellpadding="0" cellspacing="0"> - <tr><th class="navbar" align="center" - >SoundCloud API</th> - </tr></table></th> - </tr> -</table> -<table border="0" cellpadding="0" cellspacing="0" width="100%%"> - <tr> - <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Thu Sep 10 00:58:49 2009 - </td> - <td align="right" class="footer"> - <a target="mainFrame" href="http://epydoc.sourceforge.net" - >http://epydoc.sourceforge.net</a> - </td> - </tr> -</table> - -<script type="text/javascript"> - <!-- - // Private objects are initially displayed (because if - // javascript is turned off then we want them to be - // visible); but by default, we want to hide them. So hide - // them unless we have a cookie that says to show them. - checkCookie(); - // --> -</script> -</body> -</html> diff --git a/python_apps/soundcloud-api/docs/api/scapi.tests-module.html b/python_apps/soundcloud-api/docs/api/scapi.tests-module.html deleted file mode 100644 index 41a0acbfc..000000000 --- a/python_apps/soundcloud-api/docs/api/scapi.tests-module.html +++ /dev/null @@ -1,140 +0,0 @@ -<?xml version="1.0" encoding="ascii"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <title>scapi.tests</title> - <link rel="stylesheet" href="epydoc.css" type="text/css" /> - <script type="text/javascript" src="epydoc.js"></script> -</head> - -<body bgcolor="white" text="black" link="blue" vlink="#204080" - alink="#204080"> -<!-- ==================== NAVIGATION BAR ==================== --> -<table class="navbar" border="0" width="100%" cellpadding="0" - bgcolor="#a0c0ff" cellspacing="0"> - <tr valign="middle"> - <!-- Home link --> - <th> <a - href="scapi-module.html">Home</a> </th> - - <!-- Tree link --> - <th> <a - href="module-tree.html">Trees</a> </th> - - <!-- Index link --> - <th> <a - href="identifier-index.html">Indices</a> </th> - - <!-- Help link --> - <th> <a - href="help.html">Help</a> </th> - - <!-- Project homepage --> - <th class="navbar" align="right" width="100%"> - <table border="0" cellpadding="0" cellspacing="0"> - <tr><th class="navbar" align="center" - >SoundCloud API</th> - </tr></table></th> - </tr> -</table> -<table width="100%" cellpadding="0" cellspacing="0"> - <tr valign="top"> - <td width="100%"> - <span class="breadcrumbs"> - <a href="scapi-module.html">Package scapi</a> :: - Package tests - </span> - </td> - <td> - <table cellpadding="0" cellspacing="0"> - <!-- hide/show private --> - <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink" - onclick="toggle_private();">hide private</a>]</span></td></tr> - <tr><td align="right"><span class="options" - >[<a href="frames.html" target="_top">frames</a - >] | <a href="scapi.tests-module.html" - target="_top">no frames</a>]</span></td></tr> - </table> - </td> - </tr> -</table> -<!-- ==================== PACKAGE DESCRIPTION ==================== --> -<h1 class="epydoc">Package tests</h1><p class="nomargin-top"><span class="codelink"><a href="scapi.tests-pysrc.html">source code</a></span></p> -<!-- ==================== SUBMODULES ==================== --> -<a name="section-Submodules"></a> -<table class="summary" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr bgcolor="#70b0f0" class="table-header"> - <td colspan="2" class="table-header"> - <table border="0" cellpadding="0" cellspacing="0" width="100%"> - <tr valign="top"> - <td align="left"><span class="table-header">Submodules</span></td> - <td align="right" valign="top" - ><span class="options">[<a href="#section-Submodules" - class="privatelink" onclick="toggle_private();" - >hide private</a>]</span></td> - </tr> - </table> - </td> -</tr> - <tr><td class="summary"> - <ul class="nomargin"> - <li> <strong class="uidlink"><a href="scapi.tests.scapi_tests-module.html">scapi.tests.scapi_tests</a></strong> </li> - <li> <strong class="uidlink"><a href="scapi.tests.test_connect-module.html">scapi.tests.test_connect</a></strong> </li> - <li> <strong class="uidlink"><a href="scapi.tests.test_oauth-module.html">scapi.tests.test_oauth</a></strong> </li> - </ul></td></tr> -</table> - -<br /> -<!-- ==================== NAVIGATION BAR ==================== --> -<table class="navbar" border="0" width="100%" cellpadding="0" - bgcolor="#a0c0ff" cellspacing="0"> - <tr valign="middle"> - <!-- Home link --> - <th> <a - href="scapi-module.html">Home</a> </th> - - <!-- Tree link --> - <th> <a - href="module-tree.html">Trees</a> </th> - - <!-- Index link --> - <th> <a - href="identifier-index.html">Indices</a> </th> - - <!-- Help link --> - <th> <a - href="help.html">Help</a> </th> - - <!-- Project homepage --> - <th class="navbar" align="right" width="100%"> - <table border="0" cellpadding="0" cellspacing="0"> - <tr><th class="navbar" align="center" - >SoundCloud API</th> - </tr></table></th> - </tr> -</table> -<table border="0" cellpadding="0" cellspacing="0" width="100%%"> - <tr> - <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Thu Sep 10 00:58:49 2009 - </td> - <td align="right" class="footer"> - <a target="mainFrame" href="http://epydoc.sourceforge.net" - >http://epydoc.sourceforge.net</a> - </td> - </tr> -</table> - -<script type="text/javascript"> - <!-- - // Private objects are initially displayed (because if - // javascript is turned off then we want them to be - // visible); but by default, we want to hide them. So hide - // them unless we have a cookie that says to show them. - checkCookie(); - // --> -</script> -</body> -</html> diff --git a/python_apps/soundcloud-api/docs/api/scapi.tests-pysrc.html b/python_apps/soundcloud-api/docs/api/scapi.tests-pysrc.html deleted file mode 100644 index a967c5152..000000000 --- a/python_apps/soundcloud-api/docs/api/scapi.tests-pysrc.html +++ /dev/null @@ -1,122 +0,0 @@ -<?xml version="1.0" encoding="ascii"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <title>scapi.tests</title> - <link rel="stylesheet" href="epydoc.css" type="text/css" /> - <script type="text/javascript" src="epydoc.js"></script> -</head> - -<body bgcolor="white" text="black" link="blue" vlink="#204080" - alink="#204080"> -<!-- ==================== NAVIGATION BAR ==================== --> -<table class="navbar" border="0" width="100%" cellpadding="0" - bgcolor="#a0c0ff" cellspacing="0"> - <tr valign="middle"> - <!-- Home link --> - <th> <a - href="scapi-module.html">Home</a> </th> - - <!-- Tree link --> - <th> <a - href="module-tree.html">Trees</a> </th> - - <!-- Index link --> - <th> <a - href="identifier-index.html">Indices</a> </th> - - <!-- Help link --> - <th> <a - href="help.html">Help</a> </th> - - <!-- Project homepage --> - <th class="navbar" align="right" width="100%"> - <table border="0" cellpadding="0" cellspacing="0"> - <tr><th class="navbar" align="center" - >SoundCloud API</th> - </tr></table></th> - </tr> -</table> -<table width="100%" cellpadding="0" cellspacing="0"> - <tr valign="top"> - <td width="100%"> - <span class="breadcrumbs"> - <a href="scapi-module.html">Package scapi</a> :: - Package tests - </span> - </td> - <td> - <table cellpadding="0" cellspacing="0"> - <!-- hide/show private --> - <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink" - onclick="toggle_private();">hide private</a>]</span></td></tr> - <tr><td align="right"><span class="options" - >[<a href="frames.html" target="_top">frames</a - >] | <a href="scapi.tests-pysrc.html" - target="_top">no frames</a>]</span></td></tr> - </table> - </td> - </tr> -</table> -<h1 class="epydoc">Source Code for <a href="scapi.tests-module.html">Package scapi.tests</a></h1> -<pre class="py-src"> -<a name="L1"></a><tt class="py-lineno">1</tt> <tt class="py-line"> </tt> -<a name="L2"></a><tt class="py-lineno">2</tt> <tt class="py-line"> </tt><script type="text/javascript"> -<!-- -expandto(location.href); -// --> -</script> -</pre> -<br /> -<!-- ==================== NAVIGATION BAR ==================== --> -<table class="navbar" border="0" width="100%" cellpadding="0" - bgcolor="#a0c0ff" cellspacing="0"> - <tr valign="middle"> - <!-- Home link --> - <th> <a - href="scapi-module.html">Home</a> </th> - - <!-- Tree link --> - <th> <a - href="module-tree.html">Trees</a> </th> - - <!-- Index link --> - <th> <a - href="identifier-index.html">Indices</a> </th> - - <!-- Help link --> - <th> <a - href="help.html">Help</a> </th> - - <!-- Project homepage --> - <th class="navbar" align="right" width="100%"> - <table border="0" cellpadding="0" cellspacing="0"> - <tr><th class="navbar" align="center" - >SoundCloud API</th> - </tr></table></th> - </tr> -</table> -<table border="0" cellpadding="0" cellspacing="0" width="100%%"> - <tr> - <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Thu Sep 10 00:58:50 2009 - </td> - <td align="right" class="footer"> - <a target="mainFrame" href="http://epydoc.sourceforge.net" - >http://epydoc.sourceforge.net</a> - </td> - </tr> -</table> - -<script type="text/javascript"> - <!-- - // Private objects are initially displayed (because if - // javascript is turned off then we want them to be - // visible); but by default, we want to hide them. So hide - // them unless we have a cookie that says to show them. - checkCookie(); - // --> -</script> -</body> -</html> diff --git a/python_apps/soundcloud-api/docs/api/scapi.tests.scapi_tests-module.html b/python_apps/soundcloud-api/docs/api/scapi.tests.scapi_tests-module.html deleted file mode 100644 index cff686d84..000000000 --- a/python_apps/soundcloud-api/docs/api/scapi.tests.scapi_tests-module.html +++ /dev/null @@ -1,172 +0,0 @@ -<?xml version="1.0" encoding="ascii"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <title>scapi.tests.scapi_tests</title> - <link rel="stylesheet" href="epydoc.css" type="text/css" /> - <script type="text/javascript" src="epydoc.js"></script> -</head> - -<body bgcolor="white" text="black" link="blue" vlink="#204080" - alink="#204080"> -<!-- ==================== NAVIGATION BAR ==================== --> -<table class="navbar" border="0" width="100%" cellpadding="0" - bgcolor="#a0c0ff" cellspacing="0"> - <tr valign="middle"> - <!-- Home link --> - <th> <a - href="scapi-module.html">Home</a> </th> - - <!-- Tree link --> - <th> <a - href="module-tree.html">Trees</a> </th> - - <!-- Index link --> - <th> <a - href="identifier-index.html">Indices</a> </th> - - <!-- Help link --> - <th> <a - href="help.html">Help</a> </th> - - <!-- Project homepage --> - <th class="navbar" align="right" width="100%"> - <table border="0" cellpadding="0" cellspacing="0"> - <tr><th class="navbar" align="center" - >SoundCloud API</th> - </tr></table></th> - </tr> -</table> -<table width="100%" cellpadding="0" cellspacing="0"> - <tr valign="top"> - <td width="100%"> - <span class="breadcrumbs"> - <a href="scapi-module.html">Package scapi</a> :: - <a href="scapi.tests-module.html">Package tests</a> :: - Module scapi_tests - </span> - </td> - <td> - <table cellpadding="0" cellspacing="0"> - <!-- hide/show private --> - <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink" - onclick="toggle_private();">hide private</a>]</span></td></tr> - <tr><td align="right"><span class="options" - >[<a href="frames.html" target="_top">frames</a - >] | <a href="scapi.tests.scapi_tests-module.html" - target="_top">no frames</a>]</span></td></tr> - </table> - </td> - </tr> -</table> -<!-- ==================== MODULE DESCRIPTION ==================== --> -<h1 class="epydoc">Module scapi_tests</h1><p class="nomargin-top"><span class="codelink"><a href="scapi.tests.scapi_tests-pysrc.html">source code</a></span></p> -<!-- ==================== CLASSES ==================== --> -<a name="section-Classes"></a> -<table class="summary" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr bgcolor="#70b0f0" class="table-header"> - <td colspan="2" class="table-header"> - <table border="0" cellpadding="0" cellspacing="0" width="100%"> - <tr valign="top"> - <td align="left"><span class="table-header">Classes</span></td> - <td align="right" valign="top" - ><span class="options">[<a href="#section-Classes" - class="privatelink" onclick="toggle_private();" - >hide private</a>]</span></td> - </tr> - </table> - </td> -</tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <a href="scapi.tests.scapi_tests.SCAPITests-class.html" class="summary-name">SCAPITests</a> - </td> - </tr> -</table> -<!-- ==================== VARIABLES ==================== --> -<a name="section-Variables"></a> -<table class="summary" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr bgcolor="#70b0f0" class="table-header"> - <td colspan="2" class="table-header"> - <table border="0" cellpadding="0" cellspacing="0" width="100%"> - <tr valign="top"> - <td align="left"><span class="table-header">Variables</span></td> - <td align="right" valign="top" - ><span class="options">[<a href="#section-Variables" - class="privatelink" onclick="toggle_private();" - >hide private</a>]</span></td> - </tr> - </table> - </td> -</tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <a name="logger"></a><span class="summary-name">logger</span> = <code title="logging.getLogger("scapi.tests")">logging.getLogger("scapi.tests")</code> - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <a name="api_logger"></a><span class="summary-name">api_logger</span> = <code title="logging.getLogger("scapi")">logging.getLogger("scapi")</code> - </td> - </tr> -</table> -<!-- ==================== NAVIGATION BAR ==================== --> -<table class="navbar" border="0" width="100%" cellpadding="0" - bgcolor="#a0c0ff" cellspacing="0"> - <tr valign="middle"> - <!-- Home link --> - <th> <a - href="scapi-module.html">Home</a> </th> - - <!-- Tree link --> - <th> <a - href="module-tree.html">Trees</a> </th> - - <!-- Index link --> - <th> <a - href="identifier-index.html">Indices</a> </th> - - <!-- Help link --> - <th> <a - href="help.html">Help</a> </th> - - <!-- Project homepage --> - <th class="navbar" align="right" width="100%"> - <table border="0" cellpadding="0" cellspacing="0"> - <tr><th class="navbar" align="center" - >SoundCloud API</th> - </tr></table></th> - </tr> -</table> -<table border="0" cellpadding="0" cellspacing="0" width="100%%"> - <tr> - <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Thu Sep 10 00:58:49 2009 - </td> - <td align="right" class="footer"> - <a target="mainFrame" href="http://epydoc.sourceforge.net" - >http://epydoc.sourceforge.net</a> - </td> - </tr> -</table> - -<script type="text/javascript"> - <!-- - // Private objects are initially displayed (because if - // javascript is turned off then we want them to be - // visible); but by default, we want to hide them. So hide - // them unless we have a cookie that says to show them. - checkCookie(); - // --> -</script> -</body> -</html> diff --git a/python_apps/soundcloud-api/docs/api/scapi.tests.scapi_tests-pysrc.html b/python_apps/soundcloud-api/docs/api/scapi.tests.scapi_tests-pysrc.html deleted file mode 100644 index bca835c59..000000000 --- a/python_apps/soundcloud-api/docs/api/scapi.tests.scapi_tests-pysrc.html +++ /dev/null @@ -1,760 +0,0 @@ -<?xml version="1.0" encoding="ascii"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <title>scapi.tests.scapi_tests</title> - <link rel="stylesheet" href="epydoc.css" type="text/css" /> - <script type="text/javascript" src="epydoc.js"></script> -</head> - -<body bgcolor="white" text="black" link="blue" vlink="#204080" - alink="#204080"> -<!-- ==================== NAVIGATION BAR ==================== --> -<table class="navbar" border="0" width="100%" cellpadding="0" - bgcolor="#a0c0ff" cellspacing="0"> - <tr valign="middle"> - <!-- Home link --> - <th> <a - href="scapi-module.html">Home</a> </th> - - <!-- Tree link --> - <th> <a - href="module-tree.html">Trees</a> </th> - - <!-- Index link --> - <th> <a - href="identifier-index.html">Indices</a> </th> - - <!-- Help link --> - <th> <a - href="help.html">Help</a> </th> - - <!-- Project homepage --> - <th class="navbar" align="right" width="100%"> - <table border="0" cellpadding="0" cellspacing="0"> - <tr><th class="navbar" align="center" - >SoundCloud API</th> - </tr></table></th> - </tr> -</table> -<table width="100%" cellpadding="0" cellspacing="0"> - <tr valign="top"> - <td width="100%"> - <span class="breadcrumbs"> - <a href="scapi-module.html">Package scapi</a> :: - <a href="scapi.tests-module.html">Package tests</a> :: - Module scapi_tests - </span> - </td> - <td> - <table cellpadding="0" cellspacing="0"> - <!-- hide/show private --> - <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink" - onclick="toggle_private();">hide private</a>]</span></td></tr> - <tr><td align="right"><span class="options" - >[<a href="frames.html" target="_top">frames</a - >] | <a href="scapi.tests.scapi_tests-pysrc.html" - target="_top">no frames</a>]</span></td></tr> - </table> - </td> - </tr> -</table> -<h1 class="epydoc">Source Code for <a href="scapi.tests.scapi_tests-module.html">Module scapi.tests.scapi_tests</a></h1> -<pre class="py-src"> -<a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt class="py-name">__future__</tt> <tt class="py-keyword">import</tt> <tt class="py-name">with_statement</tt> </tt> -<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"> </tt> -<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">os</tt> </tt> -<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">urllib2</tt> </tt> -<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">itertools</tt> </tt> -<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt class="py-name">textwrap</tt> <tt class="py-keyword">import</tt> <tt class="py-name">dedent</tt> </tt> -<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">pkg_resources</tt> </tt> -<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">logging</tt> </tt> -<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">webbrowser</tt> </tt> -<a name="L10"></a><tt class="py-lineno"> 10</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt class="py-name">unittest</tt> <tt class="py-keyword">import</tt> <tt class="py-name">TestCase</tt> </tt> -<a name="L11"></a><tt class="py-lineno"> 11</tt> <tt class="py-line"> </tt> -<a name="L12"></a><tt class="py-lineno"> 12</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt class="py-name">configobj</tt> <tt class="py-keyword">import</tt> <tt class="py-name">ConfigObj</tt> </tt> -<a name="L13"></a><tt class="py-lineno"> 13</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt class="py-name">validate</tt> <tt class="py-keyword">import</tt> <tt class="py-name">Validator</tt> </tt> -<a name="L14"></a><tt class="py-lineno"> 14</tt> <tt class="py-line"> </tt> -<a name="L15"></a><tt class="py-lineno"> 15</tt> <tt class="py-line"> </tt> -<a name="L16"></a><tt class="py-lineno"> 16</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-0" class="py-name" targets="Package scapi=scapi-module.html"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-0', 'scapi', 'link-0');">scapi</a></tt> </tt> -<a name="L17"></a><tt class="py-lineno"> 17</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-1" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-1', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-2" class="py-name" targets="Module scapi.authentication=scapi.authentication-module.html"><a title="scapi.authentication" class="py-name" href="#" onclick="return doclink('link-2', 'authentication', 'link-2');">authentication</a></tt> </tt> -<a name="L18"></a><tt class="py-lineno"> 18</tt> <tt class="py-line"> </tt> -<a name="L19"></a><tt class="py-lineno"> 19</tt> <tt class="py-line"><tt id="link-3" class="py-name" targets="Variable scapi.authentication.logger=scapi.authentication-module.html#logger,Variable scapi.logger=scapi-module.html#logger,Variable scapi.tests.scapi_tests.logger=scapi.tests.scapi_tests-module.html#logger,Variable scapi.tests.test_connect.logger=scapi.tests.test_connect-module.html#logger,Variable scapi.tests.test_oauth.logger=scapi.tests.test_oauth-module.html#logger"><a title="scapi.authentication.logger -scapi.logger -scapi.tests.scapi_tests.logger -scapi.tests.test_connect.logger -scapi.tests.test_oauth.logger" class="py-name" href="#" onclick="return doclink('link-3', 'logger', 'link-3');">logger</a></tt> <tt class="py-op">=</tt> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">getLogger</tt><tt class="py-op">(</tt><tt class="py-string">"scapi.tests"</tt><tt class="py-op">)</tt> </tt> -<a name="L20"></a><tt class="py-lineno"> 20</tt> <tt class="py-line"> </tt> -<a name="L21"></a><tt class="py-lineno"> 21</tt> <tt class="py-line"><tt id="link-4" class="py-name" targets="Variable scapi.tests.scapi_tests.api_logger=scapi.tests.scapi_tests-module.html#api_logger"><a title="scapi.tests.scapi_tests.api_logger" class="py-name" href="#" onclick="return doclink('link-4', 'api_logger', 'link-4');">api_logger</a></tt> <tt class="py-op">=</tt> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">getLogger</tt><tt class="py-op">(</tt><tt class="py-string">"scapi"</tt><tt class="py-op">)</tt> </tt> -<a name="SCAPITests"></a><div id="SCAPITests-def"><a name="L22"></a><tt class="py-lineno"> 22</tt> <tt class="py-line"> </tt> -<a name="L23"></a><tt class="py-lineno"> 23</tt> <tt class="py-line"> </tt> -<a name="L24"></a><tt class="py-lineno"> 24</tt> <a class="py-toggle" href="#" id="SCAPITests-toggle" onclick="return toggle('SCAPITests');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="scapi.tests.scapi_tests.SCAPITests-class.html">SCAPITests</a><tt class="py-op">(</tt><tt class="py-base-class">TestCase</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="SCAPITests-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="SCAPITests-expanded"><a name="L25"></a><tt class="py-lineno"> 25</tt> <tt class="py-line"> </tt> -<a name="L26"></a><tt class="py-lineno"> 26</tt> <tt class="py-line"> <tt id="link-5" class="py-name" targets="Variable scapi.tests.scapi_tests.SCAPITests.CONFIG_NAME=scapi.tests.scapi_tests.SCAPITests-class.html#CONFIG_NAME,Variable scapi.tests.test_connect.CONFIG_NAME=scapi.tests.test_connect-module.html#CONFIG_NAME"><a title="scapi.tests.scapi_tests.SCAPITests.CONFIG_NAME -scapi.tests.test_connect.CONFIG_NAME" class="py-name" href="#" onclick="return doclink('link-5', 'CONFIG_NAME', 'link-5');">CONFIG_NAME</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"test.ini"</tt> </tt> -<a name="L27"></a><tt class="py-lineno"> 27</tt> <tt class="py-line"> <tt id="link-6" class="py-name" targets="Variable scapi.tests.scapi_tests.SCAPITests.TOKEN=scapi.tests.scapi_tests.SCAPITests-class.html#TOKEN,Variable scapi.tests.test_connect.TOKEN=scapi.tests.test_connect-module.html#TOKEN,Variable scapi.tests.test_oauth.TOKEN=scapi.tests.test_oauth-module.html#TOKEN"><a title="scapi.tests.scapi_tests.SCAPITests.TOKEN -scapi.tests.test_connect.TOKEN -scapi.tests.test_oauth.TOKEN" class="py-name" href="#" onclick="return doclink('link-6', 'TOKEN', 'link-6');">TOKEN</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt> -<a name="L28"></a><tt class="py-lineno"> 28</tt> <tt class="py-line"> <tt id="link-7" class="py-name" targets="Variable scapi.tests.scapi_tests.SCAPITests.SECRET=scapi.tests.scapi_tests.SCAPITests-class.html#SECRET,Variable scapi.tests.test_connect.SECRET=scapi.tests.test_connect-module.html#SECRET,Variable scapi.tests.test_oauth.SECRET=scapi.tests.test_oauth-module.html#SECRET"><a title="scapi.tests.scapi_tests.SCAPITests.SECRET -scapi.tests.test_connect.SECRET -scapi.tests.test_oauth.SECRET" class="py-name" href="#" onclick="return doclink('link-7', 'SECRET', 'link-7');">SECRET</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt> -<a name="L29"></a><tt class="py-lineno"> 29</tt> <tt class="py-line"> <tt id="link-8" class="py-name" targets="Variable scapi.tests.scapi_tests.SCAPITests.CONSUMER=scapi.tests.scapi_tests.SCAPITests-class.html#CONSUMER,Variable scapi.tests.test_connect.CONSUMER=scapi.tests.test_connect-module.html#CONSUMER,Variable scapi.tests.test_oauth.CONSUMER=scapi.tests.test_oauth-module.html#CONSUMER"><a title="scapi.tests.scapi_tests.SCAPITests.CONSUMER -scapi.tests.test_connect.CONSUMER -scapi.tests.test_oauth.CONSUMER" class="py-name" href="#" onclick="return doclink('link-8', 'CONSUMER', 'link-8');">CONSUMER</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt> -<a name="L30"></a><tt class="py-lineno"> 30</tt> <tt class="py-line"> <tt id="link-9" class="py-name" targets="Variable scapi.tests.scapi_tests.SCAPITests.CONSUMER_SECRET=scapi.tests.scapi_tests.SCAPITests-class.html#CONSUMER_SECRET,Variable scapi.tests.test_connect.CONSUMER_SECRET=scapi.tests.test_connect-module.html#CONSUMER_SECRET,Variable scapi.tests.test_oauth.CONSUMER_SECRET=scapi.tests.test_oauth-module.html#CONSUMER_SECRET"><a title="scapi.tests.scapi_tests.SCAPITests.CONSUMER_SECRET -scapi.tests.test_connect.CONSUMER_SECRET -scapi.tests.test_oauth.CONSUMER_SECRET" class="py-name" href="#" onclick="return doclink('link-9', 'CONSUMER_SECRET', 'link-9');">CONSUMER_SECRET</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt> -<a name="L31"></a><tt class="py-lineno"> 31</tt> <tt class="py-line"> <tt id="link-10" class="py-name" targets="Variable scapi.tests.scapi_tests.SCAPITests.API_HOST=scapi.tests.scapi_tests.SCAPITests-class.html#API_HOST,Variable scapi.tests.test_connect.API_HOST=scapi.tests.test_connect-module.html#API_HOST"><a title="scapi.tests.scapi_tests.SCAPITests.API_HOST -scapi.tests.test_connect.API_HOST" class="py-name" href="#" onclick="return doclink('link-10', 'API_HOST', 'link-10');">API_HOST</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt> -<a name="L32"></a><tt class="py-lineno"> 32</tt> <tt class="py-line"> <tt id="link-11" class="py-name" targets="Variable scapi.tests.scapi_tests.SCAPITests.USER=scapi.tests.scapi_tests.SCAPITests-class.html#USER,Variable scapi.tests.test_connect.USER=scapi.tests.test_connect-module.html#USER"><a title="scapi.tests.scapi_tests.SCAPITests.USER -scapi.tests.test_connect.USER" class="py-name" href="#" onclick="return doclink('link-11', 'USER', 'link-11');">USER</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt> -<a name="L33"></a><tt class="py-lineno"> 33</tt> <tt class="py-line"> <tt id="link-12" class="py-name" targets="Variable scapi.tests.scapi_tests.SCAPITests.PASSWORD=scapi.tests.scapi_tests.SCAPITests-class.html#PASSWORD,Variable scapi.tests.test_connect.PASSWORD=scapi.tests.test_connect-module.html#PASSWORD"><a title="scapi.tests.scapi_tests.SCAPITests.PASSWORD -scapi.tests.test_connect.PASSWORD" class="py-name" href="#" onclick="return doclink('link-12', 'PASSWORD', 'link-12');">PASSWORD</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt> -<a name="L34"></a><tt class="py-lineno"> 34</tt> <tt class="py-line"> <tt id="link-13" class="py-name" targets="Variable scapi.tests.scapi_tests.SCAPITests.AUTHENTICATOR=scapi.tests.scapi_tests.SCAPITests-class.html#AUTHENTICATOR"><a title="scapi.tests.scapi_tests.SCAPITests.AUTHENTICATOR" class="py-name" href="#" onclick="return doclink('link-13', 'AUTHENTICATOR', 'link-13');">AUTHENTICATOR</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt> -<a name="L35"></a><tt class="py-lineno"> 35</tt> <tt class="py-line"> <tt id="link-14" class="py-name" targets="Variable scapi.tests.scapi_tests.SCAPITests.RUN_INTERACTIVE_TESTS=scapi.tests.scapi_tests.SCAPITests-class.html#RUN_INTERACTIVE_TESTS,Variable scapi.tests.test_connect.RUN_INTERACTIVE_TESTS=scapi.tests.test_connect-module.html#RUN_INTERACTIVE_TESTS"><a title="scapi.tests.scapi_tests.SCAPITests.RUN_INTERACTIVE_TESTS -scapi.tests.test_connect.RUN_INTERACTIVE_TESTS" class="py-name" href="#" onclick="return doclink('link-14', 'RUN_INTERACTIVE_TESTS', 'link-14');">RUN_INTERACTIVE_TESTS</a></tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt> -<a name="L36"></a><tt class="py-lineno"> 36</tt> <tt class="py-line"> </tt> -<a name="L37"></a><tt class="py-lineno"> 37</tt> <tt class="py-line"> </tt> -<a name="SCAPITests.setUp"></a><div id="SCAPITests.setUp-def"><a name="L38"></a><tt class="py-lineno"> 38</tt> <a class="py-toggle" href="#" id="SCAPITests.setUp-toggle" onclick="return toggle('SCAPITests.setUp');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.tests.scapi_tests.SCAPITests-class.html#setUp">setUp</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="SCAPITests.setUp-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SCAPITests.setUp-expanded"><a name="L39"></a><tt class="py-lineno"> 39</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-15" class="py-name" targets="Method scapi.tests.scapi_tests.SCAPITests._load_config()=scapi.tests.scapi_tests.SCAPITests-class.html#_load_config"><a title="scapi.tests.scapi_tests.SCAPITests._load_config" class="py-name" href="#" onclick="return doclink('link-15', '_load_config', 'link-15');">_load_config</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L40"></a><tt class="py-lineno"> 40</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">pkg_resources</tt><tt class="py-op">.</tt><tt class="py-name">resource_exists</tt><tt class="py-op">(</tt><tt class="py-string">"scapi.tests.test_connect"</tt><tt class="py-op">,</tt> <tt class="py-string">"knaster.mp3"</tt><tt class="py-op">)</tt> </tt> -<a name="L41"></a><tt class="py-lineno"> 41</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">data</tt> <tt class="py-op">=</tt> <tt class="py-name">pkg_resources</tt><tt class="py-op">.</tt><tt class="py-name">resource_stream</tt><tt class="py-op">(</tt><tt class="py-string">"scapi.tests.test_connect"</tt><tt class="py-op">,</tt> <tt class="py-string">"knaster.mp3"</tt><tt class="py-op">)</tt> </tt> -<a name="L42"></a><tt class="py-lineno"> 42</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">artwork_data</tt> <tt class="py-op">=</tt> <tt class="py-name">pkg_resources</tt><tt class="py-op">.</tt><tt class="py-name">resource_stream</tt><tt class="py-op">(</tt><tt class="py-string">"scapi.tests.test_connect"</tt><tt class="py-op">,</tt> <tt class="py-string">"spam.jpg"</tt><tt class="py-op">)</tt> </tt> -</div><a name="L43"></a><tt class="py-lineno"> 43</tt> <tt class="py-line"> </tt> -<a name="L44"></a><tt class="py-lineno"> 44</tt> <tt class="py-line"> <tt id="link-16" class="py-name" targets="Variable scapi.tests.scapi_tests.SCAPITests.CONFIGSPEC=scapi.tests.scapi_tests.SCAPITests-class.html#CONFIGSPEC"><a title="scapi.tests.scapi_tests.SCAPITests.CONFIGSPEC" class="py-name" href="#" onclick="return doclink('link-16', 'CONFIGSPEC', 'link-16');">CONFIGSPEC</a></tt><tt class="py-op">=</tt><tt class="py-name">dedent</tt><tt class="py-op">(</tt><tt class="py-string">"""</tt> </tt> -<a name="L45"></a><tt class="py-lineno"> 45</tt> <tt class="py-line"><tt class="py-string"> [api]</tt> </tt> -<a name="L46"></a><tt class="py-lineno"> 46</tt> <tt class="py-line"><tt class="py-string"> token=string</tt> </tt> -<a name="L47"></a><tt class="py-lineno"> 47</tt> <tt class="py-line"><tt class="py-string"> secret=string</tt> </tt> -<a name="L48"></a><tt class="py-lineno"> 48</tt> <tt class="py-line"><tt class="py-string"> consumer=string</tt> </tt> -<a name="L49"></a><tt class="py-lineno"> 49</tt> <tt class="py-line"><tt class="py-string"> consumer_secret=string</tt> </tt> -<a name="L50"></a><tt class="py-lineno"> 50</tt> <tt class="py-line"><tt class="py-string"> api_host=string</tt> </tt> -<a name="L51"></a><tt class="py-lineno"> 51</tt> <tt class="py-line"><tt class="py-string"> user=string</tt> </tt> -<a name="L52"></a><tt class="py-lineno"> 52</tt> <tt class="py-line"><tt class="py-string"> password=string</tt> </tt> -<a name="L53"></a><tt class="py-lineno"> 53</tt> <tt class="py-line"><tt class="py-string"> authenticator=option('oauth', 'base', default='oauth')</tt> </tt> -<a name="L54"></a><tt class="py-lineno"> 54</tt> <tt class="py-line"><tt class="py-string"> </tt> </tt> -<a name="L55"></a><tt class="py-lineno"> 55</tt> <tt class="py-line"><tt class="py-string"> [proxy]</tt> </tt> -<a name="L56"></a><tt class="py-lineno"> 56</tt> <tt class="py-line"><tt class="py-string"> use_proxy=boolean(default=false)</tt> </tt> -<a name="L57"></a><tt class="py-lineno"> 57</tt> <tt class="py-line"><tt class="py-string"> proxy=string(default=http://127.0.0.1:10000/)</tt> </tt> -<a name="L58"></a><tt class="py-lineno"> 58</tt> <tt class="py-line"><tt class="py-string"></tt> </tt> -<a name="L59"></a><tt class="py-lineno"> 59</tt> <tt class="py-line"><tt class="py-string"> [logging]</tt> </tt> -<a name="L60"></a><tt class="py-lineno"> 60</tt> <tt class="py-line"><tt class="py-string"> test_logger=string(default=ERROR)</tt> </tt> -<a name="L61"></a><tt class="py-lineno"> 61</tt> <tt class="py-line"><tt class="py-string"> api_logger=string(default=ERROR)</tt> </tt> -<a name="L62"></a><tt class="py-lineno"> 62</tt> <tt class="py-line"><tt class="py-string"></tt> </tt> -<a name="L63"></a><tt class="py-lineno"> 63</tt> <tt class="py-line"><tt class="py-string"> [test]</tt> </tt> -<a name="L64"></a><tt class="py-lineno"> 64</tt> <tt class="py-line"><tt class="py-string"> run_interactive_tests=boolean(default=false)</tt> </tt> -<a name="L65"></a><tt class="py-lineno"> 65</tt> <tt class="py-line"><tt class="py-string"> """</tt><tt class="py-op">)</tt> </tt> -<a name="L66"></a><tt class="py-lineno"> 66</tt> <tt class="py-line"> </tt> -<a name="L67"></a><tt class="py-lineno"> 67</tt> <tt class="py-line"> </tt> -<a name="SCAPITests._load_config"></a><div id="SCAPITests._load_config-def"><a name="L68"></a><tt class="py-lineno"> 68</tt> <a class="py-toggle" href="#" id="SCAPITests._load_config-toggle" onclick="return toggle('SCAPITests._load_config');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.tests.scapi_tests.SCAPITests-class.html#_load_config">_load_config</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="SCAPITests._load_config-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SCAPITests._load_config-expanded"><a name="L69"></a><tt class="py-lineno"> 69</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L70"></a><tt class="py-lineno"> 70</tt> <tt class="py-line"><tt class="py-docstring"> Loads the configuration by looking from</tt> </tt> -<a name="L71"></a><tt class="py-lineno"> 71</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L72"></a><tt class="py-lineno"> 72</tt> <tt class="py-line"><tt class="py-docstring"> - the environment variable SCAPI_CONFIG</tt> </tt> -<a name="L73"></a><tt class="py-lineno"> 73</tt> <tt class="py-line"><tt class="py-docstring"> - the installation location upwards until it finds test.ini</tt> </tt> -<a name="L74"></a><tt class="py-lineno"> 74</tt> <tt class="py-line"><tt class="py-docstring"> - the current working directory upwards until it finds test.ini</tt> </tt> -<a name="L75"></a><tt class="py-lineno"> 75</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L76"></a><tt class="py-lineno"> 76</tt> <tt class="py-line"><tt class="py-docstring"> Raises an error if there is no config found</tt> </tt> -<a name="L77"></a><tt class="py-lineno"> 77</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L78"></a><tt class="py-lineno"> 78</tt> <tt class="py-line"> <tt class="py-name">config_name</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-17" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.CONFIG_NAME -scapi.tests.test_connect.CONFIG_NAME" class="py-name" href="#" onclick="return doclink('link-17', 'CONFIG_NAME', 'link-5');">CONFIG_NAME</a></tt> </tt> -<a name="L79"></a><tt class="py-lineno"> 79</tt> <tt class="py-line"> </tt> -<a name="L80"></a><tt class="py-lineno"> 80</tt> <tt class="py-line"> <tt class="py-name">name</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt> -<a name="L81"></a><tt class="py-lineno"> 81</tt> <tt class="py-line"> </tt> -<a name="L82"></a><tt class="py-lineno"> 82</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-string">"SCAPI_CONFIG"</tt> <tt class="py-keyword">in</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">environ</tt><tt class="py-op">:</tt> </tt> -<a name="L83"></a><tt class="py-lineno"> 83</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">exists</tt><tt class="py-op">(</tt><tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">environ</tt><tt class="py-op">[</tt><tt class="py-string">"SCAPI_CONFIG"</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L84"></a><tt class="py-lineno"> 84</tt> <tt class="py-line"> <tt class="py-name">name</tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">environ</tt><tt class="py-op">[</tt><tt class="py-string">"SCAPI_CONFIG"</tt><tt class="py-op">]</tt> </tt> -<a name="L85"></a><tt class="py-lineno"> 85</tt> <tt class="py-line"> </tt> -<a name="L86"></a><tt class="py-lineno"> 86</tt> <tt class="py-line"> <tt class="py-keyword">def</tt> <tt class="py-def-name">search_for_config</tt><tt class="py-op">(</tt><tt class="py-param">current</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L87"></a><tt class="py-lineno"> 87</tt> <tt class="py-line"> <tt class="py-keyword">while</tt> <tt class="py-name">current</tt><tt class="py-op">:</tt> </tt> -<a name="L88"></a><tt class="py-lineno"> 88</tt> <tt class="py-line"> <tt class="py-name">name</tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">current</tt><tt class="py-op">,</tt> <tt class="py-name">config_name</tt><tt class="py-op">)</tt> </tt> -<a name="L89"></a><tt class="py-lineno"> 89</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">exists</tt><tt class="py-op">(</tt><tt class="py-name">name</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L90"></a><tt class="py-lineno"> 90</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">name</tt> </tt> -<a name="L91"></a><tt class="py-lineno"> 91</tt> <tt class="py-line"> <tt class="py-name">new_current</tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">dirname</tt><tt class="py-op">(</tt><tt class="py-name">current</tt><tt class="py-op">)</tt> </tt> -<a name="L92"></a><tt class="py-lineno"> 92</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">new_current</tt> <tt class="py-op">==</tt> <tt class="py-name">current</tt><tt class="py-op">:</tt> </tt> -<a name="L93"></a><tt class="py-lineno"> 93</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt> -<a name="L94"></a><tt class="py-lineno"> 94</tt> <tt class="py-line"> <tt class="py-name">current</tt> <tt class="py-op">=</tt> <tt class="py-name">new_current</tt> </tt> -</div><a name="L95"></a><tt class="py-lineno"> 95</tt> <tt class="py-line"> </tt> -<a name="L96"></a><tt class="py-lineno"> 96</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">name</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> -<a name="L97"></a><tt class="py-lineno"> 97</tt> <tt class="py-line"> <tt class="py-name">name</tt> <tt class="py-op">=</tt> <tt class="py-name">search_for_config</tt><tt class="py-op">(</tt><tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">dirname</tt><tt class="py-op">(</tt><tt class="py-name">__file__</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L98"></a><tt class="py-lineno"> 98</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">name</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> -<a name="L99"></a><tt class="py-lineno"> 99</tt> <tt class="py-line"> <tt class="py-name">name</tt> <tt class="py-op">=</tt> <tt class="py-name">search_for_config</tt><tt class="py-op">(</tt><tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">getcwd</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L100"></a><tt class="py-lineno">100</tt> <tt class="py-line"> </tt> -<a name="L101"></a><tt class="py-lineno">101</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">name</tt><tt class="py-op">:</tt> </tt> -<a name="L102"></a><tt class="py-lineno">102</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">Exception</tt><tt class="py-op">(</tt><tt class="py-string">"No test configuration file found!"</tt><tt class="py-op">)</tt> </tt> -<a name="L103"></a><tt class="py-lineno">103</tt> <tt class="py-line"> </tt> -<a name="L104"></a><tt class="py-lineno">104</tt> <tt class="py-line"> <tt class="py-name">parser</tt> <tt class="py-op">=</tt> <tt class="py-name">ConfigObj</tt><tt class="py-op">(</tt><tt class="py-name">name</tt><tt class="py-op">,</tt> <tt class="py-name">configspec</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-18" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.CONFIGSPEC" class="py-name" href="#" onclick="return doclink('link-18', 'CONFIGSPEC', 'link-16');">CONFIGSPEC</a></tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">"\n"</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L105"></a><tt class="py-lineno">105</tt> <tt class="py-line"> <tt class="py-name">val</tt> <tt class="py-op">=</tt> <tt class="py-name">Validator</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L106"></a><tt class="py-lineno">106</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">parser</tt><tt class="py-op">.</tt><tt class="py-name">validate</tt><tt class="py-op">(</tt><tt class="py-name">val</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L107"></a><tt class="py-lineno">107</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">Exception</tt><tt class="py-op">(</tt><tt class="py-string">"Config file validation error"</tt><tt class="py-op">)</tt> </tt> -<a name="L108"></a><tt class="py-lineno">108</tt> <tt class="py-line"> </tt> -<a name="L109"></a><tt class="py-lineno">109</tt> <tt class="py-line"> <tt class="py-name">api</tt> <tt class="py-op">=</tt> <tt class="py-name">parser</tt><tt class="py-op">[</tt><tt class="py-string">'api'</tt><tt class="py-op">]</tt> </tt> -<a name="L110"></a><tt class="py-lineno">110</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-19" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.TOKEN -scapi.tests.test_connect.TOKEN -scapi.tests.test_oauth.TOKEN" class="py-name" href="#" onclick="return doclink('link-19', 'TOKEN', 'link-6');">TOKEN</a></tt> <tt class="py-op">=</tt> <tt class="py-name">api</tt><tt class="py-op">.</tt><tt id="link-20" class="py-name" targets="Class Method scapi.RESTBase.get()=scapi.RESTBase-class.html#get"><a title="scapi.RESTBase.get" class="py-name" href="#" onclick="return doclink('link-20', 'get', 'link-20');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'token'</tt><tt class="py-op">)</tt> </tt> -<a name="L111"></a><tt class="py-lineno">111</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-21" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.SECRET -scapi.tests.test_connect.SECRET -scapi.tests.test_oauth.SECRET" class="py-name" href="#" onclick="return doclink('link-21', 'SECRET', 'link-7');">SECRET</a></tt> <tt class="py-op">=</tt> <tt class="py-name">api</tt><tt class="py-op">.</tt><tt id="link-22" class="py-name"><a title="scapi.RESTBase.get" class="py-name" href="#" onclick="return doclink('link-22', 'get', 'link-20');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'secret'</tt><tt class="py-op">)</tt> </tt> -<a name="L112"></a><tt class="py-lineno">112</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-23" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.CONSUMER -scapi.tests.test_connect.CONSUMER -scapi.tests.test_oauth.CONSUMER" class="py-name" href="#" onclick="return doclink('link-23', 'CONSUMER', 'link-8');">CONSUMER</a></tt> <tt class="py-op">=</tt> <tt class="py-name">api</tt><tt class="py-op">.</tt><tt id="link-24" class="py-name"><a title="scapi.RESTBase.get" class="py-name" href="#" onclick="return doclink('link-24', 'get', 'link-20');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'consumer'</tt><tt class="py-op">)</tt> </tt> -<a name="L113"></a><tt class="py-lineno">113</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-25" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.CONSUMER_SECRET -scapi.tests.test_connect.CONSUMER_SECRET -scapi.tests.test_oauth.CONSUMER_SECRET" class="py-name" href="#" onclick="return doclink('link-25', 'CONSUMER_SECRET', 'link-9');">CONSUMER_SECRET</a></tt> <tt class="py-op">=</tt> <tt class="py-name">api</tt><tt class="py-op">.</tt><tt id="link-26" class="py-name"><a title="scapi.RESTBase.get" class="py-name" href="#" onclick="return doclink('link-26', 'get', 'link-20');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'consumer_secret'</tt><tt class="py-op">)</tt> </tt> -<a name="L114"></a><tt class="py-lineno">114</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-27" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.API_HOST -scapi.tests.test_connect.API_HOST" class="py-name" href="#" onclick="return doclink('link-27', 'API_HOST', 'link-10');">API_HOST</a></tt> <tt class="py-op">=</tt> <tt class="py-name">api</tt><tt class="py-op">.</tt><tt id="link-28" class="py-name"><a title="scapi.RESTBase.get" class="py-name" href="#" onclick="return doclink('link-28', 'get', 'link-20');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'api_host'</tt><tt class="py-op">)</tt> </tt> -<a name="L115"></a><tt class="py-lineno">115</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-29" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.USER -scapi.tests.test_connect.USER" class="py-name" href="#" onclick="return doclink('link-29', 'USER', 'link-11');">USER</a></tt> <tt class="py-op">=</tt> <tt class="py-name">api</tt><tt class="py-op">.</tt><tt id="link-30" class="py-name"><a title="scapi.RESTBase.get" class="py-name" href="#" onclick="return doclink('link-30', 'get', 'link-20');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'user'</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt> -<a name="L116"></a><tt class="py-lineno">116</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-31" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.PASSWORD -scapi.tests.test_connect.PASSWORD" class="py-name" href="#" onclick="return doclink('link-31', 'PASSWORD', 'link-12');">PASSWORD</a></tt> <tt class="py-op">=</tt> <tt class="py-name">api</tt><tt class="py-op">.</tt><tt id="link-32" class="py-name"><a title="scapi.RESTBase.get" class="py-name" href="#" onclick="return doclink('link-32', 'get', 'link-20');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'password'</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt> -<a name="L117"></a><tt class="py-lineno">117</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-33" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.AUTHENTICATOR" class="py-name" href="#" onclick="return doclink('link-33', 'AUTHENTICATOR', 'link-13');">AUTHENTICATOR</a></tt> <tt class="py-op">=</tt> <tt class="py-name">api</tt><tt class="py-op">.</tt><tt id="link-34" class="py-name"><a title="scapi.RESTBase.get" class="py-name" href="#" onclick="return doclink('link-34', 'get', 'link-20');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">"authenticator"</tt><tt class="py-op">)</tt> </tt> -<a name="L118"></a><tt class="py-lineno">118</tt> <tt class="py-line"> </tt> -<a name="L119"></a><tt class="py-lineno">119</tt> <tt class="py-line"> <tt class="py-comment"># reset the hard-coded values in the api</tt> </tt> -<a name="L120"></a><tt class="py-lineno">120</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-35" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.API_HOST -scapi.tests.test_connect.API_HOST" class="py-name" href="#" onclick="return doclink('link-35', 'API_HOST', 'link-10');">API_HOST</a></tt><tt class="py-op">:</tt> </tt> -<a name="L121"></a><tt class="py-lineno">121</tt> <tt class="py-line"> <tt id="link-36" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-36', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-37" class="py-name" targets="Variable scapi.AUTHORIZATION_URL=scapi-module.html#AUTHORIZATION_URL"><a title="scapi.AUTHORIZATION_URL" class="py-name" href="#" onclick="return doclink('link-37', 'AUTHORIZATION_URL', 'link-37');">AUTHORIZATION_URL</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"http://%s/oauth/authorize"</tt> <tt class="py-op">%</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-38" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.API_HOST -scapi.tests.test_connect.API_HOST" class="py-name" href="#" onclick="return doclink('link-38', 'API_HOST', 'link-10');">API_HOST</a></tt> </tt> -<a name="L122"></a><tt class="py-lineno">122</tt> <tt class="py-line"> <tt id="link-39" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-39', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-40" class="py-name" targets="Variable scapi.REQUEST_TOKEN_URL=scapi-module.html#REQUEST_TOKEN_URL"><a title="scapi.REQUEST_TOKEN_URL" class="py-name" href="#" onclick="return doclink('link-40', 'REQUEST_TOKEN_URL', 'link-40');">REQUEST_TOKEN_URL</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'http://%s/oauth/request_token'</tt> <tt class="py-op">%</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-41" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.API_HOST -scapi.tests.test_connect.API_HOST" class="py-name" href="#" onclick="return doclink('link-41', 'API_HOST', 'link-10');">API_HOST</a></tt> </tt> -<a name="L123"></a><tt class="py-lineno">123</tt> <tt class="py-line"> <tt id="link-42" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-42', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-43" class="py-name" targets="Variable scapi.ACCESS_TOKEN_URL=scapi-module.html#ACCESS_TOKEN_URL"><a title="scapi.ACCESS_TOKEN_URL" class="py-name" href="#" onclick="return doclink('link-43', 'ACCESS_TOKEN_URL', 'link-43');">ACCESS_TOKEN_URL</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'http://%s/oauth/access_token'</tt> <tt class="py-op">%</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-44" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.API_HOST -scapi.tests.test_connect.API_HOST" class="py-name" href="#" onclick="return doclink('link-44', 'API_HOST', 'link-10');">API_HOST</a></tt> </tt> -<a name="L124"></a><tt class="py-lineno">124</tt> <tt class="py-line"> </tt> -<a name="L125"></a><tt class="py-lineno">125</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-string">"proxy"</tt> <tt class="py-keyword">in</tt> <tt class="py-name">parser</tt> <tt class="py-keyword">and</tt> <tt class="py-name">parser</tt><tt class="py-op">[</tt><tt class="py-string">"proxy"</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-string">"use_proxy"</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt> -<a name="L126"></a><tt class="py-lineno">126</tt> <tt class="py-line"> <tt id="link-45" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-45', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-46" class="py-name" targets="Variable scapi.USE_PROXY=scapi-module.html#USE_PROXY"><a title="scapi.USE_PROXY" class="py-name" href="#" onclick="return doclink('link-46', 'USE_PROXY', 'link-46');">USE_PROXY</a></tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt> -<a name="L127"></a><tt class="py-lineno">127</tt> <tt class="py-line"> <tt id="link-47" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-47', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-48" class="py-name" targets="Variable scapi.PROXY=scapi-module.html#PROXY"><a title="scapi.PROXY" class="py-name" href="#" onclick="return doclink('link-48', 'PROXY', 'link-48');">PROXY</a></tt> <tt class="py-op">=</tt> <tt class="py-name">parser</tt><tt class="py-op">[</tt><tt class="py-string">"proxy"</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-string">"proxy"</tt><tt class="py-op">]</tt> </tt> -<a name="L128"></a><tt class="py-lineno">128</tt> <tt class="py-line"> </tt> -<a name="L129"></a><tt class="py-lineno">129</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-string">"logging"</tt> <tt class="py-keyword">in</tt> <tt class="py-name">parser</tt><tt class="py-op">:</tt> </tt> -<a name="L130"></a><tt class="py-lineno">130</tt> <tt class="py-line"> <tt id="link-49" class="py-name"><a title="scapi.authentication.logger -scapi.logger -scapi.tests.scapi_tests.logger -scapi.tests.test_connect.logger -scapi.tests.test_oauth.logger" class="py-name" href="#" onclick="return doclink('link-49', 'logger', 'link-3');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">setLevel</tt><tt class="py-op">(</tt><tt class="py-name">getattr</tt><tt class="py-op">(</tt><tt class="py-name">logging</tt><tt class="py-op">,</tt> <tt class="py-name">parser</tt><tt class="py-op">[</tt><tt class="py-string">"logging"</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-string">"test_logger"</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L131"></a><tt class="py-lineno">131</tt> <tt class="py-line"> <tt id="link-50" class="py-name"><a title="scapi.tests.scapi_tests.api_logger" class="py-name" href="#" onclick="return doclink('link-50', 'api_logger', 'link-4');">api_logger</a></tt><tt class="py-op">.</tt><tt class="py-name">setLevel</tt><tt class="py-op">(</tt><tt class="py-name">getattr</tt><tt class="py-op">(</tt><tt class="py-name">logging</tt><tt class="py-op">,</tt> <tt class="py-name">parser</tt><tt class="py-op">[</tt><tt class="py-string">"logging"</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-string">"api_logger"</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L132"></a><tt class="py-lineno">132</tt> <tt class="py-line"> </tt> -<a name="L133"></a><tt class="py-lineno">133</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-51" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.RUN_INTERACTIVE_TESTS -scapi.tests.test_connect.RUN_INTERACTIVE_TESTS" class="py-name" href="#" onclick="return doclink('link-51', 'RUN_INTERACTIVE_TESTS', 'link-14');">RUN_INTERACTIVE_TESTS</a></tt> <tt class="py-op">=</tt> <tt class="py-name">parser</tt><tt class="py-op">[</tt><tt class="py-string">"test"</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-string">"run_interactive_tests"</tt><tt class="py-op">]</tt> </tt> -</div><a name="L134"></a><tt class="py-lineno">134</tt> <tt class="py-line"> </tt> -<a name="L135"></a><tt class="py-lineno">135</tt> <tt class="py-line"> </tt> -<a name="L136"></a><tt class="py-lineno">136</tt> <tt class="py-line"> <tt class="py-decorator">@</tt><tt class="py-decorator">property</tt> </tt> -<a name="SCAPITests.root"></a><div id="SCAPITests.root-def"><a name="L137"></a><tt class="py-lineno">137</tt> <a class="py-toggle" href="#" id="SCAPITests.root-toggle" onclick="return toggle('SCAPITests.root');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.tests.scapi_tests.SCAPITests-class.html#root">root</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="SCAPITests.root-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SCAPITests.root-expanded"><a name="L138"></a><tt class="py-lineno">138</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L139"></a><tt class="py-lineno">139</tt> <tt class="py-line"><tt class="py-docstring"> Return the properly configured root-scope.</tt> </tt> -<a name="L140"></a><tt class="py-lineno">140</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L141"></a><tt class="py-lineno">141</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-52" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.AUTHENTICATOR" class="py-name" href="#" onclick="return doclink('link-52', 'AUTHENTICATOR', 'link-13');">AUTHENTICATOR</a></tt> <tt class="py-op">==</tt> <tt class="py-string">"oauth"</tt><tt class="py-op">:</tt> </tt> -<a name="L142"></a><tt class="py-lineno">142</tt> <tt class="py-line"> <tt class="py-name">authenticator</tt> <tt class="py-op">=</tt> <tt id="link-53" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-53', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-54" class="py-name"><a title="scapi.authentication" class="py-name" href="#" onclick="return doclink('link-54', 'authentication', 'link-2');">authentication</a></tt><tt class="py-op">.</tt><tt id="link-55" class="py-name" targets="Class scapi.authentication.OAuthAuthenticator=scapi.authentication.OAuthAuthenticator-class.html"><a title="scapi.authentication.OAuthAuthenticator" class="py-name" href="#" onclick="return doclink('link-55', 'OAuthAuthenticator', 'link-55');">OAuthAuthenticator</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-56" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.CONSUMER -scapi.tests.test_connect.CONSUMER -scapi.tests.test_oauth.CONSUMER" class="py-name" href="#" onclick="return doclink('link-56', 'CONSUMER', 'link-8');">CONSUMER</a></tt><tt class="py-op">,</tt> </tt> -<a name="L143"></a><tt class="py-lineno">143</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-57" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.CONSUMER_SECRET -scapi.tests.test_connect.CONSUMER_SECRET -scapi.tests.test_oauth.CONSUMER_SECRET" class="py-name" href="#" onclick="return doclink('link-57', 'CONSUMER_SECRET', 'link-9');">CONSUMER_SECRET</a></tt><tt class="py-op">,</tt> </tt> -<a name="L144"></a><tt class="py-lineno">144</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-58" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.TOKEN -scapi.tests.test_connect.TOKEN -scapi.tests.test_oauth.TOKEN" class="py-name" href="#" onclick="return doclink('link-58', 'TOKEN', 'link-6');">TOKEN</a></tt><tt class="py-op">,</tt> </tt> -<a name="L145"></a><tt class="py-lineno">145</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-59" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.SECRET -scapi.tests.test_connect.SECRET -scapi.tests.test_oauth.SECRET" class="py-name" href="#" onclick="return doclink('link-59', 'SECRET', 'link-7');">SECRET</a></tt><tt class="py-op">)</tt> </tt> -<a name="L146"></a><tt class="py-lineno">146</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-60" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.AUTHENTICATOR" class="py-name" href="#" onclick="return doclink('link-60', 'AUTHENTICATOR', 'link-13');">AUTHENTICATOR</a></tt> <tt class="py-op">==</tt> <tt class="py-string">"base"</tt><tt class="py-op">:</tt> </tt> -<a name="L147"></a><tt class="py-lineno">147</tt> <tt class="py-line"> <tt class="py-name">authenticator</tt> <tt class="py-op">=</tt> <tt id="link-61" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-61', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-62" class="py-name"><a title="scapi.authentication" class="py-name" href="#" onclick="return doclink('link-62', 'authentication', 'link-2');">authentication</a></tt><tt class="py-op">.</tt><tt id="link-63" class="py-name" targets="Class scapi.authentication.BasicAuthenticator=scapi.authentication.BasicAuthenticator-class.html"><a title="scapi.authentication.BasicAuthenticator" class="py-name" href="#" onclick="return doclink('link-63', 'BasicAuthenticator', 'link-63');">BasicAuthenticator</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-64" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.USER -scapi.tests.test_connect.USER" class="py-name" href="#" onclick="return doclink('link-64', 'USER', 'link-11');">USER</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-65" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.PASSWORD -scapi.tests.test_connect.PASSWORD" class="py-name" href="#" onclick="return doclink('link-65', 'PASSWORD', 'link-12');">PASSWORD</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-66" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.CONSUMER -scapi.tests.test_connect.CONSUMER -scapi.tests.test_oauth.CONSUMER" class="py-name" href="#" onclick="return doclink('link-66', 'CONSUMER', 'link-8');">CONSUMER</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-67" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.CONSUMER_SECRET -scapi.tests.test_connect.CONSUMER_SECRET -scapi.tests.test_oauth.CONSUMER_SECRET" class="py-name" href="#" onclick="return doclink('link-67', 'CONSUMER_SECRET', 'link-9');">CONSUMER_SECRET</a></tt><tt class="py-op">)</tt> </tt> -<a name="L148"></a><tt class="py-lineno">148</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> -<a name="L149"></a><tt class="py-lineno">149</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">Exception</tt><tt class="py-op">(</tt><tt class="py-string">"Unknown authenticator setting: %s"</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-68" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.AUTHENTICATOR" class="py-name" href="#" onclick="return doclink('link-68', 'AUTHENTICATOR', 'link-13');">AUTHENTICATOR</a></tt><tt class="py-op">)</tt> </tt> -<a name="L150"></a><tt class="py-lineno">150</tt> <tt class="py-line"> </tt> -<a name="L151"></a><tt class="py-lineno">151</tt> <tt class="py-line"> <tt class="py-name">connector</tt> <tt class="py-op">=</tt> <tt id="link-69" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-69', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-70" class="py-name" targets="Class scapi.ApiConnector=scapi.ApiConnector-class.html"><a title="scapi.ApiConnector" class="py-name" href="#" onclick="return doclink('link-70', 'ApiConnector', 'link-70');">ApiConnector</a></tt><tt class="py-op">(</tt><tt class="py-name">host</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-71" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.API_HOST -scapi.tests.test_connect.API_HOST" class="py-name" href="#" onclick="return doclink('link-71', 'API_HOST', 'link-10');">API_HOST</a></tt><tt class="py-op">,</tt> </tt> -<a name="L152"></a><tt class="py-lineno">152</tt> <tt class="py-line"> <tt class="py-name">authenticator</tt><tt class="py-op">=</tt><tt class="py-name">authenticator</tt><tt class="py-op">)</tt> </tt> -<a name="L153"></a><tt class="py-lineno">153</tt> <tt class="py-line"> </tt> -<a name="L154"></a><tt class="py-lineno">154</tt> <tt class="py-line"> <tt id="link-72" class="py-name"><a title="scapi.authentication.logger -scapi.logger -scapi.tests.scapi_tests.logger -scapi.tests.test_connect.logger -scapi.tests.test_oauth.logger" class="py-name" href="#" onclick="return doclink('link-72', 'logger', 'link-3');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-string">"RootScope: %s authenticator: %s"</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-73" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.API_HOST -scapi.tests.test_connect.API_HOST" class="py-name" href="#" onclick="return doclink('link-73', 'API_HOST', 'link-10');">API_HOST</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-74" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.AUTHENTICATOR" class="py-name" href="#" onclick="return doclink('link-74', 'AUTHENTICATOR', 'link-13');">AUTHENTICATOR</a></tt><tt class="py-op">)</tt> </tt> -<a name="L155"></a><tt class="py-lineno">155</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-75" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-75', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-76" class="py-name" targets="Class scapi.Scope=scapi.Scope-class.html"><a title="scapi.Scope" class="py-name" href="#" onclick="return doclink('link-76', 'Scope', 'link-76');">Scope</a></tt><tt class="py-op">(</tt><tt class="py-name">connector</tt><tt class="py-op">)</tt> </tt> -</div><a name="L156"></a><tt class="py-lineno">156</tt> <tt class="py-line"> </tt> -<a name="L157"></a><tt class="py-lineno">157</tt> <tt class="py-line"> </tt> -<a name="SCAPITests.test_connect"></a><div id="SCAPITests.test_connect-def"><a name="L158"></a><tt class="py-lineno">158</tt> <a class="py-toggle" href="#" id="SCAPITests.test_connect-toggle" onclick="return toggle('SCAPITests.test_connect');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.tests.scapi_tests.SCAPITests-class.html#test_connect">test_connect</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="SCAPITests.test_connect-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SCAPITests.test_connect-expanded"><a name="L159"></a><tt class="py-lineno">159</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L160"></a><tt class="py-lineno">160</tt> <tt class="py-line"><tt class="py-docstring"> test_connect</tt> </tt> -<a name="L161"></a><tt class="py-lineno">161</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt> -<a name="L162"></a><tt class="py-lineno">162</tt> <tt class="py-line"><tt class="py-docstring"> Tries to connect & performs some read-only operations.</tt> </tt> -<a name="L163"></a><tt class="py-lineno">163</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L164"></a><tt class="py-lineno">164</tt> <tt class="py-line"> <tt class="py-name">sca</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-77" class="py-name" targets="Variable scapi.tests.scapi_tests.SCAPITests.root=scapi.tests.scapi_tests.SCAPITests-class.html#root"><a title="scapi.tests.scapi_tests.SCAPITests.root" class="py-name" href="#" onclick="return doclink('link-77', 'root', 'link-77');">root</a></tt> </tt> -<a name="L165"></a><tt class="py-lineno">165</tt> <tt class="py-line"> <tt class="py-comment"># quite_a_few_users = list(itertools.islice(sca.users(), 0, 127))</tt> </tt> -<a name="L166"></a><tt class="py-lineno">166</tt> <tt class="py-line"><tt class="py-comment"></tt> </tt> -<a name="L167"></a><tt class="py-lineno">167</tt> <tt class="py-line"> <tt class="py-comment"># logger.debug(quite_a_few_users)</tt> </tt> -<a name="L168"></a><tt class="py-lineno">168</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># assert isinstance(quite_a_few_users, list) and isinstance(quite_a_few_users[0], scapi.User)</tt> </tt> -<a name="L169"></a><tt class="py-lineno">169</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">user</tt> <tt class="py-op">=</tt> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt class="py-name">me</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L170"></a><tt class="py-lineno">170</tt> <tt class="py-line"> <tt id="link-78" class="py-name"><a title="scapi.authentication.logger -scapi.logger -scapi.tests.scapi_tests.logger -scapi.tests.test_connect.logger -scapi.tests.test_oauth.logger" class="py-name" href="#" onclick="return doclink('link-78', 'logger', 'link-3');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-name">user</tt><tt class="py-op">)</tt> </tt> -<a name="L171"></a><tt class="py-lineno">171</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">user</tt><tt class="py-op">,</tt> <tt id="link-79" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-79', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-80" class="py-name" targets="Class scapi.User=scapi.User-class.html"><a title="scapi.User" class="py-name" href="#" onclick="return doclink('link-80', 'User', 'link-80');">User</a></tt><tt class="py-op">)</tt> </tt> -<a name="L172"></a><tt class="py-lineno">172</tt> <tt class="py-line"> <tt class="py-name">contacts</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">user</tt><tt class="py-op">.</tt><tt class="py-name">contacts</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L173"></a><tt class="py-lineno">173</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">contacts</tt><tt class="py-op">,</tt> <tt class="py-name">list</tt><tt class="py-op">)</tt> </tt> -<a name="L174"></a><tt class="py-lineno">174</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">contacts</tt><tt class="py-op">:</tt> </tt> -<a name="L175"></a><tt class="py-lineno">175</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">contacts</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt id="link-81" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-81', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-82" class="py-name"><a title="scapi.User" class="py-name" href="#" onclick="return doclink('link-82', 'User', 'link-80');">User</a></tt><tt class="py-op">)</tt> </tt> -<a name="L176"></a><tt class="py-lineno">176</tt> <tt class="py-line"> <tt id="link-83" class="py-name"><a title="scapi.authentication.logger -scapi.logger -scapi.tests.scapi_tests.logger -scapi.tests.test_connect.logger -scapi.tests.test_oauth.logger" class="py-name" href="#" onclick="return doclink('link-83', 'logger', 'link-3');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-name">contacts</tt><tt class="py-op">)</tt> </tt> -<a name="L177"></a><tt class="py-lineno">177</tt> <tt class="py-line"> <tt class="py-name">tracks</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">user</tt><tt class="py-op">.</tt><tt class="py-name">tracks</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L178"></a><tt class="py-lineno">178</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">tracks</tt><tt class="py-op">,</tt> <tt class="py-name">list</tt><tt class="py-op">)</tt> </tt> -<a name="L179"></a><tt class="py-lineno">179</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">tracks</tt><tt class="py-op">:</tt> </tt> -<a name="L180"></a><tt class="py-lineno">180</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">tracks</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt id="link-84" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-84', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-85" class="py-name" targets="Class scapi.Track=scapi.Track-class.html"><a title="scapi.Track" class="py-name" href="#" onclick="return doclink('link-85', 'Track', 'link-85');">Track</a></tt><tt class="py-op">)</tt> </tt> -<a name="L181"></a><tt class="py-lineno">181</tt> <tt class="py-line"> <tt id="link-86" class="py-name"><a title="scapi.authentication.logger -scapi.logger -scapi.tests.scapi_tests.logger -scapi.tests.test_connect.logger -scapi.tests.test_oauth.logger" class="py-name" href="#" onclick="return doclink('link-86', 'logger', 'link-3');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-name">tracks</tt><tt class="py-op">)</tt> </tt> -</div><a name="L182"></a><tt class="py-lineno">182</tt> <tt class="py-line"> </tt> -<a name="L183"></a><tt class="py-lineno">183</tt> <tt class="py-line"> </tt> -<a name="SCAPITests.test_access_token_acquisition"></a><div id="SCAPITests.test_access_token_acquisition-def"><a name="L184"></a><tt class="py-lineno">184</tt> <a class="py-toggle" href="#" id="SCAPITests.test_access_token_acquisition-toggle" onclick="return toggle('SCAPITests.test_access_token_acquisition');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.tests.scapi_tests.SCAPITests-class.html#test_access_token_acquisition">test_access_token_acquisition</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="SCAPITests.test_access_token_acquisition-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SCAPITests.test_access_token_acquisition-expanded"><a name="L185"></a><tt class="py-lineno">185</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L186"></a><tt class="py-lineno">186</tt> <tt class="py-line"><tt class="py-docstring"> This test is commented out because it needs user-interaction.</tt> </tt> -<a name="L187"></a><tt class="py-lineno">187</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L188"></a><tt class="py-lineno">188</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-87" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.RUN_INTERACTIVE_TESTS -scapi.tests.test_connect.RUN_INTERACTIVE_TESTS" class="py-name" href="#" onclick="return doclink('link-87', 'RUN_INTERACTIVE_TESTS', 'link-14');">RUN_INTERACTIVE_TESTS</a></tt><tt class="py-op">:</tt> </tt> -<a name="L189"></a><tt class="py-lineno">189</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt> -<a name="L190"></a><tt class="py-lineno">190</tt> <tt class="py-line"> <tt class="py-name">oauth_authenticator</tt> <tt class="py-op">=</tt> <tt id="link-88" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-88', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-89" class="py-name"><a title="scapi.authentication" class="py-name" href="#" onclick="return doclink('link-89', 'authentication', 'link-2');">authentication</a></tt><tt class="py-op">.</tt><tt id="link-90" class="py-name"><a title="scapi.authentication.OAuthAuthenticator" class="py-name" href="#" onclick="return doclink('link-90', 'OAuthAuthenticator', 'link-55');">OAuthAuthenticator</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-91" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.CONSUMER -scapi.tests.test_connect.CONSUMER -scapi.tests.test_oauth.CONSUMER" class="py-name" href="#" onclick="return doclink('link-91', 'CONSUMER', 'link-8');">CONSUMER</a></tt><tt class="py-op">,</tt> </tt> -<a name="L191"></a><tt class="py-lineno">191</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-92" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.CONSUMER_SECRET -scapi.tests.test_connect.CONSUMER_SECRET -scapi.tests.test_oauth.CONSUMER_SECRET" class="py-name" href="#" onclick="return doclink('link-92', 'CONSUMER_SECRET', 'link-9');">CONSUMER_SECRET</a></tt><tt class="py-op">,</tt> </tt> -<a name="L192"></a><tt class="py-lineno">192</tt> <tt class="py-line"> <tt class="py-name">None</tt><tt class="py-op">,</tt> </tt> -<a name="L193"></a><tt class="py-lineno">193</tt> <tt class="py-line"> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt> -<a name="L194"></a><tt class="py-lineno">194</tt> <tt class="py-line"> </tt> -<a name="L195"></a><tt class="py-lineno">195</tt> <tt class="py-line"> <tt class="py-name">sca</tt> <tt class="py-op">=</tt> <tt id="link-93" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-93', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-94" class="py-name"><a title="scapi.ApiConnector" class="py-name" href="#" onclick="return doclink('link-94', 'ApiConnector', 'link-70');">ApiConnector</a></tt><tt class="py-op">(</tt><tt class="py-name">host</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-95" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.API_HOST -scapi.tests.test_connect.API_HOST" class="py-name" href="#" onclick="return doclink('link-95', 'API_HOST', 'link-10');">API_HOST</a></tt><tt class="py-op">,</tt> <tt class="py-name">authenticator</tt><tt class="py-op">=</tt><tt class="py-name">oauth_authenticator</tt><tt class="py-op">)</tt> </tt> -<a name="L196"></a><tt class="py-lineno">196</tt> <tt class="py-line"> <tt class="py-name">token</tt><tt class="py-op">,</tt> <tt class="py-name">secret</tt> <tt class="py-op">=</tt> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt id="link-96" class="py-name" targets="Method scapi.ApiConnector.fetch_request_token()=scapi.ApiConnector-class.html#fetch_request_token"><a title="scapi.ApiConnector.fetch_request_token" class="py-name" href="#" onclick="return doclink('link-96', 'fetch_request_token', 'link-96');">fetch_request_token</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L197"></a><tt class="py-lineno">197</tt> <tt class="py-line"> <tt class="py-name">authorization_url</tt> <tt class="py-op">=</tt> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt id="link-97" class="py-name" targets="Method scapi.ApiConnector.get_request_token_authorization_url()=scapi.ApiConnector-class.html#get_request_token_authorization_url"><a title="scapi.ApiConnector.get_request_token_authorization_url" class="py-name" href="#" onclick="return doclink('link-97', 'get_request_token_authorization_url', 'link-97');">get_request_token_authorization_url</a></tt><tt class="py-op">(</tt><tt class="py-name">token</tt><tt class="py-op">)</tt> </tt> -<a name="L198"></a><tt class="py-lineno">198</tt> <tt class="py-line"> <tt class="py-name">webbrowser</tt><tt class="py-op">.</tt><tt class="py-name">open</tt><tt class="py-op">(</tt><tt class="py-name">authorization_url</tt><tt class="py-op">)</tt> </tt> -<a name="L199"></a><tt class="py-lineno">199</tt> <tt class="py-line"> <tt class="py-name">oauth_verifier</tt> <tt class="py-op">=</tt> <tt class="py-name">raw_input</tt><tt class="py-op">(</tt><tt class="py-string">"please enter verifier code as seen in the browser:"</tt><tt class="py-op">)</tt> </tt> -<a name="L200"></a><tt class="py-lineno">200</tt> <tt class="py-line"> </tt> -<a name="L201"></a><tt class="py-lineno">201</tt> <tt class="py-line"> <tt class="py-name">oauth_authenticator</tt> <tt class="py-op">=</tt> <tt id="link-98" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-98', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-99" class="py-name"><a title="scapi.authentication" class="py-name" href="#" onclick="return doclink('link-99', 'authentication', 'link-2');">authentication</a></tt><tt class="py-op">.</tt><tt id="link-100" class="py-name"><a title="scapi.authentication.OAuthAuthenticator" class="py-name" href="#" onclick="return doclink('link-100', 'OAuthAuthenticator', 'link-55');">OAuthAuthenticator</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-101" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.CONSUMER -scapi.tests.test_connect.CONSUMER -scapi.tests.test_oauth.CONSUMER" class="py-name" href="#" onclick="return doclink('link-101', 'CONSUMER', 'link-8');">CONSUMER</a></tt><tt class="py-op">,</tt> </tt> -<a name="L202"></a><tt class="py-lineno">202</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-102" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.CONSUMER_SECRET -scapi.tests.test_connect.CONSUMER_SECRET -scapi.tests.test_oauth.CONSUMER_SECRET" class="py-name" href="#" onclick="return doclink('link-102', 'CONSUMER_SECRET', 'link-9');">CONSUMER_SECRET</a></tt><tt class="py-op">,</tt> </tt> -<a name="L203"></a><tt class="py-lineno">203</tt> <tt class="py-line"> <tt class="py-name">token</tt><tt class="py-op">,</tt> </tt> -<a name="L204"></a><tt class="py-lineno">204</tt> <tt class="py-line"> <tt class="py-name">secret</tt><tt class="py-op">)</tt> </tt> -<a name="L205"></a><tt class="py-lineno">205</tt> <tt class="py-line"> </tt> -<a name="L206"></a><tt class="py-lineno">206</tt> <tt class="py-line"> <tt class="py-name">sca</tt> <tt class="py-op">=</tt> <tt id="link-103" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-103', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-104" class="py-name"><a title="scapi.ApiConnector" class="py-name" href="#" onclick="return doclink('link-104', 'ApiConnector', 'link-70');">ApiConnector</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-105" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.API_HOST -scapi.tests.test_connect.API_HOST" class="py-name" href="#" onclick="return doclink('link-105', 'API_HOST', 'link-10');">API_HOST</a></tt><tt class="py-op">,</tt> <tt class="py-name">authenticator</tt><tt class="py-op">=</tt><tt class="py-name">oauth_authenticator</tt><tt class="py-op">)</tt> </tt> -<a name="L207"></a><tt class="py-lineno">207</tt> <tt class="py-line"> <tt class="py-name">token</tt><tt class="py-op">,</tt> <tt class="py-name">secret</tt> <tt class="py-op">=</tt> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt id="link-106" class="py-name" targets="Method scapi.ApiConnector.fetch_access_token()=scapi.ApiConnector-class.html#fetch_access_token"><a title="scapi.ApiConnector.fetch_access_token" class="py-name" href="#" onclick="return doclink('link-106', 'fetch_access_token', 'link-106');">fetch_access_token</a></tt><tt class="py-op">(</tt><tt class="py-name">oauth_verifier</tt><tt class="py-op">)</tt> </tt> -<a name="L208"></a><tt class="py-lineno">208</tt> <tt class="py-line"> <tt id="link-107" class="py-name"><a title="scapi.authentication.logger -scapi.logger -scapi.tests.scapi_tests.logger -scapi.tests.test_connect.logger -scapi.tests.test_oauth.logger" class="py-name" href="#" onclick="return doclink('link-107', 'logger', 'link-3');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">"Access token: '%s'"</tt><tt class="py-op">,</tt> <tt class="py-name">token</tt><tt class="py-op">)</tt> </tt> -<a name="L209"></a><tt class="py-lineno">209</tt> <tt class="py-line"> <tt id="link-108" class="py-name"><a title="scapi.authentication.logger -scapi.logger -scapi.tests.scapi_tests.logger -scapi.tests.test_connect.logger -scapi.tests.test_oauth.logger" class="py-name" href="#" onclick="return doclink('link-108', 'logger', 'link-3');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">"Access token secret: '%s'"</tt><tt class="py-op">,</tt> <tt class="py-name">secret</tt><tt class="py-op">)</tt> </tt> -<a name="L210"></a><tt class="py-lineno">210</tt> <tt class="py-line"> <tt class="py-comment"># force oauth-authentication with the new parameters, and</tt> </tt> -<a name="L211"></a><tt class="py-lineno">211</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># then invoke some simple test</tt> </tt> -<a name="L212"></a><tt class="py-lineno">212</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-109" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.AUTHENTICATOR" class="py-name" href="#" onclick="return doclink('link-109', 'AUTHENTICATOR', 'link-13');">AUTHENTICATOR</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"oauth"</tt> </tt> -<a name="L213"></a><tt class="py-lineno">213</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-110" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.TOKEN -scapi.tests.test_connect.TOKEN -scapi.tests.test_oauth.TOKEN" class="py-name" href="#" onclick="return doclink('link-110', 'TOKEN', 'link-6');">TOKEN</a></tt> <tt class="py-op">=</tt> <tt class="py-name">token</tt> </tt> -<a name="L214"></a><tt class="py-lineno">214</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-111" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.SECRET -scapi.tests.test_connect.SECRET -scapi.tests.test_oauth.SECRET" class="py-name" href="#" onclick="return doclink('link-111', 'SECRET', 'link-7');">SECRET</a></tt> <tt class="py-op">=</tt> <tt class="py-name">secret</tt> </tt> -<a name="L215"></a><tt class="py-lineno">215</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-112" class="py-name" targets="Method scapi.tests.scapi_tests.SCAPITests.test_connect()=scapi.tests.scapi_tests.SCAPITests-class.html#test_connect,Module scapi.tests.test_connect=scapi.tests.test_connect-module.html,Function scapi.tests.test_connect.test_connect()=scapi.tests.test_connect-module.html#test_connect"><a title="scapi.tests.scapi_tests.SCAPITests.test_connect -scapi.tests.test_connect -scapi.tests.test_connect.test_connect" class="py-name" href="#" onclick="return doclink('link-112', 'test_connect', 'link-112');">test_connect</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -</div><a name="L216"></a><tt class="py-lineno">216</tt> <tt class="py-line"> </tt> -<a name="L217"></a><tt class="py-lineno">217</tt> <tt class="py-line"> </tt> -<a name="SCAPITests.test_track_creation"></a><div id="SCAPITests.test_track_creation-def"><a name="L218"></a><tt class="py-lineno">218</tt> <a class="py-toggle" href="#" id="SCAPITests.test_track_creation-toggle" onclick="return toggle('SCAPITests.test_track_creation');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.tests.scapi_tests.SCAPITests-class.html#test_track_creation">test_track_creation</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="SCAPITests.test_track_creation-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SCAPITests.test_track_creation-expanded"><a name="L219"></a><tt class="py-lineno">219</tt> <tt class="py-line"> <tt class="py-name">sca</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-113" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.root" class="py-name" href="#" onclick="return doclink('link-113', 'root', 'link-77');">root</a></tt> </tt> -<a name="L220"></a><tt class="py-lineno">220</tt> <tt class="py-line"> <tt class="py-name">track</tt> <tt class="py-op">=</tt> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt id="link-114" class="py-name"><a title="scapi.Track" class="py-name" href="#" onclick="return doclink('link-114', 'Track', 'link-85');">Track</a></tt><tt class="py-op">.</tt><tt id="link-115" class="py-name" targets="Class Method scapi.RESTBase.new()=scapi.RESTBase-class.html#new"><a title="scapi.RESTBase.new" class="py-name" href="#" onclick="return doclink('link-115', 'new', 'link-115');">new</a></tt><tt class="py-op">(</tt><tt class="py-name">title</tt><tt class="py-op">=</tt><tt class="py-string">'bar'</tt><tt class="py-op">,</tt> <tt class="py-name">asset_data</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">data</tt><tt class="py-op">)</tt> </tt> -<a name="L221"></a><tt class="py-lineno">221</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">track</tt><tt class="py-op">,</tt> <tt id="link-116" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-116', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-117" class="py-name"><a title="scapi.Track" class="py-name" href="#" onclick="return doclink('link-117', 'Track', 'link-85');">Track</a></tt><tt class="py-op">)</tt> </tt> -</div><a name="L222"></a><tt class="py-lineno">222</tt> <tt class="py-line"> </tt> -<a name="L223"></a><tt class="py-lineno">223</tt> <tt class="py-line"> </tt> -<a name="SCAPITests.test_track_update"></a><div id="SCAPITests.test_track_update-def"><a name="L224"></a><tt class="py-lineno">224</tt> <a class="py-toggle" href="#" id="SCAPITests.test_track_update-toggle" onclick="return toggle('SCAPITests.test_track_update');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.tests.scapi_tests.SCAPITests-class.html#test_track_update">test_track_update</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="SCAPITests.test_track_update-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SCAPITests.test_track_update-expanded"><a name="L225"></a><tt class="py-lineno">225</tt> <tt class="py-line"> <tt class="py-name">sca</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-118" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.root" class="py-name" href="#" onclick="return doclink('link-118', 'root', 'link-77');">root</a></tt> </tt> -<a name="L226"></a><tt class="py-lineno">226</tt> <tt class="py-line"> <tt class="py-name">track</tt> <tt class="py-op">=</tt> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt id="link-119" class="py-name"><a title="scapi.Track" class="py-name" href="#" onclick="return doclink('link-119', 'Track', 'link-85');">Track</a></tt><tt class="py-op">.</tt><tt id="link-120" class="py-name"><a title="scapi.RESTBase.new" class="py-name" href="#" onclick="return doclink('link-120', 'new', 'link-115');">new</a></tt><tt class="py-op">(</tt><tt class="py-name">title</tt><tt class="py-op">=</tt><tt class="py-string">'bar'</tt><tt class="py-op">,</tt> <tt class="py-name">asset_data</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">data</tt><tt class="py-op">)</tt> </tt> -<a name="L227"></a><tt class="py-lineno">227</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">track</tt><tt class="py-op">,</tt> <tt id="link-121" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-121', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-122" class="py-name"><a title="scapi.Track" class="py-name" href="#" onclick="return doclink('link-122', 'Track', 'link-85');">Track</a></tt><tt class="py-op">)</tt> </tt> -<a name="L228"></a><tt class="py-lineno">228</tt> <tt class="py-line"> <tt class="py-name">track</tt><tt class="py-op">.</tt><tt class="py-name">title</tt><tt class="py-op">=</tt><tt class="py-string">'baz'</tt> </tt> -<a name="L229"></a><tt class="py-lineno">229</tt> <tt class="py-line"> <tt class="py-name">track</tt> <tt class="py-op">=</tt> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt id="link-123" class="py-name"><a title="scapi.Track" class="py-name" href="#" onclick="return doclink('link-123', 'Track', 'link-85');">Track</a></tt><tt class="py-op">.</tt><tt id="link-124" class="py-name"><a title="scapi.RESTBase.get" class="py-name" href="#" onclick="return doclink('link-124', 'get', 'link-20');">get</a></tt><tt class="py-op">(</tt><tt class="py-name">track</tt><tt class="py-op">.</tt><tt class="py-name">id</tt><tt class="py-op">)</tt> </tt> -<a name="L230"></a><tt class="py-lineno">230</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">track</tt><tt class="py-op">.</tt><tt class="py-name">title</tt> <tt class="py-op">==</tt> <tt class="py-string">"baz"</tt> </tt> -</div><a name="L231"></a><tt class="py-lineno">231</tt> <tt class="py-line"> </tt> -<a name="L232"></a><tt class="py-lineno">232</tt> <tt class="py-line"> </tt> -<a name="SCAPITests.test_scoped_track_creation"></a><div id="SCAPITests.test_scoped_track_creation-def"><a name="L233"></a><tt class="py-lineno">233</tt> <a class="py-toggle" href="#" id="SCAPITests.test_scoped_track_creation-toggle" onclick="return toggle('SCAPITests.test_scoped_track_creation');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.tests.scapi_tests.SCAPITests-class.html#test_scoped_track_creation">test_scoped_track_creation</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="SCAPITests.test_scoped_track_creation-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SCAPITests.test_scoped_track_creation-expanded"><a name="L234"></a><tt class="py-lineno">234</tt> <tt class="py-line"> <tt class="py-name">sca</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-125" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.root" class="py-name" href="#" onclick="return doclink('link-125', 'root', 'link-77');">root</a></tt> </tt> -<a name="L235"></a><tt class="py-lineno">235</tt> <tt class="py-line"> <tt class="py-name">user</tt> <tt class="py-op">=</tt> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt class="py-name">me</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L236"></a><tt class="py-lineno">236</tt> <tt class="py-line"> <tt class="py-name">track</tt> <tt class="py-op">=</tt> <tt class="py-name">user</tt><tt class="py-op">.</tt><tt class="py-name">tracks</tt><tt class="py-op">.</tt><tt id="link-126" class="py-name"><a title="scapi.RESTBase.new" class="py-name" href="#" onclick="return doclink('link-126', 'new', 'link-115');">new</a></tt><tt class="py-op">(</tt><tt class="py-name">title</tt><tt class="py-op">=</tt><tt class="py-string">"bar"</tt><tt class="py-op">,</tt> <tt class="py-name">asset_data</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">data</tt><tt class="py-op">)</tt> </tt> -<a name="L237"></a><tt class="py-lineno">237</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">track</tt><tt class="py-op">,</tt> <tt id="link-127" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-127', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-128" class="py-name"><a title="scapi.Track" class="py-name" href="#" onclick="return doclink('link-128', 'Track', 'link-85');">Track</a></tt><tt class="py-op">)</tt> </tt> -</div><a name="L238"></a><tt class="py-lineno">238</tt> <tt class="py-line"> </tt> -<a name="L239"></a><tt class="py-lineno">239</tt> <tt class="py-line"> </tt> -<a name="SCAPITests.test_upload"></a><div id="SCAPITests.test_upload-def"><a name="L240"></a><tt class="py-lineno">240</tt> <a class="py-toggle" href="#" id="SCAPITests.test_upload-toggle" onclick="return toggle('SCAPITests.test_upload');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.tests.scapi_tests.SCAPITests-class.html#test_upload">test_upload</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="SCAPITests.test_upload-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SCAPITests.test_upload-expanded"><a name="L241"></a><tt class="py-lineno">241</tt> <tt class="py-line"> <tt class="py-name">sca</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-129" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.root" class="py-name" href="#" onclick="return doclink('link-129', 'root', 'link-77');">root</a></tt> </tt> -<a name="L242"></a><tt class="py-lineno">242</tt> <tt class="py-line"> <tt class="py-name">sca</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-130" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.root" class="py-name" href="#" onclick="return doclink('link-130', 'root', 'link-77');">root</a></tt> </tt> -<a name="L243"></a><tt class="py-lineno">243</tt> <tt class="py-line"> <tt class="py-name">track</tt> <tt class="py-op">=</tt> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt id="link-131" class="py-name"><a title="scapi.Track" class="py-name" href="#" onclick="return doclink('link-131', 'Track', 'link-85');">Track</a></tt><tt class="py-op">.</tt><tt id="link-132" class="py-name"><a title="scapi.RESTBase.new" class="py-name" href="#" onclick="return doclink('link-132', 'new', 'link-115');">new</a></tt><tt class="py-op">(</tt><tt class="py-name">title</tt><tt class="py-op">=</tt><tt class="py-string">'bar'</tt><tt class="py-op">,</tt> <tt class="py-name">asset_data</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">data</tt><tt class="py-op">)</tt> </tt> -<a name="L244"></a><tt class="py-lineno">244</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">track</tt><tt class="py-op">,</tt> <tt id="link-133" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-133', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-134" class="py-name"><a title="scapi.Track" class="py-name" href="#" onclick="return doclink('link-134', 'Track', 'link-85');">Track</a></tt><tt class="py-op">)</tt> </tt> -</div><a name="L245"></a><tt class="py-lineno">245</tt> <tt class="py-line"> </tt> -<a name="L246"></a><tt class="py-lineno">246</tt> <tt class="py-line"> </tt> -<a name="SCAPITests.test_contact_list"></a><div id="SCAPITests.test_contact_list-def"><a name="L247"></a><tt class="py-lineno">247</tt> <a class="py-toggle" href="#" id="SCAPITests.test_contact_list-toggle" onclick="return toggle('SCAPITests.test_contact_list');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.tests.scapi_tests.SCAPITests-class.html#test_contact_list">test_contact_list</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="SCAPITests.test_contact_list-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SCAPITests.test_contact_list-expanded"><a name="L248"></a><tt class="py-lineno">248</tt> <tt class="py-line"> <tt class="py-name">sca</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-135" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.root" class="py-name" href="#" onclick="return doclink('link-135', 'root', 'link-77');">root</a></tt> </tt> -<a name="L249"></a><tt class="py-lineno">249</tt> <tt class="py-line"> <tt class="py-name">user</tt> <tt class="py-op">=</tt> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt class="py-name">me</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L250"></a><tt class="py-lineno">250</tt> <tt class="py-line"> <tt class="py-name">contacts</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">user</tt><tt class="py-op">.</tt><tt class="py-name">contacts</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L251"></a><tt class="py-lineno">251</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">contacts</tt><tt class="py-op">,</tt> <tt class="py-name">list</tt><tt class="py-op">)</tt> </tt> -<a name="L252"></a><tt class="py-lineno">252</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">contacts</tt><tt class="py-op">:</tt> </tt> -<a name="L253"></a><tt class="py-lineno">253</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">contacts</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt id="link-136" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-136', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-137" class="py-name"><a title="scapi.User" class="py-name" href="#" onclick="return doclink('link-137', 'User', 'link-80');">User</a></tt><tt class="py-op">)</tt> </tt> -</div><a name="L254"></a><tt class="py-lineno">254</tt> <tt class="py-line"> </tt> -<a name="L255"></a><tt class="py-lineno">255</tt> <tt class="py-line"> </tt> -<a name="SCAPITests.test_permissions"></a><div id="SCAPITests.test_permissions-def"><a name="L256"></a><tt class="py-lineno">256</tt> <a class="py-toggle" href="#" id="SCAPITests.test_permissions-toggle" onclick="return toggle('SCAPITests.test_permissions');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.tests.scapi_tests.SCAPITests-class.html#test_permissions">test_permissions</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="SCAPITests.test_permissions-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SCAPITests.test_permissions-expanded"><a name="L257"></a><tt class="py-lineno">257</tt> <tt class="py-line"> <tt class="py-name">sca</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-138" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.root" class="py-name" href="#" onclick="return doclink('link-138', 'root', 'link-77');">root</a></tt> </tt> -<a name="L258"></a><tt class="py-lineno">258</tt> <tt class="py-line"> <tt class="py-name">user</tt> <tt class="py-op">=</tt> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt class="py-name">me</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L259"></a><tt class="py-lineno">259</tt> <tt class="py-line"> <tt class="py-name">tracks</tt> <tt class="py-op">=</tt> <tt class="py-name">itertools</tt><tt class="py-op">.</tt><tt class="py-name">islice</tt><tt class="py-op">(</tt><tt class="py-name">user</tt><tt class="py-op">.</tt><tt class="py-name">tracks</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt> </tt> -<a name="L260"></a><tt class="py-lineno">260</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">track</tt> <tt class="py-keyword">in</tt> <tt class="py-name">tracks</tt><tt class="py-op">:</tt> </tt> -<a name="L261"></a><tt class="py-lineno">261</tt> <tt class="py-line"> <tt class="py-name">permissions</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">track</tt><tt class="py-op">.</tt><tt class="py-name">permissions</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L262"></a><tt class="py-lineno">262</tt> <tt class="py-line"> <tt id="link-139" class="py-name"><a title="scapi.authentication.logger -scapi.logger -scapi.tests.scapi_tests.logger -scapi.tests.test_connect.logger -scapi.tests.test_oauth.logger" class="py-name" href="#" onclick="return doclink('link-139', 'logger', 'link-3');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-name">permissions</tt><tt class="py-op">)</tt> </tt> -<a name="L263"></a><tt class="py-lineno">263</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">permissions</tt><tt class="py-op">,</tt> <tt class="py-name">list</tt><tt class="py-op">)</tt> </tt> -<a name="L264"></a><tt class="py-lineno">264</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">permissions</tt><tt class="py-op">:</tt> </tt> -<a name="L265"></a><tt class="py-lineno">265</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">permissions</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt id="link-140" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-140', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-141" class="py-name"><a title="scapi.User" class="py-name" href="#" onclick="return doclink('link-141', 'User', 'link-80');">User</a></tt><tt class="py-op">)</tt> </tt> -</div><a name="L266"></a><tt class="py-lineno">266</tt> <tt class="py-line"> </tt> -<a name="L267"></a><tt class="py-lineno">267</tt> <tt class="py-line"> </tt> -<a name="SCAPITests.test_setting_permissions"></a><div id="SCAPITests.test_setting_permissions-def"><a name="L268"></a><tt class="py-lineno">268</tt> <a class="py-toggle" href="#" id="SCAPITests.test_setting_permissions-toggle" onclick="return toggle('SCAPITests.test_setting_permissions');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.tests.scapi_tests.SCAPITests-class.html#test_setting_permissions">test_setting_permissions</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="SCAPITests.test_setting_permissions-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SCAPITests.test_setting_permissions-expanded"><a name="L269"></a><tt class="py-lineno">269</tt> <tt class="py-line"> <tt class="py-name">sca</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-142" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.root" class="py-name" href="#" onclick="return doclink('link-142', 'root', 'link-77');">root</a></tt> </tt> -<a name="L270"></a><tt class="py-lineno">270</tt> <tt class="py-line"> <tt class="py-name">me</tt> <tt class="py-op">=</tt> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt class="py-name">me</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L271"></a><tt class="py-lineno">271</tt> <tt class="py-line"> <tt class="py-name">track</tt> <tt class="py-op">=</tt> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt id="link-143" class="py-name"><a title="scapi.Track" class="py-name" href="#" onclick="return doclink('link-143', 'Track', 'link-85');">Track</a></tt><tt class="py-op">.</tt><tt id="link-144" class="py-name"><a title="scapi.RESTBase.new" class="py-name" href="#" onclick="return doclink('link-144', 'new', 'link-115');">new</a></tt><tt class="py-op">(</tt><tt class="py-name">title</tt><tt class="py-op">=</tt><tt class="py-string">'bar'</tt><tt class="py-op">,</tt> <tt class="py-name">sharing</tt><tt class="py-op">=</tt><tt class="py-string">"private"</tt><tt class="py-op">,</tt> <tt class="py-name">asset_data</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">data</tt><tt class="py-op">)</tt> </tt> -<a name="L272"></a><tt class="py-lineno">272</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">track</tt><tt class="py-op">.</tt><tt class="py-name">sharing</tt> <tt class="py-op">==</tt> <tt class="py-string">"private"</tt> </tt> -<a name="L273"></a><tt class="py-lineno">273</tt> <tt class="py-line"> <tt class="py-name">users</tt> <tt class="py-op">=</tt> <tt class="py-name">itertools</tt><tt class="py-op">.</tt><tt class="py-name">islice</tt><tt class="py-op">(</tt><tt class="py-name">sca</tt><tt class="py-op">.</tt><tt class="py-name">users</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-number">10</tt><tt class="py-op">)</tt> </tt> -<a name="L274"></a><tt class="py-lineno">274</tt> <tt class="py-line"> <tt class="py-name">users_to_set</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">user</tt> <tt class="py-keyword">for</tt> <tt class="py-name">user</tt> <tt class="py-keyword">in</tt> <tt class="py-name">users</tt> <tt class="py-keyword">if</tt> <tt class="py-name">user</tt> <tt class="py-op">!=</tt> <tt class="py-name">me</tt><tt class="py-op">]</tt> </tt> -<a name="L275"></a><tt class="py-lineno">275</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">users_to_set</tt><tt class="py-op">,</tt> <tt class="py-string">"Didn't find any suitable users"</tt> </tt> -<a name="L276"></a><tt class="py-lineno">276</tt> <tt class="py-line"> <tt class="py-name">track</tt><tt class="py-op">.</tt><tt class="py-name">permissions</tt> <tt class="py-op">=</tt> <tt class="py-name">users_to_set</tt> </tt> -<a name="L277"></a><tt class="py-lineno">277</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">set</tt><tt class="py-op">(</tt><tt class="py-name">track</tt><tt class="py-op">.</tt><tt class="py-name">permissions</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-name">set</tt><tt class="py-op">(</tt><tt class="py-name">users_to_set</tt><tt class="py-op">)</tt> </tt> -</div><a name="L278"></a><tt class="py-lineno">278</tt> <tt class="py-line"> </tt> -<a name="L279"></a><tt class="py-lineno">279</tt> <tt class="py-line"> </tt> -<a name="SCAPITests.test_setting_comments"></a><div id="SCAPITests.test_setting_comments-def"><a name="L280"></a><tt class="py-lineno">280</tt> <a class="py-toggle" href="#" id="SCAPITests.test_setting_comments-toggle" onclick="return toggle('SCAPITests.test_setting_comments');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.tests.scapi_tests.SCAPITests-class.html#test_setting_comments">test_setting_comments</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="SCAPITests.test_setting_comments-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SCAPITests.test_setting_comments-expanded"><a name="L281"></a><tt class="py-lineno">281</tt> <tt class="py-line"> <tt class="py-name">sca</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-145" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.root" class="py-name" href="#" onclick="return doclink('link-145', 'root', 'link-77');">root</a></tt> </tt> -<a name="L282"></a><tt class="py-lineno">282</tt> <tt class="py-line"> <tt class="py-name">user</tt> <tt class="py-op">=</tt> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt class="py-name">me</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L283"></a><tt class="py-lineno">283</tt> <tt class="py-line"> <tt class="py-name">track</tt> <tt class="py-op">=</tt> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt id="link-146" class="py-name"><a title="scapi.Track" class="py-name" href="#" onclick="return doclink('link-146', 'Track', 'link-85');">Track</a></tt><tt class="py-op">.</tt><tt id="link-147" class="py-name"><a title="scapi.RESTBase.new" class="py-name" href="#" onclick="return doclink('link-147', 'new', 'link-115');">new</a></tt><tt class="py-op">(</tt><tt class="py-name">title</tt><tt class="py-op">=</tt><tt class="py-string">'bar'</tt><tt class="py-op">,</tt> <tt class="py-name">sharing</tt><tt class="py-op">=</tt><tt class="py-string">"private"</tt><tt class="py-op">,</tt> <tt class="py-name">asset_data</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">data</tt><tt class="py-op">)</tt> </tt> -<a name="L284"></a><tt class="py-lineno">284</tt> <tt class="py-line"> <tt class="py-name">comment</tt> <tt class="py-op">=</tt> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt id="link-148" class="py-name" targets="Class scapi.Comment=scapi.Comment-class.html"><a title="scapi.Comment" class="py-name" href="#" onclick="return doclink('link-148', 'Comment', 'link-148');">Comment</a></tt><tt class="py-op">.</tt><tt id="link-149" class="py-name" targets="Class Method scapi.RESTBase.create()=scapi.RESTBase-class.html#create"><a title="scapi.RESTBase.create" class="py-name" href="#" onclick="return doclink('link-149', 'create', 'link-149');">create</a></tt><tt class="py-op">(</tt><tt class="py-name">body</tt><tt class="py-op">=</tt><tt class="py-string">"This is the body of my comment"</tt><tt class="py-op">,</tt> <tt class="py-name">timestamp</tt><tt class="py-op">=</tt><tt class="py-number">10</tt><tt class="py-op">)</tt> </tt> -<a name="L285"></a><tt class="py-lineno">285</tt> <tt class="py-line"> <tt class="py-name">track</tt><tt class="py-op">.</tt><tt class="py-name">comments</tt> <tt class="py-op">=</tt> <tt class="py-name">comment</tt> </tt> -<a name="L286"></a><tt class="py-lineno">286</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">track</tt><tt class="py-op">.</tt><tt class="py-name">comments</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-150" class="py-name" targets="Method scapi.json._StringGenerator.next()=scapi.json._StringGenerator-class.html#next"><a title="scapi.json._StringGenerator.next" class="py-name" href="#" onclick="return doclink('link-150', 'next', 'link-150');">next</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">body</tt> <tt class="py-op">==</tt> <tt class="py-name">comment</tt><tt class="py-op">.</tt><tt class="py-name">body</tt> </tt> -</div><a name="L287"></a><tt class="py-lineno">287</tt> <tt class="py-line"> </tt> -<a name="L288"></a><tt class="py-lineno">288</tt> <tt class="py-line"> </tt> -<a name="SCAPITests.test_setting_comments_the_way_shawn_says_its_correct"></a><div id="SCAPITests.test_setting_comments_the_way_shawn_says_its_correct-def"><a name="L289"></a><tt class="py-lineno">289</tt> <a class="py-toggle" href="#" id="SCAPITests.test_setting_comments_the_way_shawn_says_its_correct-toggle" onclick="return toggle('SCAPITests.test_setting_comments_the_way_shawn_says_its_correct');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.tests.scapi_tests.SCAPITests-class.html#test_setting_comments_the_way_shawn_says_its_correct">test_setting_comments_the_way_shawn_says_its_correct</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="SCAPITests.test_setting_comments_the_way_shawn_says_its_correct-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SCAPITests.test_setting_comments_the_way_shawn_says_its_correct-expanded"><a name="L290"></a><tt class="py-lineno">290</tt> <tt class="py-line"> <tt class="py-name">sca</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-151" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.root" class="py-name" href="#" onclick="return doclink('link-151', 'root', 'link-77');">root</a></tt> </tt> -<a name="L291"></a><tt class="py-lineno">291</tt> <tt class="py-line"> <tt class="py-name">track</tt> <tt class="py-op">=</tt> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt id="link-152" class="py-name"><a title="scapi.Track" class="py-name" href="#" onclick="return doclink('link-152', 'Track', 'link-85');">Track</a></tt><tt class="py-op">.</tt><tt id="link-153" class="py-name"><a title="scapi.RESTBase.new" class="py-name" href="#" onclick="return doclink('link-153', 'new', 'link-115');">new</a></tt><tt class="py-op">(</tt><tt class="py-name">title</tt><tt class="py-op">=</tt><tt class="py-string">'bar'</tt><tt class="py-op">,</tt> <tt class="py-name">sharing</tt><tt class="py-op">=</tt><tt class="py-string">"private"</tt><tt class="py-op">,</tt> <tt class="py-name">asset_data</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">data</tt><tt class="py-op">)</tt> </tt> -<a name="L292"></a><tt class="py-lineno">292</tt> <tt class="py-line"> <tt class="py-name">cbody</tt> <tt class="py-op">=</tt> <tt class="py-string">"This is the body of my comment"</tt> </tt> -<a name="L293"></a><tt class="py-lineno">293</tt> <tt class="py-line"> <tt class="py-name">track</tt><tt class="py-op">.</tt><tt class="py-name">comments</tt><tt class="py-op">.</tt><tt id="link-154" class="py-name"><a title="scapi.RESTBase.new" class="py-name" href="#" onclick="return doclink('link-154', 'new', 'link-115');">new</a></tt><tt class="py-op">(</tt><tt class="py-name">body</tt><tt class="py-op">=</tt><tt class="py-name">cbody</tt><tt class="py-op">,</tt> <tt class="py-name">timestamp</tt><tt class="py-op">=</tt><tt class="py-number">10</tt><tt class="py-op">)</tt> </tt> -<a name="L294"></a><tt class="py-lineno">294</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">track</tt><tt class="py-op">.</tt><tt class="py-name">comments</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">body</tt> <tt class="py-op">==</tt> <tt class="py-name">cbody</tt> </tt> -</div><a name="L295"></a><tt class="py-lineno">295</tt> <tt class="py-line"> </tt> -<a name="L296"></a><tt class="py-lineno">296</tt> <tt class="py-line"> </tt> -<a name="SCAPITests.test_contact_add_and_removal"></a><div id="SCAPITests.test_contact_add_and_removal-def"><a name="L297"></a><tt class="py-lineno">297</tt> <a class="py-toggle" href="#" id="SCAPITests.test_contact_add_and_removal-toggle" onclick="return toggle('SCAPITests.test_contact_add_and_removal');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.tests.scapi_tests.SCAPITests-class.html#test_contact_add_and_removal">test_contact_add_and_removal</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="SCAPITests.test_contact_add_and_removal-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SCAPITests.test_contact_add_and_removal-expanded"><a name="L298"></a><tt class="py-lineno">298</tt> <tt class="py-line"> <tt class="py-name">sca</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-155" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.root" class="py-name" href="#" onclick="return doclink('link-155', 'root', 'link-77');">root</a></tt> </tt> -<a name="L299"></a><tt class="py-lineno">299</tt> <tt class="py-line"> <tt class="py-name">me</tt> <tt class="py-op">=</tt> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt class="py-name">me</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L300"></a><tt class="py-lineno">300</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">user</tt> <tt class="py-keyword">in</tt> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt class="py-name">users</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L301"></a><tt class="py-lineno">301</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">user</tt> <tt class="py-op">!=</tt> <tt class="py-name">me</tt><tt class="py-op">:</tt> </tt> -<a name="L302"></a><tt class="py-lineno">302</tt> <tt class="py-line"> <tt class="py-name">user_to_set</tt> <tt class="py-op">=</tt> <tt class="py-name">user</tt> </tt> -<a name="L303"></a><tt class="py-lineno">303</tt> <tt class="py-line"> <tt class="py-keyword">break</tt> </tt> -<a name="L304"></a><tt class="py-lineno">304</tt> <tt class="py-line"> </tt> -<a name="L305"></a><tt class="py-lineno">305</tt> <tt class="py-line"> <tt class="py-name">contacts</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">me</tt><tt class="py-op">.</tt><tt class="py-name">contacts</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L306"></a><tt class="py-lineno">306</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">user_to_set</tt> <tt class="py-keyword">in</tt> <tt class="py-name">contacts</tt><tt class="py-op">:</tt> </tt> -<a name="L307"></a><tt class="py-lineno">307</tt> <tt class="py-line"> <tt class="py-name">me</tt><tt class="py-op">.</tt><tt class="py-name">contacts</tt><tt class="py-op">.</tt><tt class="py-name">remove</tt><tt class="py-op">(</tt><tt class="py-name">user_to_set</tt><tt class="py-op">)</tt> </tt> -<a name="L308"></a><tt class="py-lineno">308</tt> <tt class="py-line"> </tt> -<a name="L309"></a><tt class="py-lineno">309</tt> <tt class="py-line"> <tt class="py-name">me</tt><tt class="py-op">.</tt><tt class="py-name">contacts</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">user_to_set</tt><tt class="py-op">)</tt> </tt> -<a name="L310"></a><tt class="py-lineno">310</tt> <tt class="py-line"> </tt> -<a name="L311"></a><tt class="py-lineno">311</tt> <tt class="py-line"> <tt class="py-name">contacts</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">me</tt><tt class="py-op">.</tt><tt class="py-name">contacts</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">)</tt> </tt> -<a name="L312"></a><tt class="py-lineno">312</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">user_to_set</tt><tt class="py-op">.</tt><tt class="py-name">id</tt> <tt class="py-keyword">in</tt> <tt class="py-op">[</tt><tt class="py-name">c</tt><tt class="py-op">.</tt><tt class="py-name">id</tt> <tt class="py-keyword">for</tt> <tt class="py-name">c</tt> <tt class="py-keyword">in</tt> <tt class="py-name">contacts</tt><tt class="py-op">]</tt> </tt> -<a name="L313"></a><tt class="py-lineno">313</tt> <tt class="py-line"> </tt> -<a name="L314"></a><tt class="py-lineno">314</tt> <tt class="py-line"> <tt class="py-name">me</tt><tt class="py-op">.</tt><tt class="py-name">contacts</tt><tt class="py-op">.</tt><tt class="py-name">remove</tt><tt class="py-op">(</tt><tt class="py-name">user_to_set</tt><tt class="py-op">)</tt> </tt> -<a name="L315"></a><tt class="py-lineno">315</tt> <tt class="py-line"> </tt> -<a name="L316"></a><tt class="py-lineno">316</tt> <tt class="py-line"> <tt class="py-name">contacts</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">me</tt><tt class="py-op">.</tt><tt class="py-name">contacts</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">)</tt> </tt> -<a name="L317"></a><tt class="py-lineno">317</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">user_to_set</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">contacts</tt> </tt> -</div><a name="L318"></a><tt class="py-lineno">318</tt> <tt class="py-line"> </tt> -<a name="L319"></a><tt class="py-lineno">319</tt> <tt class="py-line"> </tt> -<a name="SCAPITests.test_favorites"></a><div id="SCAPITests.test_favorites-def"><a name="L320"></a><tt class="py-lineno">320</tt> <a class="py-toggle" href="#" id="SCAPITests.test_favorites-toggle" onclick="return toggle('SCAPITests.test_favorites');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.tests.scapi_tests.SCAPITests-class.html#test_favorites">test_favorites</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="SCAPITests.test_favorites-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SCAPITests.test_favorites-expanded"><a name="L321"></a><tt class="py-lineno">321</tt> <tt class="py-line"> <tt class="py-name">sca</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-156" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.root" class="py-name" href="#" onclick="return doclink('link-156', 'root', 'link-77');">root</a></tt> </tt> -<a name="L322"></a><tt class="py-lineno">322</tt> <tt class="py-line"> <tt class="py-name">me</tt> <tt class="py-op">=</tt> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt class="py-name">me</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L323"></a><tt class="py-lineno">323</tt> <tt class="py-line"> </tt> -<a name="L324"></a><tt class="py-lineno">324</tt> <tt class="py-line"> <tt class="py-name">favorites</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">me</tt><tt class="py-op">.</tt><tt class="py-name">favorites</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L325"></a><tt class="py-lineno">325</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">favorites</tt> <tt class="py-op">==</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> <tt class="py-keyword">or</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">favorites</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt id="link-157" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-157', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-158" class="py-name"><a title="scapi.Track" class="py-name" href="#" onclick="return doclink('link-158', 'Track', 'link-85');">Track</a></tt><tt class="py-op">)</tt> </tt> -<a name="L326"></a><tt class="py-lineno">326</tt> <tt class="py-line"> </tt> -<a name="L327"></a><tt class="py-lineno">327</tt> <tt class="py-line"> <tt class="py-name">track</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt> -<a name="L328"></a><tt class="py-lineno">328</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">user</tt> <tt class="py-keyword">in</tt> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt class="py-name">users</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L329"></a><tt class="py-lineno">329</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">user</tt> <tt class="py-op">==</tt> <tt class="py-name">me</tt><tt class="py-op">:</tt> </tt> -<a name="L330"></a><tt class="py-lineno">330</tt> <tt class="py-line"> <tt class="py-keyword">continue</tt> </tt> -<a name="L331"></a><tt class="py-lineno">331</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">track</tt> <tt class="py-keyword">in</tt> <tt class="py-name">user</tt><tt class="py-op">.</tt><tt class="py-name">tracks</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L332"></a><tt class="py-lineno">332</tt> <tt class="py-line"> <tt class="py-keyword">break</tt> </tt> -<a name="L333"></a><tt class="py-lineno">333</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">track</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> -<a name="L334"></a><tt class="py-lineno">334</tt> <tt class="py-line"> <tt class="py-keyword">break</tt> </tt> -<a name="L335"></a><tt class="py-lineno">335</tt> <tt class="py-line"> </tt> -<a name="L336"></a><tt class="py-lineno">336</tt> <tt class="py-line"> <tt class="py-name">me</tt><tt class="py-op">.</tt><tt class="py-name">favorites</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">track</tt><tt class="py-op">)</tt> </tt> -<a name="L337"></a><tt class="py-lineno">337</tt> <tt class="py-line"> </tt> -<a name="L338"></a><tt class="py-lineno">338</tt> <tt class="py-line"> <tt class="py-name">favorites</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">me</tt><tt class="py-op">.</tt><tt class="py-name">favorites</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L339"></a><tt class="py-lineno">339</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">track</tt> <tt class="py-keyword">in</tt> <tt class="py-name">favorites</tt> </tt> -<a name="L340"></a><tt class="py-lineno">340</tt> <tt class="py-line"> </tt> -<a name="L341"></a><tt class="py-lineno">341</tt> <tt class="py-line"> <tt class="py-name">me</tt><tt class="py-op">.</tt><tt class="py-name">favorites</tt><tt class="py-op">.</tt><tt class="py-name">remove</tt><tt class="py-op">(</tt><tt class="py-name">track</tt><tt class="py-op">)</tt> </tt> -<a name="L342"></a><tt class="py-lineno">342</tt> <tt class="py-line"> </tt> -<a name="L343"></a><tt class="py-lineno">343</tt> <tt class="py-line"> <tt class="py-name">favorites</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">me</tt><tt class="py-op">.</tt><tt class="py-name">favorites</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L344"></a><tt class="py-lineno">344</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">track</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">favorites</tt> </tt> -</div><a name="L345"></a><tt class="py-lineno">345</tt> <tt class="py-line"> </tt> -<a name="L346"></a><tt class="py-lineno">346</tt> <tt class="py-line"> </tt> -<a name="SCAPITests.test_large_list"></a><div id="SCAPITests.test_large_list-def"><a name="L347"></a><tt class="py-lineno">347</tt> <a class="py-toggle" href="#" id="SCAPITests.test_large_list-toggle" onclick="return toggle('SCAPITests.test_large_list');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.tests.scapi_tests.SCAPITests-class.html#test_large_list">test_large_list</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="SCAPITests.test_large_list-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SCAPITests.test_large_list-expanded"><a name="L348"></a><tt class="py-lineno">348</tt> <tt class="py-line"> <tt class="py-name">sca</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-159" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.root" class="py-name" href="#" onclick="return doclink('link-159', 'root', 'link-77');">root</a></tt> </tt> -<a name="L349"></a><tt class="py-lineno">349</tt> <tt class="py-line"> </tt> -<a name="L350"></a><tt class="py-lineno">350</tt> <tt class="py-line"> <tt class="py-name">tracks</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">sca</tt><tt class="py-op">.</tt><tt class="py-name">tracks</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L351"></a><tt class="py-lineno">351</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">tracks</tt><tt class="py-op">)</tt> <tt class="py-op"><</tt> <tt id="link-160" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-160', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-161" class="py-name"><a title="scapi.ApiConnector" class="py-name" href="#" onclick="return doclink('link-161', 'ApiConnector', 'link-70');">ApiConnector</a></tt><tt class="py-op">.</tt><tt id="link-162" class="py-name" targets="Variable scapi.ApiConnector.LIST_LIMIT=scapi.ApiConnector-class.html#LIST_LIMIT"><a title="scapi.ApiConnector.LIST_LIMIT" class="py-name" href="#" onclick="return doclink('link-162', 'LIST_LIMIT', 'link-162');">LIST_LIMIT</a></tt><tt class="py-op">:</tt> </tt> -<a name="L352"></a><tt class="py-lineno">352</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt class="py-name">xrange</tt><tt class="py-op">(</tt><tt id="link-163" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-163', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-164" class="py-name"><a title="scapi.ApiConnector" class="py-name" href="#" onclick="return doclink('link-164', 'ApiConnector', 'link-70');">ApiConnector</a></tt><tt class="py-op">.</tt><tt id="link-165" class="py-name"><a title="scapi.ApiConnector.LIST_LIMIT" class="py-name" href="#" onclick="return doclink('link-165', 'LIST_LIMIT', 'link-162');">LIST_LIMIT</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L353"></a><tt class="py-lineno">353</tt> <tt class="py-line"> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt id="link-166" class="py-name"><a title="scapi.Track" class="py-name" href="#" onclick="return doclink('link-166', 'Track', 'link-85');">Track</a></tt><tt class="py-op">.</tt><tt id="link-167" class="py-name"><a title="scapi.RESTBase.new" class="py-name" href="#" onclick="return doclink('link-167', 'new', 'link-115');">new</a></tt><tt class="py-op">(</tt><tt class="py-name">title</tt><tt class="py-op">=</tt><tt class="py-string">'test_track_%i'</tt> <tt class="py-op">%</tt> <tt class="py-name">i</tt><tt class="py-op">,</tt> <tt class="py-name">asset_data</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">data</tt><tt class="py-op">)</tt> </tt> -<a name="L354"></a><tt class="py-lineno">354</tt> <tt class="py-line"> <tt class="py-name">all_tracks</tt> <tt class="py-op">=</tt> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt class="py-name">tracks</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L355"></a><tt class="py-lineno">355</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">all_tracks</tt><tt class="py-op">,</tt> <tt class="py-name">list</tt><tt class="py-op">)</tt> </tt> -<a name="L356"></a><tt class="py-lineno">356</tt> <tt class="py-line"> <tt class="py-name">all_tracks</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">all_tracks</tt><tt class="py-op">)</tt> </tt> -<a name="L357"></a><tt class="py-lineno">357</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">all_tracks</tt><tt class="py-op">)</tt> <tt class="py-op">></tt> <tt id="link-168" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-168', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-169" class="py-name"><a title="scapi.ApiConnector" class="py-name" href="#" onclick="return doclink('link-169', 'ApiConnector', 'link-70');">ApiConnector</a></tt><tt class="py-op">.</tt><tt id="link-170" class="py-name"><a title="scapi.ApiConnector.LIST_LIMIT" class="py-name" href="#" onclick="return doclink('link-170', 'LIST_LIMIT', 'link-162');">LIST_LIMIT</a></tt> </tt> -</div><a name="L358"></a><tt class="py-lineno">358</tt> <tt class="py-line"> </tt> -<a name="L359"></a><tt class="py-lineno">359</tt> <tt class="py-line"> </tt> -<a name="L360"></a><tt class="py-lineno">360</tt> <tt class="py-line"> </tt> -<a name="SCAPITests.test_filtered_list"></a><div id="SCAPITests.test_filtered_list-def"><a name="L361"></a><tt class="py-lineno">361</tt> <a class="py-toggle" href="#" id="SCAPITests.test_filtered_list-toggle" onclick="return toggle('SCAPITests.test_filtered_list');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.tests.scapi_tests.SCAPITests-class.html#test_filtered_list">test_filtered_list</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="SCAPITests.test_filtered_list-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SCAPITests.test_filtered_list-expanded"><a name="L362"></a><tt class="py-lineno">362</tt> <tt class="py-line"> <tt class="py-name">sca</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-171" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.root" class="py-name" href="#" onclick="return doclink('link-171', 'root', 'link-77');">root</a></tt> </tt> -<a name="L363"></a><tt class="py-lineno">363</tt> <tt class="py-line"> </tt> -<a name="L364"></a><tt class="py-lineno">364</tt> <tt class="py-line"> <tt class="py-name">tracks</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">sca</tt><tt class="py-op">.</tt><tt class="py-name">tracks</tt><tt class="py-op">(</tt><tt class="py-name">params</tt><tt class="py-op">=</tt><tt class="py-op">{</tt> </tt> -<a name="L365"></a><tt class="py-lineno">365</tt> <tt class="py-line"> <tt class="py-string">"bpm[from]"</tt> <tt class="py-op">:</tt> <tt class="py-string">"180"</tt><tt class="py-op">,</tt> </tt> -<a name="L366"></a><tt class="py-lineno">366</tt> <tt class="py-line"> <tt class="py-op">}</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L367"></a><tt class="py-lineno">367</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">tracks</tt><tt class="py-op">)</tt> <tt class="py-op"><</tt> <tt id="link-172" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-172', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-173" class="py-name"><a title="scapi.ApiConnector" class="py-name" href="#" onclick="return doclink('link-173', 'ApiConnector', 'link-70');">ApiConnector</a></tt><tt class="py-op">.</tt><tt id="link-174" class="py-name"><a title="scapi.ApiConnector.LIST_LIMIT" class="py-name" href="#" onclick="return doclink('link-174', 'LIST_LIMIT', 'link-162');">LIST_LIMIT</a></tt><tt class="py-op">:</tt> </tt> -<a name="L368"></a><tt class="py-lineno">368</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt class="py-name">xrange</tt><tt class="py-op">(</tt><tt id="link-175" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-175', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-176" class="py-name"><a title="scapi.ApiConnector" class="py-name" href="#" onclick="return doclink('link-176', 'ApiConnector', 'link-70');">ApiConnector</a></tt><tt class="py-op">.</tt><tt id="link-177" class="py-name"><a title="scapi.ApiConnector.LIST_LIMIT" class="py-name" href="#" onclick="return doclink('link-177', 'LIST_LIMIT', 'link-162');">LIST_LIMIT</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L369"></a><tt class="py-lineno">369</tt> <tt class="py-line"> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt id="link-178" class="py-name"><a title="scapi.Track" class="py-name" href="#" onclick="return doclink('link-178', 'Track', 'link-85');">Track</a></tt><tt class="py-op">.</tt><tt id="link-179" class="py-name"><a title="scapi.RESTBase.new" class="py-name" href="#" onclick="return doclink('link-179', 'new', 'link-115');">new</a></tt><tt class="py-op">(</tt><tt class="py-name">title</tt><tt class="py-op">=</tt><tt class="py-string">'test_track_%i'</tt> <tt class="py-op">%</tt> <tt class="py-name">i</tt><tt class="py-op">,</tt> <tt class="py-name">asset_data</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">data</tt><tt class="py-op">)</tt> </tt> -<a name="L370"></a><tt class="py-lineno">370</tt> <tt class="py-line"> <tt class="py-name">all_tracks</tt> <tt class="py-op">=</tt> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt class="py-name">tracks</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L371"></a><tt class="py-lineno">371</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">all_tracks</tt><tt class="py-op">,</tt> <tt class="py-name">list</tt><tt class="py-op">)</tt> </tt> -<a name="L372"></a><tt class="py-lineno">372</tt> <tt class="py-line"> <tt class="py-name">all_tracks</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">all_tracks</tt><tt class="py-op">)</tt> </tt> -<a name="L373"></a><tt class="py-lineno">373</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">all_tracks</tt><tt class="py-op">)</tt> <tt class="py-op">></tt> <tt id="link-180" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-180', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-181" class="py-name"><a title="scapi.ApiConnector" class="py-name" href="#" onclick="return doclink('link-181', 'ApiConnector', 'link-70');">ApiConnector</a></tt><tt class="py-op">.</tt><tt id="link-182" class="py-name"><a title="scapi.ApiConnector.LIST_LIMIT" class="py-name" href="#" onclick="return doclink('link-182', 'LIST_LIMIT', 'link-162');">LIST_LIMIT</a></tt> </tt> -</div><a name="L374"></a><tt class="py-lineno">374</tt> <tt class="py-line"> </tt> -<a name="L375"></a><tt class="py-lineno">375</tt> <tt class="py-line"> </tt> -<a name="SCAPITests.test_events"></a><div id="SCAPITests.test_events-def"><a name="L376"></a><tt class="py-lineno">376</tt> <a class="py-toggle" href="#" id="SCAPITests.test_events-toggle" onclick="return toggle('SCAPITests.test_events');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.tests.scapi_tests.SCAPITests-class.html#test_events">test_events</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="SCAPITests.test_events-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SCAPITests.test_events-expanded"><a name="L377"></a><tt class="py-lineno">377</tt> <tt class="py-line"> <tt class="py-name">events</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-183" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.root" class="py-name" href="#" onclick="return doclink('link-183', 'root', 'link-77');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">events</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L378"></a><tt class="py-lineno">378</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">events</tt><tt class="py-op">,</tt> <tt class="py-name">list</tt><tt class="py-op">)</tt> </tt> -<a name="L379"></a><tt class="py-lineno">379</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">events</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt id="link-184" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-184', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-185" class="py-name" targets="Class scapi.Event=scapi.Event-class.html"><a title="scapi.Event" class="py-name" href="#" onclick="return doclink('link-185', 'Event', 'link-185');">Event</a></tt><tt class="py-op">)</tt> </tt> -</div><a name="L380"></a><tt class="py-lineno">380</tt> <tt class="py-line"> </tt> -<a name="L381"></a><tt class="py-lineno">381</tt> <tt class="py-line"> </tt> -<a name="SCAPITests.test_me_having_stress"></a><div id="SCAPITests.test_me_having_stress-def"><a name="L382"></a><tt class="py-lineno">382</tt> <a class="py-toggle" href="#" id="SCAPITests.test_me_having_stress-toggle" onclick="return toggle('SCAPITests.test_me_having_stress');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.tests.scapi_tests.SCAPITests-class.html#test_me_having_stress">test_me_having_stress</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="SCAPITests.test_me_having_stress-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SCAPITests.test_me_having_stress-expanded"><a name="L383"></a><tt class="py-lineno">383</tt> <tt class="py-line"> <tt class="py-name">sca</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-186" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.root" class="py-name" href="#" onclick="return doclink('link-186', 'root', 'link-77');">root</a></tt> </tt> -<a name="L384"></a><tt class="py-lineno">384</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">_</tt> <tt class="py-keyword">in</tt> <tt class="py-name">xrange</tt><tt class="py-op">(</tt><tt class="py-number">20</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L385"></a><tt class="py-lineno">385</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-187" class="py-name" targets="Method scapi.tests.scapi_tests.SCAPITests.setUp()=scapi.tests.scapi_tests.SCAPITests-class.html#setUp"><a title="scapi.tests.scapi_tests.SCAPITests.setUp" class="py-name" href="#" onclick="return doclink('link-187', 'setUp', 'link-187');">setUp</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L386"></a><tt class="py-lineno">386</tt> <tt class="py-line"> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt class="py-name">me</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -</div><a name="L387"></a><tt class="py-lineno">387</tt> <tt class="py-line"> </tt> -<a name="L388"></a><tt class="py-lineno">388</tt> <tt class="py-line"> </tt> -<a name="SCAPITests.test_non_global_api"></a><div id="SCAPITests.test_non_global_api-def"><a name="L389"></a><tt class="py-lineno">389</tt> <a class="py-toggle" href="#" id="SCAPITests.test_non_global_api-toggle" onclick="return toggle('SCAPITests.test_non_global_api');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.tests.scapi_tests.SCAPITests-class.html#test_non_global_api">test_non_global_api</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="SCAPITests.test_non_global_api-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SCAPITests.test_non_global_api-expanded"><a name="L390"></a><tt class="py-lineno">390</tt> <tt class="py-line"> <tt id="link-188" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.root" class="py-name" href="#" onclick="return doclink('link-188', 'root', 'link-77');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-189" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.root" class="py-name" href="#" onclick="return doclink('link-189', 'root', 'link-77');">root</a></tt> </tt> -<a name="L391"></a><tt class="py-lineno">391</tt> <tt class="py-line"> <tt class="py-name">me</tt> <tt class="py-op">=</tt> <tt id="link-190" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.root" class="py-name" href="#" onclick="return doclink('link-190', 'root', 'link-77');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">me</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L392"></a><tt class="py-lineno">392</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">me</tt><tt class="py-op">,</tt> <tt id="link-191" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-191', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-192" class="py-name"><a title="scapi.User" class="py-name" href="#" onclick="return doclink('link-192', 'User', 'link-80');">User</a></tt><tt class="py-op">)</tt> </tt> -<a name="L393"></a><tt class="py-lineno">393</tt> <tt class="py-line"> </tt> -<a name="L394"></a><tt class="py-lineno">394</tt> <tt class="py-line"> <tt class="py-comment"># now get something *from* that user</tt> </tt> -<a name="L395"></a><tt class="py-lineno">395</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">me</tt><tt class="py-op">.</tt><tt class="py-name">favorites</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -</div><a name="L396"></a><tt class="py-lineno">396</tt> <tt class="py-line"> </tt> -<a name="L397"></a><tt class="py-lineno">397</tt> <tt class="py-line"> </tt> -<a name="SCAPITests.test_playlists"></a><div id="SCAPITests.test_playlists-def"><a name="L398"></a><tt class="py-lineno">398</tt> <a class="py-toggle" href="#" id="SCAPITests.test_playlists-toggle" onclick="return toggle('SCAPITests.test_playlists');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.tests.scapi_tests.SCAPITests-class.html#test_playlists">test_playlists</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="SCAPITests.test_playlists-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SCAPITests.test_playlists-expanded"><a name="L399"></a><tt class="py-lineno">399</tt> <tt class="py-line"> <tt class="py-name">sca</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-193" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.root" class="py-name" href="#" onclick="return doclink('link-193', 'root', 'link-77');">root</a></tt> </tt> -<a name="L400"></a><tt class="py-lineno">400</tt> <tt class="py-line"> <tt class="py-name">playlists</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">itertools</tt><tt class="py-op">.</tt><tt class="py-name">islice</tt><tt class="py-op">(</tt><tt class="py-name">sca</tt><tt class="py-op">.</tt><tt class="py-name">playlists</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-number">127</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L401"></a><tt class="py-lineno">401</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">playlist</tt> <tt class="py-keyword">in</tt> <tt class="py-name">playlists</tt><tt class="py-op">:</tt> </tt> -<a name="L402"></a><tt class="py-lineno">402</tt> <tt class="py-line"> <tt class="py-name">tracks</tt> <tt class="py-op">=</tt> <tt class="py-name">playlist</tt><tt class="py-op">.</tt><tt class="py-name">tracks</tt> </tt> -<a name="L403"></a><tt class="py-lineno">403</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">tracks</tt><tt class="py-op">,</tt> <tt class="py-name">list</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L404"></a><tt class="py-lineno">404</tt> <tt class="py-line"> <tt class="py-name">tracks</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">tracks</tt><tt class="py-op">]</tt> </tt> -<a name="L405"></a><tt class="py-lineno">405</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">trackdata</tt> <tt class="py-keyword">in</tt> <tt class="py-name">tracks</tt><tt class="py-op">:</tt> </tt> -<a name="L406"></a><tt class="py-lineno">406</tt> <tt class="py-line"> <tt class="py-keyword">print</tt> <tt class="py-name">trackdata</tt> </tt> -<a name="L407"></a><tt class="py-lineno">407</tt> <tt class="py-line"> <tt class="py-comment">#user = trackdata.user</tt> </tt> -<a name="L408"></a><tt class="py-lineno">408</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment">#print user</tt> </tt> -<a name="L409"></a><tt class="py-lineno">409</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment">#print user.tracks()</tt> </tt> -<a name="L410"></a><tt class="py-lineno">410</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">print</tt> <tt class="py-name">playlist</tt><tt class="py-op">.</tt><tt class="py-name">user</tt> </tt> -<a name="L411"></a><tt class="py-lineno">411</tt> <tt class="py-line"> <tt class="py-keyword">break</tt> </tt> -</div><a name="L412"></a><tt class="py-lineno">412</tt> <tt class="py-line"> </tt> -<a name="L413"></a><tt class="py-lineno">413</tt> <tt class="py-line"> </tt> -<a name="L414"></a><tt class="py-lineno">414</tt> <tt class="py-line"> </tt> -<a name="L415"></a><tt class="py-lineno">415</tt> <tt class="py-line"> </tt> -<a name="SCAPITests.test_playlist_creation"></a><div id="SCAPITests.test_playlist_creation-def"><a name="L416"></a><tt class="py-lineno">416</tt> <a class="py-toggle" href="#" id="SCAPITests.test_playlist_creation-toggle" onclick="return toggle('SCAPITests.test_playlist_creation');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.tests.scapi_tests.SCAPITests-class.html#test_playlist_creation">test_playlist_creation</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="SCAPITests.test_playlist_creation-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SCAPITests.test_playlist_creation-expanded"><a name="L417"></a><tt class="py-lineno">417</tt> <tt class="py-line"> <tt class="py-name">sca</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-194" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.root" class="py-name" href="#" onclick="return doclink('link-194', 'root', 'link-77');">root</a></tt> </tt> -<a name="L418"></a><tt class="py-lineno">418</tt> <tt class="py-line"> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt id="link-195" class="py-name" targets="Class scapi.Playlist=scapi.Playlist-class.html"><a title="scapi.Playlist" class="py-name" href="#" onclick="return doclink('link-195', 'Playlist', 'link-195');">Playlist</a></tt><tt class="py-op">.</tt><tt id="link-196" class="py-name"><a title="scapi.RESTBase.new" class="py-name" href="#" onclick="return doclink('link-196', 'new', 'link-115');">new</a></tt><tt class="py-op">(</tt><tt class="py-name">title</tt><tt class="py-op">=</tt><tt class="py-string">"I'm so happy, happy, happy, happy!"</tt><tt class="py-op">)</tt> </tt> -</div><a name="L419"></a><tt class="py-lineno">419</tt> <tt class="py-line"> </tt> -<a name="L420"></a><tt class="py-lineno">420</tt> <tt class="py-line"> </tt> -<a name="L421"></a><tt class="py-lineno">421</tt> <tt class="py-line"> </tt> -<a name="SCAPITests.test_groups"></a><div id="SCAPITests.test_groups-def"><a name="L422"></a><tt class="py-lineno">422</tt> <a class="py-toggle" href="#" id="SCAPITests.test_groups-toggle" onclick="return toggle('SCAPITests.test_groups');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.tests.scapi_tests.SCAPITests-class.html#test_groups">test_groups</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="SCAPITests.test_groups-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SCAPITests.test_groups-expanded"><a name="L423"></a><tt class="py-lineno">423</tt> <tt class="py-line"> <tt class="py-name">sca</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-197" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.root" class="py-name" href="#" onclick="return doclink('link-197', 'root', 'link-77');">root</a></tt> </tt> -<a name="L424"></a><tt class="py-lineno">424</tt> <tt class="py-line"> <tt class="py-name">groups</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">itertools</tt><tt class="py-op">.</tt><tt class="py-name">islice</tt><tt class="py-op">(</tt><tt class="py-name">sca</tt><tt class="py-op">.</tt><tt class="py-name">groups</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-number">127</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L425"></a><tt class="py-lineno">425</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">group</tt> <tt class="py-keyword">in</tt> <tt class="py-name">groups</tt><tt class="py-op">:</tt> </tt> -<a name="L426"></a><tt class="py-lineno">426</tt> <tt class="py-line"> <tt class="py-name">users</tt> <tt class="py-op">=</tt> <tt class="py-name">group</tt><tt class="py-op">.</tt><tt class="py-name">users</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L427"></a><tt class="py-lineno">427</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">user</tt> <tt class="py-keyword">in</tt> <tt class="py-name">users</tt><tt class="py-op">:</tt> </tt> -<a name="L428"></a><tt class="py-lineno">428</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt> -</div><a name="L429"></a><tt class="py-lineno">429</tt> <tt class="py-line"> </tt> -<a name="L430"></a><tt class="py-lineno">430</tt> <tt class="py-line"> </tt> -<a name="SCAPITests.test_track_creation_with_email_sharers"></a><div id="SCAPITests.test_track_creation_with_email_sharers-def"><a name="L431"></a><tt class="py-lineno">431</tt> <a class="py-toggle" href="#" id="SCAPITests.test_track_creation_with_email_sharers-toggle" onclick="return toggle('SCAPITests.test_track_creation_with_email_sharers');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.tests.scapi_tests.SCAPITests-class.html#test_track_creation_with_email_sharers">test_track_creation_with_email_sharers</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="SCAPITests.test_track_creation_with_email_sharers-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SCAPITests.test_track_creation_with_email_sharers-expanded"><a name="L432"></a><tt class="py-lineno">432</tt> <tt class="py-line"> <tt class="py-name">sca</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-198" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.root" class="py-name" href="#" onclick="return doclink('link-198', 'root', 'link-77');">root</a></tt> </tt> -<a name="L433"></a><tt class="py-lineno">433</tt> <tt class="py-line"> <tt class="py-name">emails</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">dict</tt><tt class="py-op">(</tt><tt class="py-name">address</tt><tt class="py-op">=</tt><tt class="py-string">"deets@web.de"</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">dict</tt><tt class="py-op">(</tt><tt class="py-name">address</tt><tt class="py-op">=</tt><tt class="py-string">"hannes@soundcloud.com"</tt><tt class="py-op">)</tt><tt class="py-op">]</tt> </tt> -<a name="L434"></a><tt class="py-lineno">434</tt> <tt class="py-line"> <tt class="py-name">track</tt> <tt class="py-op">=</tt> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt id="link-199" class="py-name"><a title="scapi.Track" class="py-name" href="#" onclick="return doclink('link-199', 'Track', 'link-85');">Track</a></tt><tt class="py-op">.</tt><tt id="link-200" class="py-name"><a title="scapi.RESTBase.new" class="py-name" href="#" onclick="return doclink('link-200', 'new', 'link-115');">new</a></tt><tt class="py-op">(</tt><tt class="py-name">title</tt><tt class="py-op">=</tt><tt class="py-string">'bar'</tt><tt class="py-op">,</tt> <tt class="py-name">asset_data</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">data</tt><tt class="py-op">,</tt> </tt> -<a name="L435"></a><tt class="py-lineno">435</tt> <tt class="py-line"> <tt class="py-name">shared_to</tt><tt class="py-op">=</tt><tt class="py-name">dict</tt><tt class="py-op">(</tt><tt class="py-name">emails</tt><tt class="py-op">=</tt><tt class="py-name">emails</tt><tt class="py-op">)</tt> </tt> -<a name="L436"></a><tt class="py-lineno">436</tt> <tt class="py-line"> <tt class="py-op">)</tt> </tt> -<a name="L437"></a><tt class="py-lineno">437</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">track</tt><tt class="py-op">,</tt> <tt id="link-201" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-201', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-202" class="py-name"><a title="scapi.Track" class="py-name" href="#" onclick="return doclink('link-202', 'Track', 'link-85');">Track</a></tt><tt class="py-op">)</tt> </tt> -</div><a name="L438"></a><tt class="py-lineno">438</tt> <tt class="py-line"> </tt> -<a name="L439"></a><tt class="py-lineno">439</tt> <tt class="py-line"> </tt> -<a name="L440"></a><tt class="py-lineno">440</tt> <tt class="py-line"> </tt> -<a name="SCAPITests.test_track_creation_with_artwork"></a><div id="SCAPITests.test_track_creation_with_artwork-def"><a name="L441"></a><tt class="py-lineno">441</tt> <a class="py-toggle" href="#" id="SCAPITests.test_track_creation_with_artwork-toggle" onclick="return toggle('SCAPITests.test_track_creation_with_artwork');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.tests.scapi_tests.SCAPITests-class.html#test_track_creation_with_artwork">test_track_creation_with_artwork</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="SCAPITests.test_track_creation_with_artwork-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SCAPITests.test_track_creation_with_artwork-expanded"><a name="L442"></a><tt class="py-lineno">442</tt> <tt class="py-line"> <tt class="py-name">sca</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-203" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.root" class="py-name" href="#" onclick="return doclink('link-203', 'root', 'link-77');">root</a></tt> </tt> -<a name="L443"></a><tt class="py-lineno">443</tt> <tt class="py-line"> <tt class="py-name">track</tt> <tt class="py-op">=</tt> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt id="link-204" class="py-name"><a title="scapi.Track" class="py-name" href="#" onclick="return doclink('link-204', 'Track', 'link-85');">Track</a></tt><tt class="py-op">.</tt><tt id="link-205" class="py-name"><a title="scapi.RESTBase.new" class="py-name" href="#" onclick="return doclink('link-205', 'new', 'link-115');">new</a></tt><tt class="py-op">(</tt><tt class="py-name">title</tt><tt class="py-op">=</tt><tt class="py-string">'bar'</tt><tt class="py-op">,</tt> </tt> -<a name="L444"></a><tt class="py-lineno">444</tt> <tt class="py-line"> <tt class="py-name">asset_data</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">data</tt><tt class="py-op">,</tt> </tt> -<a name="L445"></a><tt class="py-lineno">445</tt> <tt class="py-line"> <tt class="py-name">artwork_data</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">artwork_data</tt><tt class="py-op">,</tt> </tt> -<a name="L446"></a><tt class="py-lineno">446</tt> <tt class="py-line"> <tt class="py-op">)</tt> </tt> -<a name="L447"></a><tt class="py-lineno">447</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">track</tt><tt class="py-op">,</tt> <tt id="link-206" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-206', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-207" class="py-name"><a title="scapi.Track" class="py-name" href="#" onclick="return doclink('link-207', 'Track', 'link-85');">Track</a></tt><tt class="py-op">)</tt> </tt> -<a name="L448"></a><tt class="py-lineno">448</tt> <tt class="py-line"> </tt> -<a name="L449"></a><tt class="py-lineno">449</tt> <tt class="py-line"> <tt class="py-name">track</tt><tt class="py-op">.</tt><tt class="py-name">title</tt> <tt class="py-op">=</tt> <tt class="py-string">"foobarbaz"</tt> </tt> -</div><a name="L450"></a><tt class="py-lineno">450</tt> <tt class="py-line"> </tt> -<a name="L451"></a><tt class="py-lineno">451</tt> <tt class="py-line"> </tt> -<a name="L452"></a><tt class="py-lineno">452</tt> <tt class="py-line"> </tt> -<a name="SCAPITests.test_oauth_get_signing"></a><div id="SCAPITests.test_oauth_get_signing-def"><a name="L453"></a><tt class="py-lineno">453</tt> <a class="py-toggle" href="#" id="SCAPITests.test_oauth_get_signing-toggle" onclick="return toggle('SCAPITests.test_oauth_get_signing');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.tests.scapi_tests.SCAPITests-class.html#test_oauth_get_signing">test_oauth_get_signing</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="SCAPITests.test_oauth_get_signing-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SCAPITests.test_oauth_get_signing-expanded"><a name="L454"></a><tt class="py-lineno">454</tt> <tt class="py-line"> <tt class="py-name">sca</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-208" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.root" class="py-name" href="#" onclick="return doclink('link-208', 'root', 'link-77');">root</a></tt> </tt> -<a name="L455"></a><tt class="py-lineno">455</tt> <tt class="py-line"> </tt> -<a name="L456"></a><tt class="py-lineno">456</tt> <tt class="py-line"> <tt class="py-name">url</tt> <tt class="py-op">=</tt> <tt class="py-string">"http://api.soundcloud.dev/oauth/test_request"</tt> </tt> -<a name="L457"></a><tt class="py-lineno">457</tt> <tt class="py-line"> <tt class="py-name">params</tt> <tt class="py-op">=</tt> <tt class="py-name">dict</tt><tt class="py-op">(</tt><tt class="py-name">foo</tt><tt class="py-op">=</tt><tt class="py-string">"bar"</tt><tt class="py-op">,</tt> </tt> -<a name="L458"></a><tt class="py-lineno">458</tt> <tt class="py-line"> <tt class="py-name">baz</tt><tt class="py-op">=</tt><tt class="py-string">"padamm"</tt><tt class="py-op">,</tt> </tt> -<a name="L459"></a><tt class="py-lineno">459</tt> <tt class="py-line"> <tt class="py-op">)</tt> </tt> -<a name="L460"></a><tt class="py-lineno">460</tt> <tt class="py-line"> <tt class="py-name">url</tt> <tt class="py-op">+=</tt> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt id="link-209" class="py-name" targets="Method scapi.Scope._create_query_string()=scapi.Scope-class.html#_create_query_string"><a title="scapi.Scope._create_query_string" class="py-name" href="#" onclick="return doclink('link-209', '_create_query_string', 'link-209');">_create_query_string</a></tt><tt class="py-op">(</tt><tt class="py-name">params</tt><tt class="py-op">)</tt> </tt> -<a name="L461"></a><tt class="py-lineno">461</tt> <tt class="py-line"> <tt class="py-name">signed_url</tt> <tt class="py-op">=</tt> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt id="link-210" class="py-name" targets="Method scapi.Scope.oauth_sign_get_request()=scapi.Scope-class.html#oauth_sign_get_request"><a title="scapi.Scope.oauth_sign_get_request" class="py-name" href="#" onclick="return doclink('link-210', 'oauth_sign_get_request', 'link-210');">oauth_sign_get_request</a></tt><tt class="py-op">(</tt><tt class="py-name">url</tt><tt class="py-op">)</tt> </tt> -<a name="L462"></a><tt class="py-lineno">462</tt> <tt class="py-line"> </tt> -<a name="L463"></a><tt class="py-lineno">463</tt> <tt class="py-line"> </tt> -<a name="L464"></a><tt class="py-lineno">464</tt> <tt class="py-line"> <tt class="py-name">res</tt> <tt class="py-op">=</tt> <tt class="py-name">urllib2</tt><tt class="py-op">.</tt><tt class="py-name">urlopen</tt><tt class="py-op">(</tt><tt class="py-name">signed_url</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-211" class="py-name" targets="Method scapi.json.JsonReader.read()=scapi.json.JsonReader-class.html#read,Function scapi.json.read()=scapi.json-module.html#read"><a title="scapi.json.JsonReader.read -scapi.json.read" class="py-name" href="#" onclick="return doclink('link-211', 'read', 'link-211');">read</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L465"></a><tt class="py-lineno">465</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-string">"oauth_nonce"</tt> <tt class="py-keyword">in</tt> <tt class="py-name">res</tt> </tt> -</div><a name="L466"></a><tt class="py-lineno">466</tt> <tt class="py-line"> </tt> -<a name="L467"></a><tt class="py-lineno">467</tt> <tt class="py-line"> </tt> -<a name="SCAPITests.test_streaming"></a><div id="SCAPITests.test_streaming-def"><a name="L468"></a><tt class="py-lineno">468</tt> <a class="py-toggle" href="#" id="SCAPITests.test_streaming-toggle" onclick="return toggle('SCAPITests.test_streaming');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.tests.scapi_tests.SCAPITests-class.html#test_streaming">test_streaming</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="SCAPITests.test_streaming-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SCAPITests.test_streaming-expanded"><a name="L469"></a><tt class="py-lineno">469</tt> <tt class="py-line"> <tt class="py-name">sca</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-212" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.root" class="py-name" href="#" onclick="return doclink('link-212', 'root', 'link-77');">root</a></tt> </tt> -<a name="L470"></a><tt class="py-lineno">470</tt> <tt class="py-line"> </tt> -<a name="L471"></a><tt class="py-lineno">471</tt> <tt class="py-line"> <tt class="py-name">track</tt> <tt class="py-op">=</tt> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt class="py-name">tracks</tt><tt class="py-op">(</tt><tt class="py-name">params</tt><tt class="py-op">=</tt><tt class="py-op">{</tt> </tt> -<a name="L472"></a><tt class="py-lineno">472</tt> <tt class="py-line"> <tt class="py-string">"filter"</tt> <tt class="py-op">:</tt> <tt class="py-string">"streamable"</tt><tt class="py-op">,</tt> </tt> -<a name="L473"></a><tt class="py-lineno">473</tt> <tt class="py-line"> <tt class="py-op">}</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-213" class="py-name"><a title="scapi.json._StringGenerator.next" class="py-name" href="#" onclick="return doclink('link-213', 'next', 'link-150');">next</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L474"></a><tt class="py-lineno">474</tt> <tt class="py-line"> </tt> -<a name="L475"></a><tt class="py-lineno">475</tt> <tt class="py-line"> </tt> -<a name="L476"></a><tt class="py-lineno">476</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">track</tt><tt class="py-op">,</tt> <tt id="link-214" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-214', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-215" class="py-name"><a title="scapi.Track" class="py-name" href="#" onclick="return doclink('link-215', 'Track', 'link-85');">Track</a></tt><tt class="py-op">)</tt> </tt> -<a name="L477"></a><tt class="py-lineno">477</tt> <tt class="py-line"> </tt> -<a name="L478"></a><tt class="py-lineno">478</tt> <tt class="py-line"> <tt class="py-name">stream_url</tt> <tt class="py-op">=</tt> <tt class="py-name">track</tt><tt class="py-op">.</tt><tt class="py-name">stream_url</tt> </tt> -<a name="L479"></a><tt class="py-lineno">479</tt> <tt class="py-line"> </tt> -<a name="L480"></a><tt class="py-lineno">480</tt> <tt class="py-line"> <tt class="py-name">signed_url</tt> <tt class="py-op">=</tt> <tt class="py-name">track</tt><tt class="py-op">.</tt><tt id="link-216" class="py-name"><a title="scapi.Scope.oauth_sign_get_request" class="py-name" href="#" onclick="return doclink('link-216', 'oauth_sign_get_request', 'link-210');">oauth_sign_get_request</a></tt><tt class="py-op">(</tt><tt class="py-name">stream_url</tt><tt class="py-op">)</tt> </tt> -</div><a name="L481"></a><tt class="py-lineno">481</tt> <tt class="py-line"> </tt> -<a name="L482"></a><tt class="py-lineno">482</tt> <tt class="py-line"> </tt> -<a name="SCAPITests.test_downloadable"></a><div id="SCAPITests.test_downloadable-def"><a name="L483"></a><tt class="py-lineno">483</tt> <a class="py-toggle" href="#" id="SCAPITests.test_downloadable-toggle" onclick="return toggle('SCAPITests.test_downloadable');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.tests.scapi_tests.SCAPITests-class.html#test_downloadable">test_downloadable</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="SCAPITests.test_downloadable-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SCAPITests.test_downloadable-expanded"><a name="L484"></a><tt class="py-lineno">484</tt> <tt class="py-line"> <tt class="py-name">sca</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-217" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.root" class="py-name" href="#" onclick="return doclink('link-217', 'root', 'link-77');">root</a></tt> </tt> -<a name="L485"></a><tt class="py-lineno">485</tt> <tt class="py-line"> </tt> -<a name="L486"></a><tt class="py-lineno">486</tt> <tt class="py-line"> <tt class="py-name">track</tt> <tt class="py-op">=</tt> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt class="py-name">tracks</tt><tt class="py-op">(</tt><tt class="py-name">params</tt><tt class="py-op">=</tt><tt class="py-op">{</tt> </tt> -<a name="L487"></a><tt class="py-lineno">487</tt> <tt class="py-line"> <tt class="py-string">"filter"</tt> <tt class="py-op">:</tt> <tt class="py-string">"downloadable"</tt><tt class="py-op">,</tt> </tt> -<a name="L488"></a><tt class="py-lineno">488</tt> <tt class="py-line"> <tt class="py-op">}</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-218" class="py-name"><a title="scapi.json._StringGenerator.next" class="py-name" href="#" onclick="return doclink('link-218', 'next', 'link-150');">next</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L489"></a><tt class="py-lineno">489</tt> <tt class="py-line"> </tt> -<a name="L490"></a><tt class="py-lineno">490</tt> <tt class="py-line"> </tt> -<a name="L491"></a><tt class="py-lineno">491</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">track</tt><tt class="py-op">,</tt> <tt id="link-219" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-219', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-220" class="py-name"><a title="scapi.Track" class="py-name" href="#" onclick="return doclink('link-220', 'Track', 'link-85');">Track</a></tt><tt class="py-op">)</tt> </tt> -<a name="L492"></a><tt class="py-lineno">492</tt> <tt class="py-line"> </tt> -<a name="L493"></a><tt class="py-lineno">493</tt> <tt class="py-line"> <tt class="py-name">download_url</tt> <tt class="py-op">=</tt> <tt class="py-name">track</tt><tt class="py-op">.</tt><tt class="py-name">download_url</tt> </tt> -<a name="L494"></a><tt class="py-lineno">494</tt> <tt class="py-line"> </tt> -<a name="L495"></a><tt class="py-lineno">495</tt> <tt class="py-line"> <tt class="py-name">signed_url</tt> <tt class="py-op">=</tt> <tt class="py-name">track</tt><tt class="py-op">.</tt><tt id="link-221" class="py-name"><a title="scapi.Scope.oauth_sign_get_request" class="py-name" href="#" onclick="return doclink('link-221', 'oauth_sign_get_request', 'link-210');">oauth_sign_get_request</a></tt><tt class="py-op">(</tt><tt class="py-name">download_url</tt><tt class="py-op">)</tt> </tt> -<a name="L496"></a><tt class="py-lineno">496</tt> <tt class="py-line"> </tt> -<a name="L497"></a><tt class="py-lineno">497</tt> <tt class="py-line"> <tt class="py-name">data</tt> <tt class="py-op">=</tt> <tt class="py-name">urllib2</tt><tt class="py-op">.</tt><tt class="py-name">urlopen</tt><tt class="py-op">(</tt><tt class="py-name">signed_url</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-222" class="py-name"><a title="scapi.json.JsonReader.read -scapi.json.read" class="py-name" href="#" onclick="return doclink('link-222', 'read', 'link-211');">read</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L498"></a><tt class="py-lineno">498</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">data</tt> </tt> -</div><a name="L499"></a><tt class="py-lineno">499</tt> <tt class="py-line"> </tt> -<a name="L500"></a><tt class="py-lineno">500</tt> <tt class="py-line"> </tt> -<a name="L501"></a><tt class="py-lineno">501</tt> <tt class="py-line"> </tt> -<a name="SCAPITests.test_modifying_playlists"></a><div id="SCAPITests.test_modifying_playlists-def"><a name="L502"></a><tt class="py-lineno">502</tt> <a class="py-toggle" href="#" id="SCAPITests.test_modifying_playlists-toggle" onclick="return toggle('SCAPITests.test_modifying_playlists');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.tests.scapi_tests.SCAPITests-class.html#test_modifying_playlists">test_modifying_playlists</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="SCAPITests.test_modifying_playlists-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SCAPITests.test_modifying_playlists-expanded"><a name="L503"></a><tt class="py-lineno">503</tt> <tt class="py-line"> <tt class="py-name">sca</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-223" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.root" class="py-name" href="#" onclick="return doclink('link-223', 'root', 'link-77');">root</a></tt> </tt> -<a name="L504"></a><tt class="py-lineno">504</tt> <tt class="py-line"> </tt> -<a name="L505"></a><tt class="py-lineno">505</tt> <tt class="py-line"> <tt class="py-name">me</tt> <tt class="py-op">=</tt> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt class="py-name">me</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L506"></a><tt class="py-lineno">506</tt> <tt class="py-line"> <tt class="py-name">my_tracks</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">me</tt><tt class="py-op">.</tt><tt class="py-name">tracks</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L507"></a><tt class="py-lineno">507</tt> <tt class="py-line"> </tt> -<a name="L508"></a><tt class="py-lineno">508</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">my_tracks</tt> </tt> -<a name="L509"></a><tt class="py-lineno">509</tt> <tt class="py-line"> </tt> -<a name="L510"></a><tt class="py-lineno">510</tt> <tt class="py-line"> <tt class="py-name">playlist</tt> <tt class="py-op">=</tt> <tt class="py-name">me</tt><tt class="py-op">.</tt><tt class="py-name">playlists</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-224" class="py-name"><a title="scapi.json._StringGenerator.next" class="py-name" href="#" onclick="return doclink('link-224', 'next', 'link-150');">next</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L511"></a><tt class="py-lineno">511</tt> <tt class="py-line"> <tt class="py-name">playlist</tt> <tt class="py-op">=</tt> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt id="link-225" class="py-name"><a title="scapi.Playlist" class="py-name" href="#" onclick="return doclink('link-225', 'Playlist', 'link-195');">Playlist</a></tt><tt class="py-op">.</tt><tt id="link-226" class="py-name"><a title="scapi.RESTBase.get" class="py-name" href="#" onclick="return doclink('link-226', 'get', 'link-20');">get</a></tt><tt class="py-op">(</tt><tt class="py-name">playlist</tt><tt class="py-op">.</tt><tt class="py-name">id</tt><tt class="py-op">)</tt> </tt> -<a name="L512"></a><tt class="py-lineno">512</tt> <tt class="py-line"> </tt> -<a name="L513"></a><tt class="py-lineno">513</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">playlist</tt><tt class="py-op">,</tt> <tt id="link-227" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-227', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-228" class="py-name"><a title="scapi.Playlist" class="py-name" href="#" onclick="return doclink('link-228', 'Playlist', 'link-195');">Playlist</a></tt><tt class="py-op">)</tt> </tt> -<a name="L514"></a><tt class="py-lineno">514</tt> <tt class="py-line"> </tt> -<a name="L515"></a><tt class="py-lineno">515</tt> <tt class="py-line"> <tt class="py-name">pl_tracks</tt> <tt class="py-op">=</tt> <tt class="py-name">playlist</tt><tt class="py-op">.</tt><tt class="py-name">tracks</tt> </tt> -<a name="L516"></a><tt class="py-lineno">516</tt> <tt class="py-line"> </tt> -<a name="L517"></a><tt class="py-lineno">517</tt> <tt class="py-line"> <tt class="py-name">playlist</tt><tt class="py-op">.</tt><tt class="py-name">title</tt> <tt class="py-op">=</tt> <tt class="py-string">"foobarbaz"</tt> </tt> -</div><a name="L518"></a><tt class="py-lineno">518</tt> <tt class="py-line"> </tt> -<a name="L519"></a><tt class="py-lineno">519</tt> <tt class="py-line"> </tt> -<a name="L520"></a><tt class="py-lineno">520</tt> <tt class="py-line"> </tt> -<a name="SCAPITests.test_track_deletion"></a><div id="SCAPITests.test_track_deletion-def"><a name="L521"></a><tt class="py-lineno">521</tt> <a class="py-toggle" href="#" id="SCAPITests.test_track_deletion-toggle" onclick="return toggle('SCAPITests.test_track_deletion');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.tests.scapi_tests.SCAPITests-class.html#test_track_deletion">test_track_deletion</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="SCAPITests.test_track_deletion-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SCAPITests.test_track_deletion-expanded"><a name="L522"></a><tt class="py-lineno">522</tt> <tt class="py-line"> <tt class="py-name">sca</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-229" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.root" class="py-name" href="#" onclick="return doclink('link-229', 'root', 'link-77');">root</a></tt> </tt> -<a name="L523"></a><tt class="py-lineno">523</tt> <tt class="py-line"> <tt class="py-name">track</tt> <tt class="py-op">=</tt> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt id="link-230" class="py-name"><a title="scapi.Track" class="py-name" href="#" onclick="return doclink('link-230', 'Track', 'link-85');">Track</a></tt><tt class="py-op">.</tt><tt id="link-231" class="py-name"><a title="scapi.RESTBase.new" class="py-name" href="#" onclick="return doclink('link-231', 'new', 'link-115');">new</a></tt><tt class="py-op">(</tt><tt class="py-name">title</tt><tt class="py-op">=</tt><tt class="py-string">'bar'</tt><tt class="py-op">,</tt> <tt class="py-name">asset_data</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">data</tt><tt class="py-op">,</tt> </tt> -<a name="L524"></a><tt class="py-lineno">524</tt> <tt class="py-line"> <tt class="py-op">)</tt> </tt> -<a name="L525"></a><tt class="py-lineno">525</tt> <tt class="py-line"> </tt> -<a name="L526"></a><tt class="py-lineno">526</tt> <tt class="py-line"> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt class="py-name">tracks</tt><tt class="py-op">.</tt><tt class="py-name">remove</tt><tt class="py-op">(</tt><tt class="py-name">track</tt><tt class="py-op">)</tt> </tt> -</div><a name="L527"></a><tt class="py-lineno">527</tt> <tt class="py-line"> </tt> -<a name="L528"></a><tt class="py-lineno">528</tt> <tt class="py-line"> </tt> -<a name="L529"></a><tt class="py-lineno">529</tt> <tt class="py-line"> </tt> -<a name="SCAPITests.test_track_creation_with_updated_artwork"></a><div id="SCAPITests.test_track_creation_with_updated_artwork-def"><a name="L530"></a><tt class="py-lineno">530</tt> <a class="py-toggle" href="#" id="SCAPITests.test_track_creation_with_updated_artwork-toggle" onclick="return toggle('SCAPITests.test_track_creation_with_updated_artwork');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.tests.scapi_tests.SCAPITests-class.html#test_track_creation_with_updated_artwork">test_track_creation_with_updated_artwork</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="SCAPITests.test_track_creation_with_updated_artwork-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SCAPITests.test_track_creation_with_updated_artwork-expanded"><a name="L531"></a><tt class="py-lineno">531</tt> <tt class="py-line"> <tt class="py-name">sca</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-232" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.root" class="py-name" href="#" onclick="return doclink('link-232', 'root', 'link-77');">root</a></tt> </tt> -<a name="L532"></a><tt class="py-lineno">532</tt> <tt class="py-line"> <tt class="py-name">track</tt> <tt class="py-op">=</tt> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt id="link-233" class="py-name"><a title="scapi.Track" class="py-name" href="#" onclick="return doclink('link-233', 'Track', 'link-85');">Track</a></tt><tt class="py-op">.</tt><tt id="link-234" class="py-name"><a title="scapi.RESTBase.new" class="py-name" href="#" onclick="return doclink('link-234', 'new', 'link-115');">new</a></tt><tt class="py-op">(</tt><tt class="py-name">title</tt><tt class="py-op">=</tt><tt class="py-string">'bar'</tt><tt class="py-op">,</tt> </tt> -<a name="L533"></a><tt class="py-lineno">533</tt> <tt class="py-line"> <tt class="py-name">asset_data</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">data</tt><tt class="py-op">,</tt> </tt> -<a name="L534"></a><tt class="py-lineno">534</tt> <tt class="py-line"> <tt class="py-op">)</tt> </tt> -<a name="L535"></a><tt class="py-lineno">535</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">track</tt><tt class="py-op">,</tt> <tt id="link-235" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-235', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-236" class="py-name"><a title="scapi.Track" class="py-name" href="#" onclick="return doclink('link-236', 'Track', 'link-85');">Track</a></tt><tt class="py-op">)</tt> </tt> -<a name="L536"></a><tt class="py-lineno">536</tt> <tt class="py-line"> </tt> -<a name="L537"></a><tt class="py-lineno">537</tt> <tt class="py-line"> <tt class="py-name">track</tt><tt class="py-op">.</tt><tt class="py-name">artwork_data</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">artwork_data</tt> </tt> -</div></div><a name="L538"></a><tt class="py-lineno">538</tt> <tt class="py-line"> </tt><script type="text/javascript"> -<!-- -expandto(location.href); -// --> -</script> -</pre> -<br /> -<!-- ==================== NAVIGATION BAR ==================== --> -<table class="navbar" border="0" width="100%" cellpadding="0" - bgcolor="#a0c0ff" cellspacing="0"> - <tr valign="middle"> - <!-- Home link --> - <th> <a - href="scapi-module.html">Home</a> </th> - - <!-- Tree link --> - <th> <a - href="module-tree.html">Trees</a> </th> - - <!-- Index link --> - <th> <a - href="identifier-index.html">Indices</a> </th> - - <!-- Help link --> - <th> <a - href="help.html">Help</a> </th> - - <!-- Project homepage --> - <th class="navbar" align="right" width="100%"> - <table border="0" cellpadding="0" cellspacing="0"> - <tr><th class="navbar" align="center" - >SoundCloud API</th> - </tr></table></th> - </tr> -</table> -<table border="0" cellpadding="0" cellspacing="0" width="100%%"> - <tr> - <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Thu Sep 10 00:58:50 2009 - </td> - <td align="right" class="footer"> - <a target="mainFrame" href="http://epydoc.sourceforge.net" - >http://epydoc.sourceforge.net</a> - </td> - </tr> -</table> - -<script type="text/javascript"> - <!-- - // Private objects are initially displayed (because if - // javascript is turned off then we want them to be - // visible); but by default, we want to hide them. So hide - // them unless we have a cookie that says to show them. - checkCookie(); - // --> -</script> -</body> -</html> diff --git a/python_apps/soundcloud-api/docs/api/scapi.tests.scapi_tests.SCAPITests-class.html b/python_apps/soundcloud-api/docs/api/scapi.tests.scapi_tests.SCAPITests-class.html deleted file mode 100644 index 0c5a5a449..000000000 --- a/python_apps/soundcloud-api/docs/api/scapi.tests.scapi_tests.SCAPITests-class.html +++ /dev/null @@ -1,1025 +0,0 @@ -<?xml version="1.0" encoding="ascii"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <title>scapi.tests.scapi_tests.SCAPITests</title> - <link rel="stylesheet" href="epydoc.css" type="text/css" /> - <script type="text/javascript" src="epydoc.js"></script> -</head> - -<body bgcolor="white" text="black" link="blue" vlink="#204080" - alink="#204080"> -<!-- ==================== NAVIGATION BAR ==================== --> -<table class="navbar" border="0" width="100%" cellpadding="0" - bgcolor="#a0c0ff" cellspacing="0"> - <tr valign="middle"> - <!-- Home link --> - <th> <a - href="scapi-module.html">Home</a> </th> - - <!-- Tree link --> - <th> <a - href="module-tree.html">Trees</a> </th> - - <!-- Index link --> - <th> <a - href="identifier-index.html">Indices</a> </th> - - <!-- Help link --> - <th> <a - href="help.html">Help</a> </th> - - <!-- Project homepage --> - <th class="navbar" align="right" width="100%"> - <table border="0" cellpadding="0" cellspacing="0"> - <tr><th class="navbar" align="center" - >SoundCloud API</th> - </tr></table></th> - </tr> -</table> -<table width="100%" cellpadding="0" cellspacing="0"> - <tr valign="top"> - <td width="100%"> - <span class="breadcrumbs"> - <a href="scapi-module.html">Package scapi</a> :: - <a href="scapi.tests-module.html">Package tests</a> :: - <a href="scapi.tests.scapi_tests-module.html">Module scapi_tests</a> :: - Class SCAPITests - </span> - </td> - <td> - <table cellpadding="0" cellspacing="0"> - <!-- hide/show private --> - <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink" - onclick="toggle_private();">hide private</a>]</span></td></tr> - <tr><td align="right"><span class="options" - >[<a href="frames.html" target="_top">frames</a - >] | <a href="scapi.tests.scapi_tests.SCAPITests-class.html" - target="_top">no frames</a>]</span></td></tr> - </table> - </td> - </tr> -</table> -<!-- ==================== CLASS DESCRIPTION ==================== --> -<h1 class="epydoc">Class SCAPITests</h1><p class="nomargin-top"><span class="codelink"><a href="scapi.tests.scapi_tests-pysrc.html#SCAPITests">source code</a></span></p> -<pre class="base-tree"> - object --+ - | -unittest.TestCase --+ - | - <strong class="uidshort">SCAPITests</strong> -</pre> - -<hr /> -<!-- ==================== NESTED CLASSES ==================== --> -<a name="section-NestedClasses"></a> -<table class="summary" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr bgcolor="#70b0f0" class="table-header"> - <td colspan="2" class="table-header"> - <table border="0" cellpadding="0" cellspacing="0" width="100%"> - <tr valign="top"> - <td align="left"><span class="table-header">Nested Classes</span></td> - <td align="right" valign="top" - ><span class="options">[<a href="#section-NestedClasses" - class="privatelink" onclick="toggle_private();" - >hide private</a>]</span></td> - </tr> - </table> - </td> -</tr> - <tr> - <td colspan="2" class="summary"> - <p class="indent-wrapped-lines"><b>Inherited from <code>unittest.TestCase</code></b>: - <code><a href="exceptions.AssertionError-class.html">failureException</a></code> - </p> - </td> - </tr> -</table> -<!-- ==================== INSTANCE METHODS ==================== --> -<a name="section-InstanceMethods"></a> -<table class="summary" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr bgcolor="#70b0f0" class="table-header"> - <td colspan="2" class="table-header"> - <table border="0" cellpadding="0" cellspacing="0" width="100%"> - <tr valign="top"> - <td align="left"><span class="table-header">Instance Methods</span></td> - <td align="right" valign="top" - ><span class="options">[<a href="#section-InstanceMethods" - class="privatelink" onclick="toggle_private();" - >hide private</a>]</span></td> - </tr> - </table> - </td> -</tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a href="scapi.tests.scapi_tests.SCAPITests-class.html#setUp" class="summary-sig-name">setUp</a>(<span class="summary-sig-arg">self</span>)</span><br /> - Hook method for setting up the test fixture before exercising it.</td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi.tests.scapi_tests-pysrc.html#SCAPITests.setUp">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> -<tr class="private"> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a href="scapi.tests.scapi_tests.SCAPITests-class.html#_load_config" class="summary-sig-name" onclick="show_private();">_load_config</a>(<span class="summary-sig-arg">self</span>)</span><br /> - Loads the configuration by looking from</td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi.tests.scapi_tests-pysrc.html#SCAPITests._load_config">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a href="scapi.tests.scapi_tests.SCAPITests-class.html#test_connect" class="summary-sig-name">test_connect</a>(<span class="summary-sig-arg">self</span>)</span><br /> - test_connect</td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi.tests.scapi_tests-pysrc.html#SCAPITests.test_connect">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a name="test_access_token_acquisition"></a><span class="summary-sig-name">test_access_token_acquisition</span>(<span class="summary-sig-arg">self</span>)</span><br /> - This test is commented out because it needs user-interaction.</td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi.tests.scapi_tests-pysrc.html#SCAPITests.test_access_token_acquisition">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a name="test_track_creation"></a><span class="summary-sig-name">test_track_creation</span>(<span class="summary-sig-arg">self</span>)</span></td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi.tests.scapi_tests-pysrc.html#SCAPITests.test_track_creation">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a name="test_track_update"></a><span class="summary-sig-name">test_track_update</span>(<span class="summary-sig-arg">self</span>)</span></td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi.tests.scapi_tests-pysrc.html#SCAPITests.test_track_update">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a name="test_scoped_track_creation"></a><span class="summary-sig-name">test_scoped_track_creation</span>(<span class="summary-sig-arg">self</span>)</span></td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi.tests.scapi_tests-pysrc.html#SCAPITests.test_scoped_track_creation">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a name="test_upload"></a><span class="summary-sig-name">test_upload</span>(<span class="summary-sig-arg">self</span>)</span></td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi.tests.scapi_tests-pysrc.html#SCAPITests.test_upload">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a name="test_contact_list"></a><span class="summary-sig-name">test_contact_list</span>(<span class="summary-sig-arg">self</span>)</span></td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi.tests.scapi_tests-pysrc.html#SCAPITests.test_contact_list">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a name="test_permissions"></a><span class="summary-sig-name">test_permissions</span>(<span class="summary-sig-arg">self</span>)</span></td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi.tests.scapi_tests-pysrc.html#SCAPITests.test_permissions">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a name="test_setting_permissions"></a><span class="summary-sig-name">test_setting_permissions</span>(<span class="summary-sig-arg">self</span>)</span></td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi.tests.scapi_tests-pysrc.html#SCAPITests.test_setting_permissions">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a name="test_setting_comments"></a><span class="summary-sig-name">test_setting_comments</span>(<span class="summary-sig-arg">self</span>)</span></td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi.tests.scapi_tests-pysrc.html#SCAPITests.test_setting_comments">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a name="test_setting_comments_the_way_shawn_says_its_correct"></a><span class="summary-sig-name">test_setting_comments_the_way_shawn_says_its_correct</span>(<span class="summary-sig-arg">self</span>)</span></td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi.tests.scapi_tests-pysrc.html#SCAPITests.test_setting_comments_the_way_shawn_says_its_correct">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a name="test_contact_add_and_removal"></a><span class="summary-sig-name">test_contact_add_and_removal</span>(<span class="summary-sig-arg">self</span>)</span></td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi.tests.scapi_tests-pysrc.html#SCAPITests.test_contact_add_and_removal">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a name="test_favorites"></a><span class="summary-sig-name">test_favorites</span>(<span class="summary-sig-arg">self</span>)</span></td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi.tests.scapi_tests-pysrc.html#SCAPITests.test_favorites">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a name="test_large_list"></a><span class="summary-sig-name">test_large_list</span>(<span class="summary-sig-arg">self</span>)</span></td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi.tests.scapi_tests-pysrc.html#SCAPITests.test_large_list">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a name="test_filtered_list"></a><span class="summary-sig-name">test_filtered_list</span>(<span class="summary-sig-arg">self</span>)</span></td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi.tests.scapi_tests-pysrc.html#SCAPITests.test_filtered_list">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a name="test_events"></a><span class="summary-sig-name">test_events</span>(<span class="summary-sig-arg">self</span>)</span></td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi.tests.scapi_tests-pysrc.html#SCAPITests.test_events">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a name="test_me_having_stress"></a><span class="summary-sig-name">test_me_having_stress</span>(<span class="summary-sig-arg">self</span>)</span></td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi.tests.scapi_tests-pysrc.html#SCAPITests.test_me_having_stress">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a name="test_non_global_api"></a><span class="summary-sig-name">test_non_global_api</span>(<span class="summary-sig-arg">self</span>)</span></td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi.tests.scapi_tests-pysrc.html#SCAPITests.test_non_global_api">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a name="test_playlists"></a><span class="summary-sig-name">test_playlists</span>(<span class="summary-sig-arg">self</span>)</span></td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi.tests.scapi_tests-pysrc.html#SCAPITests.test_playlists">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a name="test_playlist_creation"></a><span class="summary-sig-name">test_playlist_creation</span>(<span class="summary-sig-arg">self</span>)</span></td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi.tests.scapi_tests-pysrc.html#SCAPITests.test_playlist_creation">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a name="test_groups"></a><span class="summary-sig-name">test_groups</span>(<span class="summary-sig-arg">self</span>)</span></td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi.tests.scapi_tests-pysrc.html#SCAPITests.test_groups">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a name="test_track_creation_with_email_sharers"></a><span class="summary-sig-name">test_track_creation_with_email_sharers</span>(<span class="summary-sig-arg">self</span>)</span></td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi.tests.scapi_tests-pysrc.html#SCAPITests.test_track_creation_with_email_sharers">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a name="test_track_creation_with_artwork"></a><span class="summary-sig-name">test_track_creation_with_artwork</span>(<span class="summary-sig-arg">self</span>)</span></td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi.tests.scapi_tests-pysrc.html#SCAPITests.test_track_creation_with_artwork">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a name="test_oauth_get_signing"></a><span class="summary-sig-name">test_oauth_get_signing</span>(<span class="summary-sig-arg">self</span>)</span></td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi.tests.scapi_tests-pysrc.html#SCAPITests.test_oauth_get_signing">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a name="test_streaming"></a><span class="summary-sig-name">test_streaming</span>(<span class="summary-sig-arg">self</span>)</span></td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi.tests.scapi_tests-pysrc.html#SCAPITests.test_streaming">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a name="test_downloadable"></a><span class="summary-sig-name">test_downloadable</span>(<span class="summary-sig-arg">self</span>)</span></td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi.tests.scapi_tests-pysrc.html#SCAPITests.test_downloadable">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a name="test_modifying_playlists"></a><span class="summary-sig-name">test_modifying_playlists</span>(<span class="summary-sig-arg">self</span>)</span></td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi.tests.scapi_tests-pysrc.html#SCAPITests.test_modifying_playlists">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a name="test_track_deletion"></a><span class="summary-sig-name">test_track_deletion</span>(<span class="summary-sig-arg">self</span>)</span></td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi.tests.scapi_tests-pysrc.html#SCAPITests.test_track_deletion">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a name="test_track_creation_with_updated_artwork"></a><span class="summary-sig-name">test_track_creation_with_updated_artwork</span>(<span class="summary-sig-arg">self</span>)</span></td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi.tests.scapi_tests-pysrc.html#SCAPITests.test_track_creation_with_updated_artwork">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> - <tr> - <td colspan="2" class="summary"> - <p class="indent-wrapped-lines"><b>Inherited from <code>unittest.TestCase</code></b>: - <code>__call__</code>, - <code>__init__</code>, - <code>__repr__</code>, - <code>__str__</code>, - <code>assertAlmostEqual</code>, - <code>assertAlmostEquals</code>, - <code>assertEqual</code>, - <code>assertEquals</code>, - <code>assertFalse</code>, - <code>assertNotAlmostEqual</code>, - <code>assertNotAlmostEquals</code>, - <code>assertNotEqual</code>, - <code>assertNotEquals</code>, - <code>assertRaises</code>, - <code>assertTrue</code>, - <code>assert_</code>, - <code>countTestCases</code>, - <code>debug</code>, - <code>defaultTestResult</code>, - <code>fail</code>, - <code>failIf</code>, - <code>failIfAlmostEqual</code>, - <code>failIfEqual</code>, - <code>failUnless</code>, - <code>failUnlessAlmostEqual</code>, - <code>failUnlessEqual</code>, - <code>failUnlessRaises</code>, - <code>id</code>, - <code>run</code>, - <code>shortDescription</code>, - <code>tearDown</code> - </p> - <div class="private"> <p class="indent-wrapped-lines"><b>Inherited from <code>unittest.TestCase</code></b> (private): - <code>_exc_info</code> - </p></div> - <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>: - <code>__delattr__</code>, - <code>__getattribute__</code>, - <code>__hash__</code>, - <code>__new__</code>, - <code>__reduce__</code>, - <code>__reduce_ex__</code>, - <code>__setattr__</code> - </p> - </td> - </tr> -</table> -<!-- ==================== CLASS VARIABLES ==================== --> -<a name="section-ClassVariables"></a> -<table class="summary" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr bgcolor="#70b0f0" class="table-header"> - <td colspan="2" class="table-header"> - <table border="0" cellpadding="0" cellspacing="0" width="100%"> - <tr valign="top"> - <td align="left"><span class="table-header">Class Variables</span></td> - <td align="right" valign="top" - ><span class="options">[<a href="#section-ClassVariables" - class="privatelink" onclick="toggle_private();" - >hide private</a>]</span></td> - </tr> - </table> - </td> -</tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <a name="CONFIG_NAME"></a><span class="summary-name">CONFIG_NAME</span> = <code title="'test.ini'"><code class="variable-quote">'</code><code class="variable-string">test.ini</code><code class="variable-quote">'</code></code> - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <a name="TOKEN"></a><span class="summary-name">TOKEN</span> = <code title="None">None</code> - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <a name="SECRET"></a><span class="summary-name">SECRET</span> = <code title="None">None</code> - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <a name="CONSUMER"></a><span class="summary-name">CONSUMER</span> = <code title="None">None</code> - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <a name="CONSUMER_SECRET"></a><span class="summary-name">CONSUMER_SECRET</span> = <code title="None">None</code> - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <a name="API_HOST"></a><span class="summary-name">API_HOST</span> = <code title="None">None</code> - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <a name="USER"></a><span class="summary-name">USER</span> = <code title="None">None</code> - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <a name="PASSWORD"></a><span class="summary-name">PASSWORD</span> = <code title="None">None</code> - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <a name="AUTHENTICATOR"></a><span class="summary-name">AUTHENTICATOR</span> = <code title="None">None</code> - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <a name="RUN_INTERACTIVE_TESTS"></a><span class="summary-name">RUN_INTERACTIVE_TESTS</span> = <code title="False">False</code> - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <a href="scapi.tests.scapi_tests.SCAPITests-class.html#CONFIGSPEC" class="summary-name">CONFIGSPEC</a> = <code title="''' -[api] -token=string -secret=string -consumer=string -consumer_secret=string -api_host=string -user=string -..."><code class="variable-quote">'</code><code class="variable-string">\n[api]\ntoken=string\nsecret=string\nconsumer=s</code><code class="variable-ellipsis">...</code></code> - </td> - </tr> -</table> -<!-- ==================== PROPERTIES ==================== --> -<a name="section-Properties"></a> -<table class="summary" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr bgcolor="#70b0f0" class="table-header"> - <td colspan="2" class="table-header"> - <table border="0" cellpadding="0" cellspacing="0" width="100%"> - <tr valign="top"> - <td align="left"><span class="table-header">Properties</span></td> - <td align="right" valign="top" - ><span class="options">[<a href="#section-Properties" - class="privatelink" onclick="toggle_private();" - >hide private</a>]</span></td> - </tr> - </table> - </td> -</tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <a href="scapi.tests.scapi_tests.SCAPITests-class.html#root" class="summary-name">root</a><br /> - Return the properly configured root-scope. - </td> - </tr> - <tr> - <td colspan="2" class="summary"> - <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>: - <code>__class__</code> - </p> - </td> - </tr> -</table> -<!-- ==================== METHOD DETAILS ==================== --> -<a name="section-MethodDetails"></a> -<table class="details" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr bgcolor="#70b0f0" class="table-header"> - <td colspan="2" class="table-header"> - <table border="0" cellpadding="0" cellspacing="0" width="100%"> - <tr valign="top"> - <td align="left"><span class="table-header">Method Details</span></td> - <td align="right" valign="top" - ><span class="options">[<a href="#section-MethodDetails" - class="privatelink" onclick="toggle_private();" - >hide private</a>]</span></td> - </tr> - </table> - </td> -</tr> -</table> -<a name="setUp"></a> -<div> -<table class="details" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr><td> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr valign="top"><td> - <h3 class="epydoc"><span class="sig"><span class="sig-name">setUp</span>(<span class="sig-arg">self</span>)</span> - </h3> - </td><td align="right" valign="top" - ><span class="codelink"><a href="scapi.tests.scapi_tests-pysrc.html#SCAPITests.setUp">source code</a></span> - </td> - </tr></table> - - <p>Hook method for setting up the test fixture before exercising it.</p> - <dl class="fields"> - <dt>Overrides: - unittest.TestCase.setUp - <dd><em class="note">(inherited documentation)</em></dd> - </dt> - </dl> -</td></tr></table> -</div> -<a name="_load_config"></a> -<div class="private"> -<table class="details" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr><td> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr valign="top"><td> - <h3 class="epydoc"><span class="sig"><span class="sig-name">_load_config</span>(<span class="sig-arg">self</span>)</span> - </h3> - </td><td align="right" valign="top" - ><span class="codelink"><a href="scapi.tests.scapi_tests-pysrc.html#SCAPITests._load_config">source code</a></span> - </td> - </tr></table> - - <p>Loads the configuration by looking from</p> - <ul> - <li> - the environment variable SCAPI_CONFIG - </li> - <li> - the installation location upwards until it finds test.ini - </li> - <li> - the current working directory upwards until it finds test.ini - </li> - </ul> - <p>Raises an error if there is no config found</p> - <dl class="fields"> - </dl> -</td></tr></table> -</div> -<a name="test_connect"></a> -<div> -<table class="details" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr><td> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr valign="top"><td> - <h3 class="epydoc"><span class="sig"><span class="sig-name">test_connect</span>(<span class="sig-arg">self</span>)</span> - </h3> - </td><td align="right" valign="top" - ><span class="codelink"><a href="scapi.tests.scapi_tests-pysrc.html#SCAPITests.test_connect">source code</a></span> - </td> - </tr></table> - - <p>test_connect</p> - <p>Tries to connect & performs some read-only operations.</p> - <dl class="fields"> - </dl> -</td></tr></table> -</div> -<br /> -<!-- ==================== CLASS VARIABLE DETAILS ==================== --> -<a name="section-ClassVariableDetails"></a> -<table class="details" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr bgcolor="#70b0f0" class="table-header"> - <td colspan="2" class="table-header"> - <table border="0" cellpadding="0" cellspacing="0" width="100%"> - <tr valign="top"> - <td align="left"><span class="table-header">Class Variable Details</span></td> - <td align="right" valign="top" - ><span class="options">[<a href="#section-ClassVariableDetails" - class="privatelink" onclick="toggle_private();" - >hide private</a>]</span></td> - </tr> - </table> - </td> -</tr> -</table> -<a name="CONFIGSPEC"></a> -<div> -<table class="details" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr><td> - <h3 class="epydoc">CONFIGSPEC</h3> - - <dl class="fields"> - </dl> - <dl class="fields"> - <dt>Value:</dt> - <dd><table><tr><td><pre class="variable"> -<code class="variable-quote">'''</code><code class="variable-string"></code> -<code class="variable-string">[api]</code> -<code class="variable-string">token=string</code> -<code class="variable-string">secret=string</code> -<code class="variable-string">consumer=string</code> -<code class="variable-string">consumer_secret=string</code> -<code class="variable-string">api_host=string</code> -<code class="variable-string">user=string</code> -<code class="variable-ellipsis">...</code> -</pre></td></tr></table> -</dd> - </dl> -</td></tr></table> -</div> -<br /> -<!-- ==================== PROPERTY DETAILS ==================== --> -<a name="section-PropertyDetails"></a> -<table class="details" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr bgcolor="#70b0f0" class="table-header"> - <td colspan="2" class="table-header"> - <table border="0" cellpadding="0" cellspacing="0" width="100%"> - <tr valign="top"> - <td align="left"><span class="table-header">Property Details</span></td> - <td align="right" valign="top" - ><span class="options">[<a href="#section-PropertyDetails" - class="privatelink" onclick="toggle_private();" - >hide private</a>]</span></td> - </tr> - </table> - </td> -</tr> -</table> -<a name="root"></a> -<div> -<table class="details" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr><td> - <h3 class="epydoc">root</h3> - <p>Return the properly configured root-scope.</p> - <dl class="fields"> - <dt>Get Method:</dt> - <dd class="value"><span class="summary-sig"><i>unreachable</i>.root(<span class="summary-sig-arg">self</span>)</span> - - Return the properly configured root-scope. - </dd> - </dl> -</td></tr></table> -</div> -<br /> -<!-- ==================== NAVIGATION BAR ==================== --> -<table class="navbar" border="0" width="100%" cellpadding="0" - bgcolor="#a0c0ff" cellspacing="0"> - <tr valign="middle"> - <!-- Home link --> - <th> <a - href="scapi-module.html">Home</a> </th> - - <!-- Tree link --> - <th> <a - href="module-tree.html">Trees</a> </th> - - <!-- Index link --> - <th> <a - href="identifier-index.html">Indices</a> </th> - - <!-- Help link --> - <th> <a - href="help.html">Help</a> </th> - - <!-- Project homepage --> - <th class="navbar" align="right" width="100%"> - <table border="0" cellpadding="0" cellspacing="0"> - <tr><th class="navbar" align="center" - >SoundCloud API</th> - </tr></table></th> - </tr> -</table> -<table border="0" cellpadding="0" cellspacing="0" width="100%%"> - <tr> - <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Thu Sep 10 00:58:49 2009 - </td> - <td align="right" class="footer"> - <a target="mainFrame" href="http://epydoc.sourceforge.net" - >http://epydoc.sourceforge.net</a> - </td> - </tr> -</table> - -<script type="text/javascript"> - <!-- - // Private objects are initially displayed (because if - // javascript is turned off then we want them to be - // visible); but by default, we want to hide them. So hide - // them unless we have a cookie that says to show them. - checkCookie(); - // --> -</script> -</body> -</html> diff --git a/python_apps/soundcloud-api/docs/api/scapi.tests.test_connect-module.html b/python_apps/soundcloud-api/docs/api/scapi.tests.test_connect-module.html deleted file mode 100644 index e4780ff79..000000000 --- a/python_apps/soundcloud-api/docs/api/scapi.tests.test_connect-module.html +++ /dev/null @@ -1,586 +0,0 @@ -<?xml version="1.0" encoding="ascii"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <title>scapi.tests.test_connect</title> - <link rel="stylesheet" href="epydoc.css" type="text/css" /> - <script type="text/javascript" src="epydoc.js"></script> -</head> - -<body bgcolor="white" text="black" link="blue" vlink="#204080" - alink="#204080"> -<!-- ==================== NAVIGATION BAR ==================== --> -<table class="navbar" border="0" width="100%" cellpadding="0" - bgcolor="#a0c0ff" cellspacing="0"> - <tr valign="middle"> - <!-- Home link --> - <th> <a - href="scapi-module.html">Home</a> </th> - - <!-- Tree link --> - <th> <a - href="module-tree.html">Trees</a> </th> - - <!-- Index link --> - <th> <a - href="identifier-index.html">Indices</a> </th> - - <!-- Help link --> - <th> <a - href="help.html">Help</a> </th> - - <!-- Project homepage --> - <th class="navbar" align="right" width="100%"> - <table border="0" cellpadding="0" cellspacing="0"> - <tr><th class="navbar" align="center" - >SoundCloud API</th> - </tr></table></th> - </tr> -</table> -<table width="100%" cellpadding="0" cellspacing="0"> - <tr valign="top"> - <td width="100%"> - <span class="breadcrumbs"> - <a href="scapi-module.html">Package scapi</a> :: - <a href="scapi.tests-module.html">Package tests</a> :: - Module test_connect - </span> - </td> - <td> - <table cellpadding="0" cellspacing="0"> - <!-- hide/show private --> - <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink" - onclick="toggle_private();">hide private</a>]</span></td></tr> - <tr><td align="right"><span class="options" - >[<a href="frames.html" target="_top">frames</a - >] | <a href="scapi.tests.test_connect-module.html" - target="_top">no frames</a>]</span></td></tr> - </table> - </td> - </tr> -</table> -<!-- ==================== MODULE DESCRIPTION ==================== --> -<h1 class="epydoc">Module test_connect</h1><p class="nomargin-top"><span class="codelink"><a href="scapi.tests.test_connect-pysrc.html">source code</a></span></p> -<!-- ==================== FUNCTIONS ==================== --> -<a name="section-Functions"></a> -<table class="summary" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr bgcolor="#70b0f0" class="table-header"> - <td colspan="2" class="table-header"> - <table border="0" cellpadding="0" cellspacing="0" width="100%"> - <tr valign="top"> - <td align="left"><span class="table-header">Functions</span></td> - <td align="right" valign="top" - ><span class="options">[<a href="#section-Functions" - class="privatelink" onclick="toggle_private();" - >hide private</a>]</span></td> - </tr> - </table> - </td> -</tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a name="setup"></a><span class="summary-sig-name">setup</span>()</span></td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi.tests.test_connect-pysrc.html#setup">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a name="load_config"></a><span class="summary-sig-name">load_config</span>(<span class="summary-sig-arg">config_name</span>=<span class="summary-sig-default">None</span>)</span></td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi.tests.test_connect-pysrc.html#load_config">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a name="test_load_config"></a><span class="summary-sig-name">test_load_config</span>()</span></td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi.tests.test_connect-pysrc.html#test_load_config">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a name="test_connect"></a><span class="summary-sig-name">test_connect</span>()</span></td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi.tests.test_connect-pysrc.html#test_connect">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a name="test_access_token_acquisition"></a><span class="summary-sig-name">test_access_token_acquisition</span>()</span><br /> - This test is commented out because it needs user-interaction.</td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi.tests.test_connect-pysrc.html#test_access_token_acquisition">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a name="test_track_creation"></a><span class="summary-sig-name">test_track_creation</span>()</span></td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi.tests.test_connect-pysrc.html#test_track_creation">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a name="test_track_update"></a><span class="summary-sig-name">test_track_update</span>()</span></td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi.tests.test_connect-pysrc.html#test_track_update">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a name="test_scoped_track_creation"></a><span class="summary-sig-name">test_scoped_track_creation</span>()</span></td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi.tests.test_connect-pysrc.html#test_scoped_track_creation">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a name="test_upload"></a><span class="summary-sig-name">test_upload</span>()</span></td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi.tests.test_connect-pysrc.html#test_upload">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a name="test_contact_list"></a><span class="summary-sig-name">test_contact_list</span>()</span></td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi.tests.test_connect-pysrc.html#test_contact_list">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a name="test_permissions"></a><span class="summary-sig-name">test_permissions</span>()</span></td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi.tests.test_connect-pysrc.html#test_permissions">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a name="test_setting_permissions"></a><span class="summary-sig-name">test_setting_permissions</span>()</span></td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi.tests.test_connect-pysrc.html#test_setting_permissions">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a name="test_setting_comments"></a><span class="summary-sig-name">test_setting_comments</span>()</span></td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi.tests.test_connect-pysrc.html#test_setting_comments">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a name="test_setting_comments_the_way_shawn_says_its_correct"></a><span class="summary-sig-name">test_setting_comments_the_way_shawn_says_its_correct</span>()</span></td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi.tests.test_connect-pysrc.html#test_setting_comments_the_way_shawn_says_its_correct">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a name="test_contact_add_and_removal"></a><span class="summary-sig-name">test_contact_add_and_removal</span>()</span></td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi.tests.test_connect-pysrc.html#test_contact_add_and_removal">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a name="test_favorites"></a><span class="summary-sig-name">test_favorites</span>()</span></td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi.tests.test_connect-pysrc.html#test_favorites">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a name="test_large_list"></a><span class="summary-sig-name">test_large_list</span>()</span></td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi.tests.test_connect-pysrc.html#test_large_list">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a name="test_events"></a><span class="summary-sig-name">test_events</span>()</span></td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi.tests.test_connect-pysrc.html#test_events">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a name="test_me_having_stress"></a><span class="summary-sig-name">test_me_having_stress</span>()</span></td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi.tests.test_connect-pysrc.html#test_me_having_stress">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a name="test_non_global_api"></a><span class="summary-sig-name">test_non_global_api</span>()</span></td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi.tests.test_connect-pysrc.html#test_non_global_api">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a name="test_playlists"></a><span class="summary-sig-name">test_playlists</span>()</span></td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi.tests.test_connect-pysrc.html#test_playlists">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> -</table> -<!-- ==================== VARIABLES ==================== --> -<a name="section-Variables"></a> -<table class="summary" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr bgcolor="#70b0f0" class="table-header"> - <td colspan="2" class="table-header"> - <table border="0" cellpadding="0" cellspacing="0" width="100%"> - <tr valign="top"> - <td align="left"><span class="table-header">Variables</span></td> - <td align="right" valign="top" - ><span class="options">[<a href="#section-Variables" - class="privatelink" onclick="toggle_private();" - >hide private</a>]</span></td> - </tr> - </table> - </td> -</tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <a name="logger"></a><span class="summary-name">logger</span> = <code title="logging.getLogger(__name__)">logging.getLogger(__name__)</code> - </td> - </tr> -<tr class="private"> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <a name="_logger"></a><span class="summary-name">_logger</span> = <code title="logging.getLogger("scapi")">logging.getLogger("scapi")</code> - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <a name="RUN_INTERACTIVE_TESTS"></a><span class="summary-name">RUN_INTERACTIVE_TESTS</span> = <code title="False">False</code> - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <a name="USE_OAUTH"></a><span class="summary-name">USE_OAUTH</span> = <code title="True">True</code> - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <a name="TOKEN"></a><span class="summary-name">TOKEN</span> = <code title="'FjNE9aRTg8kpxuOjzwsX8Q'"><code class="variable-quote">'</code><code class="variable-string">FjNE9aRTg8kpxuOjzwsX8Q</code><code class="variable-quote">'</code></code> - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <a name="SECRET"></a><span class="summary-name">SECRET</span> = <code title="'NP5PGoyKcQv64E0aZgV4CRNzHfPwR4QghrWoqEgEE'"><code class="variable-quote">'</code><code class="variable-string">NP5PGoyKcQv64E0aZgV4CRNzHfPwR4QghrWoqEgEE</code><code class="variable-quote">'</code></code> - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <a name="CONSUMER"></a><span class="summary-name">CONSUMER</span> = <code title="'EEi2URUfM97pAAxHTogDpQ'"><code class="variable-quote">'</code><code class="variable-string">EEi2URUfM97pAAxHTogDpQ</code><code class="variable-quote">'</code></code> - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <a name="CONSUMER_SECRET"></a><span class="summary-name">CONSUMER_SECRET</span> = <code title="'NFYd8T3i4jVKGZ9TMy9LHaBQB3Sh8V5sxBiMeMZBow'"><code class="variable-quote">'</code><code class="variable-string">NFYd8T3i4jVKGZ9TMy9LHaBQB3Sh8V5sxBiMeMZBow</code><code class="variable-quote">'</code></code> - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <a name="API_HOST"></a><span class="summary-name">API_HOST</span> = <code title="'api.soundcloud.dev:3000'"><code class="variable-quote">'</code><code class="variable-string">api.soundcloud.dev:3000</code><code class="variable-quote">'</code></code> - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <a name="USER"></a><span class="summary-name">USER</span> = <code title="''"><code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code></code> - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <a name="PASSWORD"></a><span class="summary-name">PASSWORD</span> = <code title="''"><code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code></code> - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <a name="CONFIG_NAME"></a><span class="summary-name">CONFIG_NAME</span> = <code title="'soundcloud.cfg'"><code class="variable-quote">'</code><code class="variable-string">soundcloud.cfg</code><code class="variable-quote">'</code></code> - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <a name="CONNECTOR"></a><span class="summary-name">CONNECTOR</span> = <code title="None">None</code> - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <a name="ROOT"></a><span class="summary-name">ROOT</span> = <code title="None">None</code> - </td> - </tr> -</table> -<!-- ==================== NAVIGATION BAR ==================== --> -<table class="navbar" border="0" width="100%" cellpadding="0" - bgcolor="#a0c0ff" cellspacing="0"> - <tr valign="middle"> - <!-- Home link --> - <th> <a - href="scapi-module.html">Home</a> </th> - - <!-- Tree link --> - <th> <a - href="module-tree.html">Trees</a> </th> - - <!-- Index link --> - <th> <a - href="identifier-index.html">Indices</a> </th> - - <!-- Help link --> - <th> <a - href="help.html">Help</a> </th> - - <!-- Project homepage --> - <th class="navbar" align="right" width="100%"> - <table border="0" cellpadding="0" cellspacing="0"> - <tr><th class="navbar" align="center" - >SoundCloud API</th> - </tr></table></th> - </tr> -</table> -<table border="0" cellpadding="0" cellspacing="0" width="100%%"> - <tr> - <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Thu Sep 10 00:58:49 2009 - </td> - <td align="right" class="footer"> - <a target="mainFrame" href="http://epydoc.sourceforge.net" - >http://epydoc.sourceforge.net</a> - </td> - </tr> -</table> - -<script type="text/javascript"> - <!-- - // Private objects are initially displayed (because if - // javascript is turned off then we want them to be - // visible); but by default, we want to hide them. So hide - // them unless we have a cookie that says to show them. - checkCookie(); - // --> -</script> -</body> -</html> diff --git a/python_apps/soundcloud-api/docs/api/scapi.tests.test_connect-pysrc.html b/python_apps/soundcloud-api/docs/api/scapi.tests.test_connect-pysrc.html deleted file mode 100644 index 3c0a41c84..000000000 --- a/python_apps/soundcloud-api/docs/api/scapi.tests.test_connect-pysrc.html +++ /dev/null @@ -1,627 +0,0 @@ -<?xml version="1.0" encoding="ascii"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <title>scapi.tests.test_connect</title> - <link rel="stylesheet" href="epydoc.css" type="text/css" /> - <script type="text/javascript" src="epydoc.js"></script> -</head> - -<body bgcolor="white" text="black" link="blue" vlink="#204080" - alink="#204080"> -<!-- ==================== NAVIGATION BAR ==================== --> -<table class="navbar" border="0" width="100%" cellpadding="0" - bgcolor="#a0c0ff" cellspacing="0"> - <tr valign="middle"> - <!-- Home link --> - <th> <a - href="scapi-module.html">Home</a> </th> - - <!-- Tree link --> - <th> <a - href="module-tree.html">Trees</a> </th> - - <!-- Index link --> - <th> <a - href="identifier-index.html">Indices</a> </th> - - <!-- Help link --> - <th> <a - href="help.html">Help</a> </th> - - <!-- Project homepage --> - <th class="navbar" align="right" width="100%"> - <table border="0" cellpadding="0" cellspacing="0"> - <tr><th class="navbar" align="center" - >SoundCloud API</th> - </tr></table></th> - </tr> -</table> -<table width="100%" cellpadding="0" cellspacing="0"> - <tr valign="top"> - <td width="100%"> - <span class="breadcrumbs"> - <a href="scapi-module.html">Package scapi</a> :: - <a href="scapi.tests-module.html">Package tests</a> :: - Module test_connect - </span> - </td> - <td> - <table cellpadding="0" cellspacing="0"> - <!-- hide/show private --> - <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink" - onclick="toggle_private();">hide private</a>]</span></td></tr> - <tr><td align="right"><span class="options" - >[<a href="frames.html" target="_top">frames</a - >] | <a href="scapi.tests.test_connect-pysrc.html" - target="_top">no frames</a>]</span></td></tr> - </table> - </td> - </tr> -</table> -<h1 class="epydoc">Source Code for <a href="scapi.tests.test_connect-module.html">Module scapi.tests.test_connect</a></h1> -<pre class="py-src"> -<a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt class="py-name">__future__</tt> <tt class="py-keyword">import</tt> <tt class="py-name">with_statement</tt> </tt> -<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">os</tt> </tt> -<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">tempfile</tt> </tt> -<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">itertools</tt> </tt> -<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt class="py-name">ConfigParser</tt> <tt class="py-keyword">import</tt> <tt class="py-name">SafeConfigParser</tt> </tt> -<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">pkg_resources</tt> </tt> -<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-0" class="py-name" targets="Package scapi=scapi-module.html"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-0', 'scapi', 'link-0');">scapi</a></tt> </tt> -<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-1" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-1', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-2" class="py-name" targets="Module scapi.authentication=scapi.authentication-module.html"><a title="scapi.authentication" class="py-name" href="#" onclick="return doclink('link-2', 'authentication', 'link-2');">authentication</a></tt> </tt> -<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">logging</tt> </tt> -<a name="L10"></a><tt class="py-lineno"> 10</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">webbrowser</tt> </tt> -<a name="L11"></a><tt class="py-lineno"> 11</tt> <tt class="py-line"> </tt> -<a name="L12"></a><tt class="py-lineno"> 12</tt> <tt class="py-line"><tt id="link-3" class="py-name" targets="Variable scapi.authentication.logger=scapi.authentication-module.html#logger,Variable scapi.logger=scapi-module.html#logger,Variable scapi.tests.scapi_tests.logger=scapi.tests.scapi_tests-module.html#logger,Variable scapi.tests.test_connect.logger=scapi.tests.test_connect-module.html#logger,Variable scapi.tests.test_oauth.logger=scapi.tests.test_oauth-module.html#logger"><a title="scapi.authentication.logger -scapi.logger -scapi.tests.scapi_tests.logger -scapi.tests.test_connect.logger -scapi.tests.test_oauth.logger" class="py-name" href="#" onclick="return doclink('link-3', 'logger', 'link-3');">logger</a></tt> <tt class="py-op">=</tt> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">getLogger</tt><tt class="py-op">(</tt><tt class="py-name">__name__</tt><tt class="py-op">)</tt> </tt> -<a name="L13"></a><tt class="py-lineno"> 13</tt> <tt class="py-line"><tt id="link-4" class="py-name"><a title="scapi.authentication.logger -scapi.logger -scapi.tests.scapi_tests.logger -scapi.tests.test_connect.logger -scapi.tests.test_oauth.logger" class="py-name" href="#" onclick="return doclink('link-4', 'logger', 'link-3');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">setLevel</tt><tt class="py-op">(</tt><tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">DEBUG</tt><tt class="py-op">)</tt> </tt> -<a name="L14"></a><tt class="py-lineno"> 14</tt> <tt class="py-line"><tt id="link-5" class="py-name" targets="Variable scapi.tests.test_connect._logger=scapi.tests.test_connect-module.html#_logger,Variable scapi.tests.test_oauth._logger=scapi.tests.test_oauth-module.html#_logger"><a title="scapi.tests.test_connect._logger -scapi.tests.test_oauth._logger" class="py-name" href="#" onclick="return doclink('link-5', '_logger', 'link-5');">_logger</a></tt> <tt class="py-op">=</tt> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">getLogger</tt><tt class="py-op">(</tt><tt class="py-string">"scapi"</tt><tt class="py-op">)</tt> </tt> -<a name="L15"></a><tt class="py-lineno"> 15</tt> <tt class="py-line"><tt class="py-comment">#_logger.setLevel(logging.DEBUG)</tt> </tt> -<a name="L16"></a><tt class="py-lineno"> 16</tt> <tt class="py-line"><tt class="py-comment"></tt> </tt> -<a name="L17"></a><tt class="py-lineno"> 17</tt> <tt class="py-line"><tt id="link-6" class="py-name" targets="Variable scapi.tests.scapi_tests.SCAPITests.RUN_INTERACTIVE_TESTS=scapi.tests.scapi_tests.SCAPITests-class.html#RUN_INTERACTIVE_TESTS,Variable scapi.tests.test_connect.RUN_INTERACTIVE_TESTS=scapi.tests.test_connect-module.html#RUN_INTERACTIVE_TESTS"><a title="scapi.tests.scapi_tests.SCAPITests.RUN_INTERACTIVE_TESTS -scapi.tests.test_connect.RUN_INTERACTIVE_TESTS" class="py-name" href="#" onclick="return doclink('link-6', 'RUN_INTERACTIVE_TESTS', 'link-6');">RUN_INTERACTIVE_TESTS</a></tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt> -<a name="L18"></a><tt class="py-lineno"> 18</tt> <tt class="py-line"><tt id="link-7" class="py-name" targets="Variable scapi.tests.test_connect.USE_OAUTH=scapi.tests.test_connect-module.html#USE_OAUTH"><a title="scapi.tests.test_connect.USE_OAUTH" class="py-name" href="#" onclick="return doclink('link-7', 'USE_OAUTH', 'link-7');">USE_OAUTH</a></tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt> -<a name="L19"></a><tt class="py-lineno"> 19</tt> <tt class="py-line"> </tt> -<a name="L20"></a><tt class="py-lineno"> 20</tt> <tt class="py-line"><tt id="link-8" class="py-name" targets="Variable scapi.tests.scapi_tests.SCAPITests.TOKEN=scapi.tests.scapi_tests.SCAPITests-class.html#TOKEN,Variable scapi.tests.test_connect.TOKEN=scapi.tests.test_connect-module.html#TOKEN,Variable scapi.tests.test_oauth.TOKEN=scapi.tests.test_oauth-module.html#TOKEN"><a title="scapi.tests.scapi_tests.SCAPITests.TOKEN -scapi.tests.test_connect.TOKEN -scapi.tests.test_oauth.TOKEN" class="py-name" href="#" onclick="return doclink('link-8', 'TOKEN', 'link-8');">TOKEN</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"FjNE9aRTg8kpxuOjzwsX8Q"</tt> </tt> -<a name="L21"></a><tt class="py-lineno"> 21</tt> <tt class="py-line"><tt id="link-9" class="py-name" targets="Variable scapi.tests.scapi_tests.SCAPITests.SECRET=scapi.tests.scapi_tests.SCAPITests-class.html#SECRET,Variable scapi.tests.test_connect.SECRET=scapi.tests.test_connect-module.html#SECRET,Variable scapi.tests.test_oauth.SECRET=scapi.tests.test_oauth-module.html#SECRET"><a title="scapi.tests.scapi_tests.SCAPITests.SECRET -scapi.tests.test_connect.SECRET -scapi.tests.test_oauth.SECRET" class="py-name" href="#" onclick="return doclink('link-9', 'SECRET', 'link-9');">SECRET</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"NP5PGoyKcQv64E0aZgV4CRNzHfPwR4QghrWoqEgEE"</tt> </tt> -<a name="L22"></a><tt class="py-lineno"> 22</tt> <tt class="py-line"><tt id="link-10" class="py-name" targets="Variable scapi.tests.scapi_tests.SCAPITests.CONSUMER=scapi.tests.scapi_tests.SCAPITests-class.html#CONSUMER,Variable scapi.tests.test_connect.CONSUMER=scapi.tests.test_connect-module.html#CONSUMER,Variable scapi.tests.test_oauth.CONSUMER=scapi.tests.test_oauth-module.html#CONSUMER"><a title="scapi.tests.scapi_tests.SCAPITests.CONSUMER -scapi.tests.test_connect.CONSUMER -scapi.tests.test_oauth.CONSUMER" class="py-name" href="#" onclick="return doclink('link-10', 'CONSUMER', 'link-10');">CONSUMER</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"EEi2URUfM97pAAxHTogDpQ"</tt> </tt> -<a name="L23"></a><tt class="py-lineno"> 23</tt> <tt class="py-line"><tt id="link-11" class="py-name" targets="Variable scapi.tests.scapi_tests.SCAPITests.CONSUMER_SECRET=scapi.tests.scapi_tests.SCAPITests-class.html#CONSUMER_SECRET,Variable scapi.tests.test_connect.CONSUMER_SECRET=scapi.tests.test_connect-module.html#CONSUMER_SECRET,Variable scapi.tests.test_oauth.CONSUMER_SECRET=scapi.tests.test_oauth-module.html#CONSUMER_SECRET"><a title="scapi.tests.scapi_tests.SCAPITests.CONSUMER_SECRET -scapi.tests.test_connect.CONSUMER_SECRET -scapi.tests.test_oauth.CONSUMER_SECRET" class="py-name" href="#" onclick="return doclink('link-11', 'CONSUMER_SECRET', 'link-11');">CONSUMER_SECRET</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"NFYd8T3i4jVKGZ9TMy9LHaBQB3Sh8V5sxBiMeMZBow"</tt> </tt> -<a name="L24"></a><tt class="py-lineno"> 24</tt> <tt class="py-line"><tt id="link-12" class="py-name" targets="Variable scapi.tests.scapi_tests.SCAPITests.API_HOST=scapi.tests.scapi_tests.SCAPITests-class.html#API_HOST,Variable scapi.tests.test_connect.API_HOST=scapi.tests.test_connect-module.html#API_HOST"><a title="scapi.tests.scapi_tests.SCAPITests.API_HOST -scapi.tests.test_connect.API_HOST" class="py-name" href="#" onclick="return doclink('link-12', 'API_HOST', 'link-12');">API_HOST</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"api.soundcloud.dev:3000"</tt> </tt> -<a name="L25"></a><tt class="py-lineno"> 25</tt> <tt class="py-line"><tt id="link-13" class="py-name" targets="Variable scapi.tests.scapi_tests.SCAPITests.USER=scapi.tests.scapi_tests.SCAPITests-class.html#USER,Variable scapi.tests.test_connect.USER=scapi.tests.test_connect-module.html#USER"><a title="scapi.tests.scapi_tests.SCAPITests.USER -scapi.tests.test_connect.USER" class="py-name" href="#" onclick="return doclink('link-13', 'USER', 'link-13');">USER</a></tt> <tt class="py-op">=</tt> <tt class="py-string">""</tt> </tt> -<a name="L26"></a><tt class="py-lineno"> 26</tt> <tt class="py-line"><tt id="link-14" class="py-name" targets="Variable scapi.tests.scapi_tests.SCAPITests.PASSWORD=scapi.tests.scapi_tests.SCAPITests-class.html#PASSWORD,Variable scapi.tests.test_connect.PASSWORD=scapi.tests.test_connect-module.html#PASSWORD"><a title="scapi.tests.scapi_tests.SCAPITests.PASSWORD -scapi.tests.test_connect.PASSWORD" class="py-name" href="#" onclick="return doclink('link-14', 'PASSWORD', 'link-14');">PASSWORD</a></tt> <tt class="py-op">=</tt> <tt class="py-string">""</tt> </tt> -<a name="L27"></a><tt class="py-lineno"> 27</tt> <tt class="py-line"> </tt> -<a name="L28"></a><tt class="py-lineno"> 28</tt> <tt class="py-line"><tt id="link-15" class="py-name" targets="Variable scapi.tests.scapi_tests.SCAPITests.CONFIG_NAME=scapi.tests.scapi_tests.SCAPITests-class.html#CONFIG_NAME,Variable scapi.tests.test_connect.CONFIG_NAME=scapi.tests.test_connect-module.html#CONFIG_NAME"><a title="scapi.tests.scapi_tests.SCAPITests.CONFIG_NAME -scapi.tests.test_connect.CONFIG_NAME" class="py-name" href="#" onclick="return doclink('link-15', 'CONFIG_NAME', 'link-15');">CONFIG_NAME</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"soundcloud.cfg"</tt> </tt> -<a name="L29"></a><tt class="py-lineno"> 29</tt> <tt class="py-line"> </tt> -<a name="L30"></a><tt class="py-lineno"> 30</tt> <tt class="py-line"><tt id="link-16" class="py-name" targets="Variable scapi.tests.test_connect.CONNECTOR=scapi.tests.test_connect-module.html#CONNECTOR"><a title="scapi.tests.test_connect.CONNECTOR" class="py-name" href="#" onclick="return doclink('link-16', 'CONNECTOR', 'link-16');">CONNECTOR</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt> -<a name="L31"></a><tt class="py-lineno"> 31</tt> <tt class="py-line"><tt id="link-17" class="py-name" targets="Variable scapi.tests.test_connect.ROOT=scapi.tests.test_connect-module.html#ROOT"><a title="scapi.tests.test_connect.ROOT" class="py-name" href="#" onclick="return doclink('link-17', 'ROOT', 'link-17');">ROOT</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt> -<a name="setup"></a><div id="setup-def"><a name="L32"></a><tt class="py-lineno"> 32</tt> <a class="py-toggle" href="#" id="setup-toggle" onclick="return toggle('setup');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.tests.test_connect-module.html#setup">setup</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="setup-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="setup-expanded"><a name="L33"></a><tt class="py-lineno"> 33</tt> <tt class="py-line"> <tt class="py-keyword">global</tt> <tt id="link-18" class="py-name"><a title="scapi.tests.test_connect.CONNECTOR" class="py-name" href="#" onclick="return doclink('link-18', 'CONNECTOR', 'link-16');">CONNECTOR</a></tt><tt class="py-op">,</tt> <tt id="link-19" class="py-name"><a title="scapi.tests.test_connect.ROOT" class="py-name" href="#" onclick="return doclink('link-19', 'ROOT', 'link-17');">ROOT</a></tt> </tt> -<a name="L34"></a><tt class="py-lineno"> 34</tt> <tt class="py-line"> <tt class="py-comment"># load_config()</tt> </tt> -<a name="L35"></a><tt class="py-lineno"> 35</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment">#scapi.ApiConnector(host='192.168.2.101:3000', user='tiga', password='test')</tt> </tt> -<a name="L36"></a><tt class="py-lineno"> 36</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment">#scapi.ApiConnector(host='sandbox-api.soundcloud.com:3030', user='tiga', password='test')</tt> </tt> -<a name="L37"></a><tt class="py-lineno"> 37</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt id="link-20" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-20', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-21" class="py-name" targets="Variable scapi.USE_PROXY=scapi-module.html#USE_PROXY"><a title="scapi.USE_PROXY" class="py-name" href="#" onclick="return doclink('link-21', 'USE_PROXY', 'link-21');">USE_PROXY</a></tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt> -<a name="L38"></a><tt class="py-lineno"> 38</tt> <tt class="py-line"> <tt id="link-22" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-22', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-23" class="py-name" targets="Variable scapi.PROXY=scapi-module.html#PROXY"><a title="scapi.PROXY" class="py-name" href="#" onclick="return doclink('link-23', 'PROXY', 'link-23');">PROXY</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'http://127.0.0.1:10000/'</tt> </tt> -<a name="L39"></a><tt class="py-lineno"> 39</tt> <tt class="py-line"> </tt> -<a name="L40"></a><tt class="py-lineno"> 40</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-24" class="py-name"><a title="scapi.tests.test_connect.USE_OAUTH" class="py-name" href="#" onclick="return doclink('link-24', 'USE_OAUTH', 'link-7');">USE_OAUTH</a></tt><tt class="py-op">:</tt> </tt> -<a name="L41"></a><tt class="py-lineno"> 41</tt> <tt class="py-line"> <tt class="py-name">authenticator</tt> <tt class="py-op">=</tt> <tt id="link-25" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-25', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-26" class="py-name"><a title="scapi.authentication" class="py-name" href="#" onclick="return doclink('link-26', 'authentication', 'link-2');">authentication</a></tt><tt class="py-op">.</tt><tt id="link-27" class="py-name" targets="Class scapi.authentication.OAuthAuthenticator=scapi.authentication.OAuthAuthenticator-class.html"><a title="scapi.authentication.OAuthAuthenticator" class="py-name" href="#" onclick="return doclink('link-27', 'OAuthAuthenticator', 'link-27');">OAuthAuthenticator</a></tt><tt class="py-op">(</tt><tt id="link-28" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.CONSUMER -scapi.tests.test_connect.CONSUMER -scapi.tests.test_oauth.CONSUMER" class="py-name" href="#" onclick="return doclink('link-28', 'CONSUMER', 'link-10');">CONSUMER</a></tt><tt class="py-op">,</tt> </tt> -<a name="L42"></a><tt class="py-lineno"> 42</tt> <tt class="py-line"> <tt id="link-29" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.CONSUMER_SECRET -scapi.tests.test_connect.CONSUMER_SECRET -scapi.tests.test_oauth.CONSUMER_SECRET" class="py-name" href="#" onclick="return doclink('link-29', 'CONSUMER_SECRET', 'link-11');">CONSUMER_SECRET</a></tt><tt class="py-op">,</tt> </tt> -<a name="L43"></a><tt class="py-lineno"> 43</tt> <tt class="py-line"> <tt id="link-30" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.TOKEN -scapi.tests.test_connect.TOKEN -scapi.tests.test_oauth.TOKEN" class="py-name" href="#" onclick="return doclink('link-30', 'TOKEN', 'link-8');">TOKEN</a></tt><tt class="py-op">,</tt> </tt> -<a name="L44"></a><tt class="py-lineno"> 44</tt> <tt class="py-line"> <tt id="link-31" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.SECRET -scapi.tests.test_connect.SECRET -scapi.tests.test_oauth.SECRET" class="py-name" href="#" onclick="return doclink('link-31', 'SECRET', 'link-9');">SECRET</a></tt><tt class="py-op">)</tt> </tt> -<a name="L45"></a><tt class="py-lineno"> 45</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> -<a name="L46"></a><tt class="py-lineno"> 46</tt> <tt class="py-line"> <tt class="py-name">authenticator</tt> <tt class="py-op">=</tt> <tt id="link-32" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-32', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-33" class="py-name"><a title="scapi.authentication" class="py-name" href="#" onclick="return doclink('link-33', 'authentication', 'link-2');">authentication</a></tt><tt class="py-op">.</tt><tt id="link-34" class="py-name" targets="Class scapi.authentication.BasicAuthenticator=scapi.authentication.BasicAuthenticator-class.html"><a title="scapi.authentication.BasicAuthenticator" class="py-name" href="#" onclick="return doclink('link-34', 'BasicAuthenticator', 'link-34');">BasicAuthenticator</a></tt><tt class="py-op">(</tt><tt id="link-35" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.USER -scapi.tests.test_connect.USER" class="py-name" href="#" onclick="return doclink('link-35', 'USER', 'link-13');">USER</a></tt><tt class="py-op">,</tt> <tt id="link-36" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.PASSWORD -scapi.tests.test_connect.PASSWORD" class="py-name" href="#" onclick="return doclink('link-36', 'PASSWORD', 'link-14');">PASSWORD</a></tt><tt class="py-op">,</tt> <tt id="link-37" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.CONSUMER -scapi.tests.test_connect.CONSUMER -scapi.tests.test_oauth.CONSUMER" class="py-name" href="#" onclick="return doclink('link-37', 'CONSUMER', 'link-10');">CONSUMER</a></tt><tt class="py-op">,</tt> <tt id="link-38" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.CONSUMER_SECRET -scapi.tests.test_connect.CONSUMER_SECRET -scapi.tests.test_oauth.CONSUMER_SECRET" class="py-name" href="#" onclick="return doclink('link-38', 'CONSUMER_SECRET', 'link-11');">CONSUMER_SECRET</a></tt><tt class="py-op">)</tt> </tt> -<a name="L47"></a><tt class="py-lineno"> 47</tt> <tt class="py-line"> </tt> -<a name="L48"></a><tt class="py-lineno"> 48</tt> <tt class="py-line"> <tt id="link-39" class="py-name"><a title="scapi.authentication.logger -scapi.logger -scapi.tests.scapi_tests.logger -scapi.tests.test_connect.logger -scapi.tests.test_oauth.logger" class="py-name" href="#" onclick="return doclink('link-39', 'logger', 'link-3');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-string">"API_HOST: %s"</tt><tt class="py-op">,</tt> <tt id="link-40" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.API_HOST -scapi.tests.test_connect.API_HOST" class="py-name" href="#" onclick="return doclink('link-40', 'API_HOST', 'link-12');">API_HOST</a></tt><tt class="py-op">)</tt> </tt> -<a name="L49"></a><tt class="py-lineno"> 49</tt> <tt class="py-line"> <tt id="link-41" class="py-name"><a title="scapi.tests.test_connect.CONNECTOR" class="py-name" href="#" onclick="return doclink('link-41', 'CONNECTOR', 'link-16');">CONNECTOR</a></tt> <tt class="py-op">=</tt> <tt id="link-42" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-42', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-43" class="py-name" targets="Class scapi.ApiConnector=scapi.ApiConnector-class.html"><a title="scapi.ApiConnector" class="py-name" href="#" onclick="return doclink('link-43', 'ApiConnector', 'link-43');">ApiConnector</a></tt><tt class="py-op">(</tt><tt class="py-name">host</tt><tt class="py-op">=</tt><tt id="link-44" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.API_HOST -scapi.tests.test_connect.API_HOST" class="py-name" href="#" onclick="return doclink('link-44', 'API_HOST', 'link-12');">API_HOST</a></tt><tt class="py-op">,</tt> </tt> -<a name="L50"></a><tt class="py-lineno"> 50</tt> <tt class="py-line"> <tt class="py-name">authenticator</tt><tt class="py-op">=</tt><tt class="py-name">authenticator</tt><tt class="py-op">)</tt> </tt> -<a name="L51"></a><tt class="py-lineno"> 51</tt> <tt class="py-line"> <tt id="link-45" class="py-name"><a title="scapi.tests.test_connect.ROOT" class="py-name" href="#" onclick="return doclink('link-45', 'ROOT', 'link-17');">ROOT</a></tt> <tt class="py-op">=</tt> <tt id="link-46" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-46', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-47" class="py-name" targets="Class scapi.Scope=scapi.Scope-class.html"><a title="scapi.Scope" class="py-name" href="#" onclick="return doclink('link-47', 'Scope', 'link-47');">Scope</a></tt><tt class="py-op">(</tt><tt id="link-48" class="py-name"><a title="scapi.tests.test_connect.CONNECTOR" class="py-name" href="#" onclick="return doclink('link-48', 'CONNECTOR', 'link-16');">CONNECTOR</a></tt><tt class="py-op">)</tt> </tt> -</div><a name="L52"></a><tt class="py-lineno"> 52</tt> <tt class="py-line"> </tt> -<a name="load_config"></a><div id="load_config-def"><a name="L53"></a><tt class="py-lineno"> 53</tt> <a class="py-toggle" href="#" id="load_config-toggle" onclick="return toggle('load_config');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.tests.test_connect-module.html#load_config">load_config</a><tt class="py-op">(</tt><tt class="py-param">config_name</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="load_config-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="load_config-expanded"><a name="L54"></a><tt class="py-lineno"> 54</tt> <tt class="py-line"> <tt class="py-keyword">global</tt> <tt id="link-49" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.TOKEN -scapi.tests.test_connect.TOKEN -scapi.tests.test_oauth.TOKEN" class="py-name" href="#" onclick="return doclink('link-49', 'TOKEN', 'link-8');">TOKEN</a></tt><tt class="py-op">,</tt> <tt id="link-50" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.SECRET -scapi.tests.test_connect.SECRET -scapi.tests.test_oauth.SECRET" class="py-name" href="#" onclick="return doclink('link-50', 'SECRET', 'link-9');">SECRET</a></tt><tt class="py-op">,</tt> <tt id="link-51" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.CONSUMER_SECRET -scapi.tests.test_connect.CONSUMER_SECRET -scapi.tests.test_oauth.CONSUMER_SECRET" class="py-name" href="#" onclick="return doclink('link-51', 'CONSUMER_SECRET', 'link-11');">CONSUMER_SECRET</a></tt><tt class="py-op">,</tt> <tt id="link-52" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.CONSUMER -scapi.tests.test_connect.CONSUMER -scapi.tests.test_oauth.CONSUMER" class="py-name" href="#" onclick="return doclink('link-52', 'CONSUMER', 'link-10');">CONSUMER</a></tt><tt class="py-op">,</tt> <tt id="link-53" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.API_HOST -scapi.tests.test_connect.API_HOST" class="py-name" href="#" onclick="return doclink('link-53', 'API_HOST', 'link-12');">API_HOST</a></tt><tt class="py-op">,</tt> <tt id="link-54" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.USER -scapi.tests.test_connect.USER" class="py-name" href="#" onclick="return doclink('link-54', 'USER', 'link-13');">USER</a></tt><tt class="py-op">,</tt> <tt id="link-55" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.PASSWORD -scapi.tests.test_connect.PASSWORD" class="py-name" href="#" onclick="return doclink('link-55', 'PASSWORD', 'link-14');">PASSWORD</a></tt> </tt> -<a name="L55"></a><tt class="py-lineno"> 55</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">config_name</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> -<a name="L56"></a><tt class="py-lineno"> 56</tt> <tt class="py-line"> <tt class="py-name">config_name</tt> <tt class="py-op">=</tt> <tt id="link-56" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.CONFIG_NAME -scapi.tests.test_connect.CONFIG_NAME" class="py-name" href="#" onclick="return doclink('link-56', 'CONFIG_NAME', 'link-15');">CONFIG_NAME</a></tt> </tt> -<a name="L57"></a><tt class="py-lineno"> 57</tt> <tt class="py-line"> <tt class="py-name">parser</tt> <tt class="py-op">=</tt> <tt class="py-name">SafeConfigParser</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L58"></a><tt class="py-lineno"> 58</tt> <tt class="py-line"> <tt class="py-name">current</tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">getcwd</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L59"></a><tt class="py-lineno"> 59</tt> <tt class="py-line"> <tt class="py-keyword">while</tt> <tt class="py-name">current</tt><tt class="py-op">:</tt> </tt> -<a name="L60"></a><tt class="py-lineno"> 60</tt> <tt class="py-line"> <tt class="py-name">name</tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">current</tt><tt class="py-op">,</tt> <tt class="py-name">config_name</tt><tt class="py-op">)</tt> </tt> -<a name="L61"></a><tt class="py-lineno"> 61</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">exists</tt><tt class="py-op">(</tt><tt class="py-name">name</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L62"></a><tt class="py-lineno"> 62</tt> <tt class="py-line"> <tt class="py-name">parser</tt><tt class="py-op">.</tt><tt id="link-57" class="py-name" targets="Method scapi.json.JsonReader.read()=scapi.json.JsonReader-class.html#read,Function scapi.json.read()=scapi.json-module.html#read"><a title="scapi.json.JsonReader.read -scapi.json.read" class="py-name" href="#" onclick="return doclink('link-57', 'read', 'link-57');">read</a></tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-name">name</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt> -<a name="L63"></a><tt class="py-lineno"> 63</tt> <tt class="py-line"> <tt id="link-58" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.TOKEN -scapi.tests.test_connect.TOKEN -scapi.tests.test_oauth.TOKEN" class="py-name" href="#" onclick="return doclink('link-58', 'TOKEN', 'link-8');">TOKEN</a></tt> <tt class="py-op">=</tt> <tt class="py-name">parser</tt><tt class="py-op">.</tt><tt id="link-59" class="py-name" targets="Class Method scapi.RESTBase.get()=scapi.RESTBase-class.html#get"><a title="scapi.RESTBase.get" class="py-name" href="#" onclick="return doclink('link-59', 'get', 'link-59');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'global'</tt><tt class="py-op">,</tt> <tt class="py-string">'accesstoken'</tt><tt class="py-op">)</tt> </tt> -<a name="L64"></a><tt class="py-lineno"> 64</tt> <tt class="py-line"> <tt id="link-60" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.SECRET -scapi.tests.test_connect.SECRET -scapi.tests.test_oauth.SECRET" class="py-name" href="#" onclick="return doclink('link-60', 'SECRET', 'link-9');">SECRET</a></tt> <tt class="py-op">=</tt> <tt class="py-name">parser</tt><tt class="py-op">.</tt><tt id="link-61" class="py-name"><a title="scapi.RESTBase.get" class="py-name" href="#" onclick="return doclink('link-61', 'get', 'link-59');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'global'</tt><tt class="py-op">,</tt> <tt class="py-string">'accesstoken_secret'</tt><tt class="py-op">)</tt> </tt> -<a name="L65"></a><tt class="py-lineno"> 65</tt> <tt class="py-line"> <tt id="link-62" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.CONSUMER -scapi.tests.test_connect.CONSUMER -scapi.tests.test_oauth.CONSUMER" class="py-name" href="#" onclick="return doclink('link-62', 'CONSUMER', 'link-10');">CONSUMER</a></tt> <tt class="py-op">=</tt> <tt class="py-name">parser</tt><tt class="py-op">.</tt><tt id="link-63" class="py-name"><a title="scapi.RESTBase.get" class="py-name" href="#" onclick="return doclink('link-63', 'get', 'link-59');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'global'</tt><tt class="py-op">,</tt> <tt class="py-string">'consumer'</tt><tt class="py-op">)</tt> </tt> -<a name="L66"></a><tt class="py-lineno"> 66</tt> <tt class="py-line"> <tt id="link-64" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.CONSUMER_SECRET -scapi.tests.test_connect.CONSUMER_SECRET -scapi.tests.test_oauth.CONSUMER_SECRET" class="py-name" href="#" onclick="return doclink('link-64', 'CONSUMER_SECRET', 'link-11');">CONSUMER_SECRET</a></tt> <tt class="py-op">=</tt> <tt class="py-name">parser</tt><tt class="py-op">.</tt><tt id="link-65" class="py-name"><a title="scapi.RESTBase.get" class="py-name" href="#" onclick="return doclink('link-65', 'get', 'link-59');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'global'</tt><tt class="py-op">,</tt> <tt class="py-string">'consumer_secret'</tt><tt class="py-op">)</tt> </tt> -<a name="L67"></a><tt class="py-lineno"> 67</tt> <tt class="py-line"> <tt id="link-66" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.API_HOST -scapi.tests.test_connect.API_HOST" class="py-name" href="#" onclick="return doclink('link-66', 'API_HOST', 'link-12');">API_HOST</a></tt> <tt class="py-op">=</tt> <tt class="py-name">parser</tt><tt class="py-op">.</tt><tt id="link-67" class="py-name"><a title="scapi.RESTBase.get" class="py-name" href="#" onclick="return doclink('link-67', 'get', 'link-59');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'global'</tt><tt class="py-op">,</tt> <tt class="py-string">'host'</tt><tt class="py-op">)</tt> </tt> -<a name="L68"></a><tt class="py-lineno"> 68</tt> <tt class="py-line"> <tt id="link-68" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.USER -scapi.tests.test_connect.USER" class="py-name" href="#" onclick="return doclink('link-68', 'USER', 'link-13');">USER</a></tt> <tt class="py-op">=</tt> <tt class="py-name">parser</tt><tt class="py-op">.</tt><tt id="link-69" class="py-name"><a title="scapi.RESTBase.get" class="py-name" href="#" onclick="return doclink('link-69', 'get', 'link-59');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'global'</tt><tt class="py-op">,</tt> <tt class="py-string">'user'</tt><tt class="py-op">)</tt> </tt> -<a name="L69"></a><tt class="py-lineno"> 69</tt> <tt class="py-line"> <tt id="link-70" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.PASSWORD -scapi.tests.test_connect.PASSWORD" class="py-name" href="#" onclick="return doclink('link-70', 'PASSWORD', 'link-14');">PASSWORD</a></tt> <tt class="py-op">=</tt> <tt class="py-name">parser</tt><tt class="py-op">.</tt><tt id="link-71" class="py-name"><a title="scapi.RESTBase.get" class="py-name" href="#" onclick="return doclink('link-71', 'get', 'link-59');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'global'</tt><tt class="py-op">,</tt> <tt class="py-string">'password'</tt><tt class="py-op">)</tt> </tt> -<a name="L70"></a><tt class="py-lineno"> 70</tt> <tt class="py-line"> <tt id="link-72" class="py-name"><a title="scapi.authentication.logger -scapi.logger -scapi.tests.scapi_tests.logger -scapi.tests.test_connect.logger -scapi.tests.test_oauth.logger" class="py-name" href="#" onclick="return doclink('link-72', 'logger', 'link-3');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-string">"token: %s"</tt><tt class="py-op">,</tt> <tt id="link-73" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.TOKEN -scapi.tests.test_connect.TOKEN -scapi.tests.test_oauth.TOKEN" class="py-name" href="#" onclick="return doclink('link-73', 'TOKEN', 'link-8');">TOKEN</a></tt><tt class="py-op">)</tt> </tt> -<a name="L71"></a><tt class="py-lineno"> 71</tt> <tt class="py-line"> <tt id="link-74" class="py-name"><a title="scapi.authentication.logger -scapi.logger -scapi.tests.scapi_tests.logger -scapi.tests.test_connect.logger -scapi.tests.test_oauth.logger" class="py-name" href="#" onclick="return doclink('link-74', 'logger', 'link-3');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-string">"secret: %s"</tt><tt class="py-op">,</tt> <tt id="link-75" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.SECRET -scapi.tests.test_connect.SECRET -scapi.tests.test_oauth.SECRET" class="py-name" href="#" onclick="return doclink('link-75', 'SECRET', 'link-9');">SECRET</a></tt><tt class="py-op">)</tt> </tt> -<a name="L72"></a><tt class="py-lineno"> 72</tt> <tt class="py-line"> <tt id="link-76" class="py-name"><a title="scapi.authentication.logger -scapi.logger -scapi.tests.scapi_tests.logger -scapi.tests.test_connect.logger -scapi.tests.test_oauth.logger" class="py-name" href="#" onclick="return doclink('link-76', 'logger', 'link-3');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-string">"consumer: %s"</tt><tt class="py-op">,</tt> <tt id="link-77" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.CONSUMER -scapi.tests.test_connect.CONSUMER -scapi.tests.test_oauth.CONSUMER" class="py-name" href="#" onclick="return doclink('link-77', 'CONSUMER', 'link-10');">CONSUMER</a></tt><tt class="py-op">)</tt> </tt> -<a name="L73"></a><tt class="py-lineno"> 73</tt> <tt class="py-line"> <tt id="link-78" class="py-name"><a title="scapi.authentication.logger -scapi.logger -scapi.tests.scapi_tests.logger -scapi.tests.test_connect.logger -scapi.tests.test_oauth.logger" class="py-name" href="#" onclick="return doclink('link-78', 'logger', 'link-3');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-string">"consumer_secret: %s"</tt><tt class="py-op">,</tt> <tt id="link-79" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.CONSUMER_SECRET -scapi.tests.test_connect.CONSUMER_SECRET -scapi.tests.test_oauth.CONSUMER_SECRET" class="py-name" href="#" onclick="return doclink('link-79', 'CONSUMER_SECRET', 'link-11');">CONSUMER_SECRET</a></tt><tt class="py-op">)</tt> </tt> -<a name="L74"></a><tt class="py-lineno"> 74</tt> <tt class="py-line"> <tt id="link-80" class="py-name"><a title="scapi.authentication.logger -scapi.logger -scapi.tests.scapi_tests.logger -scapi.tests.test_connect.logger -scapi.tests.test_oauth.logger" class="py-name" href="#" onclick="return doclink('link-80', 'logger', 'link-3');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-string">"user: %s"</tt><tt class="py-op">,</tt> <tt id="link-81" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.USER -scapi.tests.test_connect.USER" class="py-name" href="#" onclick="return doclink('link-81', 'USER', 'link-13');">USER</a></tt><tt class="py-op">)</tt> </tt> -<a name="L75"></a><tt class="py-lineno"> 75</tt> <tt class="py-line"> <tt id="link-82" class="py-name"><a title="scapi.authentication.logger -scapi.logger -scapi.tests.scapi_tests.logger -scapi.tests.test_connect.logger -scapi.tests.test_oauth.logger" class="py-name" href="#" onclick="return doclink('link-82', 'logger', 'link-3');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-string">"password: %s"</tt><tt class="py-op">,</tt> <tt id="link-83" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.PASSWORD -scapi.tests.test_connect.PASSWORD" class="py-name" href="#" onclick="return doclink('link-83', 'PASSWORD', 'link-14');">PASSWORD</a></tt><tt class="py-op">)</tt> </tt> -<a name="L76"></a><tt class="py-lineno"> 76</tt> <tt class="py-line"> <tt id="link-84" class="py-name"><a title="scapi.authentication.logger -scapi.logger -scapi.tests.scapi_tests.logger -scapi.tests.test_connect.logger -scapi.tests.test_oauth.logger" class="py-name" href="#" onclick="return doclink('link-84', 'logger', 'link-3');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-string">"host: %s"</tt><tt class="py-op">,</tt> <tt id="link-85" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.API_HOST -scapi.tests.test_connect.API_HOST" class="py-name" href="#" onclick="return doclink('link-85', 'API_HOST', 'link-12');">API_HOST</a></tt><tt class="py-op">)</tt> </tt> -<a name="L77"></a><tt class="py-lineno"> 77</tt> <tt class="py-line"> <tt class="py-keyword">break</tt> </tt> -<a name="L78"></a><tt class="py-lineno"> 78</tt> <tt class="py-line"> <tt class="py-name">new_current</tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">dirname</tt><tt class="py-op">(</tt><tt class="py-name">current</tt><tt class="py-op">)</tt> </tt> -<a name="L79"></a><tt class="py-lineno"> 79</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">new_current</tt> <tt class="py-op">==</tt> <tt class="py-name">current</tt><tt class="py-op">:</tt> </tt> -<a name="L80"></a><tt class="py-lineno"> 80</tt> <tt class="py-line"> <tt class="py-keyword">break</tt> </tt> -<a name="L81"></a><tt class="py-lineno"> 81</tt> <tt class="py-line"> <tt class="py-name">current</tt> <tt class="py-op">=</tt> <tt class="py-name">new_current</tt> </tt> -</div><a name="L82"></a><tt class="py-lineno"> 82</tt> <tt class="py-line"> </tt> -<a name="L83"></a><tt class="py-lineno"> 83</tt> <tt class="py-line"> </tt> -<a name="test_load_config"></a><div id="test_load_config-def"><a name="L84"></a><tt class="py-lineno"> 84</tt> <a class="py-toggle" href="#" id="test_load_config-toggle" onclick="return toggle('test_load_config');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.tests.test_connect-module.html#test_load_config">test_load_config</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="test_load_config-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="test_load_config-expanded"><a name="L85"></a><tt class="py-lineno"> 85</tt> <tt class="py-line"> <tt class="py-name">base</tt> <tt class="py-op">=</tt> <tt class="py-name">tempfile</tt><tt class="py-op">.</tt><tt class="py-name">mkdtemp</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L86"></a><tt class="py-lineno"> 86</tt> <tt class="py-line"> <tt class="py-name">oldcwd</tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">getcwd</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L87"></a><tt class="py-lineno"> 87</tt> <tt class="py-line"> <tt class="py-name">cdir</tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">base</tt><tt class="py-op">,</tt> <tt class="py-string">"foo"</tt><tt class="py-op">)</tt> </tt> -<a name="L88"></a><tt class="py-lineno"> 88</tt> <tt class="py-line"> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">mkdir</tt><tt class="py-op">(</tt><tt class="py-name">cdir</tt><tt class="py-op">)</tt> </tt> -<a name="L89"></a><tt class="py-lineno"> 89</tt> <tt class="py-line"> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">chdir</tt><tt class="py-op">(</tt><tt class="py-name">cdir</tt><tt class="py-op">)</tt> </tt> -<a name="L90"></a><tt class="py-lineno"> 90</tt> <tt class="py-line"> <tt class="py-name">test_config</tt> <tt class="py-op">=</tt> <tt class="py-string">"""</tt> </tt> -<a name="L91"></a><tt class="py-lineno"> 91</tt> <tt class="py-line"><tt class="py-string">[global]</tt> </tt> -<a name="L92"></a><tt class="py-lineno"> 92</tt> <tt class="py-line"><tt class="py-string">host=host</tt> </tt> -<a name="L93"></a><tt class="py-lineno"> 93</tt> <tt class="py-line"><tt class="py-string">consumer=consumer</tt> </tt> -<a name="L94"></a><tt class="py-lineno"> 94</tt> <tt class="py-line"><tt class="py-string">consumer_secret=consumer_secret</tt> </tt> -<a name="L95"></a><tt class="py-lineno"> 95</tt> <tt class="py-line"><tt class="py-string">accesstoken=accesstoken</tt> </tt> -<a name="L96"></a><tt class="py-lineno"> 96</tt> <tt class="py-line"><tt class="py-string">accesstoken_secret=accesstoken_secret</tt> </tt> -<a name="L97"></a><tt class="py-lineno"> 97</tt> <tt class="py-line"><tt class="py-string">user=user</tt> </tt> -<a name="L98"></a><tt class="py-lineno"> 98</tt> <tt class="py-line"><tt class="py-string">password=password</tt> </tt> -<a name="L99"></a><tt class="py-lineno"> 99</tt> <tt class="py-line"><tt class="py-string">"""</tt> </tt> -<a name="L100"></a><tt class="py-lineno">100</tt> <tt class="py-line"> <tt class="py-keyword">with</tt> <tt class="py-name">open</tt><tt class="py-op">(</tt><tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">base</tt><tt class="py-op">,</tt> <tt id="link-86" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.CONFIG_NAME -scapi.tests.test_connect.CONFIG_NAME" class="py-name" href="#" onclick="return doclink('link-86', 'CONFIG_NAME', 'link-15');">CONFIG_NAME</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-string">"w"</tt><tt class="py-op">)</tt> <tt class="py-keyword">as</tt> <tt class="py-name">cf</tt><tt class="py-op">:</tt> </tt> -<a name="L101"></a><tt class="py-lineno">101</tt> <tt class="py-line"> <tt class="py-name">cf</tt><tt class="py-op">.</tt><tt id="link-87" class="py-name" targets="Method scapi.json.JsonWriter.write()=scapi.json.JsonWriter-class.html#write,Function scapi.json.write()=scapi.json-module.html#write"><a title="scapi.json.JsonWriter.write -scapi.json.write" class="py-name" href="#" onclick="return doclink('link-87', 'write', 'link-87');">write</a></tt><tt class="py-op">(</tt><tt class="py-name">test_config</tt><tt class="py-op">)</tt> </tt> -<a name="L102"></a><tt class="py-lineno">102</tt> <tt class="py-line"> <tt id="link-88" class="py-name" targets="Function scapi.tests.test_connect.load_config()=scapi.tests.test_connect-module.html#load_config"><a title="scapi.tests.test_connect.load_config" class="py-name" href="#" onclick="return doclink('link-88', 'load_config', 'link-88');">load_config</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L103"></a><tt class="py-lineno">103</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt id="link-89" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.TOKEN -scapi.tests.test_connect.TOKEN -scapi.tests.test_oauth.TOKEN" class="py-name" href="#" onclick="return doclink('link-89', 'TOKEN', 'link-8');">TOKEN</a></tt> <tt class="py-op">==</tt> <tt class="py-string">"accesstoken"</tt> <tt class="py-keyword">and</tt> <tt id="link-90" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.SECRET -scapi.tests.test_connect.SECRET -scapi.tests.test_oauth.SECRET" class="py-name" href="#" onclick="return doclink('link-90', 'SECRET', 'link-9');">SECRET</a></tt> <tt class="py-op">==</tt> <tt class="py-string">"accesstoken_secret"</tt> <tt class="py-keyword">and</tt> <tt id="link-91" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.API_HOST -scapi.tests.test_connect.API_HOST" class="py-name" href="#" onclick="return doclink('link-91', 'API_HOST', 'link-12');">API_HOST</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'host'</tt> </tt> -<a name="L104"></a><tt class="py-lineno">104</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt id="link-92" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.CONSUMER -scapi.tests.test_connect.CONSUMER -scapi.tests.test_oauth.CONSUMER" class="py-name" href="#" onclick="return doclink('link-92', 'CONSUMER', 'link-10');">CONSUMER</a></tt> <tt class="py-op">==</tt> <tt class="py-string">"consumer"</tt> <tt class="py-keyword">and</tt> <tt id="link-93" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.CONSUMER_SECRET -scapi.tests.test_connect.CONSUMER_SECRET -scapi.tests.test_oauth.CONSUMER_SECRET" class="py-name" href="#" onclick="return doclink('link-93', 'CONSUMER_SECRET', 'link-11');">CONSUMER_SECRET</a></tt> <tt class="py-op">==</tt> <tt class="py-string">"consumer_secret"</tt> </tt> -<a name="L105"></a><tt class="py-lineno">105</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt id="link-94" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.USER -scapi.tests.test_connect.USER" class="py-name" href="#" onclick="return doclink('link-94', 'USER', 'link-13');">USER</a></tt> <tt class="py-op">==</tt> <tt class="py-string">"user"</tt> <tt class="py-keyword">and</tt> <tt id="link-95" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.PASSWORD -scapi.tests.test_connect.PASSWORD" class="py-name" href="#" onclick="return doclink('link-95', 'PASSWORD', 'link-14');">PASSWORD</a></tt> <tt class="py-op">==</tt> <tt class="py-string">"password"</tt> </tt> -<a name="L106"></a><tt class="py-lineno">106</tt> <tt class="py-line"> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">chdir</tt><tt class="py-op">(</tt><tt class="py-name">oldcwd</tt><tt class="py-op">)</tt> </tt> -<a name="L107"></a><tt class="py-lineno">107</tt> <tt class="py-line"> <tt id="link-96" class="py-name"><a title="scapi.tests.test_connect.load_config" class="py-name" href="#" onclick="return doclink('link-96', 'load_config', 'link-88');">load_config</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -</div><a name="L108"></a><tt class="py-lineno">108</tt> <tt class="py-line"> </tt> -<a name="L109"></a><tt class="py-lineno">109</tt> <tt class="py-line"> </tt> -<a name="test_connect"></a><div id="test_connect-def"><a name="L110"></a><tt class="py-lineno">110</tt> <a class="py-toggle" href="#" id="test_connect-toggle" onclick="return toggle('test_connect');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.tests.test_connect-module.html#test_connect">test_connect</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="test_connect-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="test_connect-expanded"><a name="L111"></a><tt class="py-lineno">111</tt> <tt class="py-line"> <tt class="py-name">sca</tt> <tt class="py-op">=</tt> <tt id="link-97" class="py-name"><a title="scapi.tests.test_connect.ROOT" class="py-name" href="#" onclick="return doclink('link-97', 'ROOT', 'link-17');">ROOT</a></tt> </tt> -<a name="L112"></a><tt class="py-lineno">112</tt> <tt class="py-line"> <tt class="py-name">quite_a_few_users</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">itertools</tt><tt class="py-op">.</tt><tt class="py-name">islice</tt><tt class="py-op">(</tt><tt class="py-name">sca</tt><tt class="py-op">.</tt><tt class="py-name">users</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-number">127</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L113"></a><tt class="py-lineno">113</tt> <tt class="py-line"> </tt> -<a name="L114"></a><tt class="py-lineno">114</tt> <tt class="py-line"> <tt id="link-98" class="py-name"><a title="scapi.authentication.logger -scapi.logger -scapi.tests.scapi_tests.logger -scapi.tests.test_connect.logger -scapi.tests.test_oauth.logger" class="py-name" href="#" onclick="return doclink('link-98', 'logger', 'link-3');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-name">quite_a_few_users</tt><tt class="py-op">)</tt> </tt> -<a name="L115"></a><tt class="py-lineno">115</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">quite_a_few_users</tt><tt class="py-op">,</tt> <tt class="py-name">list</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">quite_a_few_users</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt id="link-99" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-99', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-100" class="py-name" targets="Class scapi.User=scapi.User-class.html"><a title="scapi.User" class="py-name" href="#" onclick="return doclink('link-100', 'User', 'link-100');">User</a></tt><tt class="py-op">)</tt> </tt> -<a name="L116"></a><tt class="py-lineno">116</tt> <tt class="py-line"> <tt class="py-name">user</tt> <tt class="py-op">=</tt> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt class="py-name">me</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L117"></a><tt class="py-lineno">117</tt> <tt class="py-line"> <tt id="link-101" class="py-name"><a title="scapi.authentication.logger -scapi.logger -scapi.tests.scapi_tests.logger -scapi.tests.test_connect.logger -scapi.tests.test_oauth.logger" class="py-name" href="#" onclick="return doclink('link-101', 'logger', 'link-3');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-name">user</tt><tt class="py-op">)</tt> </tt> -<a name="L118"></a><tt class="py-lineno">118</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">user</tt><tt class="py-op">,</tt> <tt id="link-102" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-102', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-103" class="py-name"><a title="scapi.User" class="py-name" href="#" onclick="return doclink('link-103', 'User', 'link-100');">User</a></tt><tt class="py-op">)</tt> </tt> -<a name="L119"></a><tt class="py-lineno">119</tt> <tt class="py-line"> <tt class="py-name">contacts</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">user</tt><tt class="py-op">.</tt><tt class="py-name">contacts</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L120"></a><tt class="py-lineno">120</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">contacts</tt><tt class="py-op">,</tt> <tt class="py-name">list</tt><tt class="py-op">)</tt> </tt> -<a name="L121"></a><tt class="py-lineno">121</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">contacts</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt id="link-104" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-104', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-105" class="py-name"><a title="scapi.User" class="py-name" href="#" onclick="return doclink('link-105', 'User', 'link-100');">User</a></tt><tt class="py-op">)</tt> </tt> -<a name="L122"></a><tt class="py-lineno">122</tt> <tt class="py-line"> <tt id="link-106" class="py-name"><a title="scapi.authentication.logger -scapi.logger -scapi.tests.scapi_tests.logger -scapi.tests.test_connect.logger -scapi.tests.test_oauth.logger" class="py-name" href="#" onclick="return doclink('link-106', 'logger', 'link-3');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-name">contacts</tt><tt class="py-op">)</tt> </tt> -<a name="L123"></a><tt class="py-lineno">123</tt> <tt class="py-line"> <tt class="py-name">tracks</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">user</tt><tt class="py-op">.</tt><tt class="py-name">tracks</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L124"></a><tt class="py-lineno">124</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">tracks</tt><tt class="py-op">,</tt> <tt class="py-name">list</tt><tt class="py-op">)</tt> </tt> -<a name="L125"></a><tt class="py-lineno">125</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">tracks</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt id="link-107" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-107', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-108" class="py-name" targets="Class scapi.Track=scapi.Track-class.html"><a title="scapi.Track" class="py-name" href="#" onclick="return doclink('link-108', 'Track', 'link-108');">Track</a></tt><tt class="py-op">)</tt> </tt> -<a name="L126"></a><tt class="py-lineno">126</tt> <tt class="py-line"> <tt id="link-109" class="py-name"><a title="scapi.authentication.logger -scapi.logger -scapi.tests.scapi_tests.logger -scapi.tests.test_connect.logger -scapi.tests.test_oauth.logger" class="py-name" href="#" onclick="return doclink('link-109', 'logger', 'link-3');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-name">tracks</tt><tt class="py-op">)</tt> </tt> -</div><a name="L127"></a><tt class="py-lineno">127</tt> <tt class="py-line"> </tt> -<a name="L128"></a><tt class="py-lineno">128</tt> <tt class="py-line"> </tt> -<a name="test_access_token_acquisition"></a><div id="test_access_token_acquisition-def"><a name="L129"></a><tt class="py-lineno">129</tt> <a class="py-toggle" href="#" id="test_access_token_acquisition-toggle" onclick="return toggle('test_access_token_acquisition');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.tests.test_connect-module.html#test_access_token_acquisition">test_access_token_acquisition</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="test_access_token_acquisition-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="test_access_token_acquisition-expanded"><a name="L130"></a><tt class="py-lineno">130</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt> -<a name="L131"></a><tt class="py-lineno">131</tt> <tt class="py-line"><tt class="py-docstring"> This test is commented out because it needs user-interaction.</tt> </tt> -<a name="L132"></a><tt class="py-lineno">132</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt> -<a name="L133"></a><tt class="py-lineno">133</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt id="link-110" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.RUN_INTERACTIVE_TESTS -scapi.tests.test_connect.RUN_INTERACTIVE_TESTS" class="py-name" href="#" onclick="return doclink('link-110', 'RUN_INTERACTIVE_TESTS', 'link-6');">RUN_INTERACTIVE_TESTS</a></tt><tt class="py-op">:</tt> </tt> -<a name="L134"></a><tt class="py-lineno">134</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt> -<a name="L135"></a><tt class="py-lineno">135</tt> <tt class="py-line"> <tt class="py-name">oauth_authenticator</tt> <tt class="py-op">=</tt> <tt id="link-111" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-111', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-112" class="py-name"><a title="scapi.authentication" class="py-name" href="#" onclick="return doclink('link-112', 'authentication', 'link-2');">authentication</a></tt><tt class="py-op">.</tt><tt id="link-113" class="py-name"><a title="scapi.authentication.OAuthAuthenticator" class="py-name" href="#" onclick="return doclink('link-113', 'OAuthAuthenticator', 'link-27');">OAuthAuthenticator</a></tt><tt class="py-op">(</tt><tt id="link-114" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.CONSUMER -scapi.tests.test_connect.CONSUMER -scapi.tests.test_oauth.CONSUMER" class="py-name" href="#" onclick="return doclink('link-114', 'CONSUMER', 'link-10');">CONSUMER</a></tt><tt class="py-op">,</tt> </tt> -<a name="L136"></a><tt class="py-lineno">136</tt> <tt class="py-line"> <tt id="link-115" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.CONSUMER_SECRET -scapi.tests.test_connect.CONSUMER_SECRET -scapi.tests.test_oauth.CONSUMER_SECRET" class="py-name" href="#" onclick="return doclink('link-115', 'CONSUMER_SECRET', 'link-11');">CONSUMER_SECRET</a></tt><tt class="py-op">,</tt> </tt> -<a name="L137"></a><tt class="py-lineno">137</tt> <tt class="py-line"> <tt class="py-name">None</tt><tt class="py-op">,</tt> </tt> -<a name="L138"></a><tt class="py-lineno">138</tt> <tt class="py-line"> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt> -<a name="L139"></a><tt class="py-lineno">139</tt> <tt class="py-line"> </tt> -<a name="L140"></a><tt class="py-lineno">140</tt> <tt class="py-line"> <tt class="py-name">sca</tt> <tt class="py-op">=</tt> <tt id="link-116" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-116', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-117" class="py-name"><a title="scapi.ApiConnector" class="py-name" href="#" onclick="return doclink('link-117', 'ApiConnector', 'link-43');">ApiConnector</a></tt><tt class="py-op">(</tt><tt class="py-name">host</tt><tt class="py-op">=</tt><tt id="link-118" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.API_HOST -scapi.tests.test_connect.API_HOST" class="py-name" href="#" onclick="return doclink('link-118', 'API_HOST', 'link-12');">API_HOST</a></tt><tt class="py-op">,</tt> <tt class="py-name">authenticator</tt><tt class="py-op">=</tt><tt class="py-name">oauth_authenticator</tt><tt class="py-op">)</tt> </tt> -<a name="L141"></a><tt class="py-lineno">141</tt> <tt class="py-line"> <tt class="py-name">token</tt><tt class="py-op">,</tt> <tt class="py-name">secret</tt> <tt class="py-op">=</tt> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt id="link-119" class="py-name" targets="Method scapi.ApiConnector.fetch_request_token()=scapi.ApiConnector-class.html#fetch_request_token"><a title="scapi.ApiConnector.fetch_request_token" class="py-name" href="#" onclick="return doclink('link-119', 'fetch_request_token', 'link-119');">fetch_request_token</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L142"></a><tt class="py-lineno">142</tt> <tt class="py-line"> <tt class="py-name">authorization_url</tt> <tt class="py-op">=</tt> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt id="link-120" class="py-name" targets="Method scapi.ApiConnector.get_request_token_authorization_url()=scapi.ApiConnector-class.html#get_request_token_authorization_url"><a title="scapi.ApiConnector.get_request_token_authorization_url" class="py-name" href="#" onclick="return doclink('link-120', 'get_request_token_authorization_url', 'link-120');">get_request_token_authorization_url</a></tt><tt class="py-op">(</tt><tt class="py-name">token</tt><tt class="py-op">)</tt> </tt> -<a name="L143"></a><tt class="py-lineno">143</tt> <tt class="py-line"> <tt class="py-name">webbrowser</tt><tt class="py-op">.</tt><tt class="py-name">open</tt><tt class="py-op">(</tt><tt class="py-name">authorization_url</tt><tt class="py-op">)</tt> </tt> -<a name="L144"></a><tt class="py-lineno">144</tt> <tt class="py-line"> <tt class="py-name">raw_input</tt><tt class="py-op">(</tt><tt class="py-string">"please press return"</tt><tt class="py-op">)</tt> </tt> -<a name="L145"></a><tt class="py-lineno">145</tt> <tt class="py-line"> <tt class="py-name">oauth_authenticator</tt> <tt class="py-op">=</tt> <tt id="link-121" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-121', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-122" class="py-name"><a title="scapi.authentication" class="py-name" href="#" onclick="return doclink('link-122', 'authentication', 'link-2');">authentication</a></tt><tt class="py-op">.</tt><tt id="link-123" class="py-name"><a title="scapi.authentication.OAuthAuthenticator" class="py-name" href="#" onclick="return doclink('link-123', 'OAuthAuthenticator', 'link-27');">OAuthAuthenticator</a></tt><tt class="py-op">(</tt><tt id="link-124" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.CONSUMER -scapi.tests.test_connect.CONSUMER -scapi.tests.test_oauth.CONSUMER" class="py-name" href="#" onclick="return doclink('link-124', 'CONSUMER', 'link-10');">CONSUMER</a></tt><tt class="py-op">,</tt> </tt> -<a name="L146"></a><tt class="py-lineno">146</tt> <tt class="py-line"> <tt id="link-125" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.CONSUMER_SECRET -scapi.tests.test_connect.CONSUMER_SECRET -scapi.tests.test_oauth.CONSUMER_SECRET" class="py-name" href="#" onclick="return doclink('link-125', 'CONSUMER_SECRET', 'link-11');">CONSUMER_SECRET</a></tt><tt class="py-op">,</tt> </tt> -<a name="L147"></a><tt class="py-lineno">147</tt> <tt class="py-line"> <tt class="py-name">token</tt><tt class="py-op">,</tt> </tt> -<a name="L148"></a><tt class="py-lineno">148</tt> <tt class="py-line"> <tt class="py-name">secret</tt><tt class="py-op">)</tt> </tt> -<a name="L149"></a><tt class="py-lineno">149</tt> <tt class="py-line"> </tt> -<a name="L150"></a><tt class="py-lineno">150</tt> <tt class="py-line"> <tt class="py-name">sca</tt> <tt class="py-op">=</tt> <tt id="link-126" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-126', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-127" class="py-name"><a title="scapi.ApiConnector" class="py-name" href="#" onclick="return doclink('link-127', 'ApiConnector', 'link-43');">ApiConnector</a></tt><tt class="py-op">(</tt><tt id="link-128" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.API_HOST -scapi.tests.test_connect.API_HOST" class="py-name" href="#" onclick="return doclink('link-128', 'API_HOST', 'link-12');">API_HOST</a></tt><tt class="py-op">,</tt> <tt class="py-name">authenticator</tt><tt class="py-op">=</tt><tt class="py-name">oauth_authenticator</tt><tt class="py-op">)</tt> </tt> -<a name="L151"></a><tt class="py-lineno">151</tt> <tt class="py-line"> <tt class="py-name">token</tt><tt class="py-op">,</tt> <tt class="py-name">secret</tt> <tt class="py-op">=</tt> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt id="link-129" class="py-name" targets="Method scapi.ApiConnector.fetch_access_token()=scapi.ApiConnector-class.html#fetch_access_token"><a title="scapi.ApiConnector.fetch_access_token" class="py-name" href="#" onclick="return doclink('link-129', 'fetch_access_token', 'link-129');">fetch_access_token</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L152"></a><tt class="py-lineno">152</tt> <tt class="py-line"> <tt id="link-130" class="py-name"><a title="scapi.authentication.logger -scapi.logger -scapi.tests.scapi_tests.logger -scapi.tests.test_connect.logger -scapi.tests.test_oauth.logger" class="py-name" href="#" onclick="return doclink('link-130', 'logger', 'link-3');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">"Access token: '%s'"</tt><tt class="py-op">,</tt> <tt class="py-name">token</tt><tt class="py-op">)</tt> </tt> -<a name="L153"></a><tt class="py-lineno">153</tt> <tt class="py-line"> <tt id="link-131" class="py-name"><a title="scapi.authentication.logger -scapi.logger -scapi.tests.scapi_tests.logger -scapi.tests.test_connect.logger -scapi.tests.test_oauth.logger" class="py-name" href="#" onclick="return doclink('link-131', 'logger', 'link-3');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">"Access token secret: '%s'"</tt><tt class="py-op">,</tt> <tt class="py-name">secret</tt><tt class="py-op">)</tt> </tt> -<a name="L154"></a><tt class="py-lineno">154</tt> <tt class="py-line"> <tt class="py-name">oauth_authenticator</tt> <tt class="py-op">=</tt> <tt id="link-132" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-132', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-133" class="py-name"><a title="scapi.authentication" class="py-name" href="#" onclick="return doclink('link-133', 'authentication', 'link-2');">authentication</a></tt><tt class="py-op">.</tt><tt id="link-134" class="py-name"><a title="scapi.authentication.OAuthAuthenticator" class="py-name" href="#" onclick="return doclink('link-134', 'OAuthAuthenticator', 'link-27');">OAuthAuthenticator</a></tt><tt class="py-op">(</tt><tt id="link-135" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.CONSUMER -scapi.tests.test_connect.CONSUMER -scapi.tests.test_oauth.CONSUMER" class="py-name" href="#" onclick="return doclink('link-135', 'CONSUMER', 'link-10');">CONSUMER</a></tt><tt class="py-op">,</tt> </tt> -<a name="L155"></a><tt class="py-lineno">155</tt> <tt class="py-line"> <tt id="link-136" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.CONSUMER_SECRET -scapi.tests.test_connect.CONSUMER_SECRET -scapi.tests.test_oauth.CONSUMER_SECRET" class="py-name" href="#" onclick="return doclink('link-136', 'CONSUMER_SECRET', 'link-11');">CONSUMER_SECRET</a></tt><tt class="py-op">,</tt> </tt> -<a name="L156"></a><tt class="py-lineno">156</tt> <tt class="py-line"> <tt class="py-name">token</tt><tt class="py-op">,</tt> </tt> -<a name="L157"></a><tt class="py-lineno">157</tt> <tt class="py-line"> <tt class="py-name">secret</tt><tt class="py-op">)</tt> </tt> -<a name="L158"></a><tt class="py-lineno">158</tt> <tt class="py-line"> </tt> -<a name="L159"></a><tt class="py-lineno">159</tt> <tt class="py-line"> <tt class="py-name">sca</tt> <tt class="py-op">=</tt> <tt id="link-137" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-137', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-138" class="py-name"><a title="scapi.ApiConnector" class="py-name" href="#" onclick="return doclink('link-138', 'ApiConnector', 'link-43');">ApiConnector</a></tt><tt class="py-op">(</tt><tt id="link-139" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.API_HOST -scapi.tests.test_connect.API_HOST" class="py-name" href="#" onclick="return doclink('link-139', 'API_HOST', 'link-12');">API_HOST</a></tt><tt class="py-op">,</tt> <tt class="py-name">authenticator</tt><tt class="py-op">=</tt><tt class="py-name">oauth_authenticator</tt><tt class="py-op">)</tt> </tt> -<a name="L160"></a><tt class="py-lineno">160</tt> <tt class="py-line"> <tt id="link-140" class="py-name" targets="Method scapi.tests.scapi_tests.SCAPITests.test_track_creation()=scapi.tests.scapi_tests.SCAPITests-class.html#test_track_creation,Function scapi.tests.test_connect.test_track_creation()=scapi.tests.test_connect-module.html#test_track_creation"><a title="scapi.tests.scapi_tests.SCAPITests.test_track_creation -scapi.tests.test_connect.test_track_creation" class="py-name" href="#" onclick="return doclink('link-140', 'test_track_creation', 'link-140');">test_track_creation</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -</div><a name="L161"></a><tt class="py-lineno">161</tt> <tt class="py-line"> </tt> -<a name="test_track_creation"></a><div id="test_track_creation-def"><a name="L162"></a><tt class="py-lineno">162</tt> <a class="py-toggle" href="#" id="test_track_creation-toggle" onclick="return toggle('test_track_creation');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.tests.test_connect-module.html#test_track_creation">test_track_creation</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="test_track_creation-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="test_track_creation-expanded"><a name="L163"></a><tt class="py-lineno">163</tt> <tt class="py-line"> <tt class="py-name">sca</tt> <tt class="py-op">=</tt> <tt id="link-141" class="py-name"><a title="scapi.tests.test_connect.ROOT" class="py-name" href="#" onclick="return doclink('link-141', 'ROOT', 'link-17');">ROOT</a></tt> </tt> -<a name="L164"></a><tt class="py-lineno">164</tt> <tt class="py-line"> <tt class="py-name">track</tt> <tt class="py-op">=</tt> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt id="link-142" class="py-name"><a title="scapi.Track" class="py-name" href="#" onclick="return doclink('link-142', 'Track', 'link-108');">Track</a></tt><tt class="py-op">.</tt><tt id="link-143" class="py-name" targets="Class Method scapi.RESTBase.new()=scapi.RESTBase-class.html#new"><a title="scapi.RESTBase.new" class="py-name" href="#" onclick="return doclink('link-143', 'new', 'link-143');">new</a></tt><tt class="py-op">(</tt><tt class="py-name">title</tt><tt class="py-op">=</tt><tt class="py-string">'bar'</tt><tt class="py-op">)</tt> </tt> -<a name="L165"></a><tt class="py-lineno">165</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">track</tt><tt class="py-op">,</tt> <tt id="link-144" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-144', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-145" class="py-name"><a title="scapi.Track" class="py-name" href="#" onclick="return doclink('link-145', 'Track', 'link-108');">Track</a></tt><tt class="py-op">)</tt> </tt> -</div><a name="L166"></a><tt class="py-lineno">166</tt> <tt class="py-line"> </tt> -<a name="test_track_update"></a><div id="test_track_update-def"><a name="L167"></a><tt class="py-lineno">167</tt> <a class="py-toggle" href="#" id="test_track_update-toggle" onclick="return toggle('test_track_update');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.tests.test_connect-module.html#test_track_update">test_track_update</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="test_track_update-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="test_track_update-expanded"><a name="L168"></a><tt class="py-lineno">168</tt> <tt class="py-line"> <tt class="py-name">sca</tt> <tt class="py-op">=</tt> <tt id="link-146" class="py-name"><a title="scapi.tests.test_connect.ROOT" class="py-name" href="#" onclick="return doclink('link-146', 'ROOT', 'link-17');">ROOT</a></tt> </tt> -<a name="L169"></a><tt class="py-lineno">169</tt> <tt class="py-line"> <tt class="py-name">track</tt> <tt class="py-op">=</tt> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt id="link-147" class="py-name"><a title="scapi.Track" class="py-name" href="#" onclick="return doclink('link-147', 'Track', 'link-108');">Track</a></tt><tt class="py-op">.</tt><tt id="link-148" class="py-name"><a title="scapi.RESTBase.new" class="py-name" href="#" onclick="return doclink('link-148', 'new', 'link-143');">new</a></tt><tt class="py-op">(</tt><tt class="py-name">title</tt><tt class="py-op">=</tt><tt class="py-string">'bar'</tt><tt class="py-op">)</tt> </tt> -<a name="L170"></a><tt class="py-lineno">170</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">track</tt><tt class="py-op">,</tt> <tt id="link-149" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-149', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-150" class="py-name"><a title="scapi.Track" class="py-name" href="#" onclick="return doclink('link-150', 'Track', 'link-108');">Track</a></tt><tt class="py-op">)</tt> </tt> -<a name="L171"></a><tt class="py-lineno">171</tt> <tt class="py-line"> <tt class="py-name">track</tt><tt class="py-op">.</tt><tt class="py-name">title</tt><tt class="py-op">=</tt><tt class="py-string">'baz'</tt> </tt> -<a name="L172"></a><tt class="py-lineno">172</tt> <tt class="py-line"> <tt class="py-name">track</tt> <tt class="py-op">=</tt> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt id="link-151" class="py-name"><a title="scapi.Track" class="py-name" href="#" onclick="return doclink('link-151', 'Track', 'link-108');">Track</a></tt><tt class="py-op">.</tt><tt id="link-152" class="py-name"><a title="scapi.RESTBase.get" class="py-name" href="#" onclick="return doclink('link-152', 'get', 'link-59');">get</a></tt><tt class="py-op">(</tt><tt class="py-name">track</tt><tt class="py-op">.</tt><tt class="py-name">id</tt><tt class="py-op">)</tt> </tt> -<a name="L173"></a><tt class="py-lineno">173</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">track</tt><tt class="py-op">.</tt><tt class="py-name">title</tt> <tt class="py-op">==</tt> <tt class="py-string">"baz"</tt> </tt> -</div><a name="L174"></a><tt class="py-lineno">174</tt> <tt class="py-line"> </tt> -<a name="test_scoped_track_creation"></a><div id="test_scoped_track_creation-def"><a name="L175"></a><tt class="py-lineno">175</tt> <a class="py-toggle" href="#" id="test_scoped_track_creation-toggle" onclick="return toggle('test_scoped_track_creation');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.tests.test_connect-module.html#test_scoped_track_creation">test_scoped_track_creation</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="test_scoped_track_creation-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="test_scoped_track_creation-expanded"><a name="L176"></a><tt class="py-lineno">176</tt> <tt class="py-line"> <tt class="py-name">sca</tt> <tt class="py-op">=</tt> <tt id="link-153" class="py-name"><a title="scapi.tests.test_connect.ROOT" class="py-name" href="#" onclick="return doclink('link-153', 'ROOT', 'link-17');">ROOT</a></tt> </tt> -<a name="L177"></a><tt class="py-lineno">177</tt> <tt class="py-line"> <tt class="py-name">user</tt> <tt class="py-op">=</tt> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt class="py-name">me</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L178"></a><tt class="py-lineno">178</tt> <tt class="py-line"> <tt class="py-name">track</tt> <tt class="py-op">=</tt> <tt class="py-name">user</tt><tt class="py-op">.</tt><tt class="py-name">tracks</tt><tt class="py-op">.</tt><tt id="link-154" class="py-name"><a title="scapi.RESTBase.new" class="py-name" href="#" onclick="return doclink('link-154', 'new', 'link-143');">new</a></tt><tt class="py-op">(</tt><tt class="py-name">title</tt><tt class="py-op">=</tt><tt class="py-string">"bar"</tt><tt class="py-op">)</tt> </tt> -<a name="L179"></a><tt class="py-lineno">179</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">track</tt><tt class="py-op">,</tt> <tt id="link-155" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-155', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-156" class="py-name"><a title="scapi.Track" class="py-name" href="#" onclick="return doclink('link-156', 'Track', 'link-108');">Track</a></tt><tt class="py-op">)</tt> </tt> -</div><a name="L180"></a><tt class="py-lineno">180</tt> <tt class="py-line"> </tt> -<a name="test_upload"></a><div id="test_upload-def"><a name="L181"></a><tt class="py-lineno">181</tt> <a class="py-toggle" href="#" id="test_upload-toggle" onclick="return toggle('test_upload');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.tests.test_connect-module.html#test_upload">test_upload</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="test_upload-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="test_upload-expanded"><a name="L182"></a><tt class="py-lineno">182</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">pkg_resources</tt><tt class="py-op">.</tt><tt class="py-name">resource_exists</tt><tt class="py-op">(</tt><tt class="py-string">"scapi.tests.test_connect"</tt><tt class="py-op">,</tt> <tt class="py-string">"knaster.mp3"</tt><tt class="py-op">)</tt> </tt> -<a name="L183"></a><tt class="py-lineno">183</tt> <tt class="py-line"> <tt class="py-name">data</tt> <tt class="py-op">=</tt> <tt class="py-name">pkg_resources</tt><tt class="py-op">.</tt><tt class="py-name">resource_stream</tt><tt class="py-op">(</tt><tt class="py-string">"scapi.tests.test_connect"</tt><tt class="py-op">,</tt> <tt class="py-string">"knaster.mp3"</tt><tt class="py-op">)</tt> </tt> -<a name="L184"></a><tt class="py-lineno">184</tt> <tt class="py-line"> <tt class="py-name">sca</tt> <tt class="py-op">=</tt> <tt id="link-157" class="py-name"><a title="scapi.tests.test_connect.ROOT" class="py-name" href="#" onclick="return doclink('link-157', 'ROOT', 'link-17');">ROOT</a></tt> </tt> -<a name="L185"></a><tt class="py-lineno">185</tt> <tt class="py-line"> <tt class="py-name">user</tt> <tt class="py-op">=</tt> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt class="py-name">me</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L186"></a><tt class="py-lineno">186</tt> <tt class="py-line"> <tt id="link-158" class="py-name"><a title="scapi.authentication.logger -scapi.logger -scapi.tests.scapi_tests.logger -scapi.tests.test_connect.logger -scapi.tests.test_oauth.logger" class="py-name" href="#" onclick="return doclink('link-158', 'logger', 'link-3');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-name">user</tt><tt class="py-op">)</tt> </tt> -<a name="L187"></a><tt class="py-lineno">187</tt> <tt class="py-line"> <tt class="py-name">asset</tt> <tt class="py-op">=</tt> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt class="py-name">assets</tt><tt class="py-op">.</tt><tt id="link-159" class="py-name"><a title="scapi.RESTBase.new" class="py-name" href="#" onclick="return doclink('link-159', 'new', 'link-143');">new</a></tt><tt class="py-op">(</tt><tt class="py-name">filedata</tt><tt class="py-op">=</tt><tt class="py-name">data</tt><tt class="py-op">)</tt> </tt> -<a name="L188"></a><tt class="py-lineno">188</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">asset</tt><tt class="py-op">,</tt> <tt id="link-160" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-160', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt class="py-name">Asset</tt><tt class="py-op">)</tt> </tt> -<a name="L189"></a><tt class="py-lineno">189</tt> <tt class="py-line"> <tt id="link-161" class="py-name"><a title="scapi.authentication.logger -scapi.logger -scapi.tests.scapi_tests.logger -scapi.tests.test_connect.logger -scapi.tests.test_oauth.logger" class="py-name" href="#" onclick="return doclink('link-161', 'logger', 'link-3');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-name">asset</tt><tt class="py-op">)</tt> </tt> -<a name="L190"></a><tt class="py-lineno">190</tt> <tt class="py-line"> <tt class="py-name">tracks</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">user</tt><tt class="py-op">.</tt><tt class="py-name">tracks</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L191"></a><tt class="py-lineno">191</tt> <tt class="py-line"> <tt class="py-name">track</tt> <tt class="py-op">=</tt> <tt class="py-name">tracks</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt> -<a name="L192"></a><tt class="py-lineno">192</tt> <tt class="py-line"> <tt class="py-name">track</tt><tt class="py-op">.</tt><tt class="py-name">assets</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">asset</tt><tt class="py-op">)</tt> </tt> -</div><a name="L193"></a><tt class="py-lineno">193</tt> <tt class="py-line"> </tt> -<a name="test_contact_list"></a><div id="test_contact_list-def"><a name="L194"></a><tt class="py-lineno">194</tt> <a class="py-toggle" href="#" id="test_contact_list-toggle" onclick="return toggle('test_contact_list');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.tests.test_connect-module.html#test_contact_list">test_contact_list</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="test_contact_list-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="test_contact_list-expanded"><a name="L195"></a><tt class="py-lineno">195</tt> <tt class="py-line"> <tt class="py-name">sca</tt> <tt class="py-op">=</tt> <tt id="link-162" class="py-name"><a title="scapi.tests.test_connect.ROOT" class="py-name" href="#" onclick="return doclink('link-162', 'ROOT', 'link-17');">ROOT</a></tt> </tt> -<a name="L196"></a><tt class="py-lineno">196</tt> <tt class="py-line"> <tt class="py-name">user</tt> <tt class="py-op">=</tt> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt class="py-name">me</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L197"></a><tt class="py-lineno">197</tt> <tt class="py-line"> <tt class="py-name">contacts</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">user</tt><tt class="py-op">.</tt><tt class="py-name">contacts</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L198"></a><tt class="py-lineno">198</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">contacts</tt><tt class="py-op">,</tt> <tt class="py-name">list</tt><tt class="py-op">)</tt> </tt> -<a name="L199"></a><tt class="py-lineno">199</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">contacts</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt id="link-163" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-163', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-164" class="py-name"><a title="scapi.User" class="py-name" href="#" onclick="return doclink('link-164', 'User', 'link-100');">User</a></tt><tt class="py-op">)</tt> </tt> -</div><a name="L200"></a><tt class="py-lineno">200</tt> <tt class="py-line"> </tt> -<a name="test_permissions"></a><div id="test_permissions-def"><a name="L201"></a><tt class="py-lineno">201</tt> <a class="py-toggle" href="#" id="test_permissions-toggle" onclick="return toggle('test_permissions');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.tests.test_connect-module.html#test_permissions">test_permissions</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="test_permissions-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="test_permissions-expanded"><a name="L202"></a><tt class="py-lineno">202</tt> <tt class="py-line"> <tt class="py-name">sca</tt> <tt class="py-op">=</tt> <tt id="link-165" class="py-name"><a title="scapi.tests.test_connect.ROOT" class="py-name" href="#" onclick="return doclink('link-165', 'ROOT', 'link-17');">ROOT</a></tt> </tt> -<a name="L203"></a><tt class="py-lineno">203</tt> <tt class="py-line"> <tt class="py-name">user</tt> <tt class="py-op">=</tt> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt class="py-name">me</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L204"></a><tt class="py-lineno">204</tt> <tt class="py-line"> <tt class="py-name">tracks</tt> <tt class="py-op">=</tt> <tt class="py-name">itertools</tt><tt class="py-op">.</tt><tt class="py-name">islice</tt><tt class="py-op">(</tt><tt class="py-name">user</tt><tt class="py-op">.</tt><tt class="py-name">tracks</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt> </tt> -<a name="L205"></a><tt class="py-lineno">205</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">track</tt> <tt class="py-keyword">in</tt> <tt class="py-name">tracks</tt><tt class="py-op">:</tt> </tt> -<a name="L206"></a><tt class="py-lineno">206</tt> <tt class="py-line"> <tt class="py-name">permissions</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">track</tt><tt class="py-op">.</tt><tt class="py-name">permissions</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L207"></a><tt class="py-lineno">207</tt> <tt class="py-line"> <tt id="link-166" class="py-name"><a title="scapi.authentication.logger -scapi.logger -scapi.tests.scapi_tests.logger -scapi.tests.test_connect.logger -scapi.tests.test_oauth.logger" class="py-name" href="#" onclick="return doclink('link-166', 'logger', 'link-3');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-name">permissions</tt><tt class="py-op">)</tt> </tt> -<a name="L208"></a><tt class="py-lineno">208</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">permissions</tt><tt class="py-op">,</tt> <tt class="py-name">list</tt><tt class="py-op">)</tt> </tt> -<a name="L209"></a><tt class="py-lineno">209</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">permissions</tt><tt class="py-op">:</tt> </tt> -<a name="L210"></a><tt class="py-lineno">210</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">permissions</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt id="link-167" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-167', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-168" class="py-name"><a title="scapi.User" class="py-name" href="#" onclick="return doclink('link-168', 'User', 'link-100');">User</a></tt><tt class="py-op">)</tt> </tt> -</div><a name="L211"></a><tt class="py-lineno">211</tt> <tt class="py-line"> </tt> -<a name="test_setting_permissions"></a><div id="test_setting_permissions-def"><a name="L212"></a><tt class="py-lineno">212</tt> <a class="py-toggle" href="#" id="test_setting_permissions-toggle" onclick="return toggle('test_setting_permissions');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.tests.test_connect-module.html#test_setting_permissions">test_setting_permissions</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="test_setting_permissions-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="test_setting_permissions-expanded"><a name="L213"></a><tt class="py-lineno">213</tt> <tt class="py-line"> <tt class="py-name">sca</tt> <tt class="py-op">=</tt> <tt id="link-169" class="py-name"><a title="scapi.tests.test_connect.ROOT" class="py-name" href="#" onclick="return doclink('link-169', 'ROOT', 'link-17');">ROOT</a></tt> </tt> -<a name="L214"></a><tt class="py-lineno">214</tt> <tt class="py-line"> <tt class="py-name">me</tt> <tt class="py-op">=</tt> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt class="py-name">me</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L215"></a><tt class="py-lineno">215</tt> <tt class="py-line"> <tt class="py-name">track</tt> <tt class="py-op">=</tt> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt id="link-170" class="py-name"><a title="scapi.Track" class="py-name" href="#" onclick="return doclink('link-170', 'Track', 'link-108');">Track</a></tt><tt class="py-op">.</tt><tt id="link-171" class="py-name"><a title="scapi.RESTBase.new" class="py-name" href="#" onclick="return doclink('link-171', 'new', 'link-143');">new</a></tt><tt class="py-op">(</tt><tt class="py-name">title</tt><tt class="py-op">=</tt><tt class="py-string">'bar'</tt><tt class="py-op">,</tt> <tt class="py-name">sharing</tt><tt class="py-op">=</tt><tt class="py-string">"private"</tt><tt class="py-op">)</tt> </tt> -<a name="L216"></a><tt class="py-lineno">216</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">track</tt><tt class="py-op">.</tt><tt class="py-name">sharing</tt> <tt class="py-op">==</tt> <tt class="py-string">"private"</tt> </tt> -<a name="L217"></a><tt class="py-lineno">217</tt> <tt class="py-line"> <tt class="py-name">users</tt> <tt class="py-op">=</tt> <tt class="py-name">itertools</tt><tt class="py-op">.</tt><tt class="py-name">islice</tt><tt class="py-op">(</tt><tt class="py-name">sca</tt><tt class="py-op">.</tt><tt class="py-name">users</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-number">10</tt><tt class="py-op">)</tt> </tt> -<a name="L218"></a><tt class="py-lineno">218</tt> <tt class="py-line"> <tt class="py-name">users_to_set</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">user</tt> <tt class="py-keyword">for</tt> <tt class="py-name">user</tt> <tt class="py-keyword">in</tt> <tt class="py-name">users</tt> <tt class="py-keyword">if</tt> <tt class="py-name">user</tt> <tt class="py-op">!=</tt> <tt class="py-name">me</tt><tt class="py-op">]</tt> </tt> -<a name="L219"></a><tt class="py-lineno">219</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">users_to_set</tt><tt class="py-op">,</tt> <tt class="py-string">"Didn't find any suitable users"</tt> </tt> -<a name="L220"></a><tt class="py-lineno">220</tt> <tt class="py-line"> <tt class="py-name">track</tt><tt class="py-op">.</tt><tt class="py-name">permissions</tt> <tt class="py-op">=</tt> <tt class="py-name">users_to_set</tt> </tt> -<a name="L221"></a><tt class="py-lineno">221</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">set</tt><tt class="py-op">(</tt><tt class="py-name">track</tt><tt class="py-op">.</tt><tt class="py-name">permissions</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-name">set</tt><tt class="py-op">(</tt><tt class="py-name">users_to_set</tt><tt class="py-op">)</tt> </tt> -</div><a name="L222"></a><tt class="py-lineno">222</tt> <tt class="py-line"> </tt> -<a name="test_setting_comments"></a><div id="test_setting_comments-def"><a name="L223"></a><tt class="py-lineno">223</tt> <a class="py-toggle" href="#" id="test_setting_comments-toggle" onclick="return toggle('test_setting_comments');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.tests.test_connect-module.html#test_setting_comments">test_setting_comments</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="test_setting_comments-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="test_setting_comments-expanded"><a name="L224"></a><tt class="py-lineno">224</tt> <tt class="py-line"> <tt class="py-name">sca</tt> <tt class="py-op">=</tt> <tt id="link-172" class="py-name"><a title="scapi.tests.test_connect.ROOT" class="py-name" href="#" onclick="return doclink('link-172', 'ROOT', 'link-17');">ROOT</a></tt> </tt> -<a name="L225"></a><tt class="py-lineno">225</tt> <tt class="py-line"> <tt class="py-name">user</tt> <tt class="py-op">=</tt> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt class="py-name">me</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L226"></a><tt class="py-lineno">226</tt> <tt class="py-line"> <tt class="py-name">track</tt> <tt class="py-op">=</tt> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt id="link-173" class="py-name"><a title="scapi.Track" class="py-name" href="#" onclick="return doclink('link-173', 'Track', 'link-108');">Track</a></tt><tt class="py-op">.</tt><tt id="link-174" class="py-name"><a title="scapi.RESTBase.new" class="py-name" href="#" onclick="return doclink('link-174', 'new', 'link-143');">new</a></tt><tt class="py-op">(</tt><tt class="py-name">title</tt><tt class="py-op">=</tt><tt class="py-string">'bar'</tt><tt class="py-op">,</tt> <tt class="py-name">sharing</tt><tt class="py-op">=</tt><tt class="py-string">"private"</tt><tt class="py-op">)</tt> </tt> -<a name="L227"></a><tt class="py-lineno">227</tt> <tt class="py-line"> <tt class="py-name">comment</tt> <tt class="py-op">=</tt> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt id="link-175" class="py-name" targets="Class scapi.Comment=scapi.Comment-class.html"><a title="scapi.Comment" class="py-name" href="#" onclick="return doclink('link-175', 'Comment', 'link-175');">Comment</a></tt><tt class="py-op">.</tt><tt id="link-176" class="py-name" targets="Class Method scapi.RESTBase.create()=scapi.RESTBase-class.html#create"><a title="scapi.RESTBase.create" class="py-name" href="#" onclick="return doclink('link-176', 'create', 'link-176');">create</a></tt><tt class="py-op">(</tt><tt class="py-name">body</tt><tt class="py-op">=</tt><tt class="py-string">"This is the body of my comment"</tt><tt class="py-op">,</tt> <tt class="py-name">timestamp</tt><tt class="py-op">=</tt><tt class="py-number">10</tt><tt class="py-op">)</tt> </tt> -<a name="L228"></a><tt class="py-lineno">228</tt> <tt class="py-line"> <tt class="py-name">track</tt><tt class="py-op">.</tt><tt class="py-name">comments</tt> <tt class="py-op">=</tt> <tt class="py-name">comment</tt> </tt> -<a name="L229"></a><tt class="py-lineno">229</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">track</tt><tt class="py-op">.</tt><tt class="py-name">comments</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-177" class="py-name" targets="Method scapi.json._StringGenerator.next()=scapi.json._StringGenerator-class.html#next"><a title="scapi.json._StringGenerator.next" class="py-name" href="#" onclick="return doclink('link-177', 'next', 'link-177');">next</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">body</tt> <tt class="py-op">==</tt> <tt class="py-name">comment</tt><tt class="py-op">.</tt><tt class="py-name">body</tt> </tt> -</div><a name="L230"></a><tt class="py-lineno">230</tt> <tt class="py-line"> </tt> -<a name="L231"></a><tt class="py-lineno">231</tt> <tt class="py-line"> </tt> -<a name="test_setting_comments_the_way_shawn_says_its_correct"></a><div id="test_setting_comments_the_way_shawn_says_its_correct-def"><a name="L232"></a><tt class="py-lineno">232</tt> <a class="py-toggle" href="#" id="test_setting_comments_the_way_shawn_says_its_correct-toggle" onclick="return toggle('test_setting_comments_the_way_shawn_says_its_correct');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.tests.test_connect-module.html#test_setting_comments_the_way_shawn_says_its_correct">test_setting_comments_the_way_shawn_says_its_correct</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="test_setting_comments_the_way_shawn_says_its_correct-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="test_setting_comments_the_way_shawn_says_its_correct-expanded"><a name="L233"></a><tt class="py-lineno">233</tt> <tt class="py-line"> <tt class="py-name">sca</tt> <tt class="py-op">=</tt> <tt id="link-178" class="py-name"><a title="scapi.tests.test_connect.ROOT" class="py-name" href="#" onclick="return doclink('link-178', 'ROOT', 'link-17');">ROOT</a></tt> </tt> -<a name="L234"></a><tt class="py-lineno">234</tt> <tt class="py-line"> <tt class="py-name">track</tt> <tt class="py-op">=</tt> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt id="link-179" class="py-name"><a title="scapi.Track" class="py-name" href="#" onclick="return doclink('link-179', 'Track', 'link-108');">Track</a></tt><tt class="py-op">.</tt><tt id="link-180" class="py-name"><a title="scapi.RESTBase.new" class="py-name" href="#" onclick="return doclink('link-180', 'new', 'link-143');">new</a></tt><tt class="py-op">(</tt><tt class="py-name">title</tt><tt class="py-op">=</tt><tt class="py-string">'bar'</tt><tt class="py-op">,</tt> <tt class="py-name">sharing</tt><tt class="py-op">=</tt><tt class="py-string">"private"</tt><tt class="py-op">)</tt> </tt> -<a name="L235"></a><tt class="py-lineno">235</tt> <tt class="py-line"> <tt class="py-name">cbody</tt> <tt class="py-op">=</tt> <tt class="py-string">"This is the body of my comment"</tt> </tt> -<a name="L236"></a><tt class="py-lineno">236</tt> <tt class="py-line"> <tt class="py-name">track</tt><tt class="py-op">.</tt><tt class="py-name">comments</tt><tt class="py-op">.</tt><tt id="link-181" class="py-name"><a title="scapi.RESTBase.new" class="py-name" href="#" onclick="return doclink('link-181', 'new', 'link-143');">new</a></tt><tt class="py-op">(</tt><tt class="py-name">body</tt><tt class="py-op">=</tt><tt class="py-name">cbody</tt><tt class="py-op">,</tt> <tt class="py-name">timestamp</tt><tt class="py-op">=</tt><tt class="py-number">10</tt><tt class="py-op">)</tt> </tt> -<a name="L237"></a><tt class="py-lineno">237</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">track</tt><tt class="py-op">.</tt><tt class="py-name">comments</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">body</tt> <tt class="py-op">==</tt> <tt class="py-name">cbody</tt> </tt> -</div><a name="L238"></a><tt class="py-lineno">238</tt> <tt class="py-line"> </tt> -<a name="test_contact_add_and_removal"></a><div id="test_contact_add_and_removal-def"><a name="L239"></a><tt class="py-lineno">239</tt> <a class="py-toggle" href="#" id="test_contact_add_and_removal-toggle" onclick="return toggle('test_contact_add_and_removal');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.tests.test_connect-module.html#test_contact_add_and_removal">test_contact_add_and_removal</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="test_contact_add_and_removal-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="test_contact_add_and_removal-expanded"><a name="L240"></a><tt class="py-lineno">240</tt> <tt class="py-line"> <tt class="py-name">sca</tt> <tt class="py-op">=</tt> <tt id="link-182" class="py-name"><a title="scapi.tests.test_connect.ROOT" class="py-name" href="#" onclick="return doclink('link-182', 'ROOT', 'link-17');">ROOT</a></tt> </tt> -<a name="L241"></a><tt class="py-lineno">241</tt> <tt class="py-line"> <tt class="py-name">me</tt> <tt class="py-op">=</tt> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt class="py-name">me</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L242"></a><tt class="py-lineno">242</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">user</tt> <tt class="py-keyword">in</tt> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt class="py-name">users</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L243"></a><tt class="py-lineno">243</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">user</tt> <tt class="py-op">!=</tt> <tt class="py-name">me</tt><tt class="py-op">:</tt> </tt> -<a name="L244"></a><tt class="py-lineno">244</tt> <tt class="py-line"> <tt class="py-name">user_to_set</tt> <tt class="py-op">=</tt> <tt class="py-name">user</tt> </tt> -<a name="L245"></a><tt class="py-lineno">245</tt> <tt class="py-line"> <tt class="py-keyword">break</tt> </tt> -<a name="L246"></a><tt class="py-lineno">246</tt> <tt class="py-line"> </tt> -<a name="L247"></a><tt class="py-lineno">247</tt> <tt class="py-line"> <tt class="py-name">contacts</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">me</tt><tt class="py-op">.</tt><tt class="py-name">contacts</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L248"></a><tt class="py-lineno">248</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">user_to_set</tt> <tt class="py-keyword">in</tt> <tt class="py-name">contacts</tt><tt class="py-op">:</tt> </tt> -<a name="L249"></a><tt class="py-lineno">249</tt> <tt class="py-line"> <tt class="py-name">me</tt><tt class="py-op">.</tt><tt class="py-name">contacts</tt><tt class="py-op">.</tt><tt class="py-name">remove</tt><tt class="py-op">(</tt><tt class="py-name">user_to_set</tt><tt class="py-op">)</tt> </tt> -<a name="L250"></a><tt class="py-lineno">250</tt> <tt class="py-line"> </tt> -<a name="L251"></a><tt class="py-lineno">251</tt> <tt class="py-line"> <tt class="py-name">me</tt><tt class="py-op">.</tt><tt class="py-name">contacts</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">user_to_set</tt><tt class="py-op">)</tt> </tt> -<a name="L252"></a><tt class="py-lineno">252</tt> <tt class="py-line"> </tt> -<a name="L253"></a><tt class="py-lineno">253</tt> <tt class="py-line"> <tt class="py-name">contacts</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">me</tt><tt class="py-op">.</tt><tt class="py-name">contacts</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">)</tt> </tt> -<a name="L254"></a><tt class="py-lineno">254</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">user_to_set</tt><tt class="py-op">.</tt><tt class="py-name">id</tt> <tt class="py-keyword">in</tt> <tt class="py-op">[</tt><tt class="py-name">c</tt><tt class="py-op">.</tt><tt class="py-name">id</tt> <tt class="py-keyword">for</tt> <tt class="py-name">c</tt> <tt class="py-keyword">in</tt> <tt class="py-name">contacts</tt><tt class="py-op">]</tt> </tt> -<a name="L255"></a><tt class="py-lineno">255</tt> <tt class="py-line"> </tt> -<a name="L256"></a><tt class="py-lineno">256</tt> <tt class="py-line"> <tt class="py-name">me</tt><tt class="py-op">.</tt><tt class="py-name">contacts</tt><tt class="py-op">.</tt><tt class="py-name">remove</tt><tt class="py-op">(</tt><tt class="py-name">user_to_set</tt><tt class="py-op">)</tt> </tt> -<a name="L257"></a><tt class="py-lineno">257</tt> <tt class="py-line"> </tt> -<a name="L258"></a><tt class="py-lineno">258</tt> <tt class="py-line"> <tt class="py-name">contacts</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">me</tt><tt class="py-op">.</tt><tt class="py-name">contacts</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">)</tt> </tt> -<a name="L259"></a><tt class="py-lineno">259</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">user_to_set</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">contacts</tt> </tt> -</div><a name="L260"></a><tt class="py-lineno">260</tt> <tt class="py-line"> </tt> -<a name="L261"></a><tt class="py-lineno">261</tt> <tt class="py-line"> </tt> -<a name="test_favorites"></a><div id="test_favorites-def"><a name="L262"></a><tt class="py-lineno">262</tt> <a class="py-toggle" href="#" id="test_favorites-toggle" onclick="return toggle('test_favorites');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.tests.test_connect-module.html#test_favorites">test_favorites</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="test_favorites-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="test_favorites-expanded"><a name="L263"></a><tt class="py-lineno">263</tt> <tt class="py-line"> <tt class="py-name">sca</tt> <tt class="py-op">=</tt> <tt id="link-183" class="py-name"><a title="scapi.tests.test_connect.ROOT" class="py-name" href="#" onclick="return doclink('link-183', 'ROOT', 'link-17');">ROOT</a></tt> </tt> -<a name="L264"></a><tt class="py-lineno">264</tt> <tt class="py-line"> <tt class="py-name">me</tt> <tt class="py-op">=</tt> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt class="py-name">me</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L265"></a><tt class="py-lineno">265</tt> <tt class="py-line"> </tt> -<a name="L266"></a><tt class="py-lineno">266</tt> <tt class="py-line"> <tt class="py-name">favorites</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">me</tt><tt class="py-op">.</tt><tt class="py-name">favorites</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L267"></a><tt class="py-lineno">267</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">favorites</tt> <tt class="py-op">==</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> <tt class="py-keyword">or</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">favorites</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt id="link-184" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-184', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-185" class="py-name"><a title="scapi.Track" class="py-name" href="#" onclick="return doclink('link-185', 'Track', 'link-108');">Track</a></tt><tt class="py-op">)</tt> </tt> -<a name="L268"></a><tt class="py-lineno">268</tt> <tt class="py-line"> </tt> -<a name="L269"></a><tt class="py-lineno">269</tt> <tt class="py-line"> <tt class="py-name">track</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt> -<a name="L270"></a><tt class="py-lineno">270</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">user</tt> <tt class="py-keyword">in</tt> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt class="py-name">users</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L271"></a><tt class="py-lineno">271</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">user</tt> <tt class="py-op">==</tt> <tt class="py-name">me</tt><tt class="py-op">:</tt> </tt> -<a name="L272"></a><tt class="py-lineno">272</tt> <tt class="py-line"> <tt class="py-keyword">continue</tt> </tt> -<a name="L273"></a><tt class="py-lineno">273</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">track</tt> <tt class="py-keyword">in</tt> <tt class="py-name">user</tt><tt class="py-op">.</tt><tt class="py-name">tracks</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L274"></a><tt class="py-lineno">274</tt> <tt class="py-line"> <tt class="py-keyword">break</tt> </tt> -<a name="L275"></a><tt class="py-lineno">275</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">track</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> -<a name="L276"></a><tt class="py-lineno">276</tt> <tt class="py-line"> <tt class="py-keyword">break</tt> </tt> -<a name="L277"></a><tt class="py-lineno">277</tt> <tt class="py-line"> </tt> -<a name="L278"></a><tt class="py-lineno">278</tt> <tt class="py-line"> <tt class="py-name">me</tt><tt class="py-op">.</tt><tt class="py-name">favorites</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">track</tt><tt class="py-op">)</tt> </tt> -<a name="L279"></a><tt class="py-lineno">279</tt> <tt class="py-line"> </tt> -<a name="L280"></a><tt class="py-lineno">280</tt> <tt class="py-line"> <tt class="py-name">favorites</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">me</tt><tt class="py-op">.</tt><tt class="py-name">favorites</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L281"></a><tt class="py-lineno">281</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">track</tt> <tt class="py-keyword">in</tt> <tt class="py-name">favorites</tt> </tt> -<a name="L282"></a><tt class="py-lineno">282</tt> <tt class="py-line"> </tt> -<a name="L283"></a><tt class="py-lineno">283</tt> <tt class="py-line"> <tt class="py-name">me</tt><tt class="py-op">.</tt><tt class="py-name">favorites</tt><tt class="py-op">.</tt><tt class="py-name">remove</tt><tt class="py-op">(</tt><tt class="py-name">track</tt><tt class="py-op">)</tt> </tt> -<a name="L284"></a><tt class="py-lineno">284</tt> <tt class="py-line"> </tt> -<a name="L285"></a><tt class="py-lineno">285</tt> <tt class="py-line"> <tt class="py-name">favorites</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">me</tt><tt class="py-op">.</tt><tt class="py-name">favorites</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L286"></a><tt class="py-lineno">286</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">track</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">favorites</tt> </tt> -</div><a name="L287"></a><tt class="py-lineno">287</tt> <tt class="py-line"> </tt> -<a name="test_large_list"></a><div id="test_large_list-def"><a name="L288"></a><tt class="py-lineno">288</tt> <a class="py-toggle" href="#" id="test_large_list-toggle" onclick="return toggle('test_large_list');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.tests.test_connect-module.html#test_large_list">test_large_list</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="test_large_list-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="test_large_list-expanded"><a name="L289"></a><tt class="py-lineno">289</tt> <tt class="py-line"> <tt class="py-name">sca</tt> <tt class="py-op">=</tt> <tt id="link-186" class="py-name"><a title="scapi.tests.test_connect.ROOT" class="py-name" href="#" onclick="return doclink('link-186', 'ROOT', 'link-17');">ROOT</a></tt> </tt> -<a name="L290"></a><tt class="py-lineno">290</tt> <tt class="py-line"> <tt class="py-name">tracks</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">sca</tt><tt class="py-op">.</tt><tt class="py-name">tracks</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L291"></a><tt class="py-lineno">291</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">tracks</tt><tt class="py-op">)</tt> <tt class="py-op"><</tt> <tt id="link-187" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-187', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-188" class="py-name"><a title="scapi.ApiConnector" class="py-name" href="#" onclick="return doclink('link-188', 'ApiConnector', 'link-43');">ApiConnector</a></tt><tt class="py-op">.</tt><tt id="link-189" class="py-name" targets="Variable scapi.ApiConnector.LIST_LIMIT=scapi.ApiConnector-class.html#LIST_LIMIT"><a title="scapi.ApiConnector.LIST_LIMIT" class="py-name" href="#" onclick="return doclink('link-189', 'LIST_LIMIT', 'link-189');">LIST_LIMIT</a></tt><tt class="py-op">:</tt> </tt> -<a name="L292"></a><tt class="py-lineno">292</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt class="py-name">xrange</tt><tt class="py-op">(</tt><tt id="link-190" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-190', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-191" class="py-name"><a title="scapi.ApiConnector" class="py-name" href="#" onclick="return doclink('link-191', 'ApiConnector', 'link-43');">ApiConnector</a></tt><tt class="py-op">.</tt><tt id="link-192" class="py-name"><a title="scapi.ApiConnector.LIST_LIMIT" class="py-name" href="#" onclick="return doclink('link-192', 'LIST_LIMIT', 'link-189');">LIST_LIMIT</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L293"></a><tt class="py-lineno">293</tt> <tt class="py-line"> <tt id="link-193" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-193', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-194" class="py-name"><a title="scapi.Track" class="py-name" href="#" onclick="return doclink('link-194', 'Track', 'link-108');">Track</a></tt><tt class="py-op">.</tt><tt id="link-195" class="py-name"><a title="scapi.RESTBase.new" class="py-name" href="#" onclick="return doclink('link-195', 'new', 'link-143');">new</a></tt><tt class="py-op">(</tt><tt class="py-name">title</tt><tt class="py-op">=</tt><tt class="py-string">'test_track_%i'</tt> <tt class="py-op">%</tt> <tt class="py-name">i</tt><tt class="py-op">)</tt> </tt> -<a name="L294"></a><tt class="py-lineno">294</tt> <tt class="py-line"> <tt class="py-name">all_tracks</tt> <tt class="py-op">=</tt> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt class="py-name">tracks</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L295"></a><tt class="py-lineno">295</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">all_tracks</tt><tt class="py-op">,</tt> <tt class="py-name">list</tt><tt class="py-op">)</tt> </tt> -<a name="L296"></a><tt class="py-lineno">296</tt> <tt class="py-line"> <tt class="py-name">all_tracks</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">all_tracks</tt><tt class="py-op">)</tt> </tt> -<a name="L297"></a><tt class="py-lineno">297</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">all_tracks</tt><tt class="py-op">)</tt> <tt class="py-op">></tt> <tt id="link-196" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-196', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-197" class="py-name"><a title="scapi.ApiConnector" class="py-name" href="#" onclick="return doclink('link-197', 'ApiConnector', 'link-43');">ApiConnector</a></tt><tt class="py-op">.</tt><tt id="link-198" class="py-name"><a title="scapi.ApiConnector.LIST_LIMIT" class="py-name" href="#" onclick="return doclink('link-198', 'LIST_LIMIT', 'link-189');">LIST_LIMIT</a></tt> </tt> -</div><a name="L298"></a><tt class="py-lineno">298</tt> <tt class="py-line"> </tt> -<a name="L299"></a><tt class="py-lineno">299</tt> <tt class="py-line"> </tt> -<a name="test_events"></a><div id="test_events-def"><a name="L300"></a><tt class="py-lineno">300</tt> <a class="py-toggle" href="#" id="test_events-toggle" onclick="return toggle('test_events');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.tests.test_connect-module.html#test_events">test_events</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="test_events-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="test_events-expanded"><a name="L301"></a><tt class="py-lineno">301</tt> <tt class="py-line"> <tt class="py-name">events</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt id="link-199" class="py-name"><a title="scapi.tests.test_connect.ROOT" class="py-name" href="#" onclick="return doclink('link-199', 'ROOT', 'link-17');">ROOT</a></tt><tt class="py-op">.</tt><tt class="py-name">events</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L302"></a><tt class="py-lineno">302</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">events</tt><tt class="py-op">,</tt> <tt class="py-name">list</tt><tt class="py-op">)</tt> </tt> -<a name="L303"></a><tt class="py-lineno">303</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">events</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt id="link-200" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-200', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-201" class="py-name" targets="Class scapi.Event=scapi.Event-class.html"><a title="scapi.Event" class="py-name" href="#" onclick="return doclink('link-201', 'Event', 'link-201');">Event</a></tt><tt class="py-op">)</tt> </tt> -</div><a name="L304"></a><tt class="py-lineno">304</tt> <tt class="py-line"> </tt> -<a name="test_me_having_stress"></a><div id="test_me_having_stress-def"><a name="L305"></a><tt class="py-lineno">305</tt> <a class="py-toggle" href="#" id="test_me_having_stress-toggle" onclick="return toggle('test_me_having_stress');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.tests.test_connect-module.html#test_me_having_stress">test_me_having_stress</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="test_me_having_stress-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="test_me_having_stress-expanded"><a name="L306"></a><tt class="py-lineno">306</tt> <tt class="py-line"> <tt class="py-name">sca</tt> <tt class="py-op">=</tt> <tt id="link-202" class="py-name"><a title="scapi.tests.test_connect.ROOT" class="py-name" href="#" onclick="return doclink('link-202', 'ROOT', 'link-17');">ROOT</a></tt> </tt> -<a name="L307"></a><tt class="py-lineno">307</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">_</tt> <tt class="py-keyword">in</tt> <tt class="py-name">xrange</tt><tt class="py-op">(</tt><tt class="py-number">20</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L308"></a><tt class="py-lineno">308</tt> <tt class="py-line"> <tt id="link-203" class="py-name" targets="Function scapi.tests.test_connect.setup()=scapi.tests.test_connect-module.html#setup"><a title="scapi.tests.test_connect.setup" class="py-name" href="#" onclick="return doclink('link-203', 'setup', 'link-203');">setup</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L309"></a><tt class="py-lineno">309</tt> <tt class="py-line"> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt class="py-name">me</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -</div><a name="L310"></a><tt class="py-lineno">310</tt> <tt class="py-line"> </tt> -<a name="test_non_global_api"></a><div id="test_non_global_api-def"><a name="L311"></a><tt class="py-lineno">311</tt> <a class="py-toggle" href="#" id="test_non_global_api-toggle" onclick="return toggle('test_non_global_api');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.tests.test_connect-module.html#test_non_global_api">test_non_global_api</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="test_non_global_api-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="test_non_global_api-expanded"><a name="L312"></a><tt class="py-lineno">312</tt> <tt class="py-line"> <tt id="link-204" class="py-name" targets="Variable scapi.tests.scapi_tests.SCAPITests.root=scapi.tests.scapi_tests.SCAPITests-class.html#root"><a title="scapi.tests.scapi_tests.SCAPITests.root" class="py-name" href="#" onclick="return doclink('link-204', 'root', 'link-204');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-205" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-205', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-206" class="py-name"><a title="scapi.Scope" class="py-name" href="#" onclick="return doclink('link-206', 'Scope', 'link-47');">Scope</a></tt><tt class="py-op">(</tt><tt id="link-207" class="py-name"><a title="scapi.tests.test_connect.CONNECTOR" class="py-name" href="#" onclick="return doclink('link-207', 'CONNECTOR', 'link-16');">CONNECTOR</a></tt><tt class="py-op">)</tt> </tt> -<a name="L313"></a><tt class="py-lineno">313</tt> <tt class="py-line"> <tt class="py-name">me</tt> <tt class="py-op">=</tt> <tt id="link-208" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.root" class="py-name" href="#" onclick="return doclink('link-208', 'root', 'link-204');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">me</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L314"></a><tt class="py-lineno">314</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">me</tt><tt class="py-op">,</tt> <tt id="link-209" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-209', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-210" class="py-name"><a title="scapi.User" class="py-name" href="#" onclick="return doclink('link-210', 'User', 'link-100');">User</a></tt><tt class="py-op">)</tt> </tt> -<a name="L315"></a><tt class="py-lineno">315</tt> <tt class="py-line"> </tt> -<a name="L316"></a><tt class="py-lineno">316</tt> <tt class="py-line"> <tt class="py-comment"># now get something *from* that user</tt> </tt> -<a name="L317"></a><tt class="py-lineno">317</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">favorites</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">me</tt><tt class="py-op">.</tt><tt class="py-name">favorites</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L318"></a><tt class="py-lineno">318</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">favorites</tt> </tt> -</div><a name="L319"></a><tt class="py-lineno">319</tt> <tt class="py-line"> </tt> -<a name="test_playlists"></a><div id="test_playlists-def"><a name="L320"></a><tt class="py-lineno">320</tt> <a class="py-toggle" href="#" id="test_playlists-toggle" onclick="return toggle('test_playlists');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.tests.test_connect-module.html#test_playlists">test_playlists</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="test_playlists-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="test_playlists-expanded"><a name="L321"></a><tt class="py-lineno">321</tt> <tt class="py-line"> <tt class="py-name">sca</tt> <tt class="py-op">=</tt> <tt id="link-211" class="py-name"><a title="scapi.tests.test_connect.ROOT" class="py-name" href="#" onclick="return doclink('link-211', 'ROOT', 'link-17');">ROOT</a></tt> </tt> -<a name="L322"></a><tt class="py-lineno">322</tt> <tt class="py-line"> <tt class="py-name">playlists</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">itertools</tt><tt class="py-op">.</tt><tt class="py-name">islice</tt><tt class="py-op">(</tt><tt class="py-name">sca</tt><tt class="py-op">.</tt><tt class="py-name">playlists</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-number">127</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L323"></a><tt class="py-lineno">323</tt> <tt class="py-line"> <tt class="py-name">found</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt> -<a name="L324"></a><tt class="py-lineno">324</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">playlist</tt> <tt class="py-keyword">in</tt> <tt class="py-name">playlists</tt><tt class="py-op">:</tt> </tt> -<a name="L325"></a><tt class="py-lineno">325</tt> <tt class="py-line"> <tt class="py-name">tracks</tt> <tt class="py-op">=</tt> <tt class="py-name">playlist</tt><tt class="py-op">.</tt><tt class="py-name">tracks</tt> </tt> -<a name="L326"></a><tt class="py-lineno">326</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">tracks</tt><tt class="py-op">,</tt> <tt class="py-name">list</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L327"></a><tt class="py-lineno">327</tt> <tt class="py-line"> <tt class="py-name">tracks</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">tracks</tt><tt class="py-op">]</tt> </tt> -<a name="L328"></a><tt class="py-lineno">328</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">trackdata</tt> <tt class="py-keyword">in</tt> <tt class="py-name">tracks</tt><tt class="py-op">:</tt> </tt> -<a name="L329"></a><tt class="py-lineno">329</tt> <tt class="py-line"> <tt class="py-keyword">print</tt> <tt class="py-name">trackdata</tt> </tt> -<a name="L330"></a><tt class="py-lineno">330</tt> <tt class="py-line"> <tt class="py-name">user</tt> <tt class="py-op">=</tt> <tt class="py-name">trackdata</tt><tt class="py-op">.</tt><tt class="py-name">user</tt> </tt> -<a name="L331"></a><tt class="py-lineno">331</tt> <tt class="py-line"> <tt class="py-keyword">print</tt> <tt class="py-name">user</tt> </tt> -<a name="L332"></a><tt class="py-lineno">332</tt> <tt class="py-line"> <tt class="py-keyword">print</tt> <tt class="py-name">user</tt><tt class="py-op">.</tt><tt class="py-name">tracks</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L333"></a><tt class="py-lineno">333</tt> <tt class="py-line"> <tt class="py-keyword">print</tt> <tt class="py-name">playlist</tt><tt class="py-op">.</tt><tt class="py-name">user</tt> </tt> -<a name="L334"></a><tt class="py-lineno">334</tt> <tt class="py-line"> <tt class="py-keyword">break</tt> </tt> -</div><a name="L335"></a><tt class="py-lineno">335</tt> <tt class="py-line"> </tt><script type="text/javascript"> -<!-- -expandto(location.href); -// --> -</script> -</pre> -<br /> -<!-- ==================== NAVIGATION BAR ==================== --> -<table class="navbar" border="0" width="100%" cellpadding="0" - bgcolor="#a0c0ff" cellspacing="0"> - <tr valign="middle"> - <!-- Home link --> - <th> <a - href="scapi-module.html">Home</a> </th> - - <!-- Tree link --> - <th> <a - href="module-tree.html">Trees</a> </th> - - <!-- Index link --> - <th> <a - href="identifier-index.html">Indices</a> </th> - - <!-- Help link --> - <th> <a - href="help.html">Help</a> </th> - - <!-- Project homepage --> - <th class="navbar" align="right" width="100%"> - <table border="0" cellpadding="0" cellspacing="0"> - <tr><th class="navbar" align="center" - >SoundCloud API</th> - </tr></table></th> - </tr> -</table> -<table border="0" cellpadding="0" cellspacing="0" width="100%%"> - <tr> - <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Thu Sep 10 00:58:50 2009 - </td> - <td align="right" class="footer"> - <a target="mainFrame" href="http://epydoc.sourceforge.net" - >http://epydoc.sourceforge.net</a> - </td> - </tr> -</table> - -<script type="text/javascript"> - <!-- - // Private objects are initially displayed (because if - // javascript is turned off then we want them to be - // visible); but by default, we want to hide them. So hide - // them unless we have a cookie that says to show them. - checkCookie(); - // --> -</script> -</body> -</html> diff --git a/python_apps/soundcloud-api/docs/api/scapi.tests.test_oauth-module.html b/python_apps/soundcloud-api/docs/api/scapi.tests.test_oauth-module.html deleted file mode 100644 index 6bf493f9d..000000000 --- a/python_apps/soundcloud-api/docs/api/scapi.tests.test_oauth-module.html +++ /dev/null @@ -1,225 +0,0 @@ -<?xml version="1.0" encoding="ascii"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <title>scapi.tests.test_oauth</title> - <link rel="stylesheet" href="epydoc.css" type="text/css" /> - <script type="text/javascript" src="epydoc.js"></script> -</head> - -<body bgcolor="white" text="black" link="blue" vlink="#204080" - alink="#204080"> -<!-- ==================== NAVIGATION BAR ==================== --> -<table class="navbar" border="0" width="100%" cellpadding="0" - bgcolor="#a0c0ff" cellspacing="0"> - <tr valign="middle"> - <!-- Home link --> - <th> <a - href="scapi-module.html">Home</a> </th> - - <!-- Tree link --> - <th> <a - href="module-tree.html">Trees</a> </th> - - <!-- Index link --> - <th> <a - href="identifier-index.html">Indices</a> </th> - - <!-- Help link --> - <th> <a - href="help.html">Help</a> </th> - - <!-- Project homepage --> - <th class="navbar" align="right" width="100%"> - <table border="0" cellpadding="0" cellspacing="0"> - <tr><th class="navbar" align="center" - >SoundCloud API</th> - </tr></table></th> - </tr> -</table> -<table width="100%" cellpadding="0" cellspacing="0"> - <tr valign="top"> - <td width="100%"> - <span class="breadcrumbs"> - <a href="scapi-module.html">Package scapi</a> :: - <a href="scapi.tests-module.html">Package tests</a> :: - Module test_oauth - </span> - </td> - <td> - <table cellpadding="0" cellspacing="0"> - <!-- hide/show private --> - <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink" - onclick="toggle_private();">hide private</a>]</span></td></tr> - <tr><td align="right"><span class="options" - >[<a href="frames.html" target="_top">frames</a - >] | <a href="scapi.tests.test_oauth-module.html" - target="_top">no frames</a>]</span></td></tr> - </table> - </td> - </tr> -</table> -<!-- ==================== MODULE DESCRIPTION ==================== --> -<h1 class="epydoc">Module test_oauth</h1><p class="nomargin-top"><span class="codelink"><a href="scapi.tests.test_oauth-pysrc.html">source code</a></span></p> -<!-- ==================== FUNCTIONS ==================== --> -<a name="section-Functions"></a> -<table class="summary" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr bgcolor="#70b0f0" class="table-header"> - <td colspan="2" class="table-header"> - <table border="0" cellpadding="0" cellspacing="0" width="100%"> - <tr valign="top"> - <td align="left"><span class="table-header">Functions</span></td> - <td align="right" valign="top" - ><span class="options">[<a href="#section-Functions" - class="privatelink" onclick="toggle_private();" - >hide private</a>]</span></td> - </tr> - </table> - </td> -</tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a name="test_base64_connect"></a><span class="summary-sig-name">test_base64_connect</span>()</span></td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi.tests.test_oauth-pysrc.html#test_base64_connect">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a name="test_oauth_connect"></a><span class="summary-sig-name">test_oauth_connect</span>()</span></td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi.tests.test_oauth-pysrc.html#test_oauth_connect">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> -</table> -<!-- ==================== VARIABLES ==================== --> -<a name="section-Variables"></a> -<table class="summary" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr bgcolor="#70b0f0" class="table-header"> - <td colspan="2" class="table-header"> - <table border="0" cellpadding="0" cellspacing="0" width="100%"> - <tr valign="top"> - <td align="left"><span class="table-header">Variables</span></td> - <td align="right" valign="top" - ><span class="options">[<a href="#section-Variables" - class="privatelink" onclick="toggle_private();" - >hide private</a>]</span></td> - </tr> - </table> - </td> -</tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <a name="logger"></a><span class="summary-name">logger</span> = <code title="logging.getLogger(__name__)">logging.getLogger(__name__)</code> - </td> - </tr> -<tr class="private"> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <a name="_logger"></a><span class="summary-name">_logger</span> = <code title="logging.getLogger("scapi")">logging.getLogger("scapi")</code> - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <a name="TOKEN"></a><span class="summary-name">TOKEN</span> = <code title="'QcciYu1FSwDSGKAG2mNw'"><code class="variable-quote">'</code><code class="variable-string">QcciYu1FSwDSGKAG2mNw</code><code class="variable-quote">'</code></code> - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <a name="SECRET"></a><span class="summary-name">SECRET</span> = <code title="'gJ2ok6ULUsYQB3rsBmpHCRHoFCAPOgK8ZjoIyxzris'"><code class="variable-quote">'</code><code class="variable-string">gJ2ok6ULUsYQB3rsBmpHCRHoFCAPOgK8ZjoIyxzris</code><code class="variable-quote">'</code></code> - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <a name="CONSUMER"></a><span class="summary-name">CONSUMER</span> = <code title="'Cy2eLPrIMp4vOxjz9icdQ'"><code class="variable-quote">'</code><code class="variable-string">Cy2eLPrIMp4vOxjz9icdQ</code><code class="variable-quote">'</code></code> - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <a name="CONSUMER_SECRET"></a><span class="summary-name">CONSUMER_SECRET</span> = <code title="'KsBa272x6M2to00Vo5FdvZXt9kakcX7CDIPJoGwTro'"><code class="variable-quote">'</code><code class="variable-string">KsBa272x6M2to00Vo5FdvZXt9kakcX7CDIPJoGwTro</code><code class="variable-quote">'</code></code> - </td> - </tr> -</table> -<!-- ==================== NAVIGATION BAR ==================== --> -<table class="navbar" border="0" width="100%" cellpadding="0" - bgcolor="#a0c0ff" cellspacing="0"> - <tr valign="middle"> - <!-- Home link --> - <th> <a - href="scapi-module.html">Home</a> </th> - - <!-- Tree link --> - <th> <a - href="module-tree.html">Trees</a> </th> - - <!-- Index link --> - <th> <a - href="identifier-index.html">Indices</a> </th> - - <!-- Help link --> - <th> <a - href="help.html">Help</a> </th> - - <!-- Project homepage --> - <th class="navbar" align="right" width="100%"> - <table border="0" cellpadding="0" cellspacing="0"> - <tr><th class="navbar" align="center" - >SoundCloud API</th> - </tr></table></th> - </tr> -</table> -<table border="0" cellpadding="0" cellspacing="0" width="100%%"> - <tr> - <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Thu Sep 10 00:58:49 2009 - </td> - <td align="right" class="footer"> - <a target="mainFrame" href="http://epydoc.sourceforge.net" - >http://epydoc.sourceforge.net</a> - </td> - </tr> -</table> - -<script type="text/javascript"> - <!-- - // Private objects are initially displayed (because if - // javascript is turned off then we want them to be - // visible); but by default, we want to hide them. So hide - // them unless we have a cookie that says to show them. - checkCookie(); - // --> -</script> -</body> -</html> diff --git a/python_apps/soundcloud-api/docs/api/scapi.tests.test_oauth-pysrc.html b/python_apps/soundcloud-api/docs/api/scapi.tests.test_oauth-pysrc.html deleted file mode 100644 index 6ecf3c628..000000000 --- a/python_apps/soundcloud-api/docs/api/scapi.tests.test_oauth-pysrc.html +++ /dev/null @@ -1,182 +0,0 @@ -<?xml version="1.0" encoding="ascii"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <title>scapi.tests.test_oauth</title> - <link rel="stylesheet" href="epydoc.css" type="text/css" /> - <script type="text/javascript" src="epydoc.js"></script> -</head> - -<body bgcolor="white" text="black" link="blue" vlink="#204080" - alink="#204080"> -<!-- ==================== NAVIGATION BAR ==================== --> -<table class="navbar" border="0" width="100%" cellpadding="0" - bgcolor="#a0c0ff" cellspacing="0"> - <tr valign="middle"> - <!-- Home link --> - <th> <a - href="scapi-module.html">Home</a> </th> - - <!-- Tree link --> - <th> <a - href="module-tree.html">Trees</a> </th> - - <!-- Index link --> - <th> <a - href="identifier-index.html">Indices</a> </th> - - <!-- Help link --> - <th> <a - href="help.html">Help</a> </th> - - <!-- Project homepage --> - <th class="navbar" align="right" width="100%"> - <table border="0" cellpadding="0" cellspacing="0"> - <tr><th class="navbar" align="center" - >SoundCloud API</th> - </tr></table></th> - </tr> -</table> -<table width="100%" cellpadding="0" cellspacing="0"> - <tr valign="top"> - <td width="100%"> - <span class="breadcrumbs"> - <a href="scapi-module.html">Package scapi</a> :: - <a href="scapi.tests-module.html">Package tests</a> :: - Module test_oauth - </span> - </td> - <td> - <table cellpadding="0" cellspacing="0"> - <!-- hide/show private --> - <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink" - onclick="toggle_private();">hide private</a>]</span></td></tr> - <tr><td align="right"><span class="options" - >[<a href="frames.html" target="_top">frames</a - >] | <a href="scapi.tests.test_oauth-pysrc.html" - target="_top">no frames</a>]</span></td></tr> - </table> - </td> - </tr> -</table> -<h1 class="epydoc">Source Code for <a href="scapi.tests.test_oauth-module.html">Module scapi.tests.test_oauth</a></h1> -<pre class="py-src"> -<a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">pkg_resources</tt> </tt> -<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-0" class="py-name" targets="Package scapi=scapi-module.html"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-0', 'scapi', 'link-0');">scapi</a></tt> </tt> -<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-1" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-1', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-2" class="py-name" targets="Module scapi.authentication=scapi.authentication-module.html"><a title="scapi.authentication" class="py-name" href="#" onclick="return doclink('link-2', 'authentication', 'link-2');">authentication</a></tt> </tt> -<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">urllib</tt> </tt> -<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">logging</tt> </tt> -<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"> </tt> -<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt id="link-3" class="py-name" targets="Variable scapi.authentication.logger=scapi.authentication-module.html#logger,Variable scapi.logger=scapi-module.html#logger,Variable scapi.tests.scapi_tests.logger=scapi.tests.scapi_tests-module.html#logger,Variable scapi.tests.test_connect.logger=scapi.tests.test_connect-module.html#logger,Variable scapi.tests.test_oauth.logger=scapi.tests.test_oauth-module.html#logger"><a title="scapi.authentication.logger -scapi.logger -scapi.tests.scapi_tests.logger -scapi.tests.test_connect.logger -scapi.tests.test_oauth.logger" class="py-name" href="#" onclick="return doclink('link-3', 'logger', 'link-3');">logger</a></tt> <tt class="py-op">=</tt> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">getLogger</tt><tt class="py-op">(</tt><tt class="py-name">__name__</tt><tt class="py-op">)</tt> </tt> -<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt id="link-4" class="py-name"><a title="scapi.authentication.logger -scapi.logger -scapi.tests.scapi_tests.logger -scapi.tests.test_connect.logger -scapi.tests.test_oauth.logger" class="py-name" href="#" onclick="return doclink('link-4', 'logger', 'link-3');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">setLevel</tt><tt class="py-op">(</tt><tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">DEBUG</tt><tt class="py-op">)</tt> </tt> -<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt id="link-5" class="py-name" targets="Variable scapi.tests.test_connect._logger=scapi.tests.test_connect-module.html#_logger,Variable scapi.tests.test_oauth._logger=scapi.tests.test_oauth-module.html#_logger"><a title="scapi.tests.test_connect._logger -scapi.tests.test_oauth._logger" class="py-name" href="#" onclick="return doclink('link-5', '_logger', 'link-5');">_logger</a></tt> <tt class="py-op">=</tt> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">getLogger</tt><tt class="py-op">(</tt><tt class="py-string">"scapi"</tt><tt class="py-op">)</tt> </tt> -<a name="L10"></a><tt class="py-lineno">10</tt> <tt class="py-line"><tt id="link-6" class="py-name"><a title="scapi.tests.test_connect._logger -scapi.tests.test_oauth._logger" class="py-name" href="#" onclick="return doclink('link-6', '_logger', 'link-5');">_logger</a></tt><tt class="py-op">.</tt><tt class="py-name">setLevel</tt><tt class="py-op">(</tt><tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">DEBUG</tt><tt class="py-op">)</tt> </tt> -<a name="L11"></a><tt class="py-lineno">11</tt> <tt class="py-line"> </tt> -<a name="L12"></a><tt class="py-lineno">12</tt> <tt class="py-line"><tt id="link-7" class="py-name" targets="Variable scapi.tests.scapi_tests.SCAPITests.TOKEN=scapi.tests.scapi_tests.SCAPITests-class.html#TOKEN,Variable scapi.tests.test_connect.TOKEN=scapi.tests.test_connect-module.html#TOKEN,Variable scapi.tests.test_oauth.TOKEN=scapi.tests.test_oauth-module.html#TOKEN"><a title="scapi.tests.scapi_tests.SCAPITests.TOKEN -scapi.tests.test_connect.TOKEN -scapi.tests.test_oauth.TOKEN" class="py-name" href="#" onclick="return doclink('link-7', 'TOKEN', 'link-7');">TOKEN</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"QcciYu1FSwDSGKAG2mNw"</tt> </tt> -<a name="L13"></a><tt class="py-lineno">13</tt> <tt class="py-line"><tt id="link-8" class="py-name" targets="Variable scapi.tests.scapi_tests.SCAPITests.SECRET=scapi.tests.scapi_tests.SCAPITests-class.html#SECRET,Variable scapi.tests.test_connect.SECRET=scapi.tests.test_connect-module.html#SECRET,Variable scapi.tests.test_oauth.SECRET=scapi.tests.test_oauth-module.html#SECRET"><a title="scapi.tests.scapi_tests.SCAPITests.SECRET -scapi.tests.test_connect.SECRET -scapi.tests.test_oauth.SECRET" class="py-name" href="#" onclick="return doclink('link-8', 'SECRET', 'link-8');">SECRET</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"gJ2ok6ULUsYQB3rsBmpHCRHoFCAPOgK8ZjoIyxzris"</tt> </tt> -<a name="L14"></a><tt class="py-lineno">14</tt> <tt class="py-line"><tt id="link-9" class="py-name" targets="Variable scapi.tests.scapi_tests.SCAPITests.CONSUMER=scapi.tests.scapi_tests.SCAPITests-class.html#CONSUMER,Variable scapi.tests.test_connect.CONSUMER=scapi.tests.test_connect-module.html#CONSUMER,Variable scapi.tests.test_oauth.CONSUMER=scapi.tests.test_oauth-module.html#CONSUMER"><a title="scapi.tests.scapi_tests.SCAPITests.CONSUMER -scapi.tests.test_connect.CONSUMER -scapi.tests.test_oauth.CONSUMER" class="py-name" href="#" onclick="return doclink('link-9', 'CONSUMER', 'link-9');">CONSUMER</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"Cy2eLPrIMp4vOxjz9icdQ"</tt> </tt> -<a name="L15"></a><tt class="py-lineno">15</tt> <tt class="py-line"><tt id="link-10" class="py-name" targets="Variable scapi.tests.scapi_tests.SCAPITests.CONSUMER_SECRET=scapi.tests.scapi_tests.SCAPITests-class.html#CONSUMER_SECRET,Variable scapi.tests.test_connect.CONSUMER_SECRET=scapi.tests.test_connect-module.html#CONSUMER_SECRET,Variable scapi.tests.test_oauth.CONSUMER_SECRET=scapi.tests.test_oauth-module.html#CONSUMER_SECRET"><a title="scapi.tests.scapi_tests.SCAPITests.CONSUMER_SECRET -scapi.tests.test_connect.CONSUMER_SECRET -scapi.tests.test_oauth.CONSUMER_SECRET" class="py-name" href="#" onclick="return doclink('link-10', 'CONSUMER_SECRET', 'link-10');">CONSUMER_SECRET</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"KsBa272x6M2to00Vo5FdvZXt9kakcX7CDIPJoGwTro"</tt> </tt> -<a name="L16"></a><tt class="py-lineno">16</tt> <tt class="py-line"> </tt> -<a name="test_base64_connect"></a><div id="test_base64_connect-def"><a name="L17"></a><tt class="py-lineno">17</tt> <a class="py-toggle" href="#" id="test_base64_connect-toggle" onclick="return toggle('test_base64_connect');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.tests.test_oauth-module.html#test_base64_connect">test_base64_connect</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="test_base64_connect-collapsed" style="display:none;" pad="++" indent="++++"></div><div id="test_base64_connect-expanded"><a name="L18"></a><tt class="py-lineno">18</tt> <tt class="py-line"> <tt id="link-11" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-11', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-12" class="py-name" targets="Variable scapi.USE_PROXY=scapi-module.html#USE_PROXY"><a title="scapi.USE_PROXY" class="py-name" href="#" onclick="return doclink('link-12', 'USE_PROXY', 'link-12');">USE_PROXY</a></tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt> -<a name="L19"></a><tt class="py-lineno">19</tt> <tt class="py-line"> <tt id="link-13" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-13', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-14" class="py-name" targets="Variable scapi.PROXY=scapi-module.html#PROXY"><a title="scapi.PROXY" class="py-name" href="#" onclick="return doclink('link-14', 'PROXY', 'link-14');">PROXY</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'http://127.0.0.1:10000/'</tt> </tt> -<a name="L20"></a><tt class="py-lineno">20</tt> <tt class="py-line"> <tt id="link-15" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-15', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt class="py-name">SoundCloudAPI</tt><tt class="py-op">(</tt><tt class="py-name">host</tt><tt class="py-op">=</tt><tt class="py-string">'192.168.2.31:3000'</tt><tt class="py-op">,</tt> <tt class="py-name">authenticator</tt><tt class="py-op">=</tt><tt id="link-16" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-16', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-17" class="py-name"><a title="scapi.authentication" class="py-name" href="#" onclick="return doclink('link-17', 'authentication', 'link-2');">authentication</a></tt><tt class="py-op">.</tt><tt id="link-18" class="py-name" targets="Class scapi.authentication.BasicAuthenticator=scapi.authentication.BasicAuthenticator-class.html"><a title="scapi.authentication.BasicAuthenticator" class="py-name" href="#" onclick="return doclink('link-18', 'BasicAuthenticator', 'link-18');">BasicAuthenticator</a></tt><tt class="py-op">(</tt><tt class="py-string">'tiga'</tt><tt class="py-op">,</tt> <tt class="py-string">'test'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L21"></a><tt class="py-lineno">21</tt> <tt class="py-line"> <tt class="py-name">sca</tt> <tt class="py-op">=</tt> <tt id="link-19" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-19', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-20" class="py-name" targets="Class scapi.Scope=scapi.Scope-class.html"><a title="scapi.Scope" class="py-name" href="#" onclick="return doclink('link-20', 'Scope', 'link-20');">Scope</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L22"></a><tt class="py-lineno">22</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">sca</tt><tt class="py-op">.</tt><tt class="py-name">me</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt id="link-21" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-21', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-22" class="py-name" targets="Class scapi.User=scapi.User-class.html"><a title="scapi.User" class="py-name" href="#" onclick="return doclink('link-22', 'User', 'link-22');">User</a></tt><tt class="py-op">)</tt> </tt> -</div><a name="L23"></a><tt class="py-lineno">23</tt> <tt class="py-line"> </tt> -<a name="L24"></a><tt class="py-lineno">24</tt> <tt class="py-line"> </tt> -<a name="test_oauth_connect"></a><div id="test_oauth_connect-def"><a name="L25"></a><tt class="py-lineno">25</tt> <a class="py-toggle" href="#" id="test_oauth_connect-toggle" onclick="return toggle('test_oauth_connect');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.tests.test_oauth-module.html#test_oauth_connect">test_oauth_connect</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="test_oauth_connect-collapsed" style="display:none;" pad="++" indent="++++"></div><div id="test_oauth_connect-expanded"><a name="L26"></a><tt class="py-lineno">26</tt> <tt class="py-line"> <tt id="link-23" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-23', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-24" class="py-name"><a title="scapi.USE_PROXY" class="py-name" href="#" onclick="return doclink('link-24', 'USE_PROXY', 'link-12');">USE_PROXY</a></tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt> -<a name="L27"></a><tt class="py-lineno">27</tt> <tt class="py-line"> <tt id="link-25" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-25', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-26" class="py-name"><a title="scapi.PROXY" class="py-name" href="#" onclick="return doclink('link-26', 'PROXY', 'link-14');">PROXY</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'http://127.0.0.1:10000/'</tt> </tt> -<a name="L28"></a><tt class="py-lineno">28</tt> <tt class="py-line"> <tt id="link-27" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-27', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt class="py-name">SoundCloudAPI</tt><tt class="py-op">(</tt><tt class="py-name">host</tt><tt class="py-op">=</tt><tt class="py-string">'192.168.2.31:3000'</tt><tt class="py-op">,</tt> </tt> -<a name="L29"></a><tt class="py-lineno">29</tt> <tt class="py-line"> <tt class="py-name">authenticator</tt><tt class="py-op">=</tt><tt id="link-28" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-28', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-29" class="py-name"><a title="scapi.authentication" class="py-name" href="#" onclick="return doclink('link-29', 'authentication', 'link-2');">authentication</a></tt><tt class="py-op">.</tt><tt id="link-30" class="py-name" targets="Class scapi.authentication.OAuthAuthenticator=scapi.authentication.OAuthAuthenticator-class.html"><a title="scapi.authentication.OAuthAuthenticator" class="py-name" href="#" onclick="return doclink('link-30', 'OAuthAuthenticator', 'link-30');">OAuthAuthenticator</a></tt><tt class="py-op">(</tt><tt id="link-31" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.CONSUMER -scapi.tests.test_connect.CONSUMER -scapi.tests.test_oauth.CONSUMER" class="py-name" href="#" onclick="return doclink('link-31', 'CONSUMER', 'link-9');">CONSUMER</a></tt><tt class="py-op">,</tt> </tt> -<a name="L30"></a><tt class="py-lineno">30</tt> <tt class="py-line"> <tt id="link-32" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.CONSUMER_SECRET -scapi.tests.test_connect.CONSUMER_SECRET -scapi.tests.test_oauth.CONSUMER_SECRET" class="py-name" href="#" onclick="return doclink('link-32', 'CONSUMER_SECRET', 'link-10');">CONSUMER_SECRET</a></tt><tt class="py-op">,</tt> </tt> -<a name="L31"></a><tt class="py-lineno">31</tt> <tt class="py-line"> <tt id="link-33" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.TOKEN -scapi.tests.test_connect.TOKEN -scapi.tests.test_oauth.TOKEN" class="py-name" href="#" onclick="return doclink('link-33', 'TOKEN', 'link-7');">TOKEN</a></tt><tt class="py-op">,</tt> <tt id="link-34" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.SECRET -scapi.tests.test_connect.SECRET -scapi.tests.test_oauth.SECRET" class="py-name" href="#" onclick="return doclink('link-34', 'SECRET', 'link-8');">SECRET</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> -<a name="L32"></a><tt class="py-lineno">32</tt> <tt class="py-line"> </tt> -<a name="L33"></a><tt class="py-lineno">33</tt> <tt class="py-line"> <tt class="py-name">sca</tt> <tt class="py-op">=</tt> <tt id="link-35" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-35', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-36" class="py-name"><a title="scapi.Scope" class="py-name" href="#" onclick="return doclink('link-36', 'Scope', 'link-20');">Scope</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> -<a name="L34"></a><tt class="py-lineno">34</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">sca</tt><tt class="py-op">.</tt><tt class="py-name">me</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt id="link-37" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-37', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-38" class="py-name"><a title="scapi.User" class="py-name" href="#" onclick="return doclink('link-38', 'User', 'link-22');">User</a></tt><tt class="py-op">)</tt> </tt> -</div><a name="L35"></a><tt class="py-lineno">35</tt> <tt class="py-line"> </tt><script type="text/javascript"> -<!-- -expandto(location.href); -// --> -</script> -</pre> -<br /> -<!-- ==================== NAVIGATION BAR ==================== --> -<table class="navbar" border="0" width="100%" cellpadding="0" - bgcolor="#a0c0ff" cellspacing="0"> - <tr valign="middle"> - <!-- Home link --> - <th> <a - href="scapi-module.html">Home</a> </th> - - <!-- Tree link --> - <th> <a - href="module-tree.html">Trees</a> </th> - - <!-- Index link --> - <th> <a - href="identifier-index.html">Indices</a> </th> - - <!-- Help link --> - <th> <a - href="help.html">Help</a> </th> - - <!-- Project homepage --> - <th class="navbar" align="right" width="100%"> - <table border="0" cellpadding="0" cellspacing="0"> - <tr><th class="navbar" align="center" - >SoundCloud API</th> - </tr></table></th> - </tr> -</table> -<table border="0" cellpadding="0" cellspacing="0" width="100%%"> - <tr> - <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Thu Sep 10 00:58:50 2009 - </td> - <td align="right" class="footer"> - <a target="mainFrame" href="http://epydoc.sourceforge.net" - >http://epydoc.sourceforge.net</a> - </td> - </tr> -</table> - -<script type="text/javascript"> - <!-- - // Private objects are initially displayed (because if - // javascript is turned off then we want them to be - // visible); but by default, we want to hide them. So hide - // them unless we have a cookie that says to show them. - checkCookie(); - // --> -</script> -</body> -</html> diff --git a/python_apps/soundcloud-api/docs/api/scapi.util-module.html b/python_apps/soundcloud-api/docs/api/scapi.util-module.html deleted file mode 100644 index 2603fb0b1..000000000 --- a/python_apps/soundcloud-api/docs/api/scapi.util-module.html +++ /dev/null @@ -1,173 +0,0 @@ -<?xml version="1.0" encoding="ascii"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <title>scapi.util</title> - <link rel="stylesheet" href="epydoc.css" type="text/css" /> - <script type="text/javascript" src="epydoc.js"></script> -</head> - -<body bgcolor="white" text="black" link="blue" vlink="#204080" - alink="#204080"> -<!-- ==================== NAVIGATION BAR ==================== --> -<table class="navbar" border="0" width="100%" cellpadding="0" - bgcolor="#a0c0ff" cellspacing="0"> - <tr valign="middle"> - <!-- Home link --> - <th> <a - href="scapi-module.html">Home</a> </th> - - <!-- Tree link --> - <th> <a - href="module-tree.html">Trees</a> </th> - - <!-- Index link --> - <th> <a - href="identifier-index.html">Indices</a> </th> - - <!-- Help link --> - <th> <a - href="help.html">Help</a> </th> - - <!-- Project homepage --> - <th class="navbar" align="right" width="100%"> - <table border="0" cellpadding="0" cellspacing="0"> - <tr><th class="navbar" align="center" - >SoundCloud API</th> - </tr></table></th> - </tr> -</table> -<table width="100%" cellpadding="0" cellspacing="0"> - <tr valign="top"> - <td width="100%"> - <span class="breadcrumbs"> - <a href="scapi-module.html">Package scapi</a> :: - Module util - </span> - </td> - <td> - <table cellpadding="0" cellspacing="0"> - <!-- hide/show private --> - <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink" - onclick="toggle_private();">hide private</a>]</span></td></tr> - <tr><td align="right"><span class="options" - >[<a href="frames.html" target="_top">frames</a - >] | <a href="scapi.util-module.html" - target="_top">no frames</a>]</span></td></tr> - </table> - </td> - </tr> -</table> -<!-- ==================== MODULE DESCRIPTION ==================== --> -<h1 class="epydoc">Module util</h1><p class="nomargin-top"><span class="codelink"><a href="scapi.util-pysrc.html">source code</a></span></p> -<!-- ==================== CLASSES ==================== --> -<a name="section-Classes"></a> -<table class="summary" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr bgcolor="#70b0f0" class="table-header"> - <td colspan="2" class="table-header"> - <table border="0" cellpadding="0" cellspacing="0" width="100%"> - <tr valign="top"> - <td align="left"><span class="table-header">Classes</span></td> - <td align="right" valign="top" - ><span class="options">[<a href="#section-Classes" - class="privatelink" onclick="toggle_private();" - >hide private</a>]</span></td> - </tr> - </table> - </td> -</tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <a href="scapi.util.MultiDict-class.html" class="summary-name">MultiDict</a> - </td> - </tr> -</table> -<!-- ==================== FUNCTIONS ==================== --> -<a name="section-Functions"></a> -<table class="summary" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr bgcolor="#70b0f0" class="table-header"> - <td colspan="2" class="table-header"> - <table border="0" cellpadding="0" cellspacing="0" width="100%"> - <tr valign="top"> - <td align="left"><span class="table-header">Functions</span></td> - <td align="right" valign="top" - ><span class="options">[<a href="#section-Functions" - class="privatelink" onclick="toggle_private();" - >hide private</a>]</span></td> - </tr> - </table> - </td> -</tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a name="escape"></a><span class="summary-sig-name">escape</span>(<span class="summary-sig-arg">s</span>)</span></td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi.util-pysrc.html#escape">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> -</table> -<!-- ==================== NAVIGATION BAR ==================== --> -<table class="navbar" border="0" width="100%" cellpadding="0" - bgcolor="#a0c0ff" cellspacing="0"> - <tr valign="middle"> - <!-- Home link --> - <th> <a - href="scapi-module.html">Home</a> </th> - - <!-- Tree link --> - <th> <a - href="module-tree.html">Trees</a> </th> - - <!-- Index link --> - <th> <a - href="identifier-index.html">Indices</a> </th> - - <!-- Help link --> - <th> <a - href="help.html">Help</a> </th> - - <!-- Project homepage --> - <th class="navbar" align="right" width="100%"> - <table border="0" cellpadding="0" cellspacing="0"> - <tr><th class="navbar" align="center" - >SoundCloud API</th> - </tr></table></th> - </tr> -</table> -<table border="0" cellpadding="0" cellspacing="0" width="100%%"> - <tr> - <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Thu Sep 10 00:58:49 2009 - </td> - <td align="right" class="footer"> - <a target="mainFrame" href="http://epydoc.sourceforge.net" - >http://epydoc.sourceforge.net</a> - </td> - </tr> -</table> - -<script type="text/javascript"> - <!-- - // Private objects are initially displayed (because if - // javascript is turned off then we want them to be - // visible); but by default, we want to hide them. So hide - // them unless we have a cookie that says to show them. - checkCookie(); - // --> -</script> -</body> -</html> diff --git a/python_apps/soundcloud-api/docs/api/scapi.util-pysrc.html b/python_apps/soundcloud-api/docs/api/scapi.util-pysrc.html deleted file mode 100644 index 1a018ed72..000000000 --- a/python_apps/soundcloud-api/docs/api/scapi.util-pysrc.html +++ /dev/null @@ -1,171 +0,0 @@ -<?xml version="1.0" encoding="ascii"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <title>scapi.util</title> - <link rel="stylesheet" href="epydoc.css" type="text/css" /> - <script type="text/javascript" src="epydoc.js"></script> -</head> - -<body bgcolor="white" text="black" link="blue" vlink="#204080" - alink="#204080"> -<!-- ==================== NAVIGATION BAR ==================== --> -<table class="navbar" border="0" width="100%" cellpadding="0" - bgcolor="#a0c0ff" cellspacing="0"> - <tr valign="middle"> - <!-- Home link --> - <th> <a - href="scapi-module.html">Home</a> </th> - - <!-- Tree link --> - <th> <a - href="module-tree.html">Trees</a> </th> - - <!-- Index link --> - <th> <a - href="identifier-index.html">Indices</a> </th> - - <!-- Help link --> - <th> <a - href="help.html">Help</a> </th> - - <!-- Project homepage --> - <th class="navbar" align="right" width="100%"> - <table border="0" cellpadding="0" cellspacing="0"> - <tr><th class="navbar" align="center" - >SoundCloud API</th> - </tr></table></th> - </tr> -</table> -<table width="100%" cellpadding="0" cellspacing="0"> - <tr valign="top"> - <td width="100%"> - <span class="breadcrumbs"> - <a href="scapi-module.html">Package scapi</a> :: - Module util - </span> - </td> - <td> - <table cellpadding="0" cellspacing="0"> - <!-- hide/show private --> - <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink" - onclick="toggle_private();">hide private</a>]</span></td></tr> - <tr><td align="right"><span class="options" - >[<a href="frames.html" target="_top">frames</a - >] | <a href="scapi.util-pysrc.html" - target="_top">no frames</a>]</span></td></tr> - </table> - </td> - </tr> -</table> -<h1 class="epydoc">Source Code for <a href="scapi.util-module.html" onclick="show_private();">Module scapi.util</a></h1> -<pre class="py-src"> -<a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-comment">## SouncCloudAPI implements a Python wrapper around the SoundCloud RESTful</tt> </tt> -<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## API</tt> </tt> -<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">##</tt> </tt> -<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## Copyright (C) 2008 Diez B. Roggisch</tt> </tt> -<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## Contact mailto:deets@soundcloud.com</tt> </tt> -<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">##</tt> </tt> -<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## This library is free software; you can redistribute it and/or</tt> </tt> -<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## modify it under the terms of the GNU Lesser General Public</tt> </tt> -<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## License as published by the Free Software Foundation; either</tt> </tt> -<a name="L10"></a><tt class="py-lineno">10</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## version 2.1 of the License, or (at your option) any later version.</tt> </tt> -<a name="L11"></a><tt class="py-lineno">11</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">##</tt> </tt> -<a name="L12"></a><tt class="py-lineno">12</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## This library is distributed in the hope that it will be useful,</tt> </tt> -<a name="L13"></a><tt class="py-lineno">13</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## but WITHOUT ANY WARRANTY; without even the implied warranty of</tt> </tt> -<a name="L14"></a><tt class="py-lineno">14</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</tt> </tt> -<a name="L15"></a><tt class="py-lineno">15</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## Lesser General Public License for more details.</tt> </tt> -<a name="L16"></a><tt class="py-lineno">16</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">##</tt> </tt> -<a name="L17"></a><tt class="py-lineno">17</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## You should have received a copy of the GNU Lesser General Public</tt> </tt> -<a name="L18"></a><tt class="py-lineno">18</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## License along with this library; if not, write to the Free Software</tt> </tt> -<a name="L19"></a><tt class="py-lineno">19</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA</tt> </tt> -<a name="L20"></a><tt class="py-lineno">20</tt> <tt class="py-line"><tt class="py-comment"></tt> </tt> -<a name="L21"></a><tt class="py-lineno">21</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">urllib</tt> </tt> -<a name="L22"></a><tt class="py-lineno">22</tt> <tt class="py-line"> </tt> -<a name="escape"></a><div id="escape-def"><a name="L23"></a><tt class="py-lineno">23</tt> <a class="py-toggle" href="#" id="escape-toggle" onclick="return toggle('escape');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.util-module.html#escape">escape</a><tt class="py-op">(</tt><tt class="py-param">s</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="escape-collapsed" style="display:none;" pad="++" indent="++++"></div><div id="escape-expanded"><a name="L24"></a><tt class="py-lineno">24</tt> <tt class="py-line"> <tt class="py-comment"># escape '/' too</tt> </tt> -<a name="L25"></a><tt class="py-lineno">25</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">return</tt> <tt class="py-name">urllib</tt><tt class="py-op">.</tt><tt class="py-name">quote</tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">,</tt> <tt class="py-name">safe</tt><tt class="py-op">=</tt><tt class="py-string">''</tt><tt class="py-op">)</tt> </tt> -</div><a name="L26"></a><tt class="py-lineno">26</tt> <tt class="py-line"> </tt> -<a name="L27"></a><tt class="py-lineno">27</tt> <tt class="py-line"> </tt> -<a name="L28"></a><tt class="py-lineno">28</tt> <tt class="py-line"> </tt> -<a name="L29"></a><tt class="py-lineno">29</tt> <tt class="py-line"> </tt> -<a name="L30"></a><tt class="py-lineno">30</tt> <tt class="py-line"> </tt> -<a name="L31"></a><tt class="py-lineno">31</tt> <tt class="py-line"> </tt> -<a name="MultiDict"></a><div id="MultiDict-def"><a name="L32"></a><tt class="py-lineno">32</tt> <a class="py-toggle" href="#" id="MultiDict-toggle" onclick="return toggle('MultiDict');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="scapi.util.MultiDict-class.html">MultiDict</a><tt class="py-op">(</tt><tt class="py-base-class">dict</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="MultiDict-collapsed" style="display:none;" pad="++" indent="++++"></div><div id="MultiDict-expanded"><a name="L33"></a><tt class="py-lineno">33</tt> <tt class="py-line"> </tt> -<a name="L34"></a><tt class="py-lineno">34</tt> <tt class="py-line"> </tt> -<a name="MultiDict.add"></a><div id="MultiDict.add-def"><a name="L35"></a><tt class="py-lineno">35</tt> <a class="py-toggle" href="#" id="MultiDict.add-toggle" onclick="return toggle('MultiDict.add');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.util.MultiDict-class.html#add">add</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">key</tt><tt class="py-op">,</tt> <tt class="py-param">new_value</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="MultiDict.add-collapsed" style="display:none;" pad="++" indent="++++++++"></div><div id="MultiDict.add-expanded"><a name="L36"></a><tt class="py-lineno">36</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">key</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">:</tt> </tt> -<a name="L37"></a><tt class="py-lineno">37</tt> <tt class="py-line"> <tt class="py-name">value</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-name">key</tt><tt class="py-op">]</tt> </tt> -<a name="L38"></a><tt class="py-lineno">38</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">,</tt> <tt class="py-name">list</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L39"></a><tt class="py-lineno">39</tt> <tt class="py-line"> <tt class="py-name">value</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">value</tt><tt class="py-op">]</tt> </tt> -<a name="L40"></a><tt class="py-lineno">40</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-name">key</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">value</tt> </tt> -<a name="L41"></a><tt class="py-lineno">41</tt> <tt class="py-line"> <tt class="py-name">value</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">new_value</tt><tt class="py-op">)</tt> </tt> -<a name="L42"></a><tt class="py-lineno">42</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> -<a name="L43"></a><tt class="py-lineno">43</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-name">key</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">new_value</tt> </tt> -</div><a name="L44"></a><tt class="py-lineno">44</tt> <tt class="py-line"> </tt> -<a name="L45"></a><tt class="py-lineno">45</tt> <tt class="py-line"> </tt> -<a name="MultiDict.iteritemslist"></a><div id="MultiDict.iteritemslist-def"><a name="L46"></a><tt class="py-lineno">46</tt> <a class="py-toggle" href="#" id="MultiDict.iteritemslist-toggle" onclick="return toggle('MultiDict.iteritemslist');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.util.MultiDict-class.html#iteritemslist">iteritemslist</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -</div><div id="MultiDict.iteritemslist-collapsed" style="display:none;" pad="++" indent="++++++++"></div><div id="MultiDict.iteritemslist-expanded"><a name="L47"></a><tt class="py-lineno">47</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">key</tt><tt class="py-op">,</tt> <tt class="py-name">value</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">iteritems</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L48"></a><tt class="py-lineno">48</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">,</tt> <tt class="py-name">list</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> -<a name="L49"></a><tt class="py-lineno">49</tt> <tt class="py-line"> <tt class="py-name">value</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">value</tt><tt class="py-op">]</tt> </tt> -<a name="L50"></a><tt class="py-lineno">50</tt> <tt class="py-line"> <tt class="py-keyword">yield</tt> <tt class="py-name">key</tt><tt class="py-op">,</tt> <tt class="py-name">value</tt> </tt> -</div></div><a name="L51"></a><tt class="py-lineno">51</tt> <tt class="py-line"> </tt><script type="text/javascript"> -<!-- -expandto(location.href); -// --> -</script> -</pre> -<br /> -<!-- ==================== NAVIGATION BAR ==================== --> -<table class="navbar" border="0" width="100%" cellpadding="0" - bgcolor="#a0c0ff" cellspacing="0"> - <tr valign="middle"> - <!-- Home link --> - <th> <a - href="scapi-module.html">Home</a> </th> - - <!-- Tree link --> - <th> <a - href="module-tree.html">Trees</a> </th> - - <!-- Index link --> - <th> <a - href="identifier-index.html">Indices</a> </th> - - <!-- Help link --> - <th> <a - href="help.html">Help</a> </th> - - <!-- Project homepage --> - <th class="navbar" align="right" width="100%"> - <table border="0" cellpadding="0" cellspacing="0"> - <tr><th class="navbar" align="center" - >SoundCloud API</th> - </tr></table></th> - </tr> -</table> -<table border="0" cellpadding="0" cellspacing="0" width="100%%"> - <tr> - <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Thu Sep 10 00:58:50 2009 - </td> - <td align="right" class="footer"> - <a target="mainFrame" href="http://epydoc.sourceforge.net" - >http://epydoc.sourceforge.net</a> - </td> - </tr> -</table> - -<script type="text/javascript"> - <!-- - // Private objects are initially displayed (because if - // javascript is turned off then we want them to be - // visible); but by default, we want to hide them. So hide - // them unless we have a cookie that says to show them. - checkCookie(); - // --> -</script> -</body> -</html> diff --git a/python_apps/soundcloud-api/docs/api/scapi.util.MultiDict-class.html b/python_apps/soundcloud-api/docs/api/scapi.util.MultiDict-class.html deleted file mode 100644 index fe7b460e9..000000000 --- a/python_apps/soundcloud-api/docs/api/scapi.util.MultiDict-class.html +++ /dev/null @@ -1,247 +0,0 @@ -<?xml version="1.0" encoding="ascii"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <title>scapi.util.MultiDict</title> - <link rel="stylesheet" href="epydoc.css" type="text/css" /> - <script type="text/javascript" src="epydoc.js"></script> -</head> - -<body bgcolor="white" text="black" link="blue" vlink="#204080" - alink="#204080"> -<!-- ==================== NAVIGATION BAR ==================== --> -<table class="navbar" border="0" width="100%" cellpadding="0" - bgcolor="#a0c0ff" cellspacing="0"> - <tr valign="middle"> - <!-- Home link --> - <th> <a - href="scapi-module.html">Home</a> </th> - - <!-- Tree link --> - <th> <a - href="module-tree.html">Trees</a> </th> - - <!-- Index link --> - <th> <a - href="identifier-index.html">Indices</a> </th> - - <!-- Help link --> - <th> <a - href="help.html">Help</a> </th> - - <!-- Project homepage --> - <th class="navbar" align="right" width="100%"> - <table border="0" cellpadding="0" cellspacing="0"> - <tr><th class="navbar" align="center" - >SoundCloud API</th> - </tr></table></th> - </tr> -</table> -<table width="100%" cellpadding="0" cellspacing="0"> - <tr valign="top"> - <td width="100%"> - <span class="breadcrumbs"> - <a href="scapi-module.html">Package scapi</a> :: - <a href="scapi.util-module.html" onclick="show_private();">Module util</a> :: - Class MultiDict - </span> - </td> - <td> - <table cellpadding="0" cellspacing="0"> - <!-- hide/show private --> - <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink" - onclick="toggle_private();">hide private</a>]</span></td></tr> - <tr><td align="right"><span class="options" - >[<a href="frames.html" target="_top">frames</a - >] | <a href="scapi.util.MultiDict-class.html" - target="_top">no frames</a>]</span></td></tr> - </table> - </td> - </tr> -</table> -<!-- ==================== CLASS DESCRIPTION ==================== --> -<h1 class="epydoc">Class MultiDict</h1><p class="nomargin-top"><span class="codelink"><a href="scapi.util-pysrc.html#MultiDict">source code</a></span></p> -<pre class="base-tree"> -object --+ - | - dict --+ - | - <strong class="uidshort">MultiDict</strong> -</pre> - -<hr /> -<!-- ==================== INSTANCE METHODS ==================== --> -<a name="section-InstanceMethods"></a> -<table class="summary" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr bgcolor="#70b0f0" class="table-header"> - <td colspan="2" class="table-header"> - <table border="0" cellpadding="0" cellspacing="0" width="100%"> - <tr valign="top"> - <td align="left"><span class="table-header">Instance Methods</span></td> - <td align="right" valign="top" - ><span class="options">[<a href="#section-InstanceMethods" - class="privatelink" onclick="toggle_private();" - >hide private</a>]</span></td> - </tr> - </table> - </td> -</tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a name="add"></a><span class="summary-sig-name">add</span>(<span class="summary-sig-arg">self</span>, - <span class="summary-sig-arg">key</span>, - <span class="summary-sig-arg">new_value</span>)</span></td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi.util-pysrc.html#MultiDict.add">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> -<tr> - <td width="15%" align="right" valign="top" class="summary"> - <span class="summary-type"> </span> - </td><td class="summary"> - <table width="100%" cellpadding="0" cellspacing="0" border="0"> - <tr> - <td><span class="summary-sig"><a name="iteritemslist"></a><span class="summary-sig-name">iteritemslist</span>(<span class="summary-sig-arg">self</span>)</span></td> - <td align="right" valign="top"> - <span class="codelink"><a href="scapi.util-pysrc.html#MultiDict.iteritemslist">source code</a></span> - - </td> - </tr> - </table> - - </td> - </tr> - <tr> - <td colspan="2" class="summary"> - <p class="indent-wrapped-lines"><b>Inherited from <code>dict</code></b>: - <code>__cmp__</code>, - <code>__contains__</code>, - <code>__delitem__</code>, - <code>__eq__</code>, - <code>__ge__</code>, - <code>__getattribute__</code>, - <code>__getitem__</code>, - <code>__gt__</code>, - <code>__hash__</code>, - <code>__init__</code>, - <code>__iter__</code>, - <code>__le__</code>, - <code>__len__</code>, - <code>__lt__</code>, - <code>__ne__</code>, - <code>__new__</code>, - <code>__repr__</code>, - <code>__setitem__</code>, - <code>clear</code>, - <code>copy</code>, - <code>fromkeys</code>, - <code>get</code>, - <code>has_key</code>, - <code>items</code>, - <code>iteritems</code>, - <code>iterkeys</code>, - <code>itervalues</code>, - <code>keys</code>, - <code>pop</code>, - <code>popitem</code>, - <code>setdefault</code>, - <code>update</code>, - <code>values</code> - </p> - <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>: - <code>__delattr__</code>, - <code>__reduce__</code>, - <code>__reduce_ex__</code>, - <code>__setattr__</code>, - <code>__str__</code> - </p> - </td> - </tr> -</table> -<!-- ==================== PROPERTIES ==================== --> -<a name="section-Properties"></a> -<table class="summary" border="1" cellpadding="3" - cellspacing="0" width="100%" bgcolor="white"> -<tr bgcolor="#70b0f0" class="table-header"> - <td colspan="2" class="table-header"> - <table border="0" cellpadding="0" cellspacing="0" width="100%"> - <tr valign="top"> - <td align="left"><span class="table-header">Properties</span></td> - <td align="right" valign="top" - ><span class="options">[<a href="#section-Properties" - class="privatelink" onclick="toggle_private();" - >hide private</a>]</span></td> - </tr> - </table> - </td> -</tr> - <tr> - <td colspan="2" class="summary"> - <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>: - <code>__class__</code> - </p> - </td> - </tr> -</table> -<!-- ==================== NAVIGATION BAR ==================== --> -<table class="navbar" border="0" width="100%" cellpadding="0" - bgcolor="#a0c0ff" cellspacing="0"> - <tr valign="middle"> - <!-- Home link --> - <th> <a - href="scapi-module.html">Home</a> </th> - - <!-- Tree link --> - <th> <a - href="module-tree.html">Trees</a> </th> - - <!-- Index link --> - <th> <a - href="identifier-index.html">Indices</a> </th> - - <!-- Help link --> - <th> <a - href="help.html">Help</a> </th> - - <!-- Project homepage --> - <th class="navbar" align="right" width="100%"> - <table border="0" cellpadding="0" cellspacing="0"> - <tr><th class="navbar" align="center" - >SoundCloud API</th> - </tr></table></th> - </tr> -</table> -<table border="0" cellpadding="0" cellspacing="0" width="100%%"> - <tr> - <td align="left" class="footer"> - Generated by Epydoc 3.0.1 on Thu Sep 10 00:58:49 2009 - </td> - <td align="right" class="footer"> - <a target="mainFrame" href="http://epydoc.sourceforge.net" - >http://epydoc.sourceforge.net</a> - </td> - </tr> -</table> - -<script type="text/javascript"> - <!-- - // Private objects are initially displayed (because if - // javascript is turned off then we want them to be - // visible); but by default, we want to hide them. So hide - // them unless we have a cookie that says to show them. - checkCookie(); - // --> -</script> -</body> -</html> diff --git a/python_apps/soundcloud-api/docs/api/toc-everything.html b/python_apps/soundcloud-api/docs/api/toc-everything.html deleted file mode 100644 index 3ced23f23..000000000 --- a/python_apps/soundcloud-api/docs/api/toc-everything.html +++ /dev/null @@ -1,151 +0,0 @@ -<?xml version="1.0" encoding="ascii"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <title>Everything</title> - <link rel="stylesheet" href="epydoc.css" type="text/css" /> - <script type="text/javascript" src="epydoc.js"></script> -</head> - -<body bgcolor="white" text="black" link="blue" vlink="#204080" - alink="#204080"> -<h1 class="toc">Everything</h1> -<hr /> - <h2 class="toc">All Classes</h2> - <a target="mainFrame" href="exceptions.AssertionError-class.html" - >exceptions.AssertionError</a><br /> <div class="private"> - <a target="mainFrame" href="scapi.ApiConnector-class.html" - >scapi.ApiConnector</a><br /> </div> - <a target="mainFrame" href="scapi.Comment-class.html" - >scapi.Comment</a><br /> <a target="mainFrame" href="scapi.Event-class.html" - >scapi.Event</a><br /> <a target="mainFrame" href="scapi.Group-class.html" - >scapi.Group</a><br /> <div class="private"> - <a target="mainFrame" href="scapi.InvalidMethodException-class.html" - >scapi.InvalidMethodException</a><br /> </div> - <div class="private"> - <a target="mainFrame" href="scapi.NoResultFromRequest-class.html" - >scapi.NoResultFromRequest</a><br /> </div> - <a target="mainFrame" href="scapi.Playlist-class.html" - >scapi.Playlist</a><br /> <div class="private"> - <a target="mainFrame" href="scapi.RESTBase-class.html" - >scapi.RESTBase</a><br /> </div> - <div class="private"> - <a target="mainFrame" href="scapi.SCRedirectHandler-class.html" - >scapi.SCRedirectHandler</a><br /> </div> - <div class="private"> - <a target="mainFrame" href="scapi.Scope-class.html" - >scapi.Scope</a><br /> </div> - <a target="mainFrame" href="scapi.Track-class.html" - >scapi.Track</a><br /> <div class="private"> - <a target="mainFrame" href="scapi.UnknownContentType-class.html" - >scapi.UnknownContentType</a><br /> </div> - <a target="mainFrame" href="scapi.User-class.html" - >scapi.User</a><br /> <div class="private"> - <a target="mainFrame" href="scapi.authentication.BasicAuthenticator-class.html" - >scapi.authentication.BasicAuthenticator</a><br /> </div> - <div class="private"> - <a target="mainFrame" href="scapi.authentication.OAuthAuthenticator-class.html" - >scapi.authentication.OAuthAuthenticator</a><br /> </div> - <div class="private"> - <a target="mainFrame" href="scapi.authentication.OAuthSignatureMethod_HMAC_SHA1-class.html" - >scapi.authentication.OAuthSignatureMethod_HMAC_SHA1</a><br /> </div> - <a target="mainFrame" href="scapi.json.JsonReader-class.html" - >scapi.json.JsonReader</a><br /> <a target="mainFrame" href="scapi.json.JsonWriter-class.html" - >scapi.json.JsonWriter</a><br /> <a target="mainFrame" href="scapi.json.ReadException-class.html" - >scapi.json.ReadException</a><br /> <a target="mainFrame" href="scapi.json.WriteException-class.html" - >scapi.json.WriteException</a><br /> <div class="private"> - <a target="mainFrame" href="scapi.json._StringGenerator-class.html" - >scapi.json._StringGenerator</a><br /> </div> - <a target="mainFrame" href="scapi.tests.scapi_tests.SCAPITests-class.html" - >scapi.tests.scapi_tests.SCAPITests</a><br /> <div class="private"> - <a target="mainFrame" href="scapi.util.MultiDict-class.html" - >scapi.util.MultiDict</a><br /> </div> - <h2 class="toc">All Functions</h2> - <a target="mainFrame" href="scapi.json-module.html#read" - >scapi.json.read</a><br /> <a target="mainFrame" href="scapi.json-module.html#write" - >scapi.json.write</a><br /> <div class="private"> - <a target="mainFrame" href="scapi-module.html#register_classes" - >scapi.register_classes</a><br /> </div> - <a target="mainFrame" href="scapi.tests.test_connect-module.html#load_config" - >scapi.tests.test_connect.load_config</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#setup" - >scapi.tests.test_connect.setup</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#test_access_token_acquisition" - >scapi.tests.test_connect.test_access_token_acquisition</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#test_connect" - >scapi.tests.test_connect.test_connect</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#test_contact_add_and_removal" - >scapi.tests.test_connect.test_contact_add_and_removal</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#test_contact_list" - >scapi.tests.test_connect.test_contact_list</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#test_events" - >scapi.tests.test_connect.test_events</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#test_favorites" - >scapi.tests.test_connect.test_favorites</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#test_large_list" - >scapi.tests.test_connect.test_large_list</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#test_load_config" - >scapi.tests.test_connect.test_load_config</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#test_me_having_stress" - >scapi.tests.test_connect.test_me_having_stress</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#test_non_global_api" - >scapi.tests.test_connect.test_non_global_api</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#test_permissions" - >scapi.tests.test_connect.test_permissions</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#test_playlists" - >scapi.tests.test_connect.test_playlists</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#test_scoped_track_creation" - >scapi.tests.test_connect.test_scoped_track_creation</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#test_setting_comments" - >scapi.tests.test_connect.test_setting_comments</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#test_setting_comments_the_way_shawn_says_its_correct" - >scapi.tests.test_connect.test_setting_comments_the_way_shawn_says_its_correct</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#test_setting_permissions" - >scapi.tests.test_connect.test_setting_permissions</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#test_track_creation" - >scapi.tests.test_connect.test_track_creation</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#test_track_update" - >scapi.tests.test_connect.test_track_update</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#test_upload" - >scapi.tests.test_connect.test_upload</a><br /> <a target="mainFrame" href="scapi.tests.test_oauth-module.html#test_base64_connect" - >scapi.tests.test_oauth.test_base64_connect</a><br /> <a target="mainFrame" href="scapi.tests.test_oauth-module.html#test_oauth_connect" - >scapi.tests.test_oauth.test_oauth_connect</a><br /> <div class="private"> - <a target="mainFrame" href="scapi.util-module.html#escape" - >scapi.util.escape</a><br /> </div> - <h2 class="toc">All Variables</h2> - <a target="mainFrame" href="scapi-module.html#ACCESS_TOKEN_URL" - >scapi.ACCESS_TOKEN_URL</a><br /> <a target="mainFrame" href="scapi-module.html#AUTHORIZATION_URL" - >scapi.AUTHORIZATION_URL</a><br /> <a target="mainFrame" href="scapi-module.html#PROXY" - >scapi.PROXY</a><br /> <a target="mainFrame" href="scapi-module.html#REQUEST_TOKEN_URL" - >scapi.REQUEST_TOKEN_URL</a><br /> <a target="mainFrame" href="scapi-module.html#USE_PROXY" - >scapi.USE_PROXY</a><br /> <div class="private"> - <a target="mainFrame" href="scapi.authentication-module.html#USE_DOUBLE_ESCAPE_HACK" - >scapi.authentication.USE_DOUBLE_ESCAPE_HACK</a><br /> </div> - <div class="private"> - <a target="mainFrame" href="scapi.authentication-module.html#logger" - >scapi.authentication.logger</a><br /> </div> - <div class="private"> - <a target="mainFrame" href="scapi-module.html#logger" - >scapi.logger</a><br /> </div> - <a target="mainFrame" href="scapi.tests.scapi_tests-module.html#api_logger" - >scapi.tests.scapi_tests.api_logger</a><br /> <a target="mainFrame" href="scapi.tests.scapi_tests-module.html#logger" - >scapi.tests.scapi_tests.logger</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#API_HOST" - >scapi.tests.test_connect.API_HOST</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#CONFIG_NAME" - >scapi.tests.test_connect.CONFIG_NAME</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#CONNECTOR" - >scapi.tests.test_connect.CONNECTOR</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#CONSUMER" - >scapi.tests.test_connect.CONSUMER</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#CONSUMER_SECRET" - >scapi.tests.test_connect.CONSUMER_SECRET</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#PASSWORD" - >scapi.tests.test_connect.PASSWORD</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#ROOT" - >scapi.tests.test_connect.ROOT</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#RUN_INTERACTIVE_TESTS" - >scapi.tests.test_connect.RUN_INTERACTIVE_TESTS</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#SECRET" - >scapi.tests.test_connect.SECRET</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#TOKEN" - >scapi.tests.test_connect.TOKEN</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#USER" - >scapi.tests.test_connect.USER</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#USE_OAUTH" - >scapi.tests.test_connect.USE_OAUTH</a><br /> <div class="private"> - <a target="mainFrame" href="scapi.tests.test_connect-module.html#_logger" - >scapi.tests.test_connect._logger</a><br /> </div> - <a target="mainFrame" href="scapi.tests.test_connect-module.html#logger" - >scapi.tests.test_connect.logger</a><br /> <a target="mainFrame" href="scapi.tests.test_oauth-module.html#CONSUMER" - >scapi.tests.test_oauth.CONSUMER</a><br /> <a target="mainFrame" href="scapi.tests.test_oauth-module.html#CONSUMER_SECRET" - >scapi.tests.test_oauth.CONSUMER_SECRET</a><br /> <a target="mainFrame" href="scapi.tests.test_oauth-module.html#SECRET" - >scapi.tests.test_oauth.SECRET</a><br /> <a target="mainFrame" href="scapi.tests.test_oauth-module.html#TOKEN" - >scapi.tests.test_oauth.TOKEN</a><br /> <div class="private"> - <a target="mainFrame" href="scapi.tests.test_oauth-module.html#_logger" - >scapi.tests.test_oauth._logger</a><br /> </div> - <a target="mainFrame" href="scapi.tests.test_oauth-module.html#logger" - >scapi.tests.test_oauth.logger</a><br /><hr /> -<span class="options">[<a href="javascript:void(0);" class="privatelink" - onclick="toggle_private();">hide private</a>]</span> - -<script type="text/javascript"> - <!-- - // Private objects are initially displayed (because if - // javascript is turned off then we want them to be - // visible); but by default, we want to hide them. So hide - // them unless we have a cookie that says to show them. - checkCookie(); - // --> -</script> -</body> -</html> diff --git a/python_apps/soundcloud-api/docs/api/toc-scapi-module.html b/python_apps/soundcloud-api/docs/api/toc-scapi-module.html deleted file mode 100644 index b82804b3f..000000000 --- a/python_apps/soundcloud-api/docs/api/toc-scapi-module.html +++ /dev/null @@ -1,70 +0,0 @@ -<?xml version="1.0" encoding="ascii"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <title>scapi</title> - <link rel="stylesheet" href="epydoc.css" type="text/css" /> - <script type="text/javascript" src="epydoc.js"></script> -</head> - -<body bgcolor="white" text="black" link="blue" vlink="#204080" - alink="#204080"> -<h1 class="toc">Module scapi</h1> -<hr /> - <h2 class="toc">Classes</h2> - <div class="private"> - <a target="mainFrame" href="scapi.ApiConnector-class.html" - >ApiConnector</a><br /> </div> - <a target="mainFrame" href="scapi.Comment-class.html" - >Comment</a><br /> <a target="mainFrame" href="scapi.Event-class.html" - >Event</a><br /> <a target="mainFrame" href="scapi.Group-class.html" - >Group</a><br /> <div class="private"> - <a target="mainFrame" href="scapi.InvalidMethodException-class.html" - >InvalidMethodException</a><br /> </div> - <div class="private"> - <a target="mainFrame" href="scapi.NoResultFromRequest-class.html" - >NoResultFromRequest</a><br /> </div> - <a target="mainFrame" href="scapi.Playlist-class.html" - >Playlist</a><br /> <div class="private"> - <a target="mainFrame" href="scapi.RESTBase-class.html" - >RESTBase</a><br /> </div> - <div class="private"> - <a target="mainFrame" href="scapi.SCRedirectHandler-class.html" - >SCRedirectHandler</a><br /> </div> - <div class="private"> - <a target="mainFrame" href="scapi.Scope-class.html" - >Scope</a><br /> </div> - <a target="mainFrame" href="scapi.Track-class.html" - >Track</a><br /> <div class="private"> - <a target="mainFrame" href="scapi.UnknownContentType-class.html" - >UnknownContentType</a><br /> </div> - <a target="mainFrame" href="scapi.User-class.html" - >User</a><br /> <h2 class="toc">Functions</h2> - <div class="private"> - <a target="mainFrame" href="scapi-module.html#register_classes" - >register_classes</a><br /> </div> - <h2 class="toc">Variables</h2> - <a target="mainFrame" href="scapi-module.html#ACCESS_TOKEN_URL" - >ACCESS_TOKEN_URL</a><br /> <a target="mainFrame" href="scapi-module.html#AUTHORIZATION_URL" - >AUTHORIZATION_URL</a><br /> <a target="mainFrame" href="scapi-module.html#PROXY" - >PROXY</a><br /> <a target="mainFrame" href="scapi-module.html#REQUEST_TOKEN_URL" - >REQUEST_TOKEN_URL</a><br /> <a target="mainFrame" href="scapi-module.html#USE_PROXY" - >USE_PROXY</a><br /> <div class="private"> - <a target="mainFrame" href="scapi-module.html#logger" - >logger</a><br /> </div> -<hr /> -<span class="options">[<a href="javascript:void(0);" class="privatelink" - onclick="toggle_private();">hide private</a>]</span> - -<script type="text/javascript"> - <!-- - // Private objects are initially displayed (because if - // javascript is turned off then we want them to be - // visible); but by default, we want to hide them. So hide - // them unless we have a cookie that says to show them. - checkCookie(); - // --> -</script> -</body> -</html> diff --git a/python_apps/soundcloud-api/docs/api/toc-scapi.authentication-module.html b/python_apps/soundcloud-api/docs/api/toc-scapi.authentication-module.html deleted file mode 100644 index e86f597b8..000000000 --- a/python_apps/soundcloud-api/docs/api/toc-scapi.authentication-module.html +++ /dev/null @@ -1,46 +0,0 @@ -<?xml version="1.0" encoding="ascii"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <title>authentication</title> - <link rel="stylesheet" href="epydoc.css" type="text/css" /> - <script type="text/javascript" src="epydoc.js"></script> -</head> - -<body bgcolor="white" text="black" link="blue" vlink="#204080" - alink="#204080"> -<h1 class="toc">Module authentication</h1> -<hr /> - <h2 class="toc">Classes</h2> - <div class="private"> - <a target="mainFrame" href="scapi.authentication.BasicAuthenticator-class.html" - >BasicAuthenticator</a><br /> </div> - <div class="private"> - <a target="mainFrame" href="scapi.authentication.OAuthAuthenticator-class.html" - >OAuthAuthenticator</a><br /> </div> - <div class="private"> - <a target="mainFrame" href="scapi.authentication.OAuthSignatureMethod_HMAC_SHA1-class.html" - >OAuthSignatureMethod_HMAC_SHA1</a><br /> </div> - <h2 class="toc">Variables</h2> - <div class="private"> - <a target="mainFrame" href="scapi.authentication-module.html#USE_DOUBLE_ESCAPE_HACK" - >USE_DOUBLE_ESCAPE_HACK</a><br /> </div> - <div class="private"> - <a target="mainFrame" href="scapi.authentication-module.html#logger" - >logger</a><br /> </div> -<hr /> -<span class="options">[<a href="javascript:void(0);" class="privatelink" - onclick="toggle_private();">hide private</a>]</span> - -<script type="text/javascript"> - <!-- - // Private objects are initially displayed (because if - // javascript is turned off then we want them to be - // visible); but by default, we want to hide them. So hide - // them unless we have a cookie that says to show them. - checkCookie(); - // --> -</script> -</body> -</html> diff --git a/python_apps/soundcloud-api/docs/api/toc-scapi.config-module.html b/python_apps/soundcloud-api/docs/api/toc-scapi.config-module.html deleted file mode 100644 index bc4635ec9..000000000 --- a/python_apps/soundcloud-api/docs/api/toc-scapi.config-module.html +++ /dev/null @@ -1,29 +0,0 @@ -<?xml version="1.0" encoding="ascii"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <title>config</title> - <link rel="stylesheet" href="epydoc.css" type="text/css" /> - <script type="text/javascript" src="epydoc.js"></script> -</head> - -<body bgcolor="white" text="black" link="blue" vlink="#204080" - alink="#204080"> -<h1 class="toc">Module config</h1> -<hr /> -<hr /> -<span class="options">[<a href="javascript:void(0);" class="privatelink" - onclick="toggle_private();">hide private</a>]</span> - -<script type="text/javascript"> - <!-- - // Private objects are initially displayed (because if - // javascript is turned off then we want them to be - // visible); but by default, we want to hide them. So hide - // them unless we have a cookie that says to show them. - checkCookie(); - // --> -</script> -</body> -</html> diff --git a/python_apps/soundcloud-api/docs/api/toc-scapi.json-module.html b/python_apps/soundcloud-api/docs/api/toc-scapi.json-module.html deleted file mode 100644 index 49c7fa3f6..000000000 --- a/python_apps/soundcloud-api/docs/api/toc-scapi.json-module.html +++ /dev/null @@ -1,40 +0,0 @@ -<?xml version="1.0" encoding="ascii"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <title>json</title> - <link rel="stylesheet" href="epydoc.css" type="text/css" /> - <script type="text/javascript" src="epydoc.js"></script> -</head> - -<body bgcolor="white" text="black" link="blue" vlink="#204080" - alink="#204080"> -<h1 class="toc">Module json</h1> -<hr /> - <h2 class="toc">Classes</h2> - <a target="mainFrame" href="scapi.json.JsonReader-class.html" - >JsonReader</a><br /> <a target="mainFrame" href="scapi.json.JsonWriter-class.html" - >JsonWriter</a><br /> <a target="mainFrame" href="scapi.json.ReadException-class.html" - >ReadException</a><br /> <a target="mainFrame" href="scapi.json.WriteException-class.html" - >WriteException</a><br /> <div class="private"> - <a target="mainFrame" href="scapi.json._StringGenerator-class.html" - >_StringGenerator</a><br /> </div> - <h2 class="toc">Functions</h2> - <a target="mainFrame" href="scapi.json-module.html#read" - >read</a><br /> <a target="mainFrame" href="scapi.json-module.html#write" - >write</a><br /><hr /> -<span class="options">[<a href="javascript:void(0);" class="privatelink" - onclick="toggle_private();">hide private</a>]</span> - -<script type="text/javascript"> - <!-- - // Private objects are initially displayed (because if - // javascript is turned off then we want them to be - // visible); but by default, we want to hide them. So hide - // them unless we have a cookie that says to show them. - checkCookie(); - // --> -</script> -</body> -</html> diff --git a/python_apps/soundcloud-api/docs/api/toc-scapi.multidict-module.html b/python_apps/soundcloud-api/docs/api/toc-scapi.multidict-module.html deleted file mode 100644 index a4494cd7b..000000000 --- a/python_apps/soundcloud-api/docs/api/toc-scapi.multidict-module.html +++ /dev/null @@ -1,29 +0,0 @@ -<?xml version="1.0" encoding="ascii"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <title>multidict</title> - <link rel="stylesheet" href="epydoc.css" type="text/css" /> - <script type="text/javascript" src="epydoc.js"></script> -</head> - -<body bgcolor="white" text="black" link="blue" vlink="#204080" - alink="#204080"> -<h1 class="toc">Module multidict</h1> -<hr /> -<hr /> -<span class="options">[<a href="javascript:void(0);" class="privatelink" - onclick="toggle_private();">hide private</a>]</span> - -<script type="text/javascript"> - <!-- - // Private objects are initially displayed (because if - // javascript is turned off then we want them to be - // visible); but by default, we want to hide them. So hide - // them unless we have a cookie that says to show them. - checkCookie(); - // --> -</script> -</body> -</html> diff --git a/python_apps/soundcloud-api/docs/api/toc-scapi.tests-module.html b/python_apps/soundcloud-api/docs/api/toc-scapi.tests-module.html deleted file mode 100644 index 4c66376d1..000000000 --- a/python_apps/soundcloud-api/docs/api/toc-scapi.tests-module.html +++ /dev/null @@ -1,29 +0,0 @@ -<?xml version="1.0" encoding="ascii"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <title>tests</title> - <link rel="stylesheet" href="epydoc.css" type="text/css" /> - <script type="text/javascript" src="epydoc.js"></script> -</head> - -<body bgcolor="white" text="black" link="blue" vlink="#204080" - alink="#204080"> -<h1 class="toc">Module tests</h1> -<hr /> -<hr /> -<span class="options">[<a href="javascript:void(0);" class="privatelink" - onclick="toggle_private();">hide private</a>]</span> - -<script type="text/javascript"> - <!-- - // Private objects are initially displayed (because if - // javascript is turned off then we want them to be - // visible); but by default, we want to hide them. So hide - // them unless we have a cookie that says to show them. - checkCookie(); - // --> -</script> -</body> -</html> diff --git a/python_apps/soundcloud-api/docs/api/toc-scapi.tests.scapi_tests-module.html b/python_apps/soundcloud-api/docs/api/toc-scapi.tests.scapi_tests-module.html deleted file mode 100644 index ecc870d8c..000000000 --- a/python_apps/soundcloud-api/docs/api/toc-scapi.tests.scapi_tests-module.html +++ /dev/null @@ -1,34 +0,0 @@ -<?xml version="1.0" encoding="ascii"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <title>scapi_tests</title> - <link rel="stylesheet" href="epydoc.css" type="text/css" /> - <script type="text/javascript" src="epydoc.js"></script> -</head> - -<body bgcolor="white" text="black" link="blue" vlink="#204080" - alink="#204080"> -<h1 class="toc">Module scapi_tests</h1> -<hr /> - <h2 class="toc">Classes</h2> - <a target="mainFrame" href="scapi.tests.scapi_tests.SCAPITests-class.html" - >SCAPITests</a><br /> <h2 class="toc">Variables</h2> - <a target="mainFrame" href="scapi.tests.scapi_tests-module.html#api_logger" - >api_logger</a><br /> <a target="mainFrame" href="scapi.tests.scapi_tests-module.html#logger" - >logger</a><br /><hr /> -<span class="options">[<a href="javascript:void(0);" class="privatelink" - onclick="toggle_private();">hide private</a>]</span> - -<script type="text/javascript"> - <!-- - // Private objects are initially displayed (because if - // javascript is turned off then we want them to be - // visible); but by default, we want to hide them. So hide - // them unless we have a cookie that says to show them. - checkCookie(); - // --> -</script> -</body> -</html> diff --git a/python_apps/soundcloud-api/docs/api/toc-scapi.tests.test_connect-module.html b/python_apps/soundcloud-api/docs/api/toc-scapi.tests.test_connect-module.html deleted file mode 100644 index 791b5ba85..000000000 --- a/python_apps/soundcloud-api/docs/api/toc-scapi.tests.test_connect-module.html +++ /dev/null @@ -1,68 +0,0 @@ -<?xml version="1.0" encoding="ascii"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <title>test_connect</title> - <link rel="stylesheet" href="epydoc.css" type="text/css" /> - <script type="text/javascript" src="epydoc.js"></script> -</head> - -<body bgcolor="white" text="black" link="blue" vlink="#204080" - alink="#204080"> -<h1 class="toc">Module test_connect</h1> -<hr /> - <h2 class="toc">Functions</h2> - <a target="mainFrame" href="scapi.tests.test_connect-module.html#load_config" - >load_config</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#setup" - >setup</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#test_access_token_acquisition" - >test_access_token_acquisition</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#test_connect" - >test_connect</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#test_contact_add_and_removal" - >test_contact_add_and_removal</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#test_contact_list" - >test_contact_list</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#test_events" - >test_events</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#test_favorites" - >test_favorites</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#test_large_list" - >test_large_list</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#test_load_config" - >test_load_config</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#test_me_having_stress" - >test_me_having_stress</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#test_non_global_api" - >test_non_global_api</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#test_permissions" - >test_permissions</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#test_playlists" - >test_playlists</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#test_scoped_track_creation" - >test_scoped_track_creation</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#test_setting_comments" - >test_setting_comments</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#test_setting_comments_the_way_shawn_says_its_correct" - >test_setting_comments_the_way_shawn_says_its_correct</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#test_setting_permissions" - >test_setting_permissions</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#test_track_creation" - >test_track_creation</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#test_track_update" - >test_track_update</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#test_upload" - >test_upload</a><br /> <h2 class="toc">Variables</h2> - <a target="mainFrame" href="scapi.tests.test_connect-module.html#API_HOST" - >API_HOST</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#CONFIG_NAME" - >CONFIG_NAME</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#CONNECTOR" - >CONNECTOR</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#CONSUMER" - >CONSUMER</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#CONSUMER_SECRET" - >CONSUMER_SECRET</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#PASSWORD" - >PASSWORD</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#ROOT" - >ROOT</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#RUN_INTERACTIVE_TESTS" - >RUN_INTERACTIVE_TESTS</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#SECRET" - >SECRET</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#TOKEN" - >TOKEN</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#USER" - >USER</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#USE_OAUTH" - >USE_OAUTH</a><br /> <div class="private"> - <a target="mainFrame" href="scapi.tests.test_connect-module.html#_logger" - >_logger</a><br /> </div> - <a target="mainFrame" href="scapi.tests.test_connect-module.html#logger" - >logger</a><br /><hr /> -<span class="options">[<a href="javascript:void(0);" class="privatelink" - onclick="toggle_private();">hide private</a>]</span> - -<script type="text/javascript"> - <!-- - // Private objects are initially displayed (because if - // javascript is turned off then we want them to be - // visible); but by default, we want to hide them. So hide - // them unless we have a cookie that says to show them. - checkCookie(); - // --> -</script> -</body> -</html> diff --git a/python_apps/soundcloud-api/docs/api/toc-scapi.tests.test_oauth-module.html b/python_apps/soundcloud-api/docs/api/toc-scapi.tests.test_oauth-module.html deleted file mode 100644 index 0d504cee4..000000000 --- a/python_apps/soundcloud-api/docs/api/toc-scapi.tests.test_oauth-module.html +++ /dev/null @@ -1,41 +0,0 @@ -<?xml version="1.0" encoding="ascii"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <title>test_oauth</title> - <link rel="stylesheet" href="epydoc.css" type="text/css" /> - <script type="text/javascript" src="epydoc.js"></script> -</head> - -<body bgcolor="white" text="black" link="blue" vlink="#204080" - alink="#204080"> -<h1 class="toc">Module test_oauth</h1> -<hr /> - <h2 class="toc">Functions</h2> - <a target="mainFrame" href="scapi.tests.test_oauth-module.html#test_base64_connect" - >test_base64_connect</a><br /> <a target="mainFrame" href="scapi.tests.test_oauth-module.html#test_oauth_connect" - >test_oauth_connect</a><br /> <h2 class="toc">Variables</h2> - <a target="mainFrame" href="scapi.tests.test_oauth-module.html#CONSUMER" - >CONSUMER</a><br /> <a target="mainFrame" href="scapi.tests.test_oauth-module.html#CONSUMER_SECRET" - >CONSUMER_SECRET</a><br /> <a target="mainFrame" href="scapi.tests.test_oauth-module.html#SECRET" - >SECRET</a><br /> <a target="mainFrame" href="scapi.tests.test_oauth-module.html#TOKEN" - >TOKEN</a><br /> <div class="private"> - <a target="mainFrame" href="scapi.tests.test_oauth-module.html#_logger" - >_logger</a><br /> </div> - <a target="mainFrame" href="scapi.tests.test_oauth-module.html#logger" - >logger</a><br /><hr /> -<span class="options">[<a href="javascript:void(0);" class="privatelink" - onclick="toggle_private();">hide private</a>]</span> - -<script type="text/javascript"> - <!-- - // Private objects are initially displayed (because if - // javascript is turned off then we want them to be - // visible); but by default, we want to hide them. So hide - // them unless we have a cookie that says to show them. - checkCookie(); - // --> -</script> -</body> -</html> diff --git a/python_apps/soundcloud-api/docs/api/toc-scapi.util-module.html b/python_apps/soundcloud-api/docs/api/toc-scapi.util-module.html deleted file mode 100644 index c94b46b34..000000000 --- a/python_apps/soundcloud-api/docs/api/toc-scapi.util-module.html +++ /dev/null @@ -1,37 +0,0 @@ -<?xml version="1.0" encoding="ascii"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <title>util</title> - <link rel="stylesheet" href="epydoc.css" type="text/css" /> - <script type="text/javascript" src="epydoc.js"></script> -</head> - -<body bgcolor="white" text="black" link="blue" vlink="#204080" - alink="#204080"> -<h1 class="toc">Module util</h1> -<hr /> - <h2 class="toc">Classes</h2> - <div class="private"> - <a target="mainFrame" href="scapi.util.MultiDict-class.html" - >MultiDict</a><br /> </div> - <h2 class="toc">Functions</h2> - <div class="private"> - <a target="mainFrame" href="scapi.util-module.html#escape" - >escape</a><br /> </div> -<hr /> -<span class="options">[<a href="javascript:void(0);" class="privatelink" - onclick="toggle_private();">hide private</a>]</span> - -<script type="text/javascript"> - <!-- - // Private objects are initially displayed (because if - // javascript is turned off then we want them to be - // visible); but by default, we want to hide them. So hide - // them unless we have a cookie that says to show them. - checkCookie(); - // --> -</script> -</body> -</html> diff --git a/python_apps/soundcloud-api/docs/api/toc.html b/python_apps/soundcloud-api/docs/api/toc.html deleted file mode 100644 index 2e38a4044..000000000 --- a/python_apps/soundcloud-api/docs/api/toc.html +++ /dev/null @@ -1,46 +0,0 @@ -<?xml version="1.0" encoding="ascii"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <title>Table of Contents</title> - <link rel="stylesheet" href="epydoc.css" type="text/css" /> - <script type="text/javascript" src="epydoc.js"></script> -</head> - -<body bgcolor="white" text="black" link="blue" vlink="#204080" - alink="#204080"> -<h1 class="toc">Table of Contents</h1> -<hr /> - <a target="moduleFrame" href="toc-everything.html">Everything</a> - <br /> - <h2 class="toc">Modules</h2> - <a target="moduleFrame" href="toc-scapi-module.html" - onclick="setFrame('toc-scapi-module.html','scapi-module.html');" >scapi</a><br /> <div class="private"> - <a target="moduleFrame" href="toc-scapi.authentication-module.html" - onclick="setFrame('toc-scapi.authentication-module.html','scapi.authentication-module.html');" >scapi.authentication</a><br /> </div> - <a target="moduleFrame" href="toc-scapi.config-module.html" - onclick="setFrame('toc-scapi.config-module.html','scapi.config-module.html');" >scapi.config</a><br /> <a target="moduleFrame" href="toc-scapi.json-module.html" - onclick="setFrame('toc-scapi.json-module.html','scapi.json-module.html');" >scapi.json</a><br /> <a target="moduleFrame" href="toc-scapi.multidict-module.html" - onclick="setFrame('toc-scapi.multidict-module.html','scapi.multidict-module.html');" >scapi.multidict</a><br /> <a target="moduleFrame" href="toc-scapi.tests-module.html" - onclick="setFrame('toc-scapi.tests-module.html','scapi.tests-module.html');" >scapi.tests</a><br /> <a target="moduleFrame" href="toc-scapi.tests.scapi_tests-module.html" - onclick="setFrame('toc-scapi.tests.scapi_tests-module.html','scapi.tests.scapi_tests-module.html');" >scapi.tests.scapi_tests</a><br /> <a target="moduleFrame" href="toc-scapi.tests.test_connect-module.html" - onclick="setFrame('toc-scapi.tests.test_connect-module.html','scapi.tests.test_connect-module.html');" >scapi.tests.test_connect</a><br /> <a target="moduleFrame" href="toc-scapi.tests.test_oauth-module.html" - onclick="setFrame('toc-scapi.tests.test_oauth-module.html','scapi.tests.test_oauth-module.html');" >scapi.tests.test_oauth</a><br /> <div class="private"> - <a target="moduleFrame" href="toc-scapi.util-module.html" - onclick="setFrame('toc-scapi.util-module.html','scapi.util-module.html');" >scapi.util</a><br /> </div> -<hr /> - <span class="options">[<a href="javascript:void(0);" class="privatelink" - onclick="toggle_private();">hide private</a>]</span> - -<script type="text/javascript"> - <!-- - // Private objects are initially displayed (because if - // javascript is turned off then we want them to be - // visible); but by default, we want to hide them. So hide - // them unless we have a cookie that says to show them. - checkCookie(); - // --> -</script> -</body> -</html> diff --git a/python_apps/soundcloud-api/oauth/__init__.py b/python_apps/soundcloud-api/oauth/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/python_apps/soundcloud-api/oauth/example/client.py b/python_apps/soundcloud-api/oauth/example/client.py deleted file mode 100644 index 3f995c1a5..000000000 --- a/python_apps/soundcloud-api/oauth/example/client.py +++ /dev/null @@ -1,157 +0,0 @@ -''' -Example consumer. -''' -import httplib -import time -import oauth.oauth as oauth -import webbrowser -from scapi import util - -SERVER = 'sandbox-soundcloud.com' # Change to soundcloud.com to reach the live site -PORT = 80 - -REQUEST_TOKEN_URL = 'http://api.' + SERVER + '/oauth/request_token' -ACCESS_TOKEN_URL = 'http://api.' + SERVER + '/oauth/access_token' -AUTHORIZATION_URL = 'http://' + SERVER + '/oauth/authorize' - -CALLBACK_URL = '' -RESOURCE_URL = "http://api." + SERVER + "/me" - -# key and secret granted by the service provider for this consumer application - same as the MockOAuthDataStore -CONSUMER_KEY = 'JysXkO8ErA4EluFnF5nWg' -CONSUMER_SECRET = 'fauVjm61niGckeufkmMvgUo77oWzRHdMmeylJblHk' - -# example client using httplib with headers -class SimpleOAuthClient(oauth.OAuthClient): - - def __init__(self, server, port=httplib.HTTP_PORT, request_token_url='', access_token_url='', authorization_url=''): - self.server = server - self.port = port - self.request_token_url = request_token_url - self.access_token_url = access_token_url - self.authorization_url = authorization_url - self.connection = httplib.HTTPConnection("%s:%d" % (self.server, self.port)) - - def fetch_request_token(self, oauth_request): - # via headers - # -> OAuthToken - print oauth_request.to_url() - #self.connection.request(oauth_request.http_method, self.request_token_url, headers=oauth_request.to_header()) - self.connection.request(oauth_request.http_method, oauth_request.to_url()) - response = self.connection.getresponse() - print "response status", response.status - return oauth.OAuthToken.from_string(response.read()) - - def fetch_access_token(self, oauth_request): - # via headers - # -> OAuthToken - - # This should proably be elsewhere but stays here for now - oauth_request.set_parameter("oauth_signature", util.escape(oauth_request.get_parameter("oauth_signature"))) - self.connection.request(oauth_request.http_method, self.access_token_url, headers=oauth_request.to_header()) - response = self.connection.getresponse() - resp = response.read() - print "*" * 90 - print "response:", resp - print "*" * 90 - - return oauth.OAuthToken.from_string(resp) - - def authorize_token(self, oauth_request): - webbrowser.open(oauth_request.to_url()) - raw_input("press return when authorizing is finished") - - return - - # via url - # -> typically just some okay response - self.connection.request(oauth_request.http_method, oauth_request.to_url()) - response = self.connection.getresponse() - return response.read() - - def access_resource(self, oauth_request): - print "resource url:", oauth_request.to_url() - webbrowser.open(oauth_request.to_url()) - - return - - # via post body - # -> some protected resources - self.connection.request('GET', oauth_request.to_url()) - response = self.connection.getresponse() - return response.read() - -def run_example(): - - # setup - print '** OAuth Python Library Example **' - client = SimpleOAuthClient(SERVER, PORT, REQUEST_TOKEN_URL, ACCESS_TOKEN_URL, AUTHORIZATION_URL) - consumer = oauth.OAuthConsumer(CONSUMER_KEY, CONSUMER_SECRET) - signature_method_plaintext = oauth.OAuthSignatureMethod_PLAINTEXT() - signature_method_hmac_sha1 = oauth.OAuthSignatureMethod_HMAC_SHA1() - pause() - # get request token - print '* Obtain a request token ...' - pause() - oauth_request = oauth.OAuthRequest.from_consumer_and_token(consumer, http_url=client.request_token_url) - #oauth_request.sign_request(signature_method_plaintext, consumer, None) - oauth_request.sign_request(signature_method_hmac_sha1, consumer, None) - - print 'REQUEST (via headers)' - print 'parameters: %s' % str(oauth_request.parameters) - pause() - #import pdb; pdb.set_trace() - - token = client.fetch_request_token(oauth_request) - print 'GOT' - print 'key: %s' % str(token.key) - print 'secret: %s' % str(token.secret) - pause() - - print '* Authorize the request token ...' - pause() - oauth_request = oauth.OAuthRequest.from_token_and_callback(token=token, callback=CALLBACK_URL, http_url=client.authorization_url) - print 'REQUEST (via url query string)' - print 'parameters: %s' % str(oauth_request.parameters) - pause() - # this will actually occur only on some callback - response = client.authorize_token(oauth_request) - print 'GOT' - print response - pause() - - # get access token - print '* Obtain an access token ...' - pause() - oauth_request = oauth.OAuthRequest.from_consumer_and_token(consumer, token=token, http_url=client.access_token_url) - oauth_request.sign_request(signature_method_hmac_sha1, consumer, token) - print 'REQUEST (via headers)' - print 'parameters: %s' % str(oauth_request.parameters) - pause() - token = client.fetch_access_token(oauth_request) - print 'GOT' - print 'key: %s' % str(token.key) - print 'secret: %s' % str(token.secret) - pause() - - # access some protected resources - print '* Access protected resources ...' - pause() - parameters = {} - oauth_request = oauth.OAuthRequest.from_consumer_and_token(consumer, token=token, http_method='GET', http_url=RESOURCE_URL, parameters=parameters) - oauth_request.sign_request(signature_method_hmac_sha1, consumer, token) - print 'REQUEST (via get body)' - print 'parameters: %s' % str(oauth_request.parameters) - pause() - params = client.access_resource(oauth_request) - print 'GOT' - print 'non-oauth parameters: %s' % params - pause() - -def pause(): - print '' - time.sleep(1) - -if __name__ == '__main__': - run_example() - print 'Done.' diff --git a/python_apps/soundcloud-api/oauth/example/server.py b/python_apps/soundcloud-api/oauth/example/server.py deleted file mode 100644 index 91fb71538..000000000 --- a/python_apps/soundcloud-api/oauth/example/server.py +++ /dev/null @@ -1,167 +0,0 @@ -from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer -import urllib - -import oauth.oauth as oauth - -REQUEST_TOKEN_URL = 'https://photos.example.net/request_token' -ACCESS_TOKEN_URL = 'https://photos.example.net/access_token' -AUTHORIZATION_URL = 'https://photos.example.net/authorize' -RESOURCE_URL = 'http://photos.example.net/photos' -REALM = 'http://photos.example.net/' - -# example store for one of each thing -class MockOAuthDataStore(oauth.OAuthDataStore): - - def __init__(self): - self.consumer = oauth.OAuthConsumer('key', 'secret') - self.request_token = oauth.OAuthToken('requestkey', 'requestsecret') - self.access_token = oauth.OAuthToken('accesskey', 'accesssecret') - self.nonce = 'nonce' - - def lookup_consumer(self, key): - if key == self.consumer.key: - return self.consumer - return None - - def lookup_token(self, token_type, token): - token_attrib = getattr(self, '%s_token' % token_type) - if token == token_attrib.key: - return token_attrib - return None - - def lookup_nonce(self, oauth_consumer, oauth_token, nonce): - if oauth_token and oauth_consumer.key == self.consumer.key and (oauth_token.key == self.request_token.key or token.key == self.access_token.key) and nonce == self.nonce: - return self.nonce - else: - raise oauth.OAuthError('Nonce not found: %s' % str(nonce)) - return None - - def fetch_request_token(self, oauth_consumer): - if oauth_consumer.key == self.consumer.key: - return self.request_token - return None - - def fetch_access_token(self, oauth_consumer, oauth_token): - if oauth_consumer.key == self.consumer.key and oauth_token.key == self.request_token.key: - # want to check here if token is authorized - # for mock store, we assume it is - return self.access_token - return None - - def authorize_request_token(self, oauth_token): - if oauth_token.key == self.request_token.key: - # authorize the request token in the store - # for mock store, do nothing - return self.request_token - return None - -class RequestHandler(BaseHTTPRequestHandler): - - def __init__(self, *args, **kwargs): - self.oauth_server = oauth.OAuthServer(MockOAuthDataStore()) - self.oauth_server.add_signature_method(oauth.OAuthSignatureMethod_PLAINTEXT()) - self.oauth_server.add_signature_method(oauth.OAuthSignatureMethod_HMAC_SHA1()) - BaseHTTPRequestHandler.__init__(self, *args, **kwargs) - - # example way to send an oauth error - def send_oauth_error(self, err=None): - # send a 401 error - self.send_error(401, str(err.message)) - # return the authenticate header - header = oauth.build_authenticate_header(realm=REALM) - for k, v in header.iteritems(): - self.send_header(k, v) - - def do_GET(self): - - # debug info - #print self.command, self.path, self.headers - - # get the post data (if any) - postdata = None - if self.command == 'POST': - try: - length = int(self.headers.getheader('content-length')) - postdata = self.rfile.read(length) - except: - pass - - # construct the oauth request from the request parameters - oauth_request = oauth.OAuthRequest.from_request(self.command, self.path, headers=self.headers, postdata=postdata) - - # request token - if self.path.startswith(REQUEST_TOKEN_URL): - try: - # create a request token - token = self.oauth_server.fetch_request_token(oauth_request) - # send okay response - self.send_response(200, 'OK') - self.end_headers() - # return the token - self.wfile.write(token.to_string()) - except oauth.OAuthError, err: - self.send_oauth_error(err) - return - - # user authorization - if self.path.startswith(AUTHORIZATION_URL): - try: - # get the request token - token = self.oauth_server.fetch_request_token(oauth_request) - callback = self.oauth_server.get_callback(oauth_request) - # send okay response - self.send_response(200, 'OK') - self.end_headers() - # return the callback url (to show server has it) - self.wfile.write('callback: %s' %callback) - # authorize the token (kind of does nothing for now) - token = self.oauth_server.authorize_token(token) - self.wfile.write('\n') - # return the token key - token_key = urllib.urlencode({'oauth_token': token.key}) - self.wfile.write('token key: %s' % token_key) - except oauth.OAuthError, err: - self.send_oauth_error(err) - return - - # access token - if self.path.startswith(ACCESS_TOKEN_URL): - try: - # create an access token - token = self.oauth_server.fetch_access_token(oauth_request) - # send okay response - self.send_response(200, 'OK') - self.end_headers() - # return the token - self.wfile.write(token.to_string()) - except oauth.OAuthError, err: - self.send_oauth_error(err) - return - - # protected resources - if self.path.startswith(RESOURCE_URL): - try: - # verify the request has been oauth authorized - consumer, token, params = self.oauth_server.verify_request(oauth_request) - # send okay response - self.send_response(200, 'OK') - self.end_headers() - # return the extra parameters - just for something to return - self.wfile.write(str(params)) - except oauth.OAuthError, err: - self.send_oauth_error(err) - return - - def do_POST(self): - return self.do_GET() - -def main(): - try: - server = HTTPServer(('', 8080), RequestHandler) - print 'Test server running...' - server.serve_forever() - except KeyboardInterrupt: - server.socket.close() - -if __name__ == '__main__': - main() \ No newline at end of file diff --git a/python_apps/soundcloud-api/oauth/oauth.py b/python_apps/soundcloud-api/oauth/oauth.py deleted file mode 100644 index 274bbd25b..000000000 --- a/python_apps/soundcloud-api/oauth/oauth.py +++ /dev/null @@ -1,505 +0,0 @@ -import cgi -import urllib -import time -import random -import urlparse -import hmac -import hashlib -import base64 - -VERSION = '1.0' # Hi Blaine! -HTTP_METHOD = 'GET' -SIGNATURE_METHOD = 'PLAINTEXT' - -# Generic exception class -class OAuthError(RuntimeError): - def __init__(self, message='OAuth error occured'): - self.message = message - -# optional WWW-Authenticate header (401 error) -def build_authenticate_header(realm=''): - return {'WWW-Authenticate': 'OAuth realm="%s"' % realm} - -# url escape -def escape(s): - # escape '/' too - return urllib.quote(s, safe='') - -# util function: current timestamp -# seconds since epoch (UTC) -def generate_timestamp(): - return int(time.time()) - -# util function: nonce -# pseudorandom number -def generate_nonce(length=8): - return ''.join(str(random.randint(0, 9)) for i in range(length)) - -# OAuthConsumer is a data type that represents the identity of the Consumer -# via its shared secret with the Service Provider. -class OAuthConsumer(object): - key = None - secret = None - - def __init__(self, key, secret): - self.key = key - self.secret = secret - -# OAuthToken is a data type that represents an End User via either an access -# or request token. -class OAuthToken(object): - # access tokens and request tokens - key = None - secret = None - - ''' - key = the token - secret = the token secret - ''' - def __init__(self, key, secret): - self.key = key - self.secret = secret - - def to_string(self): - return urllib.urlencode({'oauth_token': self.key, 'oauth_token_secret': self.secret}) - - # return a token from something like: - # oauth_token_secret=digg&oauth_token=digg - @staticmethod - def from_string(s): - params = cgi.parse_qs(s, keep_blank_values=False) - key = params['oauth_token'][0] - secret = params['oauth_token_secret'][0] - return OAuthToken(key, secret) - - def __str__(self): - return self.to_string() - -# OAuthRequest represents the request and can be serialized -class OAuthRequest(object): - ''' - OAuth parameters: - - oauth_consumer_key - - oauth_token - - oauth_signature_method - - oauth_signature - - oauth_timestamp - - oauth_nonce - - oauth_version - ... any additional parameters, as defined by the Service Provider. - ''' - parameters = None # oauth parameters - http_method = HTTP_METHOD - http_url = None - version = VERSION - - def __init__(self, http_method=HTTP_METHOD, http_url=None, parameters=None): - self.http_method = http_method - self.http_url = http_url - self.parameters = parameters or {} - - def set_parameter(self, parameter, value): - self.parameters[parameter] = value - - def get_parameter(self, parameter): - try: - return self.parameters[parameter] - except: - raise OAuthError('Parameter not found: %s' % parameter) - - def _get_timestamp_nonce(self): - return self.get_parameter('oauth_timestamp'), self.get_parameter('oauth_nonce') - - # get any non-oauth parameters - def get_nonoauth_parameters(self): - parameters = {} - for k, v in self.parameters.iteritems(): - # ignore oauth parameters - if k.find('oauth_') < 0: - parameters[k] = v - return parameters - - # serialize as a header for an HTTPAuth request - def to_header(self, realm=''): - auth_header = 'OAuth realm="%s"' % realm - # add the oauth parameters - if self.parameters: - for k, v in self.parameters.iteritems(): - auth_header += ',\n\t %s="%s"' % (k, v) - return {'Authorization': auth_header} - - # serialize as post data for a POST request - def to_postdata(self): - return '&'.join('%s=%s' % (escape(str(k)), escape(str(v))) for k, v in self.parameters.iteritems()) - - # serialize as a url for a GET request - def to_url(self): - return '%s?%s' % (self.get_normalized_http_url(), self.to_postdata()) - - # return a string that consists of all the parameters that need to be signed - def get_normalized_parameters(self): - params = self.parameters - try: - # exclude the signature if it exists - del params['oauth_signature'] - except: - pass - key_values = params.items() - # sort lexicographically, first after key, then after value - key_values.sort() - # combine key value pairs in string and escape - return '&'.join('%s=%s' % (str(k), str(p)) for k, p in key_values) - - # just uppercases the http method - def get_normalized_http_method(self): - return self.http_method.upper() - - # parses the url and rebuilds it to be scheme://host/path - def get_normalized_http_url(self): - parts = urlparse.urlparse(self.http_url) - url_string = '%s://%s%s' % (parts.scheme, parts.netloc, parts.path) - return url_string - - # set the signature parameter to the result of build_signature - def sign_request(self, signature_method, consumer, token): - # set the signature method - self.set_parameter('oauth_signature_method', signature_method.get_name()) - # set the signature - self.set_parameter('oauth_signature', self.build_signature(signature_method, consumer, token)) - - def build_signature(self, signature_method, consumer, token): - # call the build signature method within the signature method - return signature_method.build_signature(self, consumer, token) - - @staticmethod - def from_request(http_method, http_url, headers=None, postdata=None, parameters=None): - - # let the library user override things however they'd like, if they know - # which parameters to use then go for it, for example XMLRPC might want to - # do this - if parameters is not None: - return OAuthRequest(http_method, http_url, parameters) - - # from the headers - if headers is not None: - try: - auth_header = headers['Authorization'] - # check that the authorization header is OAuth - auth_header.index('OAuth') - # get the parameters from the header - parameters = OAuthRequest._split_header(auth_header) - return OAuthRequest(http_method, http_url, parameters) - except: - pass - - # from the parameter string (post body) - if http_method == 'POST' and postdata is not None: - parameters = OAuthRequest._split_url_string(postdata) - - # from the url string - elif http_method == 'GET': - param_str = urlparse.urlparse(http_url).query - parameters = OAuthRequest._split_url_string(param_str) - - if parameters: - return OAuthRequest(http_method, http_url, parameters) - - raise OAuthError('Missing all OAuth parameters. OAuth parameters must be in the headers, post body, or url.') - - @staticmethod - def from_consumer_and_token(oauth_consumer, token=None, http_method=HTTP_METHOD, http_url=None, parameters=None): - if not parameters: - parameters = {} - - defaults = { - 'oauth_consumer_key': oauth_consumer.key, - 'oauth_timestamp': generate_timestamp(), - 'oauth_nonce': generate_nonce(), - 'oauth_version': OAuthRequest.version, - } - - defaults.update(parameters) - parameters = defaults - - if token: - parameters['oauth_token'] = token.key - - return OAuthRequest(http_method, http_url, parameters) - - @staticmethod - def from_token_and_callback(token, callback=None, http_method=HTTP_METHOD, http_url=None, parameters=None): - if not parameters: - parameters = {} - - parameters['oauth_token'] = token.key - - if callback: - parameters['oauth_callback'] = escape(callback) - - return OAuthRequest(http_method, http_url, parameters) - - # util function: turn Authorization: header into parameters, has to do some unescaping - @staticmethod - def _split_header(header): - params = {} - parts = header.split(',') - for param in parts: - # ignore realm parameter - if param.find('OAuth realm') > -1: - continue - # remove whitespace - param = param.strip() - # split key-value - param_parts = param.split('=', 1) - # remove quotes and unescape the value - params[param_parts[0]] = urllib.unquote(param_parts[1].strip('\"')) - return params - - # util function: turn url string into parameters, has to do some unescaping - @staticmethod - def _split_url_string(param_str): - parameters = cgi.parse_qs(param_str, keep_blank_values=False) - for k, v in parameters.iteritems(): - parameters[k] = urllib.unquote(v[0]) - return parameters - -# OAuthServer is a worker to check a requests validity against a data store -class OAuthServer(object): - timestamp_threshold = 300 # in seconds, five minutes - version = VERSION - signature_methods = None - data_store = None - - def __init__(self, data_store=None, signature_methods=None): - self.data_store = data_store - self.signature_methods = signature_methods or {} - - def set_data_store(self, oauth_data_store): - self.data_store = data_store - - def get_data_store(self): - return self.data_store - - def add_signature_method(self, signature_method): - self.signature_methods[signature_method.get_name()] = signature_method - return self.signature_methods - - # process a request_token request - # returns the request token on success - def fetch_request_token(self, oauth_request): - try: - # get the request token for authorization - token = self._get_token(oauth_request, 'request') - except: - # no token required for the initial token request - version = self._get_version(oauth_request) - consumer = self._get_consumer(oauth_request) - self._check_signature(oauth_request, consumer, None) - # fetch a new token - token = self.data_store.fetch_request_token(consumer) - return token - - # process an access_token request - # returns the access token on success - def fetch_access_token(self, oauth_request): - version = self._get_version(oauth_request) - consumer = self._get_consumer(oauth_request) - # get the request token - token = self._get_token(oauth_request, 'request') - self._check_signature(oauth_request, consumer, token) - new_token = self.data_store.fetch_access_token(consumer, token) - return new_token - - # verify an api call, checks all the parameters - def verify_request(self, oauth_request): - # -> consumer and token - version = self._get_version(oauth_request) - consumer = self._get_consumer(oauth_request) - # get the access token - token = self._get_token(oauth_request, 'access') - self._check_signature(oauth_request, consumer, token) - parameters = oauth_request.get_nonoauth_parameters() - return consumer, token, parameters - - # authorize a request token - def authorize_token(self, token): - return self.data_store.authorize_request_token(token) - - # get the callback url - def get_callback(self, oauth_request): - return oauth_request.get_parameter('oauth_callback') - - # optional support for the authenticate header - def build_authenticate_header(self, realm=''): - return {'WWW-Authenticate': 'OAuth realm="%s"' % realm} - - # verify the correct version request for this server - def _get_version(self, oauth_request): - try: - version = oauth_request.get_parameter('oauth_version') - except: - version = VERSION - if version and version != self.version: - raise OAuthError('OAuth version %s not supported' % str(version)) - return version - - # figure out the signature with some defaults - def _get_signature_method(self, oauth_request): - try: - signature_method = oauth_request.get_parameter('oauth_signature_method') - except: - signature_method = SIGNATURE_METHOD - try: - # get the signature method object - signature_method = self.signature_methods[signature_method] - except: - signature_method_names = ', '.join(self.signature_methods.keys()) - raise OAuthError('Signature method %s not supported try one of the following: %s' % (signature_method, signature_method_names)) - - return signature_method - - def _get_consumer(self, oauth_request): - consumer_key = oauth_request.get_parameter('oauth_consumer_key') - if not consumer_key: - raise OAuthError('Invalid consumer key') - consumer = self.data_store.lookup_consumer(consumer_key) - if not consumer: - raise OAuthError('Invalid consumer') - return consumer - - # try to find the token for the provided request token key - def _get_token(self, oauth_request, token_type='access'): - token_field = oauth_request.get_parameter('oauth_token') - token = self.data_store.lookup_token(token_type, token_field) - if not token: - raise OAuthError('Invalid %s token: %s' % (token_type, token_field)) - return token - - def _check_signature(self, oauth_request, consumer, token): - timestamp, nonce = oauth_request._get_timestamp_nonce() - self._check_timestamp(timestamp) - self._check_nonce(consumer, token, nonce) - signature_method = self._get_signature_method(oauth_request) - try: - signature = oauth_request.get_parameter('oauth_signature') - except: - raise OAuthError('Missing signature') - # attempt to construct the same signature - built = signature_method.build_signature(oauth_request, consumer, token) - if signature != built: - raise OAuthError('Invalid signature') - - def _check_timestamp(self, timestamp): - # verify that timestamp is recentish - timestamp = int(timestamp) - now = int(time.time()) - lapsed = now - timestamp - if lapsed > self.timestamp_threshold: - raise OAuthError('Expired timestamp: given %d and now %s has a greater difference than threshold %d' % (timestamp, now, self.timestamp_threshold)) - - def _check_nonce(self, consumer, token, nonce): - # verify that the nonce is uniqueish - try: - self.data_store.lookup_nonce(consumer, token, nonce) - raise OAuthError('Nonce already used: %s' % str(nonce)) - except: - pass - -# OAuthClient is a worker to attempt to execute a request -class OAuthClient(object): - consumer = None - token = None - - def __init__(self, oauth_consumer, oauth_token): - self.consumer = oauth_consumer - self.token = oauth_token - - def get_consumer(self): - return self.consumer - - def get_token(self): - return self.token - - def fetch_request_token(self, oauth_request): - # -> OAuthToken - raise NotImplementedError - - def fetch_access_token(self, oauth_request): - # -> OAuthToken - raise NotImplementedError - - def access_resource(self, oauth_request): - # -> some protected resource - raise NotImplementedError - -# OAuthDataStore is a database abstraction used to lookup consumers and tokens -class OAuthDataStore(object): - - def lookup_consumer(self, key): - # -> OAuthConsumer - raise NotImplementedError - - def lookup_token(self, oauth_consumer, token_type, token_token): - # -> OAuthToken - raise NotImplementedError - - def lookup_nonce(self, oauth_consumer, oauth_token, nonce, timestamp): - # -> OAuthToken - raise NotImplementedError - - def fetch_request_token(self, oauth_consumer): - # -> OAuthToken - raise NotImplementedError - - def fetch_access_token(self, oauth_consumer, oauth_token): - # -> OAuthToken - raise NotImplementedError - - def authorize_request_token(self, oauth_token): - # -> OAuthToken - raise NotImplementedError - -# OAuthSignatureMethod is a strategy class that implements a signature method -class OAuthSignatureMethod(object): - def get_name(): - # -> str - raise NotImplementedError - - def build_signature(oauth_request, oauth_consumer, oauth_token): - # -> str - raise NotImplementedError - -class OAuthSignatureMethod_HMAC_SHA1(OAuthSignatureMethod): - - def get_name(self): - return 'HMAC-SHA1' - - def build_signature(self, oauth_request, consumer, token): - sig = ( - escape(oauth_request.get_normalized_http_method()), - escape(oauth_request.get_normalized_http_url()), - escape(oauth_request.get_normalized_parameters()), - ) - - key = '%s&' % consumer.secret - if token: - key += token.secret - raw = '&'.join(sig) - - # hmac object - hashed = hmac.new(key, raw, hashlib.sha1) - - # calculate the digest base 64 - return base64.b64encode(hashed.digest()) - -class OAuthSignatureMethod_PLAINTEXT(OAuthSignatureMethod): - - def get_name(self): - return 'PLAINTEXT' - - def build_signature(self, oauth_request, consumer, token): - # concatenate the consumer key and secret - sig = escape(consumer.secret) - if token: - sig = '&'.join((sig, escape(token.secret))) - return sig diff --git a/python_apps/soundcloud-api/scapi/MultipartPostHandler.py b/python_apps/soundcloud-api/scapi/MultipartPostHandler.py deleted file mode 100644 index 34b12943f..000000000 --- a/python_apps/soundcloud-api/scapi/MultipartPostHandler.py +++ /dev/null @@ -1,135 +0,0 @@ -#!/usr/bin/python - -#### -# 02/2006 Will Holcomb <wholcomb@gmail.com> -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -""" -Usage: - Enables the use of multipart/form-data for posting forms - -Inspirations: - Upload files in python: - http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/146306 - urllib2_file: - Fabien Seisen: <fabien@seisen.org> - -Example: - import MultipartPostHandler, urllib2, cookielib - - cookies = cookielib.CookieJar() - opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookies), - MultipartPostHandler.MultipartPostHandler) - params = { "username" : "bob", "password" : "riviera", - "file" : open("filename", "rb") } - opener.open("http://wwww.bobsite.com/upload/", params) - -Further Example: - The main function of this file is a sample which downloads a page and - then uploads it to the W3C validator. -""" - -import urllib -import urllib2 -import mimetools, mimetypes -import os, stat - -class Callable: - def __init__(self, anycallable): - self.__call__ = anycallable - -# Controls how sequences are uncoded. If true, elements may be given multiple values by -# assigning a sequence. -doseq = 1 - -class MultipartPostHandler(urllib2.BaseHandler): - handler_order = urllib2.HTTPHandler.handler_order - 10 # needs to run first - - def http_request(self, request): - data = request.get_data() - if data is not None and type(data) != str: - v_files = [] - v_vars = [] - try: - for(key, value) in data.items(): - if type(value) == file: - v_files.append((key, value)) - else: - v_vars.append((key, value)) - except TypeError: - systype, value, traceback = sys.exc_info() - raise TypeError, "not a valid non-string sequence or mapping object", traceback - - if len(v_files) == 0: - data = urllib.urlencode(v_vars, doseq) - else: - boundary, data = self.multipart_encode(v_vars, v_files) - contenttype = 'multipart/form-data; boundary=%s' % boundary - if(request.has_header('Content-Type') - and request.get_header('Content-Type').find('multipart/form-data') != 0): - print "Replacing %s with %s" % (request.get_header('content-type'), 'multipart/form-data') - request.add_unredirected_header('Content-Type', contenttype) - - request.add_data(data) - return request - - def multipart_encode(vars, files, boundary = None, buffer = None): - if boundary is None: - boundary = mimetools.choose_boundary() - if buffer is None: - buffer = '' - for(key, value) in vars: - if isinstance(value, basestring): - value = [value] - for sub_value in value: - buffer += '--%s\r\n' % boundary - buffer += 'Content-Disposition: form-data; name="%s"' % key - buffer += '\r\n\r\n' + sub_value + '\r\n' - for(key, fd) in files: - file_size = os.fstat(fd.fileno())[stat.ST_SIZE] - filename = fd.name.split('/')[-1] - contenttype = mimetypes.guess_type(filename)[0] or 'application/octet-stream' - buffer += '--%s\r\n' % boundary - buffer += 'Content-Disposition: form-data; name="%s"; filename="%s"\r\n' % (key, filename) - buffer += 'Content-Type: %s\r\n' % contenttype - # buffer += 'Content-Length: %s\r\n' % file_size - fd.seek(0) - buffer += '\r\n' + fd.read() + '\r\n' - buffer += '--%s--\r\n\r\n' % boundary - return boundary, buffer - multipart_encode = Callable(multipart_encode) - - https_request = http_request - -def main(): - import tempfile, sys - - validatorURL = "http://validator.w3.org/check" - opener = urllib2.build_opener(MultipartPostHandler) - - def validateFile(url): - temp = tempfile.mkstemp(suffix=".html") - os.write(temp[0], opener.open(url).read()) - params = { "ss" : "0", # show source - "doctype" : "Inline", - "uploaded_file" : open(temp[1], "rb") } - print opener.open(validatorURL, params).read() - os.remove(temp[1]) - - if len(sys.argv[1:]) > 0: - for arg in sys.argv[1:]: - validateFile(arg) - else: - validateFile("http://www.google.com") - -if __name__=="__main__": - main() diff --git a/python_apps/soundcloud-api/scapi/__init__.py b/python_apps/soundcloud-api/scapi/__init__.py deleted file mode 100644 index ae737cb81..000000000 --- a/python_apps/soundcloud-api/scapi/__init__.py +++ /dev/null @@ -1,1012 +0,0 @@ -## SouncCloudAPI implements a Python wrapper around the SoundCloud RESTful -## API -## -## Copyright (C) 2008 Diez B. Roggisch -## Contact mailto:deets@soundcloud.com -## -## This library is free software; you can redistribute it and/or -## modify it under the terms of the GNU Lesser General Public -## License as published by the Free Software Foundation; either -## version 2.1 of the License, or (at your option) any later version. -## -## This library is distributed in the hope that it will be useful, -## but WITHOUT ANY WARRANTY; without even the implied warranty of -## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -## Lesser General Public License for more details. -## -## You should have received a copy of the GNU Lesser General Public -## License along with this library; if not, write to the Free Software -## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -import urllib -import urllib2 -import re - -import logging -import simplejson -import cgi -from scapi.MultipartPostHandler import MultipartPostHandler -from inspect import isclass -import urlparse -from scapi.authentication import BasicAuthenticator -from scapi.util import ( - escape, - MultiDict, - ) - -logging.basicConfig() -logger = logging.getLogger(__name__) - -USE_PROXY = False -""" -Something like http://127.0.0.1:10000/ -""" -PROXY = '' - - -""" -Endpoints, for reference: -The url Soundcould offers to obtain request-tokens: 'http://api.soundcloud.com/oauth/request_token' -The url Soundcould offers to exchange access-tokens for request-tokens: 'http://api.soundcloud.com/oauth/access_token' -The url Soundcould offers to make users authorize a concrete request token: 'http://api.soundcloud.com/oauth/authorize' -""" - -__all__ = ['SoundCloudAPI', 'USE_PROXY', 'PROXY'] - - -class NoResultFromRequest(Exception): - pass - -class InvalidMethodException(Exception): - - def __init__(self, message): - self._message = message - Exception.__init__(self) - - def __repr__(self): - res = Exception.__repr__(self) - res += "\n" - res += "-" * 10 - res += "\nmessage:\n\n" - res += self._message - return res - -class UnknownContentType(Exception): - def __init__(self, msg): - Exception.__init__(self) - self._msg = msg - - def __repr__(self): - return self.__class__.__name__ + ":" + self._msg - - def __str__(self): - return str(self) - -class PartitionCollectionGenerator(): - def __init__(self, scope, method, Gen, NextPartition): - self.NextPartition = NextPartition - self.Generator = Gen - self.Scope = scope - self.Method = method - - def __iter__(self): - return self.Generator - def next(self): - return self.Generator.next() - def __call__(self, someParam): - self.someParam = someParam - for line in self.content: - if line == someParam: - yield line - - def GetNextPartition(self): - if self.NextPartition != None: - method = re.search('(^[a-z]+)', self.Method).group(0) - params = re.search('\?.+', self.NextPartition).group(0) - params = params.replace('u0026', '&') - - return self.Scope._call(method, params) - else: - return None - -class ApiConnector(object): - """ - The ApiConnector holds all the data necessary to authenticate against - the soundcloud-api. You can instantiate several connectors if you like, but usually one - should be sufficient. - """ - - """ - SoundClound imposes a maximum on the number of returned items. This value is that - maximum. - """ - LIST_LIMIT = 50 - - """ - The query-parameter that is used to request results beginning from a certain offset. - """ - LIST_OFFSET_PARAMETER = 'offset' - """ - The query-parameter that is used to request results being limited to a certain amount. - - Currently this is of no use and just for completeness sake. - """ - LIST_LIMIT_PARAMETER = 'limit' - - def __init__(self, host, user=None, password=None, authenticator=None, base="", collapse_scope=True): - """ - Constructor for the API-Singleton. Use it once with parameters, and then the - subsequent calls internal to the API will work. - - @type host: str - @param host: the host to connect to, e.g. "api.soundcloud.com". If a port is needed, use - "api.soundcloud.com:1234" - @type user: str - @param user: if given, the username for basic HTTP authentication - @type password: str - @param password: if the user is given, you have to give a password as well - @type authenticator: OAuthAuthenticator | BasicAuthenticator - @param authenticator: the authenticator to use, see L{scapi.authentication} - """ - self.host = host - self.host = self.host.replace("http://", "") - if self.host[-1] == '/': # Remove a trailing slash, but leave other slashes alone - self.host = self.host[0:-1] - - if authenticator is not None: - self.authenticator = authenticator - elif user is not None and password is not None: - self.authenticator = BasicAuthenticator(user, password) - self._base = base - self.collapse_scope = collapse_scope - - def normalize_method(self, method): - """ - This method will take a method that has been part of a redirect of some sort - and see if it's valid, which means that it's located beneath our base. - If yes, we return it normalized without that very base. - """ - _, _, path, _, _, _ = urlparse.urlparse(method) - if path.startswith("/"): - path = path[1:] - # if the base is "", we return the whole path, - # otherwise normalize it away - if self._base == "": - return path - if path.startswith(self._base): - return path[len(self._base)-1:] - raise InvalidMethodException("Not a valid API method: %s" % method) - - - - def fetch_request_token(self, url=None, oauth_callback="oob", oauth_verifier=None): - """ - Helper-function for a registered consumer to obtain a request token, as - used by oauth. - - Use it like this: - - >>> oauth_authenticator = scapi.authentication.OAuthAuthenticator(CONSUMER, - CONSUMER_SECRET, - None, - None) - - >>> sca = scapi.ApiConnector(host=API_HOST, authenticator=oauth_authenticator) - >>> token, secret = sca.fetch_request_token() - >>> authorization_url = sca.get_request_token_authorization_url(token) - - Please note the None passed as token & secret to the authenticator. - """ - request_url = "http://" + self.host + "/oauth/request_token" - if url is None: - url = request_url - req = urllib2.Request(url) - self.authenticator.augment_request(req, None, oauth_callback=oauth_callback, oauth_verifier=oauth_verifier) - handlers = [] - if USE_PROXY: - handlers.append(urllib2.ProxyHandler({'http' : PROXY})) - opener = urllib2.build_opener(*handlers) - handle = opener.open(req, None) - info = handle.info() - content = handle.read() - params = cgi.parse_qs(content, keep_blank_values=False) - key = params['oauth_token'][0] - secret = params['oauth_token_secret'][0] - return key, secret - - - def fetch_access_token(self, oauth_verifier): - """ - Helper-function for a registered consumer to exchange an access token for - a request token. - - Use it like this: - - >>> oauth_authenticator = scapi.authentication.OAuthAuthenticator(CONSUMER, - CONSUMER_SECRET, - request_token, - request_token_secret) - - >>> sca = scapi.ApiConnector(host=API_HOST, authenticator=oauth_authenticator) - >>> token, secret = sca.fetch_access_token() - - Please note the values passed as token & secret to the authenticator. - """ - access_token_url = "http://" + self.host + "/oauth/access_token" - return self.fetch_request_token(access_token_url, oauth_verifier=oauth_verifier) - - - def get_request_token_authorization_url(self, token): - """ - Simple helper function to generate the url needed - to ask a user for request token authorization. - - See also L{fetch_request_token}. - - Possible usage: - - >>> import webbrowser - >>> sca = scapi.ApiConnector() - >>> authorization_url = sca.get_request_token_authorization_url(token) - >>> webbrowser.open(authorization_url) - """ - - auth_url = self.host.split("/")[0] - auth_url = "http://" + auth_url + "/oauth/authorize" - auth_url = auth_url.replace("api.", "") - return "%s?oauth_token=%s" % (auth_url, token) - - - -class SCRedirectHandler(urllib2.HTTPRedirectHandler): - """ - A urllib2-Handler to deal with the redirects the RESTful API of SC uses. - """ - alternate_method = None - - def http_error_303(self, req, fp, code, msg, hdrs): - """ - In case of return-code 303 (See-other), we have to store the location we got - because that will determine the actual type of resource returned. - """ - self.alternate_method = hdrs['location'] - # for oauth, we need to re-create the whole header-shizzle. This - # does it - it recreates a full url and signs the request - new_url = self.alternate_method -# if USE_PROXY: -# import pdb; pdb.set_trace() -# old_url = req.get_full_url() -# protocol, host, _, _, _, _ = urlparse.urlparse(old_url) -# new_url = urlparse.urlunparse((protocol, host, self.alternate_method, None, None, None)) - req = req.recreate_request(new_url) - return urllib2.HTTPRedirectHandler.http_error_303(self, req, fp, code, msg, hdrs) - - def http_error_201(self, req, fp, code, msg, hdrs): - """ - We fake a 201 being a 303 so that our redirection-scheme takes place - for the 201 the API throws in case we created something. If the location is - not available though, that means that whatever we created has succeded - without - being a named resource. Assigning an asset to a track is an example of such - case. - """ - if 'location' not in hdrs: - raise NoResultFromRequest() - return self.http_error_303(req, fp, 303, msg, hdrs) - -class Scope(object): - """ - The basic means to query and create resources. The Scope uses the L{ApiConnector} to - create the proper URIs for querying or creating resources. - - For accessing resources from the root level, you explcitly create a Scope and pass it - an L{ApiConnector}-instance. Then you can query it - or create new resources like this: - - >>> connector = scapi.ApiConnector(host='host', user='user', password='password') # initialize the API - >>> scope = scapi.Scope(connector) # get the root scope - >>> users = list(scope.users()) - [<scapi.User object at 0x12345>, ...] - - Please not that all resources that are lists are returned as B{generator}. So you need - to either iterate over them, or call list(resources) on them. - - When accessing resources that belong to another resource, like contacts of a user, you access - the parent's resource scope implicitly through the resource instance like this: - - >>> user = scope.users().next() - >>> list(user.contacts()) - [<scapi.Contact object at 0x12345>, ...] - - """ - def __init__(self, connector, scope=None, parent=None): - """ - Create the Scope. It can have a resource as scope, and possibly a parent-scope. - - @param connector: The connector to use. - @type connector: ApiConnector - @type scope: scapi.RESTBase - @param scope: the resource to make this scope belong to - @type parent: scapi.Scope - @param parent: the parent scope of this scope - """ - - if scope is None: - scope = () - else: - scope = scope, - if parent is not None: - scope = parent._scope + scope - self._scope = scope - self._connector = connector - - def _get_connector(self): - return self._connector - - - def oauth_sign_get_request(self, url): - """ - This method will take an arbitrary url, and rewrite it - so that the current authenticator's oauth-headers are appended - as query-parameters. - - This is used in streaming and downloading, because those content - isn't served from the SoundCloud servers themselves. - - A usage example would look like this: - - >>> sca = scapi.Scope(connector) - >>> track = sca.tracks(params={ - "filter" : "downloadable", - }).next() - - - >>> download_url = track.download_url - >>> signed_url = track.oauth_sign_get_request(download_url) - >>> data = urllib2.urlopen(signed_url).read() - - """ - scheme, netloc, path, params, query, fragment = urlparse.urlparse(url) - - req = urllib2.Request(url) - - all_params = {} - if query: - all_params.update(cgi.parse_qs(query)) - - if not all_params: - all_params = None - - self._connector.authenticator.augment_request(req, all_params, False) - - auth_header = req.get_header("Authorization") - auth_header = auth_header[len("OAuth "):] - - query_params = [] - if query: - query_params.append(query) - - for part in auth_header.split(","): - key, value = part.split("=") - assert key.startswith("oauth") - value = value[1:-1] - query_params.append("%s=%s" % (key, value)) - - query = "&".join(query_params) - url = urlparse.urlunparse((scheme, netloc, path, params, query, fragment)) - return url - - - def _create_request(self, url, connector, parameters, queryparams, alternate_http_method=None, use_multipart=False): - """ - This method returnes the urllib2.Request to perform the actual HTTP-request. - - We return a subclass that overload the get_method-method to return a custom method like "PUT". - Additionally, the request is enhanced with the current authenticators authorization scheme - headers. - - @param url: the destination url - @param connector: our connector-instance - @param parameters: the POST-parameters to use. - @type parameters: None|dict<str, basestring|list<basestring>> - @param queryparams: the queryparams to use - @type queryparams: None|dict<str, basestring|list<basestring>> - @param alternate_http_method: an alternate HTTP-method to use - @type alternate_http_method: str - @return: the fully equipped request - @rtype: urllib2.Request - """ - class MyRequest(urllib2.Request): - def get_method(self): - if alternate_http_method is not None: - return alternate_http_method - return urllib2.Request.get_method(self) - - def has_data(self): - return parameters is not None - - def augment_request(self, params, use_multipart=False): - connector.authenticator.augment_request(self, params, use_multipart) - - @classmethod - def recreate_request(cls, location): - return self._create_request(location, connector, None, None) - - req = MyRequest(url) - all_params = {} - if parameters is not None: - all_params.update(parameters) - if queryparams is not None: - all_params.update(queryparams) - if not all_params: - all_params = None - req.augment_request(all_params, use_multipart) - req.add_header("Accept", "application/json") - return req - - - def _create_query_string(self, queryparams): - """ - Small helpermethod to create the querystring from a dict. - - @type queryparams: None|dict<str, basestring|list<basestring>> - @param queryparams: the queryparameters. - @return: either the empty string, or a "?" followed by the parameters joined by "&" - @rtype: str - """ - if not queryparams: - return "" - h = [] - for key, values in queryparams.iteritems(): - if isinstance(values, (int, long, float)): - values = str(values) - if isinstance(values, basestring): - values = [values] - for v in values: - v = v.encode("utf-8") - h.append("%s=%s" % (key, escape(v))) - return "?" + "&".join(h) - - - def _call(self, method, *args, **kwargs): - """ - The workhorse. It's complicated, convoluted and beyond understanding of a mortal being. - - You have been warned. - """ - - queryparams = {} - __offset__ = ApiConnector.LIST_LIMIT - if "__offset__" in kwargs: - offset = kwargs.pop("__offset__") - queryparams['offset'] = offset - __offset__ = offset + ApiConnector.LIST_LIMIT - - if "params" in kwargs: - queryparams.update(kwargs.pop("params")) - - # create a closure to invoke this method again with a greater offset - _cl_method = method - _cl_args = tuple(args) - _cl_kwargs = {} - _cl_kwargs.update(kwargs) - _cl_kwargs["__offset__"] = __offset__ - def continue_list_fetching(): - return self._call(method, *_cl_args, **_cl_kwargs) - connector = self._get_connector() - def filelike(v): - if isinstance(v, file): - return True - if hasattr(v, "read"): - return True - return False - alternate_http_method = None - if "_alternate_http_method" in kwargs: - alternate_http_method = kwargs.pop("_alternate_http_method") - urlparams = kwargs if kwargs else None - use_multipart = False - if urlparams is not None: - fileargs = dict((key, value) for key, value in urlparams.iteritems() if filelike(value)) - use_multipart = bool(fileargs) - - # ensure the method has a trailing / - if method[-1] != "/": - method = method + "/" - if args: - method = "%s%s" % (method, "/".join(str(a) for a in args)) - - scope = '' - if self._scope: - scopes = self._scope - if connector.collapse_scope: - scopes = scopes[-1:] - scope = "/".join([sc._scope() for sc in scopes]) + "/" - url = "http://%(host)s/%(base)s%(scope)s%(method)s%(queryparams)s" % dict(host=connector.host, method=method, base=connector._base, scope=scope, queryparams=self._create_query_string(queryparams)) - - # we need to install SCRedirectHandler - # to gather possible See-Other redirects - # so that we can exchange our method - redirect_handler = SCRedirectHandler() - handlers = [redirect_handler] - if USE_PROXY: - handlers.append(urllib2.ProxyHandler({'http' : PROXY})) - req = self._create_request(url, connector, urlparams, queryparams, alternate_http_method, use_multipart) - - http_method = req.get_method() - if urlparams is not None: - logger.debug("Posting url: %s, method: %s", url, http_method) - else: - logger.debug("Fetching url: %s, method: %s", url, http_method) - - - if use_multipart: - handlers.extend([MultipartPostHandler]) - else: - if urlparams is not None: - urlparams = urllib.urlencode(urlparams.items(), True) - opener = urllib2.build_opener(*handlers) - try: - handle = opener.open(req, urlparams) - except NoResultFromRequest: - return None - except urllib2.HTTPError, e: - if http_method == "GET" and e.code == 404: - return None - raise - - info = handle.info() - ct = info['Content-Type'] - content = handle.read() - logger.debug("Content-type:%s", ct) - logger.debug("Request Content:\n%s", content) - if redirect_handler.alternate_method is not None: - method = connector.normalize_method(redirect_handler.alternate_method) - logger.debug("Method changed through redirect to: <%s>", method) - - try: - if "application/json" in ct: - content = content.strip() - #If linked partitioning is on, extract the URL to the next collection: - partition_url = None - if method.find('linked_partitioning=1') != -1: - pattern = re.compile('(next_partition_href":")(.*?)(")') - if pattern.search(content): - partition_url = pattern.search(content).group(2) - - if not content: - content = "{}" - try: - res = simplejson.loads(content) - except: - logger.error("Couldn't decode returned json") - logger.error(content) - raise - res = self._map(res, method, continue_list_fetching, partition_url) - return res - elif len(content) <= 1: - # this might be the famous SeeOtherSpecialCase which means that - # all that matters is just the method - pass - raise UnknownContentType("%s, returned:\n%s" % (ct, content)) - finally: - handle.close() - - def _map(self, res, method, continue_list_fetching, next_partition = None): - """ - This method will take the JSON-result of a HTTP-call and return our domain-objects. - - It's also deep magic, don't look. - """ - pathparts = reversed(method.split("/")) - stack = [] - for part in pathparts: - stack.append(part) - if part in RESTBase.REGISTRY: - cls = RESTBase.REGISTRY[part] - # multiple objects, without linked partitioning - if isinstance(res, list): - def result_gen(): - count = 0 - for item in res: - yield cls(item, self, stack) - count += 1 - if count == ApiConnector.LIST_LIMIT: - for item in continue_list_fetching(): - yield item - logger.debug(res) - return PartitionCollectionGenerator(self, method, result_gen(), next_partition) - # multiple objects, with linked partitioning - elif isinstance(res, dict) and res.has_key('next_partition_href'): - def result_gen(): - count = 0 - for item in res['collection']: - yield cls(item, self, stack) - count += 1 - if count == ApiConnector.LIST_LIMIT: - for item in continue_list_fetching(): - yield item - logger.debug(res) - return PartitionCollectionGenerator(self, method, result_gen(), next_partition) - else: - return cls(res, self, stack) - logger.debug("don't know how to handle result") - logger.debug(res) - return res - - def __getattr__(self, _name): - """ - Retrieve an API-method or a scoped domain-class. - - If the former, result is a callable that supports the following invocations: - - - calling (...), with possible arguments (positional/keyword), return the resulting resource or list of resources. - When calling, you can pass a keyword-argument B{params}. This must be a dict or L{MultiDict} and will be used to add additional query-get-parameters. - - - invoking append(resource) on it will PUT the resource, making it part of the current resource. Makes - sense only if it's a collection of course. - - - invoking remove(resource) on it will DELETE the resource from it's container. Also only usable on collections. - - TODO: describe the latter - """ - scope = self - - class api_call(object): - def __call__(selfish, *args, **kwargs): - return self._call(_name, *args, **kwargs) - - def new(self, **kwargs): - """ - Will invoke the new method on the named resource _name, with - self as scope. - """ - cls = RESTBase.REGISTRY[_name] - return cls.new(scope, **kwargs) - - def append(selfish, resource): - """ - If the current scope is - """ - try: - self._call(_name, str(resource.id), _alternate_http_method="PUT") - except AttributeError: - self._call(_name, str(resource), _alternate_http_method="PUT") - - def remove(selfish, resource): - try: - self._call(_name, str(resource.id), _alternate_http_method="DELETE") - except AttributeError: - self._call(_name, str(resource), _alternate_http_method="DELETE") - - if _name in RESTBase.ALL_DOMAIN_CLASSES: - cls = RESTBase.ALL_DOMAIN_CLASSES[_name] - - class ScopeBinder(object): - def new(self, *args, **data): - - d = MultiDict() - name = cls._singleton() - - def unfold_value(key, value): - if isinstance(value, (basestring, file)): - d.add(key, value) - elif isinstance(value, dict): - for sub_key, sub_value in value.iteritems(): - unfold_value("%s[%s]" % (key, sub_key), sub_value) - else: - # assume iteration else - for sub_value in value: - unfold_value(key + "[]", sub_value) - - - for key, value in data.iteritems(): - unfold_value("%s[%s]" % (name, key), value) - - return scope._call(cls.KIND, **d) - - def create(self, **data): - return cls.create(scope, **data) - - def get(self, id): - return cls.get(scope, id) - - - return ScopeBinder() - return api_call() - - def __repr__(self): - return str(self) - - def __str__(self): - scopes = self._scope - base = "" - if len(scopes) > 1: - base = str(scopes[-2]) - return base + "/" + str(scopes[-1]) - - -# maybe someday I'll make that work. -# class RESTBaseMeta(type): -# def __new__(self, name, bases, d): -# clazz = type(name, bases, d) -# if 'KIND' in d: -# kind = d['KIND'] -# RESTBase.REGISTRY[kind] = clazz -# return clazz - -class RESTBase(object): - """ - The baseclass for all our domain-objects/resources. - - - """ - REGISTRY = {} - - ALL_DOMAIN_CLASSES = {} - - ALIASES = [] - - KIND = None - - def __init__(self, data, scope, path_stack=None): - self.__data = data - self.__scope = scope - # try and see if we can/must create an id out of our path - logger.debug("path_stack: %r", path_stack) - if path_stack: - try: - id = int(path_stack[0]) - self.__data['id'] = id - except ValueError: - pass - - def __getattr__(self, name): - if name in self.__data: - obj = self.__data[name] - if name in RESTBase.REGISTRY: - if isinstance(obj, dict): - obj = RESTBase.REGISTRY[name](obj, self.__scope) - elif isinstance(obj, list): - obj = [RESTBase.REGISTRY[name](o, self.__scope) for o in obj] - else: - logger.warning("Found %s in our registry, but don't know what to do with"\ - "the object.") - return obj - scope = Scope(self.__scope._get_connector(), scope=self, parent=self.__scope) - return getattr(scope, name) - - def __setattr__(self, name, value): - """ - This method is used to set a property, a resource or a list of resources as property of the resource the - method is invoked on. - - For example, to set a comment on a track, do - - >>> sca = scapi.Scope(connector) - >>> track = scapi.Track.new(title='bar', sharing="private") - >>> comment = scapi.Comment.create(body="This is the body of my comment", timestamp=10) - >>> track.comments = comment - - To set a list of users as permissions, do - - >>> sca = scapi.Scope(connector) - >>> me = sca.me() - >>> track = scapi.Track.new(title='bar', sharing="private") - >>> users = sca.users() - >>> users_to_set = [user for user in users[:10] if user != me] - >>> track.permissions = users_to_set - - And finally, to simply change the title of a track, do - - >>> sca = scapi.Scope(connector) - >>> track = sca.Track.get(track_id) - >>> track.title = "new_title" - - @param name: the property name - @type name: str - @param value: the property, resource or resources to set - @type value: RESTBase | list<RESTBase> | basestring | long | int | float - @return: None - """ - - # update "private" data, such as __data - if "_RESTBase__" in name: - self.__dict__[name] = value - else: - if isinstance(value, list) and len(value): - # the parametername is something like - # permissions[user_id][] - # so we try to infer that. - parameter_name = "%s[%s_id][]" % (name, value[0]._singleton()) - values = [o.id for o in value] - kwargs = {"_alternate_http_method" : "PUT", - parameter_name : values} - self.__scope._call(self.KIND, self.id, name, **kwargs) - elif isinstance(value, RESTBase): - # we got a single instance, so make that an argument - self.__scope._call(self.KIND, self.id, name, **value._as_arguments()) - else: - # we have a simple property - parameter_name = "%s[%s]" % (self._singleton(), name) - kwargs = {"_alternate_http_method" : "PUT", - parameter_name : self._convert_value(value)} - self.__scope._call(self.KIND, self.id, **kwargs) - - def _as_arguments(self): - """ - Converts a resource to a argument-string the way Rails expects it. - """ - res = {} - for key, value in self.__data.items(): - value = self._convert_value(value) - res["%s[%s]" % (self._singleton(), key)] = value - return res - - def _convert_value(self, value): - if isinstance(value, unicode): - value = value.encode("utf-8") - elif isinstance(value, file): - pass - else: - value = str(value) - return value - - @classmethod - def create(cls, scope, **data): - """ - This is a convenience-method for creating an object that will be passed - as parameter - e.g. a comment. A usage would look like this: - - >>> sca = scapi.Scope(connector) - >>> track = sca.Track.new(title='bar', sharing="private") - >>> comment = sca.Comment.create(body="This is the body of my comment", timestamp=10) - >>> track.comments = comment - - """ - return cls(data, scope) - - @classmethod - def new(cls, scope, **data): - """ - Create a new resource inside a given Scope. The actual values are in data. - - So for creating new resources, you have two options: - - - create an instance directly using the class: - - >>> scope = scapi.Scope(connector) - >>> scope.User.new(...) - <scapi.User object at 0x1234> - - - create a instance in a certain scope: - - >>> scope = scapi.Scope(connector) - >>> user = scapi.User("1") - >>> track = user.tracks.new() - <scapi.Track object at 0x1234> - - @param scope: if not empty, a one-element tuple containing the Scope - @type scope: tuple<Scope>[1] - @param data: the data - @type data: dict - @return: new instance of the resource - """ - return getattr(scope, cls.__name__).new(**data) - - @classmethod - def get(cls, scope, id): - """ - Fetch a resource by id. - - Simply pass a known id as argument. For example - - >>> sca = scapi.Scope(connector) - >>> track = sca.Track.get(id) - - """ - return getattr(scope, cls.KIND)(id) - - - def _scope(self): - """ - Return the scope this resource lives in, which is the KIND and id - - @return: "<KIND>/<id>" - """ - return "%s/%s" % (self.KIND, str(self.id)) - - @classmethod - def _singleton(cls): - """ - This method will take a resource name like "users" and - return the single-case, in the example "user". - - Currently, it's not very sophisticated, only strips a trailing s. - """ - name = cls.KIND - if name[-1] == 's': - return name[:-1] - raise ValueError("Can't make %s to a singleton" % name) - - def __repr__(self): - res = [] - res.append("\n\n******\n%s:" % self.__class__.__name__) - res.append("") - for key, v in self.__data.iteritems(): - key = str(key) - if isinstance(v, unicode): - v = v.encode('utf-8') - else: - v = str(v) - res.append("%s=%s" % (key, v)) - return "\n".join(res) - - def __hash__(self): - return hash("%s%i" % (self.KIND, self.id)) - - def __eq__(self, other): - """ - Test for equality. - - Resources are considered equal if the have the same kind and id. - """ - if not isinstance(other, RESTBase): - return False - res = self.KIND == other.KIND and self.id == other.id - return res - - def __ne__(self, other): - return not self == other - -class User(RESTBase): - """ - A user domain object/resource. - """ - KIND = 'users' - ALIASES = ['me', 'permissions', 'contacts', 'user'] - -class Track(RESTBase): - """ - A track domain object/resource. - """ - KIND = 'tracks' - ALIASES = ['favorites'] - -class Comment(RESTBase): - """ - A comment domain object/resource. - """ - KIND = 'comments' - -class Event(RESTBase): - """ - A event domain object/resource. - """ - KIND = 'events' - -class Playlist(RESTBase): - """ - A playlist/set domain object/resource - """ - KIND = 'playlists' - -class Group(RESTBase): - """ - A group domain object/resource - """ - KIND = 'groups' - - - -# this registers all the RESTBase subclasses. -# One day using a metaclass will make this a tad -# less ugly. -def register_classes(): - g = {} - g.update(globals()) - for name, cls in [(k, v) for k, v in g.iteritems() if isclass(v) and issubclass(v, RESTBase) and not v == RESTBase]: - RESTBase.REGISTRY[cls.KIND] = cls - RESTBase.ALL_DOMAIN_CLASSES[cls.__name__] = cls - for alias in cls.ALIASES: - RESTBase.REGISTRY[alias] = cls - __all__.append(name) -register_classes() diff --git a/python_apps/soundcloud-api/scapi/authentication.py b/python_apps/soundcloud-api/scapi/authentication.py deleted file mode 100644 index 52c527704..000000000 --- a/python_apps/soundcloud-api/scapi/authentication.py +++ /dev/null @@ -1,195 +0,0 @@ -## SouncCloudAPI implements a Python wrapper around the SoundCloud RESTful -## API -## -## Copyright (C) 2008 Diez B. Roggisch -## Contact mailto:deets@soundcloud.com -## -## This library is free software; you can redistribute it and/or -## modify it under the terms of the GNU Lesser General Public -## License as published by the Free Software Foundation; either -## version 2.1 of the License, or (at your option) any later version. -## -## This library is distributed in the hope that it will be useful, -## but WITHOUT ANY WARRANTY; without even the implied warranty of -## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -## Lesser General Public License for more details. -## -## You should have received a copy of the GNU Lesser General Public -## License along with this library; if not, write to the Free Software -## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -import base64 -import time, random -import urlparse -import hmac -import hashlib -from scapi.util import escape -import logging - - -USE_DOUBLE_ESCAPE_HACK = True -""" -There seems to be an uncertainty on the way -parameters are to be escaped. For now, this -variable switches between two escaping mechanisms. - -If True, the passed parameters - GET or POST - are -escaped *twice*. -""" - -logger = logging.getLogger(__name__) - -class OAuthSignatureMethod_HMAC_SHA1(object): - - FORBIDDEN = ['realm', 'oauth_signature'] - - def get_name(self): - return 'HMAC-SHA1' - - def build_signature(self, request, parameters, consumer_secret, token_secret, oauth_parameters): - if logger.level == logging.DEBUG: - logger.debug("request: %r", request) - logger.debug("parameters: %r", parameters) - logger.debug("consumer_secret: %r", consumer_secret) - logger.debug("token_secret: %r", token_secret) - logger.debug("oauth_parameters: %r", oauth_parameters) - - - temp = {} - temp.update(oauth_parameters) - for p in self.FORBIDDEN: - if p in temp: - del temp[p] - if parameters is not None: - temp.update(parameters) - sig = ( - escape(self.get_normalized_http_method(request)), - escape(self.get_normalized_http_url(request)), - self.get_normalized_parameters(temp), # these are escaped in the method already - ) - - key = '%s&' % consumer_secret - if token_secret is not None: - key += token_secret - raw = '&'.join(sig) - logger.debug("raw basestring: %s", raw) - logger.debug("key: %s", key) - # hmac object - hashed = hmac.new(key, raw, hashlib.sha1) - # calculate the digest base 64 - signature = escape(base64.b64encode(hashed.digest())) - return signature - - - def get_normalized_http_method(self, request): - return request.get_method().upper() - - - # parses the url and rebuilds it to be scheme://host/path - def get_normalized_http_url(self, request): - url = request.get_full_url() - parts = urlparse.urlparse(url) - url_string = '%s://%s%s' % (parts.scheme, parts.netloc, parts.path) - return url_string - - - def get_normalized_parameters(self, params): - if params is None: - params = {} - try: - # exclude the signature if it exists - del params['oauth_signature'] - except: - pass - key_values = [] - - for key, values in params.iteritems(): - if isinstance(values, file): - continue - if isinstance(values, (int, long, float)): - values = str(values) - if isinstance(values, (list, tuple)): - values = [str(v) for v in values] - if isinstance(values, basestring): - values = [values] - if USE_DOUBLE_ESCAPE_HACK and not key.startswith("ouath"): - key = escape(key) - for v in values: - v = v.encode("utf-8") - key = key.encode("utf-8") - if USE_DOUBLE_ESCAPE_HACK and not key.startswith("oauth"): - # this is a dirty hack to make the - # thing work with the current server-side - # implementation. Or is it by spec? - v = escape(v) - key_values.append(escape("%s=%s" % (key, v))) - # sort lexicographically, first after key, then after value - key_values.sort() - # combine key value pairs in string - return escape('&').join(key_values) - - -class OAuthAuthenticator(object): - OAUTH_API_VERSION = '1.0' - AUTHORIZATION_HEADER = "Authorization" - - def __init__(self, consumer=None, consumer_secret=None, token=None, secret=None, signature_method=OAuthSignatureMethod_HMAC_SHA1()): - if consumer == None: - raise ValueError("The consumer key must be passed for all public requests; it may not be None") - self._consumer, self._token, self._secret = consumer, token, secret - self._consumer_secret = consumer_secret - self._signature_method = signature_method - random.seed() - - - def augment_request(self, req, parameters, use_multipart=False, oauth_callback=None, oauth_verifier=None): - oauth_parameters = { - 'oauth_consumer_key': self._consumer, - 'oauth_timestamp': self.generate_timestamp(), - 'oauth_nonce': self.generate_nonce(), - 'oauth_version': self.OAUTH_API_VERSION, - 'oauth_signature_method': self._signature_method.get_name(), - #'realm' : "http://soundcloud.com", - } - if self._token is not None: - oauth_parameters['oauth_token'] = self._token - - if oauth_callback is not None: - oauth_parameters['oauth_callback'] = oauth_callback - - if oauth_verifier is not None: - oauth_parameters['oauth_verifier'] = oauth_verifier - - # in case we upload large files, we don't - # sign the request over the parameters - # There's a bug in the OAuth 1.0 (and a) specs that says that PUT request should omit parameters from the base string. - # This is fixed in the IETF draft, don't know when this will be released though. - HT - if use_multipart or req.get_method() == 'PUT': - parameters = None - - oauth_parameters['oauth_signature'] = self._signature_method.build_signature(req, - parameters, - self._consumer_secret, - self._secret, - oauth_parameters) - def to_header(d): - return ",".join('%s="%s"' % (key, value) for key, value in sorted(oauth_parameters.items())) - - req.add_header(self.AUTHORIZATION_HEADER, "OAuth %s" % to_header(oauth_parameters)) - - def generate_timestamp(self): - return int(time.time())# * 1000.0) - - def generate_nonce(self, length=8): - return ''.join(str(random.randint(0, 9)) for i in range(length)) - - -class BasicAuthenticator(object): - - def __init__(self, user, password, consumer, consumer_secret): - self._base64string = base64.encodestring("%s:%s" % (user, password))[:-1] - self._x_auth_header = 'OAuth oauth_consumer_key="%s" oauth_consumer_secret="%s"' % (consumer, consumer_secret) - - def augment_request(self, req, parameters): - req.add_header("Authorization", "Basic %s" % self._base64string) - req.add_header("X-Authorization", self._x_auth_header) diff --git a/python_apps/soundcloud-api/scapi/config.py b/python_apps/soundcloud-api/scapi/config.py deleted file mode 100644 index 139597f9c..000000000 --- a/python_apps/soundcloud-api/scapi/config.py +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/python_apps/soundcloud-api/scapi/json.py b/python_apps/soundcloud-api/scapi/json.py deleted file mode 100644 index a28a13e39..000000000 --- a/python_apps/soundcloud-api/scapi/json.py +++ /dev/null @@ -1,310 +0,0 @@ -import string -import types - -## json.py implements a JSON (http://json.org) reader and writer. -## Copyright (C) 2005 Patrick D. Logan -## Contact mailto:patrickdlogan@stardecisions.com -## -## This library is free software; you can redistribute it and/or -## modify it under the terms of the GNU Lesser General Public -## License as published by the Free Software Foundation; either -## version 2.1 of the License, or (at your option) any later version. -## -## This library is distributed in the hope that it will be useful, -## but WITHOUT ANY WARRANTY; without even the implied warranty of -## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -## Lesser General Public License for more details. -## -## You should have received a copy of the GNU Lesser General Public -## License along with this library; if not, write to the Free Software -## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - - -class _StringGenerator(object): - def __init__(self, string): - self.string = string - self.index = -1 - def peek(self): - i = self.index + 1 - if i < len(self.string): - return self.string[i] - else: - return None - def next(self): - self.index += 1 - if self.index < len(self.string): - return self.string[self.index] - else: - raise StopIteration - def all(self): - return self.string - -class WriteException(Exception): - pass - -class ReadException(Exception): - pass - -class JsonReader(object): - hex_digits = {'A': 10,'B': 11,'C': 12,'D': 13,'E': 14,'F':15} - escapes = {'t':'\t','n':'\n','f':'\f','r':'\r','b':'\b'} - - def read(self, s): - self._generator = _StringGenerator(s) - result = self._read() - return result - - def _read(self): - self._eatWhitespace() - peek = self._peek() - if peek is None: - raise ReadException, "Nothing to read: '%s'" % self._generator.all() - if peek == '{': - return self._readObject() - elif peek == '[': - return self._readArray() - elif peek == '"': - return self._readString() - elif peek == '-' or peek.isdigit(): - return self._readNumber() - elif peek == 't': - return self._readTrue() - elif peek == 'f': - return self._readFalse() - elif peek == 'n': - return self._readNull() - elif peek == '/': - self._readComment() - return self._read() - else: - raise ReadException, "Input is not valid JSON: '%s'" % self._generator.all() - - def _readTrue(self): - self._assertNext('t', "true") - self._assertNext('r', "true") - self._assertNext('u', "true") - self._assertNext('e', "true") - return True - - def _readFalse(self): - self._assertNext('f', "false") - self._assertNext('a', "false") - self._assertNext('l', "false") - self._assertNext('s', "false") - self._assertNext('e', "false") - return False - - def _readNull(self): - self._assertNext('n', "null") - self._assertNext('u', "null") - self._assertNext('l', "null") - self._assertNext('l', "null") - return None - - def _assertNext(self, ch, target): - if self._next() != ch: - raise ReadException, "Trying to read %s: '%s'" % (target, self._generator.all()) - - def _readNumber(self): - isfloat = False - result = self._next() - peek = self._peek() - while peek is not None and (peek.isdigit() or peek == "."): - isfloat = isfloat or peek == "." - result = result + self._next() - peek = self._peek() - try: - if isfloat: - return float(result) - else: - return int(result) - except ValueError: - raise ReadException, "Not a valid JSON number: '%s'" % result - - def _readString(self): - result = "" - assert self._next() == '"' - try: - while self._peek() != '"': - ch = self._next() - if ch == "\\": - ch = self._next() - if ch in 'brnft': - ch = self.escapes[ch] - elif ch == "u": - ch4096 = self._next() - ch256 = self._next() - ch16 = self._next() - ch1 = self._next() - n = 4096 * self._hexDigitToInt(ch4096) - n += 256 * self._hexDigitToInt(ch256) - n += 16 * self._hexDigitToInt(ch16) - n += self._hexDigitToInt(ch1) - ch = unichr(n) - elif ch not in '"/\\': - raise ReadException, "Not a valid escaped JSON character: '%s' in %s" % (ch, self._generator.all()) - result = result + ch - except StopIteration: - raise ReadException, "Not a valid JSON string: '%s'" % self._generator.all() - assert self._next() == '"' - return result - - def _hexDigitToInt(self, ch): - try: - result = self.hex_digits[ch.upper()] - except KeyError: - try: - result = int(ch) - except ValueError: - raise ReadException, "The character %s is not a hex digit." % ch - return result - - def _readComment(self): - assert self._next() == "/" - second = self._next() - if second == "/": - self._readDoubleSolidusComment() - elif second == '*': - self._readCStyleComment() - else: - raise ReadException, "Not a valid JSON comment: %s" % self._generator.all() - - def _readCStyleComment(self): - try: - done = False - while not done: - ch = self._next() - done = (ch == "*" and self._peek() == "/") - if not done and ch == "/" and self._peek() == "*": - raise ReadException, "Not a valid JSON comment: %s, '/*' cannot be embedded in the comment." % self._generator.all() - self._next() - except StopIteration: - raise ReadException, "Not a valid JSON comment: %s, expected */" % self._generator.all() - - def _readDoubleSolidusComment(self): - try: - ch = self._next() - while ch != "\r" and ch != "\n": - ch = self._next() - except StopIteration: - pass - - def _readArray(self): - result = [] - assert self._next() == '[' - done = self._peek() == ']' - while not done: - item = self._read() - result.append(item) - self._eatWhitespace() - done = self._peek() == ']' - if not done: - ch = self._next() - if ch != ",": - raise ReadException, "Not a valid JSON array: '%s' due to: '%s'" % (self._generator.all(), ch) - assert ']' == self._next() - return result - - def _readObject(self): - result = {} - assert self._next() == '{' - done = self._peek() == '}' - while not done: - key = self._read() - if type(key) is not types.StringType: - raise ReadException, "Not a valid JSON object key (should be a string): %s" % key - self._eatWhitespace() - ch = self._next() - if ch != ":": - raise ReadException, "Not a valid JSON object: '%s' due to: '%s'" % (self._generator.all(), ch) - self._eatWhitespace() - val = self._read() - result[key] = val - self._eatWhitespace() - done = self._peek() == '}' - if not done: - ch = self._next() - if ch != ",": - raise ReadException, "Not a valid JSON array: '%s' due to: '%s'" % (self._generator.all(), ch) - assert self._next() == "}" - return result - - def _eatWhitespace(self): - p = self._peek() - while p is not None and p in string.whitespace or p == '/': - if p == '/': - self._readComment() - else: - self._next() - p = self._peek() - - def _peek(self): - return self._generator.peek() - - def _next(self): - return self._generator.next() - -class JsonWriter(object): - - def _append(self, s): - self._results.append(s) - - def write(self, obj, escaped_forward_slash=False): - self._escaped_forward_slash = escaped_forward_slash - self._results = [] - self._write(obj) - return "".join(self._results) - - def _write(self, obj): - ty = type(obj) - if ty is types.DictType: - n = len(obj) - self._append("{") - for k, v in obj.items(): - self._write(k) - self._append(":") - self._write(v) - n = n - 1 - if n > 0: - self._append(",") - self._append("}") - elif ty is types.ListType or ty is types.TupleType: - n = len(obj) - self._append("[") - for item in obj: - self._write(item) - n = n - 1 - if n > 0: - self._append(",") - self._append("]") - elif ty is types.StringType or ty is types.UnicodeType: - self._append('"') - obj = obj.replace('\\', r'\\') - if self._escaped_forward_slash: - obj = obj.replace('/', r'\/') - obj = obj.replace('"', r'\"') - obj = obj.replace('\b', r'\b') - obj = obj.replace('\f', r'\f') - obj = obj.replace('\n', r'\n') - obj = obj.replace('\r', r'\r') - obj = obj.replace('\t', r'\t') - self._append(obj) - self._append('"') - elif ty is types.IntType or ty is types.LongType: - self._append(str(obj)) - elif ty is types.FloatType: - self._append("%f" % obj) - elif obj is True: - self._append("true") - elif obj is False: - self._append("false") - elif obj is None: - self._append("null") - else: - raise WriteException, "Cannot write in JSON: %s" % repr(obj) - -def write(obj, escaped_forward_slash=False): - return JsonWriter().write(obj, escaped_forward_slash) - -def read(s): - return JsonReader().read(s) diff --git a/python_apps/soundcloud-api/scapi/tests/__init__.py b/python_apps/soundcloud-api/scapi/tests/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/python_apps/soundcloud-api/scapi/tests/knaster.mp3 b/python_apps/soundcloud-api/scapi/tests/knaster.mp3 deleted file mode 100644 index 138749d65d71cdb8cdb76e9d7bc1edff173e96a1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 80493 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⩔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 Tp<OKXzwg)o|2O|X_y+zLl)l+g diff --git a/python_apps/soundcloud-api/scapi/tests/scapi_tests.py b/python_apps/soundcloud-api/scapi/tests/scapi_tests.py deleted file mode 100644 index 71ea339dc..000000000 --- a/python_apps/soundcloud-api/scapi/tests/scapi_tests.py +++ /dev/null @@ -1,563 +0,0 @@ -from __future__ import with_statement - -import os -import urllib2 -import itertools -from textwrap import dedent -import pkg_resources -import logging -import webbrowser -from unittest import TestCase - -from configobj import ConfigObj -from validate import Validator - - -import scapi -import scapi.authentication - -logger = logging.getLogger("scapi.tests") - -api_logger = logging.getLogger("scapi") - - -class SCAPITests(TestCase): - - CONFIG_NAME = "test.ini" - TOKEN = None - SECRET = None - CONSUMER = None - CONSUMER_SECRET = None - API_HOST = None - USER = None - PASSWORD = None - AUTHENTICATOR = None - RUN_INTERACTIVE_TESTS = False - RUN_LONG_TESTS = False - - def setUp(self): - self._load_config() - assert pkg_resources.resource_exists("scapi.tests.test_connect", "knaster.mp3") - self.data = pkg_resources.resource_stream("scapi.tests.test_connect", "knaster.mp3") - self.artwork_data = pkg_resources.resource_stream("scapi.tests.test_connect", "spam.jpg") - - CONFIGSPEC=dedent(""" - [api] - token=string - secret=string - consumer=string - consumer_secret=string - api_host=string - user=string - password=string - authenticator=option('oauth', 'base', default='oauth') - - [proxy] - use_proxy=boolean(default=false) - proxy=string(default=http://127.0.0.1:10000/) - - [logging] - test_logger=string(default=ERROR) - api_logger=string(default=ERROR) - - [test] - run_interactive_tests=boolean(default=false) - """) - - - def _load_config(self): - """ - Loads the configuration by looking from - - - the environment variable SCAPI_CONFIG - - the installation location upwards until it finds test.ini - - the current working directory upwards until it finds test.ini - - Raises an error if there is no config found - """ - config_name = self.CONFIG_NAME - - name = None - - if "SCAPI_CONFIG" in os.environ: - if os.path.exists(os.environ["SCAPI_CONFIG"]): - name = os.environ["SCAPI_CONFIG"] - - def search_for_config(current): - while current: - name = os.path.join(current, config_name) - if os.path.exists(name): - return name - new_current = os.path.dirname(current) - if new_current == current: - return - current = new_current - - if name is None: - name = search_for_config(os.path.dirname(__file__)) - if name is None: - name = search_for_config(os.getcwd()) - - if not name: - raise Exception("No test configuration file found!") - - parser = ConfigObj(name, configspec=self.CONFIGSPEC.split("\n")) - val = Validator() - if not parser.validate(val): - raise Exception("Config file validation error") - - api = parser['api'] - self.TOKEN = api.get('token') - self.SECRET = api.get('secret') - self.CONSUMER = api.get('consumer') - self.CONSUMER_SECRET = api.get('consumer_secret') - self.API_HOST = api.get('api_host') - self.USER = api.get('user', None) - self.PASSWORD = api.get('password', None) - self.AUTHENTICATOR = api.get("authenticator") - - # reset the hard-coded values in the api - if self.API_HOST: - scapi.AUTHORIZATION_URL = "http://%s/oauth/authorize" % self.API_HOST - scapi.REQUEST_TOKEN_URL = 'http://%s/oauth/request_token' % self.API_HOST - scapi.ACCESS_TOKEN_URL = 'http://%s/oauth/access_token' % self.API_HOST - - if "proxy" in parser and parser["proxy"]["use_proxy"]: - scapi.USE_PROXY = True - scapi.PROXY = parser["proxy"]["proxy"] - - if "logging" in parser: - logger.setLevel(getattr(logging, parser["logging"]["test_logger"])) - api_logger.setLevel(getattr(logging, parser["logging"]["api_logger"])) - - self.RUN_INTERACTIVE_TESTS = parser["test"]["run_interactive_tests"] - - - @property - def root(self): - """ - Return the properly configured root-scope. - """ - if self.AUTHENTICATOR == "oauth": - authenticator = scapi.authentication.OAuthAuthenticator(self.CONSUMER, - self.CONSUMER_SECRET, - self.TOKEN, - self.SECRET) - elif self.AUTHENTICATOR == "base": - authenticator = scapi.authentication.BasicAuthenticator(self.USER, self.PASSWORD, self.CONSUMER, self.CONSUMER_SECRET) - else: - raise Exception("Unknown authenticator setting: %s", self.AUTHENTICATOR) - - connector = scapi.ApiConnector(host=self.API_HOST, - authenticator=authenticator) - - logger.debug("RootScope: %s authenticator: %s", self.API_HOST, self.AUTHENTICATOR) - return scapi.Scope(connector) - - - def test_connect(self): - """ - test_connect - - Tries to connect & performs some read-only operations. - """ - sca = self.root - # quite_a_few_users = list(itertools.islice(sca.users(), 0, 127)) - - # logger.debug(quite_a_few_users) - # assert isinstance(quite_a_few_users, list) and isinstance(quite_a_few_users[0], scapi.User) - user = sca.me() - logger.debug(user) - assert isinstance(user, scapi.User) - contacts = list(user.contacts()) - assert isinstance(contacts, list) - if contacts: - assert isinstance(contacts[0], scapi.User) - logger.debug(contacts) - tracks = list(user.tracks()) - assert isinstance(tracks, list) - if tracks: - assert isinstance(tracks[0], scapi.Track) - logger.debug(tracks) - - - def test_access_token_acquisition(self): - """ - This test is commented out because it needs user-interaction. - """ - if not self.RUN_INTERACTIVE_TESTS: - return - oauth_authenticator = scapi.authentication.OAuthAuthenticator(self.CONSUMER, - self.CONSUMER_SECRET, - None, - None) - - sca = scapi.ApiConnector(host=self.API_HOST, authenticator=oauth_authenticator) - token, secret = sca.fetch_request_token() - authorization_url = sca.get_request_token_authorization_url(token) - webbrowser.open(authorization_url) - oauth_verifier = raw_input("please enter verifier code as seen in the browser:") - - oauth_authenticator = scapi.authentication.OAuthAuthenticator(self.CONSUMER, - self.CONSUMER_SECRET, - token, - secret) - - sca = scapi.ApiConnector(self.API_HOST, authenticator=oauth_authenticator) - token, secret = sca.fetch_access_token(oauth_verifier) - logger.info("Access token: '%s'", token) - logger.info("Access token secret: '%s'", secret) - # force oauth-authentication with the new parameters, and - # then invoke some simple test - self.AUTHENTICATOR = "oauth" - self.TOKEN = token - self.SECRET = secret - self.test_connect() - - - def test_track_creation(self): - sca = self.root - track = sca.Track.new(title='bar', asset_data=self.data) - assert isinstance(track, scapi.Track) - - - def test_track_update(self): - sca = self.root - track = sca.Track.new(title='bar', asset_data=self.data) - assert isinstance(track, scapi.Track) - track.title='baz' - track = sca.Track.get(track.id) - assert track.title == "baz" - - - def test_scoped_track_creation(self): - sca = self.root - user = sca.me() - track = user.tracks.new(title="bar", asset_data=self.data) - assert isinstance(track, scapi.Track) - - - def test_upload(self): - sca = self.root - sca = self.root - track = sca.Track.new(title='bar', asset_data=self.data) - assert isinstance(track, scapi.Track) - - - def test_contact_list(self): - sca = self.root - user = sca.me() - contacts = list(user.contacts()) - assert isinstance(contacts, list) - if contacts: - assert isinstance(contacts[0], scapi.User) - - - def test_permissions(self): - sca = self.root - user = sca.me() - tracks = itertools.islice(user.tracks(), 1) - for track in tracks: - permissions = list(track.permissions()) - logger.debug(permissions) - assert isinstance(permissions, list) - if permissions: - assert isinstance(permissions[0], scapi.User) - - - def test_setting_permissions(self): - sca = self.root - me = sca.me() - track = sca.Track.new(title='bar', sharing="private", asset_data=self.data) - assert track.sharing == "private" - users = itertools.islice(sca.users(), 10) - users_to_set = [user for user in users if user != me] - assert users_to_set, "Didn't find any suitable users" - track.permissions = users_to_set - assert set(track.permissions()) == set(users_to_set) - - - def test_setting_comments(self): - sca = self.root - user = sca.me() - track = sca.Track.new(title='bar', sharing="private", asset_data=self.data) - comment = sca.Comment.create(body="This is the body of my comment", timestamp=10) - track.comments = comment - assert track.comments().next().body == comment.body - - - def test_setting_comments_the_way_shawn_says_its_correct(self): - sca = self.root - track = sca.Track.new(title='bar', sharing="private", asset_data=self.data) - cbody = "This is the body of my comment" - track.comments.new(body=cbody, timestamp=10) - assert list(track.comments())[0].body == cbody - - - def test_contact_add_and_removal(self): - sca = self.root - me = sca.me() - for user in sca.users(): - if user != me: - user_to_set = user - break - - contacts = list(me.contacts()) - if user_to_set in contacts: - me.contacts.remove(user_to_set) - - me.contacts.append(user_to_set) - - contacts = list(me.contacts() ) - assert user_to_set.id in [c.id for c in contacts] - - me.contacts.remove(user_to_set) - - contacts = list(me.contacts() ) - assert user_to_set not in contacts - - - def test_favorites(self): - sca = self.root - me = sca.me() - - favorites = list(me.favorites()) - assert favorites == [] or isinstance(favorites[0], scapi.Track) - - track = None - for user in sca.users(): - if user == me: - continue - for track in user.tracks(): - break - if track is not None: - break - - me.favorites.append(track) - - favorites = list(me.favorites()) - assert track in favorites - - me.favorites.remove(track) - - favorites = list(me.favorites()) - assert track not in favorites - - - def test_large_list(self): - if not self.RUN_LONG_TESTS: - return - - sca = self.root - - tracks = list(sca.tracks()) - if len(tracks) < scapi.ApiConnector.LIST_LIMIT: - for i in xrange(scapi.ApiConnector.LIST_LIMIT): - sca.Track.new(title='test_track_%i' % i, asset_data=self.data) - all_tracks = sca.tracks() - assert not isinstance(all_tracks, list) - all_tracks = list(all_tracks) - assert len(all_tracks) > scapi.ApiConnector.LIST_LIMIT - - - - def test_filtered_list(self): - if not self.RUN_LONG_TESTS: - return - - sca = self.root - - tracks = list(sca.tracks(params={ - "bpm[from]" : "180", - })) - if len(tracks) < scapi.ApiConnector.LIST_LIMIT: - for i in xrange(scapi.ApiConnector.LIST_LIMIT): - sca.Track.new(title='test_track_%i' % i, asset_data=self.data) - all_tracks = sca.tracks() - assert not isinstance(all_tracks, list) - all_tracks = list(all_tracks) - assert len(all_tracks) > scapi.ApiConnector.LIST_LIMIT - - - def test_events(self): - events = list(self.root.events()) - assert isinstance(events, list) - assert isinstance(events[0], scapi.Event) - - - def test_me_having_stress(self): - sca = self.root - for _ in xrange(20): - self.setUp() - sca.me() - - - def test_non_global_api(self): - root = self.root - me = root.me() - assert isinstance(me, scapi.User) - - # now get something *from* that user - list(me.favorites()) - - - def test_playlists(self): - sca = self.root - playlists = list(itertools.islice(sca.playlists(), 0, 127)) - for playlist in playlists: - tracks = playlist.tracks - if not isinstance(tracks, list): - tracks = [tracks] - for trackdata in tracks: - print trackdata - #user = trackdata.user - #print user - #print user.tracks() - print playlist.user - break - - - - - def test_playlist_creation(self): - sca = self.root - sca.Playlist.new(title="I'm so happy, happy, happy, happy!") - - - - def test_groups(self): - if not self.RUN_LONG_TESTS: - return - - sca = self.root - groups = list(itertools.islice(sca.groups(), 0, 127)) - for group in groups: - users = group.users() - for user in users: - pass - - - def test_track_creation_with_email_sharers(self): - sca = self.root - emails = [dict(address="deets@web.de"), dict(address="hannes@soundcloud.com")] - track = sca.Track.new(title='bar', asset_data=self.data, - shared_to=dict(emails=emails) - ) - assert isinstance(track, scapi.Track) - - - - def test_track_creation_with_artwork(self): - sca = self.root - track = sca.Track.new(title='bar', - asset_data=self.data, - artwork_data=self.artwork_data, - ) - assert isinstance(track, scapi.Track) - - track.title = "foobarbaz" - - - - def test_oauth_get_signing(self): - sca = self.root - - url = "http://api.soundcloud.dev/oauth/test_request" - params = dict(foo="bar", - baz="padamm", - ) - url += sca._create_query_string(params) - signed_url = sca.oauth_sign_get_request(url) - - - res = urllib2.urlopen(signed_url).read() - assert "oauth_nonce" in res - - - def test_streaming(self): - sca = self.root - - track = sca.tracks(params={ - "filter" : "streamable", - }).next() - - - assert isinstance(track, scapi.Track) - - stream_url = track.stream_url - - signed_url = track.oauth_sign_get_request(stream_url) - - - def test_downloadable(self): - sca = self.root - - track = sca.tracks(params={ - "filter" : "downloadable", - }).next() - - - assert isinstance(track, scapi.Track) - - download_url = track.download_url - - signed_url = track.oauth_sign_get_request(download_url) - - data = urllib2.urlopen(signed_url).read() - assert data - - - - def test_modifying_playlists(self): - sca = self.root - - me = sca.me() - my_tracks = list(me.tracks()) - - assert my_tracks - - playlist = me.playlists().next() - # playlist = sca.Playlist.get(playlist.id) - - assert isinstance(playlist, scapi.Playlist) - - pl_tracks = playlist.tracks - - playlist.title = "foobarbaz" - - - - def test_track_deletion(self): - sca = self.root - track = sca.Track.new(title='bar', asset_data=self.data, - ) - - sca.tracks.remove(track) - - - - def test_track_creation_with_updated_artwork(self): - sca = self.root - track = sca.Track.new(title='bar', - asset_data=self.data, - ) - assert isinstance(track, scapi.Track) - - track.artwork_data = self.artwork_data - - def test_update_own_description(self): - sca = self.root - me = sca.me() - - new_description = "This is my new description" - old_description = "This is my old description" - - if me.description == new_description: - change_to_description = old_description - else: - change_to_description = new_description - - me.description = change_to_description - - user = sca.User.get(me.id) - assert user.description == change_to_description diff --git a/python_apps/soundcloud-api/scapi/tests/spam.jpg b/python_apps/soundcloud-api/scapi/tests/spam.jpg deleted file mode 100644 index a5ca9387927d8cf721f79b6386a8b674bf216618..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 85062 zcmcG#Wl&^26EHd~EDnpiyTjnREY9HW?l!pVgS)#f?(WXw?(Xik_%3>R-uILG>i+qv zZrya9J~>HGy3>6o=}vM!Rz7wBC{p4eaR9^@0KnuE03R0sR8bdWYYzYf01EJLA>iW* zKqX{iXJiU6`Sn=>0SUl_f`o=g0sw?!0DwXj0N`{P03jp#u?`3VK>XjQFaJA1{;%{u ze*Ogl;<NVi`d=0Qx0#PV04gkmJcK+X1S;SQDg-1d#K!=H%)fGfg@E{!|9>W^uP_jh z(6De{;2{7IP>}ye9VFCOXoxQ`uy7~<05k;T7f2XL2-yFUKz#YP5)};{1BQeY69q`d z%7z6?&W=sN@<T|Nl7ouVz#d108ugRizl2|55RhO{z9Ip>KtMvFeg%-C0m;yzg%k~0 zF&zBk$uUv#>V%by*hqRE0}@1(DX=(UX7lU&jGgA$DLImxTz}6cIxo0TvFrvGH0+B8 zB^5RfsG0^BsiZ7nQybXd?Dd<7shNcgg{GqYmmdri%vYGN|LG+J>K9TV3K}Gd5E(0r zqM-viIh22V9oz4`-dSNIj32v7juiIw%EnIYUll%CV~V0f06rBC`32^`7WmW`0F@N@ zDe0%2C?vo0>Uw8yc3BMUe|)R~5FtN_Q6W)3iLM*<e*903{{M4_<Y5am3O{NaWKmVh z2q|(Mffo6SKFR924p7F;RYBa#lQ9AQD2oXGl6OqWR^>A3&?GYAxxs;G001D)^R188 zoU|^twjokBM1ob_qNh{|4%Ip~W-(U!o$4~lBrHpyaM42pIpEW7iEc9UOlX_E&ogbt z@eb7-9CXpjQ@-zVRHKg)7i95C8M)7!Zc*Gs3m5<(c|hIn4r&>*QUldP4D}BWn^3dn ziv!-<rfcM^(yX1u_2YzQZlH$iPRWp|$z`1ohGNap0~%<Di#{jXXj^<LQS~y>yKBQ< zS)4f~3Xrb5h`Z*aA(z&YG2vm$(&MP>_vn8(Ie>}paI+UmcoZ!ZW~1L2LBlpfct!BX z7K@Lwg-l%EyC?-%24BrJO>b&kF*ucFE-`q1<SH-*h~WIvgg0kImTn`+GCE>iGoJG> zm5B)=msk^xLG*&&nXbPoO6hO{|G29g%;?HTts0d+YyOpuawL9|`cj}X<-W?DqwbD1 zFy*nWVzbr3i+W{jQwMWi%>9D@y8WF1wpJ5C$eAG+g2=(aWc`6LFLM2mH|?&ug>#m5 zoqb1ik^*lJSKTj<{?M3fwH1SHs<ce@TZv{8eKTqvWudGmDWxg3IY=^!J&5Q!h(4lK z@2IcRu#R8sQbEVe%3aSDFQu1>^C2pIILnlXWs$f&D_Q3$km%PMChKmow!Qe;VF&I+ z;r>gkdo`0S4pM_P_#VE=B8;}aGCHL{MS@!shJn-#e2v@I%$#Pgj#aBGit+1QJELSr zs+`DP1GC;HSCZrFTl!sg=NZx%q$^Oz=%_7fSk{u3lCmPIT!6N7fpvIN^pORhh(r0G z$13*Cq=`Yfgj9M~M<|5Qw?zAqB!Vbz9D8Xd9PDzMkrD^9QTj~)^H+brFDW5gNZK%# zQ7r*r@j~b>$9N!oAX*@OH2L36!xvE*W`~+L7d8C(9{|LpW&Urc3~dN*v9j6g*65no zIQ9K=H;pc}o9OD8nyssLbVePNvJqABWMx*AO=`<yX)HAbQs-6Z>m#b7^wF2;cNLMP zq?Z_s+*8Ao0^u)TWz{YZxXnKRru<gI8J~l8aS6Pqm)`e#jp8SGE>$z9Yk}1~&6Ufs zgGa*ZLoRG8{Jy6@J_6?ty0d%pPl=jD()4MFcSyhsmmvw%c}z3&qAlZ-cBHLR-uXH5 z><sX14y2t%M5|0W!OOKXug$q3&&JWT6KD``UxY7P*szr?tV36I91euaDrn@*_<#-o ztZ)vawj=m*IG+?Ikc(L^6dh$&kKIO^t9lpAxZj-TXd>w;oW&-$6HvPZu2j1S*6N%| z|9C@J8YogaX-Th+_qiqiXKQ!gr}|b<bL~5y0G4h+x1Yf32xE1qp?BsI7gz9#Rr4#u z6EpF$*MOiGKgY_E7DE#HZ2n)5Gc7(lgCg;+@{~O621JCPH8GgfvH$=leKU964E{}Q zsVJA^VMg<r#+|@+={xAui*dYCC-mV1z&d}`uXelY9l_>X=;2myHH^^UpuFB0so1_j zJtH6B#n2(*F;ZiESDoz<@PxQk&}<zybsM|fDCg^1{!N72Wxs4o?u27wu6tf(o@iVD zVmiECx9O%>cdBA)T1c7SMT0=FSurX9$<Tn{&CEVs$^rmU3yxuPrs~u@n_;{qm$g+> zx|4l!=D)T-NzJr<e;Dg5K-M?(0G`?Ub!BlLw|lcLj!o+;9PrL%Bj16~wLPOfqW9Xb zXDilbXLr1^cYSMcHgLTkz4oJ=rGqvfw<D)6kjV7TO%1&=8OR(3&3U5UW1pl-XnZ6l z&7>Rn$y?^JEGql8Tps3o%}&w)(1Whrt1}r6+LgZw<NL+Tlw|H0hrY%s=Wb9<H|kVR z*AhHxvj=&EtfpIIi$-tiQ41jJ7#i9J5?1K4@~L=6`<+-H59{_H=dWS<kf{M>^=^na zbjqFbdRD3(*oap%uT!(DaVXcgl5;YO9*IYMASFABl#})HjuL|3Qs~!DBea?6)HdEc z>_KBxpQ^EOxXWkXGdJ)TedE;X|EoMIK-@yae43^CV9vYry-q`I$-HX|<LuVQ$w&E& z)>a-RYtOF5LoWY8tBQSEyp{6W!F^(z=q*_2p`CAZu)2%x_HbFsOF*2gg+2SkiJ<;L zLhu>tH@5EKQyGneY&m|N9><xd@_PAe!viz-WV?z8vwI<3s0W=o;hW2E+_6t<)#=8F zI;-i3UMRp3=TB<I#d+t=a>)nkw$y}avfDK-t59A0{6R|0>W(eB>OpS=IWIqBpV<10 z)Tquh{BaYw{{7P;j0u&W<?)!LtvPeM|614MrbfXk-4sICh%zE76|1XfypZ>{J#mhN zx9!OK@%Hc4IlgxOpV><}v*C3**B2M21LJhL*1PkX=@j^XUmtUV)Kf%vr_~BeVv<?y zgbDt#*@t&uCaVg`3!g6&c?9Q-&o!7@s~4(haz|6YTP_V=7U=#Aaz=!kQDmG&4|N@y zIz8{7W>iqhvK9`<h1y==&8}TNPd)HxiZ|a8do;H=pA}tI=xeXiscX^FF6F#Adu&aL z{sM5)74wM9YT9o%sN-*wtpd);Zr!B*sl0h_1YeTVVy!)FPRx{D>Rp))s87u)KJy9@ z#WpNm)UCYD)Ta(-j2Zm3BOa63gE!(!F+?06?nT7x#f*$zR_jl=17C6v9y1C&!Z%#& zROy>{mg#yt^dIAMe2yt2%rTnxRQ$k;hvt^k+(6y_kuD{S#@=fwWL|T;;=P6x_3{xV z0=;9r2=7>3i%A<+I#Yaaqs0pB654$k6UBCeriPLHCi79#-PevSt+a~OA%2;@li(C) zaT|`-FM7zLQOSI!BIIW?5jbGFU%bz&ci^1xe*l2G3H*CE1g|39s#}XZlM-fv2f02u zv5S363PfxVMSN&rA*DjgW;vNOrgcZoNs~Cgd`0P1gQ-6EDmo(&#?GLeaZTI>wpp=K zYRs6TRvo>+HC4wlHriy=LZf|O>o7Z|1^pS`Kk0$)te7XoI`(^g=ekY40RTb_I4OPM z2ivhI+b$yd+llb`=BIWJhTSFFQJ?4r)v}EznIz{h-WXMw;|GB8TUFL}0h1zqBBD!1 z?7~rIiD2;VCDYVw_yJLOli?|2UGV+ShHvPkjI`(Yq<m3c?qi^ar9blLIcS56^bs0h zMz!oW!@upjpT_-Cp0&|gyYm6?Da(zsV_Q0UsoH&Ci7&5ac7EtComIs%w$j!POEO*@ zXJ-#+N)zQcHxn_73eUZ)^KsO&@>2@M)viT=#<mPiWgsG|55<|781QA?-105NsO=P2 z1wxWei&{Jt{B`5*c;e}fx%(=ve|A2_S#ALUU@9DQT*iLwIF#*HtPiv7$*uYJ_(Yd~ zg{<gacaoeS1&I=w;N(6HU#Us%uDKi(H?V(bAA*+Rs@XJeZpkSxrxdYgrj<dPIXyHO zWu}`>b>5+#%BbsNO*YjFQl7=t4XG>DT?!xb`*D|1TsSSC@!W8ioc}pr+Tie<`WgTF z{-i8KHi>A`z5J)5`{Gi*%J!m$c0{LtQ`_3}^qf9-bxQz&JVdO^!nB^MUJ_%_KYQXT z`^tu89mBT$?QzJc=$g+cSfGJ}Twkxq&4e<ukZq_=)8ys5q1%@AwC%WN>nQD5CdY%~ zF`q2^=M-6t?6<w*{Q-C?FR*EJHB@PJo*(udjwLN=?t@H|To}P;O1Tl}iL~)*3eS|5 z;NGwaK^wh-A*98n<{Ub<(VUk!G=5A_s;nz+p6^?>(2t9bRB*{GezTwdKIS1BWhOw0 zJMf0Gye;GOT73tdm!N#fX?^B4m6GxANT!Z6i@+zJGcCMGndSk9o^t={HuQd$W_I=> z1Tk?#g>Ls)S~{Ggu?rW;53-&PCg#eZ+~R4n_y8aSuVuj<t9cWSFpE6%7P`d&E=-*v z@kLgD@kULV*fnVh%6?_KkS{59hEzUkK(6|-E8A3Tnnp*L$i0dG-JALJosBAtB`+<# zpWR^firfR2*f?SuO8H-^e*v?<)^)r_$ObH58kbT>Ysiv!s*6uXScA{mrPzPBt1Vg# zJ$}vBx+Ltd2UFDxvI>}qI~E8ekQ<X|Pel1yc%KHpwmLs&I7SDM>%PGql^S>0V>+DL zs0!PiNlZN!C;$MgmOe$uFfL18Uc1D0v<a3C$fuc^_WL(d4JZScj}%pFc^OSL$g?k~ z^+?TD+v3YetBbQCa*R20o&ILdvx{%$wp?0Q?OVb^z*MN)x`q#c+`SIBv%K3N=V<Y+ z?Z)2;<!$~uEaw<M0Ttpm$-ie4R-Yk}<z`h4n(5XQk><lfRDlPTYfIfV&F#jf0Kd`N z_)vQkF{+jD<Zv`$$#|vD5X!|Lljs3<5t6-;3}rj5rtZv)vy5Zj%6>nzs5L!)v%YbT zDQ3GGtA)Y%MXEWd4QP_hmv6<di#a+T!waF=m+Uj292dqBeEA*H35;sCDJ{lj<{NFj z%nfVB=ur1tE_s^o+nQg5J(UD9L6SL5*8O-O7RD5HmOlfFs=Gzm&dzgCh)j-x$O&aT zSn!D1aPDhoeO`+AsFdFW<%7{nD#=aM6*KR3%r$M|EshxPa6H$?m0U9XA25%-Xsdq! z02~<}OsE}ZyT_UrDP$5xw29GJ)de{+pj{vv?qmivsrTmWx~zwPt2HEY(9AQ}oXv(S zsA)op5(CWD8UXJGDh9!%0twmMerw-g6YRpm!TaK?;g95RHqTghf-5E&B3i{3tK$+) za|O*j@Ep}T9*~YZP>cU%d}T<S`BP|#Q=-@HRctkD=>T(Bhb)|_zd8QIwEo51F}WC9 z?t!yw))0Jv4jO!MAj*}+2@rD}s-W6j+f!mctdDDe@|x=1{IkF;eb408$-qbKFp@pk zG6<4X!*foiMk)Z4I!hr`c_qdCdW${OjjiH)4%p%RoQDAbBc{f`&i9mjlzVR3(RVFU zV`;Mwm(R$Sc6ciX-aY3p+SAWO;(u|5k#}&hX^V{PN4dpAF_$(CZkCyuQ0fLI1ql*D zUGb*uqo0svi?2bWTn+NbhL%>K&16E^xz0O{d3j+nN{uFE%uAP4qDhU@pNP$FP8pKR zpRB)DJst=1u9iJzJdW5`r;>~T1M-d-1Opb`SblGwR?ea`RxmOlYEOvIB~REY<wSsj zFGxuSheYR)k2F#=)iQSBFHLWG=y8_SZtE@zbBG=!7F4ndh{fc{4=`NUA||I*4@nNe zB*ofy0@0stg<k7+`iRzP902eQcc@fo?1!^8#v*Q4aFQMR?>ijQv}_;JL&yDKs(GfB zP1})Kid#yqMvEn|6CXbwzp+Z%CQ$}AFY{GFhf3mk(#aL>ZyejzVPW=J2D~9ztT5k# z&T!9JmS3N};vB>r0;cj7;F4vKn{{#C#w@ciIc7WZSuwJP3tzDoaQiH@<pxsD6Fp6C z*6Hk$mbQtgQ;l$#o0+B#u!wVSQ#wT*4mC(8nLT7w%}ec6vm<`$3Kx<JctGDw_nC!e z{rV*r0R4jo8mREaU+3r_D|K$RI2z1f##HtYQUBn4lKg*4-#(W~U_aNCAijS20L-qX z1}fcH=@E(-ay*{D#oUtmY%+W!QptH&WuWhoYcBK^YA=c3IuEC3+B2<(ZICJLHEql9 zyY1d7<VkhI32fW8&lEiHJ_vZpPLF$6oRqk&HWRNtH!~Dip6GotW+NWwNqbkHM8tM+ z0>0LKl4wp0-{x3-YhTR?-jrGBbyEjQzH5w!EpHK2)mHyKLM*Ep;akWMBss8++#Zp_ z%s#)oe-LV@ZZy|Nh{<bo({5K=z8W+)Dzj8%M3ZZWYNq=QwNRENo<&WQYfs)5D@2oC zuOo3A?JQC5gasDH3EP#HMSxh}T9?q#^r>o+j_0#aE++>24_ubR$gYzUa@mA}*6s+2 zt)u9et?p0x<S_A@K;*_vw9vX$7U5gVK@*p4Xw;9ZVl*9wB$dFarOr$Obp%UJl#H0N zNcITCfN`wsb>tnsbdlxW&CbL*hY~bbr@bK$CSwF=9!<U9)h9+{ydcgm$BoUY@TqGR zGVZrJjk|q?)!j=e1c}nzRd_)e&G{UTiyegn2o`FXJZE-{tyUP^v=XwhX*4QKUzhhU zAp_;8fDlEs8`zk@w5X7x+BhXVNwIPi0q{UVWd?_5gsgz5lgd)UbMeB|IvHgm=?a*R z+0+ichGcoo_v&Jm&p3T{?uIob!w^^`9vgT3hzp4h9A*_yR>vmKNxi8Yr0p&p(T<f4 z9klH)tqM!pWXV;k$DTXDWrnGs(`IOHe#!mia3<McOo<TNITB+8qZEjj9)MRG(jFr# zR4^)+8}b_zXB@ogX$Fy34=)6xwI&Io$??a%7d0tYjvY<p3|!ybTB#sQit;0=0CTY^ zRFreo!*OtL$&I4`!x7kLliVK`=du#6cx3j>m$pE#gJ4Y}|Kz|S=7sNT?KV8}DUtld zy!DO^&8vu}R0*$`gu9SMounsR(n=2NCN*<R4|LXtUxurbkTdQqXE$(*6HcPes%DUz zh0yCLNyR2i%i_#1Gk1^lM64UY1=OtgsAB7uT$~OoqGkf!2Z!?&E2A5ZU4w)!A~DqX zH7+Zy(Wt09_l7un-$CLqQM3~46ABAaFxbM~149^VEINMjbu_M6ND?J0E>Pd#s)$W~ z5gUmBA1TP-dks$9WgNeTh^@KnD1Y_uCpH`)eWY;tR-gZ^VH94Co+0sZ>PMigt(DO8 z#Hg%fLB0L{{^C&a-kdn~mDR3TaUd3<-#^2LeD(Alp$HwC1VRX%s&q28$Gg{DPrmG- z(&WPg#E$!x#7;(91!Vn*vk8VBnWI1@X-zElT(>_vVux@Eb~G-shqwXl#q&$FGM-I8 z_&n>*9*h^QxtP|<D9;v2T^FH{mvWhg(tjK&UTZJN;ceu9lPy|QTVRC4mE(gwd}1av zkiXjZ6inPOdHl{i?)or+m5n4Ue|fj?0T>&lC9NYjf*wE$BW?Q6Jvtf>UmIURM11%c zXQ74vv+)jbF((Q5$84>o4Vn^X$;#=^Zw@F)$0k2nnfYCKx7>Re*FOMp?f$jWa`7)A z$<(wn&3oAiqxCd(J;V;s_<prGe3KjReAAXFwK^f<>K}l~>)3aDmYQMg2f<-DQAR)F z+m+~*#gzr=6&4#-Jv+~BLwl8iHo}fXe@#45y1!Ux>#z24L4J3ceBd5po1Nt%!IH*@ zUOqeX>?*;Ssq+uOG~7J>aFH<=;gDR{pcEoy55F$)Eiv|Cz2KtG-ze#~7RT8JstZ>n ztckEDHOsB2grOyD=Z-))pT;YEj|JqHG2gta)kEbw2JJ1r%uTOXF3Q|je~~$Shc?)W z+V+j3Vj1(@o;4k|O9E@545Qfw0!JB3g@a+2lUqLJ4X@7C89j+jelYitg=iBIWF+;s z!N)VU*N|iU$}!+LpQw3^lN(~!=+o}y?LiLnIJ=)hO}en#rC0oM{3Ey#8_eG{&WD{K zlxi&EBd3!3=>8C*n5KW^*a4;g+hLoM<|X<a2SJH^=S8KUWXSj^`)t$^XJwJv%884O z!2z;|yX;rTywIPA_nV9B6yP~di)o#o{sh8A?B>?#ZTU&jA$VL|we`;EiNy6!{1bEJ z?etkIhBy`KefB8%OJFT78}l#bq^J?JEV7<owHw(2qnA+^Sn39^wO~Xy35bb$xgA4+ zP^+#*E8{kgdmFTZ2JT&j&uA@9lZWC(F{uD+qEQiX7~hz2C`nqXhX}Syx;>Q@cwt0Q z+Kj3fi>IyI)vw(LJa#mly1Gfv@Ot?GC<VnxBR0I><=Plt(`E$@{xwNt>G2GjUVWnZ z04y1g>bN;fk07|01#Tm6NnxZj@x;ZAoTYaSdqGLO`jsJE?e20fjK2N(MUEKQ<AE9J ze#u`sOe>{rA~SR|I`x(p5z9)p5bAz&Ej0N7ARL*}_a5o~b-^jWJRem+8XKYTsHc<O zH8yj9eYD+hI<oAPgv-oDb}NK4DEa0!_*XBHGv&vK9P`ObL{gj6mz0c*hK{sM?rQzk ziB%tm?aRf*7*OE)q?oC^p_?C(W!cln2jD%i)s{F`C964mc~pP!_s^aN|ED8c<9gh# zrlLCJSB2za@;_%=!P^uW9UdVjQ@ek^KSm3@k1Abs4_a04oR?m&Nnb>Pp(}GPo(}oE zXMp;A9{}t_E5AagEh7g%(1!7npJhjxTKoAJd}U1i@Xb=4t%|RJ@=zikKR3|nVp8{4 z+W;`k-Q`=Kai>p{)lD>ios6%zdi>tXrW!eDQ-{(cMX<wzdUGYqRyRagRFr{4w8?+H zd%NKuj(CN|L-x0k-f_sz0lr0_@Hx3`x*>IQK5u6S?=aKWLWa2nB(_GMiL7qz?HkE~ z55R>l^H`&`)~-i7+;-y?@SNT+MQ}rA8i(d*JZ>Ou;$QS+MqF%rCxWVGlaX*zfx|1s z*dw{4$m%1rRYC{uK<>n?fai{;O?U9t(c4b4P#d{2Fvd*%PgcOSgkzK+hZ~C@#}kVm zryGlAPrS+P_s#CLM-Eqi)wCyVoYI%`PE+jboLh~WZ*gU~<rB%)B^k=c;U({4d#|O8 zmK*XvJ7whWyLtum=2zb_+1=c(3vSjs>CIYh?C4$WdkDPDA=b8L9^31?ZLx#eC%82Z zS)}m&Nh3YzD0KK(jaR=;u!<`t(T>xlP|{wAG$vB_tZZ#cc}na*f!k~a2~4G3{cK;7 zBP1JxH!@PX4|=%kS@GSptm%79>qo1VvbY<^HSXe2uLmM^5(ocEiMqc8X`N_IFrPFe zqYZ6BQ~r6#Hg#?#He~7a%z$(tW07wnT`Xp^(rg~njHeTEG-H@06rEQp(&kO>R#c>0 zjAR)*GaT|gt2;hYTwYOIA}3UFD^{6IoSzl7yTYLhpQU6qGijM26RFoJzlg2lwrN|H zuyG=gv^)%nuV4wjiT;9m98N9sDT?q`Yk!c|=`llOVetC-`<}+*exv&^c<!qD%OS_r z+A6nAQ6Xbd#>gVCbE}LPPZg<kCYASKnJFvfWIr=cVN@uMPiefWgjzG(OLb%A1tvX7 zer8m%Y%|^~R~IYC;^YwPgpMQMDnkcfXDWWG#@-diV3RPkx&K~Ur`Cj?EAggP-(nXm z`G^sSe3YL`kXrczfa=`&7;4->i6f3p3<&uEC?w%WHz!M5Hjc;Gj%hWwrYq^C3p{Gc z9-KTp+HfzVBedMlNjJ;MJ3h`k|80G?+~%<x?irI>$11m#&FV~v(Ia<?-_+3=vqql? zA6^YrYuBc>w9S|-tEQH5U}{rOl6J&To;T1~7IM^HH(_ORC;{^OQywIchJFB6U-c7v z?n@#kT;B-N`?7?K9+<jYD7Z#MlO^pZ!=<&W5hTv73esumtZI)13gYZIED8@b;R`Y8 z*=fzG+M}(F?a!KZg{!M8qfwPoZNt$E=M<$|byI{qUvV69#;kR@P?TuW%<33C=G5fc z4Hh1oZYHG?hDqJl(&20x;czVd#`yIUzg8nYb@sCzEVjjJ3ysmK=Anab;{swV456%I zZZ$>4d6MQC8z||uVXJA`ekx`2)asiOlIbup28em;+cIEGRSl9$2R&T$chm)yxdf=n zq61AhhJK232%WU$E7ukqi5u*%EHp4aSt*3ojQF6YZYSl|1$&R;NaSemy{0hQ!@L{P z+(&AQB#xH*Z)9rCLN5+$h}Q66!J0OW1-0O&e|_L}kdaiDAV`rz3qRmtoZKV8WL>{O zDI)kbA2izMiSCH2RjzG_F%~qTF+=Q}su2o_i8g>UVwzkZ#D|90w#z9=Gcg<m&O?rQ zH9@6Vu`ZST)pJFJPMkoq+#>xqb~|Rd$=pNHH7X$I7%%30B^X*>8EIHQ20z`%I^K0% zO7?*vlu%R{L58uq96Et=fPH1eV84Q!W<c`;0Ka{ev^o2dEdo3{1<RQ_q!d+`JwT~< z5VFx=(uUM}Cx;{MaZX~dqc2mG71FS2ov9{&k3iHXx)OJa)1N&(4Zf1^Y2kgl+k1_a zyISq|o%MbF7z=T6mj{~V0vA5w(p8lgW5}zCNSJ|e)CN;Ab6t6H-AvhpFnKa4*P#uf z-ym!yx^>l(s#w8%AbuV#AYE8^l_b%Z?8GZJL!5W(jMs?T-jaecs=jQX#YwLP-4y9Z z5xYnQm{c7_lRhgVf9#*~^VNFWdN6HJ%$na;r+!=+hwBi#ai*zqvbaoo_>fKRifj9h zbk$Fto@f{}k6MBes!Lzvny)-%j`VuUEJZmTQMjdcGjztXMe7vtgo)#DI-wxAmHb6e zMW-)Htnn8`(Ts8MfhKt(1)0qpq4zM#7~Ud{oyNtW4C461!QZqWm$7emgMT58*DkzU z4klSkrWkN92|1o*&`KXs8Ted+R+6g6joW1|I-A3<7EDgiIy@4FwQ9W<N-oxSjwn6< zai3iA!fRmFqXY_Rc-MByO_JQ4t3at}1TRn6P|=SPh+`8{S#l+DPgodImRf2tE2EnG zW<`u4SlqHmQ}9sn?h33Ee|iRyJ)R!`ti}1EkP9A=rkX6(6n*p<PFKi)6NO}h6*<p0 z`vNt}sndS@oGWte`AqyVFV;AsNkXvn1f&PMTR=Ux==Yr}HvWJtruQtey=>!}QhU21 z7Xd={00yJF9d}WdEBIOL)o%%z{XeBTf@AyrqwlR95cex3QH_*T+gQJPjE=5GEKIGO z`TV+Z8^wRoL<kYpn1^%BV?U8+umpGCH0YY7SDLAJ(S$?m_T>)dog{|u!Y7hr71jtz z7KSDGGDuF#*Mrfhw_B&TmPb@wRmx~RtxRA%U6M)_LF+gX-Wb+LIstFz!udbjrNm@? zZ3}&R;xbfYw{u0x>oan8c2}d<xin%xQXm~8kf_LrLkwx$s7|_1HQD=*8@G6Z?3!Uy z(&yzTiD2Qks1{T1v6PPDXWj~S8LMY(od*z5Ba%0jASX-~F=qCJA+bYd3si<iXg{~L zb0JwBUrbNRiaC~CC5Ky}mk!6?nBEW5Tc9o%$c*p1jh`B(VH_U0K9xxu8)@>*b(t`K z*pz=8ypk!oVC}Ur<=<>XCNJkiEK=U!l;LOnooVM!N3GW5T(`9Xvqr)-(xX1@Nb9Du zbYzln&MQ29B+fJ&6Yp9e5y5c2CK)d(!||`tc@C!b=pl!Mpu)Uhkd*e(EvQ~pM;x0X zq3tPJ9F=t#FE(IPlz+K}Im;dXQumBS)Zi~6<$(=pD-S`Z)Vp_S+Wc3qXoIDu1>Keb z1_!Iop*{SSjZBTY-qjnd&d{|4<^yKTHxsW6nF74}L2Bbvmb9{gn<OVwN5(_GQ9C%+ zDlkf>PQ(?aFV`l`MsgcE8l<DruQ40kwDYqW&Y-wtn*sLx(=tjX&!n+S5!M5_Z%sz` zrw{Xa_>;6GMI&a_iLHY?D?Cd&b*2eN)zzZoT(~Ah&8S3^4zb*mlby$W)T9TR73o2h zw)H}+AxpEb1-02dwNA9mZo#H)Xcg9AW35NM>|yJ(BXvn>hiK$|#m%~|zH@Z6mzFk} zv<08YhPGO#`sMq03R90Nub6|>W~)?Vmv-eAPd*_J(g-^ImTEhzV)gHOjr-MV>$qAI zs$sga>0J1P&9S5^&F4DptBj;$)<tq&xNS+Ty4?*ahb`ugBT~u12bhDQM%Am@o37;< zJQ}Y1<R*1f8|L#Xk*oMTQ@wq)I?&9P=2D{<-cnDdE2?!XY#Fm;=AgE2w8a(e-d=&k zUC^8^!|In|B$rwB@Q$zTzUJ|BtBzzC2PFkrM4^mBsL;kp_m9%-LTM{T{BOFU48zhK zg_P;-Wo`MSf<5!axII&$@O2Nt3sW#(M&rr3`bcP}&L3y}1-rS?Aqe}g#C6<T46iRQ za+mw6!uQEY?WC1GFt>*GF1Wk5-I(xFg|;ym**EVc?_>UcDZTa$mfbRfE4;cLsjEJa zkjQiM^H6xQCkt(Ff9u)6R(|{d*rUWYzr-0|cJHS#Shwch=-e1;4BOwosJB60e&0`% zqufCM8g6DnIKUTFB;fCcw4c4kzhv)plaDyq@Mm!SG01K>W{riO&(L25pP|0rZ}mif z<DU67^*<|YU;ewoHbbEmU9v-g8^|b-fdoB|NBqRd&rAG>-yAGy!(@dbAVlg)foYQu zWApcC`3O<%pNG)l3SI%t*|VuwHG9we;c|vgR95Mk@qgwrhV}lO=MZ}Ja(;_dj6*fJ ziD~<_aXY_&50|tSmXz$?c$-Sm{GJ~OrdJk*1)Gd(gu@Kw9iTjhACq=L!)8L47V_i= zdeTBBV}xoVy2K6t2Wca^)DHiPLO)Ubur`6qY_GgYXlWy|CkF2?#{{!L$^fa6bq^3y zjR$e6{}U&ANh<{f19~QOajvDaZ|UvIjus({WeVCrwx%gaN#UOtv4$Y~7}P#)3D{i% z@*wA(0_1e^V#(74Oq@^|UWJs$Sl|)4!148CT;^!akO_ztj*Z0E@G*l;d)#E6=MYz* zGqDY{#u@*GJy0#raznPnz~OQfWW|XTXt44h#D&7)VTCYZc}ZdkEm0jpme3Oa*NbCD zpv}Y<Pkk)T7B%|U6VCnuDkH5@5mfzc;yge127w$hW-!Zcsx*!Bbs=RDGC6@6_k;~T zbZ@QA?VbYF0w+?tJC_Alj1oa1*_qWoqd*YHT_!FsZLMfNUVxjyu>vhJ${7}Ka!iqN z+AvQ{o)B~CbR7OaS(?ahFl>S8y%Re}_D<Y9Sp-waZV=r^SyRZS$c7VnV>{cW95`%0 zV)2tmli0b48w0v-^754^j89oQZ6$q+MMw&GdEF%BPEK<O+4_s!?Z0#D5%Lw3IESL= zW;%x~L;t@3qG*y`gPl9C?>E&JY12-aGBMKJv_fn&e{M!!RI=AA(T)5KSFQgQR%J<1 zg~0E*)%3D@(knciKSHnTh@qzeR6|RBnZhAqB&NC25V9wd6zOORW-{LTfIl#}$do7) zs2QsiIbqPCWg{hElM}UU*`l^7Rwe!R4ynXZHlzhPcK95o{3U^#LBpiM5)XB&@&ecm zc_$gWm1PNe4^{1_BQEg>u-6Tm<y|O>)SM%MAeM@~@We`YF@wIKEoX{U$a8bSggWYQ zjB0e_EoI|f#3b0)3u{QNBf2Kzn#8QI`#tL0_Xx5TE?#7ct)*x|<n0h8zY_JyOJ<J< zeMez|C&5cq%4gi<ZK<UQhcO%BX7X>wF7gG`!vZ)jzKLl=s(O<u2bEFAt%W>`&1ncG zi7~}Q`R%^t#<u7uV^<O0jeK3~=u_pRB~ns46rD?^(RDhZ{C#SoTU<cSrXZ7~gB0H) zD`0!+l2U<`Vf}#j+6REnXNkB)y=P7D4#S_6=;h~Q`E+pBDAi#{#M%Rvxh`ojgLPq6 zYwb~z)JRkKbQVaPv0kHJsc?qV6HB(v&5mJ0s+PCXC<ncHzJAPPu2UknugYT|6_@9y z9e0kk{kWCAv|NgrzL9DzN+27KFxq*=KQb+$IhCnn3AeRx?OpG4PiX~DxhNeU0LuzS z<?IFC{Y)2pNb9&@v5_m12>heV)oJg`SlyMuMIAcniS?xK1xhzrwz5H$?N(;8zskcI zO%^Tds<pU>1WiwyWpR14et!Up1`W8VrkqV{UnMXxF9NO?&8QjzaWsAjdaylm>tBp- zzJq?Y{8#JD*-!>ygR|DkTKRh(%~*^ql1e$rf!d9fb6UL=^hQ>d1T_uQf*aE+u-t=P znKlNGHSnEi-SjE)4XPTqOMi@(hUjVA+BxVwxJ6CetHR~Wu1GV;3?ei)j#bAjwUes^ z45u?w>qCHx9#Jr3HuFr8NT7Rd43XCc?}Cc$f6Y#uO%go(qC$yBF4vIZR2Rvys!CcC zkZHMa$g)4sP-$?eacr^9zOFPITmS~JF1!S@MNm<zC^Ia|%B|386)+5i@BvY@a^MW- zSDwgEcZ%LSoFK4J^`Z`VxW(k<h8zo20llvm=Jl3=!5@GY;?BX?%jE0F)XqVesiXi> z=WKdwCGo5hbme+7xyJIiX$LIH^q;uHK28h-!)2<nSdZI_#rQv=u|Ky<y#}N51F_a- zUo_KPrX@IdX}E)Kj+$v=^#W&sMfWua*ru*74F@VyL)BAPgw^C<hOEIHMBmMQ7MbIM z1<KFN%e4v@cB^pJ=tm~W1_kHo|LuO1-x>L;#|vKmLUNr1T}-}ZPrxES{;#tzv7+iK zWY*-o3GsO87vUiBVJrGgA#&?VE=tPCdDyf~c5?zLNwm(3iXDxNI$k8-x#7^&1@en$ zQruF^N-`Vg4C;X;RWm_@zx!!Z*P_FC=qN#|yY0`)IS*bJel|6kzr;#&pGzOLQ~q%L zgjI{6h^L5_ges(91cSE%2o;gdg*RM4=Y%GFyr3f1Y-iGA0-f}PRYVQ>mC%DL+2M@J zqL8aJmh?*+?pJkLlzp6&f;6#Drser~iTWr(cXOO%vG*;omSro{&o16uQ1IU>{ok?t z>Z<<sCFd#)l>^J8&>^iY<rQ-6N@>NBmUX$16h}v8a0`mRwc*ar5+kw({d4PA%9IVL zL=j@7G+f8V5#@u4ino_kc17ZaeZUfI9(XNZzK#3*3w7JUjAcN+=g~rCi}is}=%>Zd zOWF=AJg!(0*EsGzw;&gfCrOdN=Wc{fI&RF$aWIKkdNA_P^(I;tYX}pzX@gH33DYr; z(E1&a>Z#_=o{cC-mvtRh<7J`B3{&CxqP5EClWzFFp)*>`PY@?m3fg`uuO^ZBZA{3D z@jFcn*zis-NdAl`%x=LJv9kz2rZ5>eG%C|+?Y4ktkQG;-kUq!teV;&TK7O@sv^kSj z$|qS&>8Ey3nl!mfFsIi-oP1mP0=)8mu%$M*YOu9{W+fopMMz&D^m6ge9rJeo1JEJK zC|2EtP))NT6SyeXC@B|Gpcm76<u4vcd4fuuW?`9L0jo2L*y>=|E8@6FxHIRX(}-f) zGAh0wWM#hu_q1STzs1C2Vxk>I+O5jB09%-QMqqCk%hx7I`*P7^TjS@i&m{QL7=)F- zD0q5q?wGQ*NE)c2#O=?~Wm}6jCPScN<H8IE!z;CNXjgI1O~M0jC`if8Zllg-?AqEk z`|bLQzAb(oE#;skW0T`oj2~#wWOw(wO1%95ME|^8{B#8beXy^UV4G-vq9dK+Nhb)Z zwj?#a=ZBu5u-6*q#}EpA<vOrA!zAbxSBfnlgpYDYhEC(`Wie#oV9JI=lF%%3P~jy> z)AK?75~S6DOR=u_SQ;nEV8mJ3Y7$iVgz#<cb0i`0eP(-aBE>^c=eE|?R)PvM!FW9h z_oB#{ZAg%3wWBi->#TOiTXCj05GcgRhwds!7ivl2A%I&HYF5G~)b8S6zzqX&h>;V1 zOBMcPW?F81g4RnRw<bA+Ak~C*OSZ-!Xi?+W*p*D&4YEjHAGElof845(+Mp(gCz-L+ zXkB-ok0~o3waIgyc3~9S=bSclN;?9M8PaWDaDZW*hiOEL34I0%EA>F-s}wkG#v*MY zLLIQxxcp<i&Ieqz#6FE&6Ge#Nf#RB1T`a-NcS1>JT$ek7Rfu)B7^_v$=FJL+<T9pa zIITpb4TO}(2ug0)9DErt9LTzkBrMFr3@(|5G8zU&N{LVtD({Pq+JaO#O|&8*hfr*- zRX)^tV7!pDf_r>#=$LYCXBf9cQM_Nt&xp*YN2XJqMn~EfVh|7QW*ydeWg9YGKzW!{ z#EU^;Rl#|f%YcAbt{S8D86(sxE4tY)*+NI6Dgw_!C!!Jpf}tcIW#jm|t_J9kFtj<T z!ygAifePZqXf<?^MwK2><+x?(U|HLhi9F(-e(CpJQwLm2a34~YNj^LG2HPIe_f@)~ z!!%3B+diwMOrd!YA$y#{CUB-*q|jLab5DwVgpeVSkRpD5L~<{VbAq&Rro@CKk@OI% z{crRXk{)ymteB;^b|y(G`}ewf;bU$f_C_+=yqK_{Ur6oac-I;ES{1*IodWeFoe<HS zQi4;qr)cXWzR6gmTy$;ex>6B|qqp`P-oE`jY9Ja}qH!2enX;Be4xu)U|A|aD_KzL9 z(;(lUERlH`yl_@X5^+i8e9t$f{uDMifjS(`!G+2<YB>qFW0wj&OVrJr(p(3;=~U}B zQeYX{AiVrMG7;#!K2iDa7H|~NVe>{p6k%vlA;opMg5+duaAY%KL9U#5MG2cBFKDof zxR7NQ=r>7L+-tS_ay$Y_x!8RHYSjwlrULCfMW4NaJEc+v#p@ca*A=%wl%VqzeQtCv z$`6Tmr2G?nk_1{nZx4N4h)Y=bba;OyA>|g}`?DnR>Y`b!S^UvDNu5jfs5QqGf2reu z4Y5=rtq5u7l41DHcB+!#uhX&}H7$>~{uuG}N7F5Mtb*nafweI1Y+Wntd4acydp+C| zmSn({K&8AmVf6u#mMI=-RI?~9#CtT5#i27J%9;>JG1(jj>`Owg3g!-^ENWoyj^>#& zl;%LDC~aql8enu`g|6D2PIrWzkLf+&dTh+JcHLwaM5RcAH%Vhf&!Ab0e@P<a)dB~V ztpXpj*f;~sC<l6m3g}LT;M;kihAl{o@!>pa;$8?G3Jdhi0?RFh_)xTG;FiMaTymvs zC?yF+D6nbs<u!!bM#)_bX#^Mt@X_Y-=%o27ZiCf_GvhT^%MolTrnmQeqI>^HlbBe* zIw}4Rsto5#K(mnKf*t<#9knb_E2^vCUTQABGs=#%(-zqJ7Q}@!gR>~IM~ouSZx|3$ zMB6%)yAG0axxMikZuLzFjMvamwUQ`G$w?Dn$Fxf=j+K_YABZ~%73C$d=lUi~lp(;5 zK?ozx3!IIK3KbX0`*EVci$(~00!v1Q#%m_5VG|Ohzjnp}tZ7ij`x&c@m-e|6Teo1v z@c|g_`A?t;`9F?wv?G06&z%{{*%Yi@e$oA+r5QBDMo9Ph>CZQLxPP{?A<6SioNZ#F z{b%bx+lQAB7Ri%5k#wf`e1Jm^3jKT}oo(b550#ub)gq+-vDe6J)>n{gPk|4`jfjUK zk@siK1Qit$Sh{glm<|uWktoOlw(_Rpq#?S+8)eZ2Mb|@*lH0^LORkfE<2Xn0O`_|? zhlla|qj!gX@4Gv+bL&9$hj3$Yf{8>#qf3!nY9D^HZ{3lt>1`Gpt5P`HKK_kSi4jFs zfpnnK-{6?BgBS2dQ~Z6p6DF2F{%fw0lG>gsfjbT{EXszoHlz<<vZwJ=2YAs!fB$eH z4H5oHs3CuBy!!Psn(s4?!<+M;__49zh;&L2MsV^kKtIE<!q7?lPaqS&B?#h*JCJ|W z7N6N`gjfF=!21rBlcy)*@wJSONJOy}tQcL6kHJY}qp*@UU?__W9OCZfDBUG6j{1ye z2e?B~R&!?|tqsDV&=P=k<d%VI{?=@2IcV`idsI-9LQuTp{yLKQtN#K)I6)8(tRu<+ z>4->NK-RxFloYB}%MpbOK~MO9*Lgx8i9d=zN+|WgX#8^Z<j~39;*xA!7-~<XV|A2Y zSQyG(${X{<Tl!8$5EwU18Y4mwm}JLBP!MnI*<0p$rEvfpF)mf$nilOel)l}-XdoA! zST;&3I>dcJ-*-FsdS!k#_MFdv*_~33o`05!P^Lg*ODkF6U_7HH@U{1Z38qXJ%p|b~ zRS$$`R@gfQ(I!np6gDyDvD?y83U`^z+b68eS{O+DQ$~M}87s;Tv;VtIKs#H%?mL&S zzKMPXEnh@FQ&CHhY`u>>)gU+w9hE{0Ps5Y^=*}yeKHCgjEl~VBDPc^<q;(s5xg!5U zsM)J{h#Fr>HaW2e)B9beaAJ~dHJb<worgr=@Bn1&mv$t7FA81!003XoZ#r&0zL8>| zNp7~6-kUVp%a*%mJF>Oc@9l@PPD!0B7l0W1R=X%_r4FL3M4dB|)@2>X<8H*QFuGMT zlB^n|kAf%^n{G<y0zUv8iQ0*JOHcBmX^m{sK8jWAf>rO-SH?phfcZzE=lbjwm+6!s zDTP@f(O?+*bbGn#9bK(=;tzl{PI=tD)-pbv5Jj>4E@m_sn~sC7b!olhDXaL2WNqz@ zdFf{v%Xn6m!z~9Mtps~lw|nz5l8^Scns<6c_w8rj5h|SqS^h8wOC)W^1hYN5VFuG^ zc3MeVhGkA6v7`Iai_*(Al85H|!6ofV>Rm@(Li>V#scs^XwLF1p7+U_#`rAmA8}OZt z0J)Jth08ymjlXF_zWGQyc1?UXZ>V=7s5r&uP+B*ceu-|I=OvS)S4X6^>M(_~c>Mck z_x#xlo$=pEmmw5o;;%e=bfY>E`qQ@C<SHloI`>zRSQ6+1`C2ymWSH<AvRFkGNF@)9 z{Ds&PzDN9aZvw(e!g$TCf4%KXxC){qe5lp3rK(7xn=|8{O<`>unp%SkO)c=`9@HCU zIgDo8lWEq~+KY2|t{sT%fMa13bi64E4w<l4mPZ#!L7hdNhbCg2M%pl>h4JW1F_cO^ z!yPKMH3UBkvB=*v>1G_uY8M+$kaSuJnw0|Ue`?4iQ&0`w66KNb0gvPJ13XZ`D<CO# z;9;O}v_yxBl*d16*Rg8uo{j!zb27x5B(qp@hl9y&P19ihCGyfNVY+BXhLH%Z(7!lO ze+qp_@(4ZvYFZE{rj211aL{mCUt)4)Y3$>qK?~_NePk@T7XrnKfBF@SI+42(0IT4B z#|8@(oKvatB8yV_!b~e;3!QXWMLBnuYKG?)37vYx*KaEonp9e`w{`pR_W?nERm_J_ z+0q8WiY0wqG^nM+a&b0j!uaG!q|G5)s;vECQcsm!xJ&y@f<~KXn@Vnp`U?zi0%lU~ zbErBCfr)yfw5nR9C$<zeN?&|CKL8t$Pr&`e`xYDy*u&>~{@Gg2An@9D!vw8(f>1_y zbApvibGXEOVVazOi-y#_)a;jz2V$4y=~;44QCT)Limlol(LMb$I)3*=8Oc?`)|=dM znE+9P;*>q2YHG9)L9OZC#Ma)@dxKZU?l>UvSvqck#fq_EfJDm79)Dac%_YNJ^C-oJ zk;lAcqRIIR#W1)(At*N<t?_xZ+?JQVh)W>FxDFKtj1k@v0~$3QhTSPm=r^&5*PG!% zs%m1$5D#Z-cpDLP_WLw$t}u3HDH*$s<V<MX3U@Es1o;S)CQ0&*2t|5+Gim&YBdF~Q zPwmzRAb`H+fvHtA?U0bx;h+{>t1m2FMXYS$lG+8zv}w6DfY*Uk2)RVsx!FYAP@Eh) zMq*w=GVnp`FT@K^Bf-v=BC3>TRb!)-%K^H06-sZO<#sMLg0-y`*4~QmY@g<!sVtRv zObBs`xNT|Qrk(D|)_DeAa~U)Lx&)(6bRKol&qT^AjmS@9rXXzNdcrE`CyfE$>L^9` zwKxkG)~&vii0;VkBn2|U#wx7+>Dy-eN^NkCf;6R2bcW6&YRlgOqnIxTvTCznafDII zZKIoYMC`B5NSN!aLVW%w4||yWlmYj|Me*<P{nam9fmnPsHX})&VtmbVdfp^R1y$$f zp?U@Mg)h`eXzTvPvi+hMq4XKR(}_?VY4M}o&hSQAir^787?P1$AT+YFwrAs45Gdi` zYg-qi6$AfIcvNq@l%vJ!Dm6(DjZN!lZSHj@GBFW3QjIoBFc6ExF`qxxXo0kD?n{`~ zJwvdtNw~urA)oO-p@35*!xM|elK~-)gT0MH;qWo@5vFoQ++RMV3Pcq4t-K!4@a>KR zyls|A?}9k#EfM?5>}%gP(T93c=uO(fOW6CYOG8T4XE8vjSdvO#@*8u*!YErs{X0W; zZy?Fx#S5ZEF}iY(SpIqN|0?GpCDgtn0!1Jdpq2}==)bt)#F5*|p%Ha&zhVCoU*5v} z6KEV^93svxK$ecyDMu6@lx?GQH0Pk0M7fx^z;M*>(eWaV%%n{U5j9xEd<9#Lt%>2{ z5an2p1g2^JbXIm8TkKs6AMT5w)Oq7J)RmA~A5N3F$7O@i#zIjG1AX5`&stCdl-8C> zDj&=!_HJj=6|*A_looxdr5))rzBfk3@%KR<)$`0gAqx}^h#%51@q#Fn#T9rLD9Fm7 zk>O#<=(zCVNc+U$df0?=J)+ex_Jg>XEqM!|tx5KWW@OV*=*1^Iqa4l<an7FFPaP>` zIrF*YZtrDj>RTs=JQ9>`-Lw80wdGfU@z$3I6kJZul_$~WE|fQA^#XX9nv?LEZFN=y z_(QSKac9y(gdC!H$L6FRmKKq&jAqG2gA+tsr)coe!xghUk~|k6xhPd2Q+1@ya|1IG zfvoT<6DQ1p!p<99h;>_<rFTvPJt?e@>2_pxS(J;M^n_>VOq`)e+W2vDj53oe1X@u$ z;*@wP7&mcT6T>79Net^Yna~ZS6UMs26B8|oM!JECx?V&p1J7<ovZ~Gj%1O#INsDsA z%DOx@lNGLro_wYw0y5JUBdYIJ1WoGUe#}(E_@Julq6O%0_K^lMjFC7swW+vDKPeNW zaMQ~ILCdA#O$^*UjJt9cJQ6J0zYa;^60K`jdcK1a6-k>@*6qlt!JG+91yWK~c)G&i zf@U$NrZ)Ast@OC{;>Bl-ys`v_6&sm0aI53i8ByfElB^gj+hw*&y+S%6oaF!wIx7l~ zo>XR|N3c*g4@iofH#O2eW<H#f8|xM}E2~drX|k}(p~^?Mf!Y=^@bMde6Ze^ap`DU= zVFCFcl~gR5H96B`CWcM*8ci4#vqn4nHKh#2vxc<W1xcwT8<yhn0X^|X(jy<isCD<0 zX;eG=Rb_7^Je{E6ucGW2nrN#?CQ6~3+Mt(JdSs0Wd;C}$u!Bg{6D<M^;o%p{1Eg3; z%R6|}-(hEPF~&xHT3XY2Kr*`Z&yzoaD8_iELPAi(S|EG3uo<+O6pNelT+0stMXMCZ z1GhbIgolG5&;j{}R@@!1%iwjW4-YAb{Sh~ABfc}F3?E^&EEd>kc|oQaXlX3Q$%7`e zO26>>>S@J3!`VdgoJc4op|*-#23cX_0wPp`QR2;8L@sp^DJN7o3svGxLM|gOmpoJA zjbA{vSAqZ${y2+rktS5mQ&KZnuzLRh<oO-^H_G_(1zPaSd++B7N>Rrb45692o(;Pv zg28dDw}3(W{ch}aCo-M3VH@{ZmC530M0^T?VXB|4%|BafLTnivX>S+)T6s5p*ZRpQ zpHeced|38xfg?faxN^Ll7`Kr|ITMB!=9=N78v#9ryuo<9Z+3vd6k722uM#;Jr>BkU zoVc!NQfHf$_LgLy^I{2h@x1<P_ia0h-0{nB^Z!HETL#6^MO&amNCJc;c<|spxCQ%g zXOO`McXthvpu^zqHpnm#+&#Dq1R30dySoJPxc9#I>;356r@E@UtE+d_S!eCN*5P9d zyI|3{P9?Kw!0(QCZLxK>Q7w+0veW|*vg)efBg~>1brl1~7o!GME6C`OsQ_@ZA9K+# zlk3+1j-OA->N}Wg>fzfx;WltHq<}(-Thf*wXiFn$OCwq3IST&&Lb4(uw>YD&5=!9` z^Hwz}6C$seNy>zzF4p2FlGrt*BY3mo6;sfMqq-qO%&OJDR>F7Q@VPuPF9pQSsn_4R zq8<!wy`CkGSn0$`*xAeMojq)9drDMcI}tt-*g7_9le*Hg&7Ky!SIx2Z#2?pGxp-{J zJ$hdGIl{xsFl;=__@}HUK%fI=z|Tg<0|NK8k1rkqF3QvZxz;_E%rud&FZT!AgP*dc zCXq?<0_#9M7T)B<Be6w<0c&wi9e)X=Q-!Y2mrXoyDz*3VLq^?p^6@?{e^$u!73b)_ z`K<4^_bubG7Nn~I1rjY-muAz}_p!<Jun2hm5Mxty>S_EHNpp%y0|@AkZva#%TjveE zyst}Ogp_t*E|bO7X@|+J?{)cQQ^FAGjq%gc=QEE3vFP5Vg7M01{tQ2pG=!~7B%B6b zTU=w6wniwhZ1qP3jZKS%7ZKeuEU*`$WaLnbiz^K0kwKSwA)Psacsz}?0q>~0&+uet zP7kOJ?Atq)HwLs-facPbO$L<e>2(nd#gSh#TtNTOrkDqAm3dEY6Mk1p>Z#UN_67y; z^UT<;Jj2_ZKT8a7Db3&Yc)y@e*`~qeQ;+zmBdFVetsd!rXb}P3YM~&fZrD8r`<tTH zr(EM|lo7Xju6IkBM~{)RSDz@Ot*w*7gW7(3uim_LmoJ+HaA+O4&QNywx4{VR^=o~* z2MI2a@!42ZZxby7<a#YhR(2Ccr7Mew_{;6c7C%Jpb#BloT0X?$sTmnc_{QqxqJBNn z`tUH_Jbq0}E!QkhJbGx~oY1_Y0TB?nX87g?DXP(Dj=ugo`G6r~6p0$e@Kpx>D)d(p zTraeujEi@I*BR-T=Gb3tq~7TUu$=a2-)THd@ODn7{+j%UCXe3r+?yfc@(+zK5U*>> zBG9?zDZ`E!aP$Z0^T<rQu@Z4+!R_0mz{yRb7iR=emsC+}*(1=y*!QQ;ytnw19@TQ^ zp4k5MfxZ%vu&*rgr*og7ym%;{>6(JouB-&U_b6N(am4lWN?6RM&w{{0zE@h>-{32I z%^$C-%SWH0Q*r9fHM!Wz2?fQ>y~{GljJjxyaHIOC&@UO)Kvw`s#9hD?Z{lBsA2z{K zi`p$FM`c6Penw3!e?-a3c|frnXez2C#G^j-zEI1kT6SuSp-4b9BOxrDLEB#$`&~g@ zG%xV9?@2>(@o}r`-Mt9iUF7LK)9Y#336!i_sseFqxU#^vkgKmaa-|*wMB`(L8tcB+ z*9ZcAZ*_(}QV*e_-2+|x)W0c3TTbvP>f^J5>owYg*oE+t)I085irh!WzZ`0wv#sQE zSNQ^!x2W5^j>ZYNEzIv*)LDvd@kY;8oF)(n>^$W1#YfU94jNd<0}U0MjP3&OK375_ zq-^0Q`!|slZC^d5xcb!Qo__~q`e(M?lxk{8GAyKBtMrsE&VV<@i9n6AWUORhTTG#T zD#IVv$@x*EKv@R?Ll8i1ilnX<_@Y2(9%d=u#->>c8?WQX$7N74&m@0xaSllHPyHLJ z{e-F-xDNsWt{qRfQ3C?m&kIhwq<4#!Y_DyRhXNz_aWMfkk+dW}=|Zu4Ut(uH#DILK zQ$9BE8Nb3C#C<OCwK8Z$)j$L^N|EoUOe-r4RDLc09?C5&6<&gJXTiKd3|%44i~ga- z|8H2^9bi=*P5;R4vu;c8AT6r*T!{P>`A+kGT3MM5A7+hQweGxidD=II9W`(r^9D|* z&go-)K!~qLfh{ZEbJ4`Y3DvF$LY0|xR*`fk6v}vCM@M4&!&BmotS1erp*)-3ako+3 zKsMEp>e8%aUUj~~5}Qhp#;Pdp;=ShvU_<{=^MOyN<l)S%N8w|MGc5gzn{%_YQ0Xqo z2*<B$tpxF61Y)Tv%=n?eR%fk8y9sJ0($F2!8tw59jpLBX9(<ufWcGc-zF12s6!4W# zgSk&g3WbtuNiQ1l=7@5=A<iEuD5csKb&HK3W8sLa0bFtQFz4@3=ciy=EXn(hKUY`Y zFf^p8f(&75F;|pUqXPD_^k>Fx#h|7Z<Zyw_`A7CN+QxU0BLkT6r*|PhRc-I|0m;ZD zZ(_oJAIugrrIF07sB2WSb3X4%Z;G}{k!dPkiOw-o=*Vybp7JgJ`Z}Hp4pO7nz>p@` z89B`Jk#%ER09vw;3=mpVjH<~yyN1MX5ur-&<Wh(*9N?bZ#|(dh7=w@mard6W$Ru*p zU7`0SJuy1EfRE7*!QER*k!>b{NnpB0ibKuAfzq+tdUDJ!d$=WB{o$lZO!Z2HT(tcb zof2@I4Tdx0&FhWjP-SIt3tpw)!ZIiz`%hbe^Pp1fvJX`8#In$QcS=lq;mTmTDul$` zQU@8oQ{Cv@sp&TtZUk+vY72=OESf+}CGwZml$!f`+Z!8pd5LfwO+lzalPDQA{T43M zj40k>gy4WH*1BKKhD3!61ue*m)Ooj_In<LWw1F#2Hl?01GN~YzB}w2X*hE;=tvhvO z#NtoL^|~G0G<HF~-!XqX*e35x2(x(FGuJc|pP6GA+RZwC=H3iSa2QxT<$c5zgF*^p z0BUM)rmB!GQ=rSetz(z%h|nrOrcmTsn>i~SFSVx;b9|&Um~ME^JQk-L63E1}646K? zsij{?{Y2Npc+46VIY=%2k@KxIrHhiDoF`<CTeb9kiRPy@NuE!4wqjv$CY|V{QckcR zaGh5y)sbO;jR?m=e6o}l7X3Nh!j1WYIAKc#-JZ+Do+;FmIgL|<Z#4+)LvLgwT|uk` zH?9g&!~D2l&a=^$>bV5O(1?hzRwjNwsYX*^HddV}oA`e5o_{Xk#B{}W&^x{oty!xS z{I`3%B`Q=7Zk=Hur`YPi`!!@_e*Dog$?KSaqJ-C5CbWM_Eo$5a7VbE$kUVcsECVPa zP*`1;F}3?OR$3Bt9|+WB@h?`pG>GsGRF8p10UB~yL$%g55FfBU6nq%mC{535PS<`L zgO%RCtLl(BZWeY6%1Z}w3}K~HClkKgdvWD7E)1|tARGW3GHPS3B12WkZ0cPf$fTpr z1o}zyN+ubdvpZEry!<Usel|V6a`)5GctHO@Zu);wBa+d@L}CYbs`(jeU23yWXuw88 zIjrYkd6RmX$jY{s%xC$9ng_s*Y(Vh$bKo3t%le=2JaS8GLRLLAWSXF`pSI>3-sd)S zO#e1Xd<t6R7mSB869Ejc^4$TU<IVpYTpx%YBN{ghGnUcgY6zJ_BdMeYswx&u`s#u6 z0u7{ZRDRs7sWUY>Wd08XbbUle9@S)t^-MCocRLmclL%A0CPRpafA-_{SltG5(G&E{ zqZpjexv5h41d_oPO_4ZnNf<ueG83n4^{+4kh=n*x_UuW|j2EY+lKb{xL#^*iEkjk2 zjEHU*6EKqrWqRm0%poZ-%Lr(Ue8;*|rMBvjyC`hQTnR_xXO#3_UUo23247dottIK3 z=-<@v@E0ClgTq0hm}!cwCpa3nad|ENW|5T0m{eas`J2n}z%>D-n(F>y^W>4ms3Bx5 z$r%~*2HgjmunBT|OBn%sX5yV;dG&$1)0tb4(H7Xf6}1lREDi#eq01FL>rO+ZDXlmV z*jvLTla!uVOW&M-b78jDRD3nqJEQx9k_b#1Vqgw^osf<bmEp-k+vP7=4C+dJ3$1-$ z;6x6Br5m8TbsN_5d_+(ENZ?zgLx&#(*m{uX*Sjo{y_1z>)~V>BURxWU6L#d7RGV6( z5CRk=5p!I8h3q_0E6+~m7k4JvgDojB2b(q0Ry9U^bIgk<O?uez+A;t0%<sKx4VTIX zAr#WJwqyjMXE?O&%p`%x>cvRoTT6}aKAb67MBMu|h-B*U2>exzNM(ErLfc}HWM8@@ z4+jFr7euuj>RjASn;li{7GTD|CL|-R7l|l63=b~8BU1))_Zp(2Z&h{r#^`D=$2K@0 zwbZOUxshKL+pJmgb7agST~s1mB$(R`UJiLtP{%ajDFU-bZ$qTE2ubI3x2>Dk<)=TT zn4k9<;0wr(bG5%e-cSgKL~3+L_sU};P$1a_gc+^$l$BX<h=Kg@Pj8plk2<weKSNVD zn9XMl3AlFE-Yi)j2&dH$B2wQPYEt0XP*~M|#KDU!Ru1c<X<8R%Bp@aTQ_}^TaLq+V zu=fNrtFEhsiN^@x<ER>DGK0eusfm-lL;c8#3A=`4!wHGwWVw!+s`mVgmzG(1dSepQ zfTG<<<+N&dw;!s$h}53krp?qQ`x@2)06`C{LlFBqOSH-oqfY+9x3BbEc?m%nWhK;} z@2wQE1s)~#2Ye4Z$OL9B({{|_fdJ;Mq#y-$0z#MKGF<sf8w>*w@a=ZhdE_8)x-zUJ zP?;xzJRBFlTKSm)iqRCV?=C2vTGN1(|9&kzm<4go?+$xr<=nL1##AE<lDy{}HrTG0 zP==FCcQS@1me7Gz8h`~zxSvE0v`xx6!leM`nE&mX;JU^4hmfVsOSoPfR;;WT+b}5p zO$upWP}D13oxv|KQtid9WS$_{<~P9Uy7Ru2&mjv*E139JeS>*T0xE4@KsO-oV?}~k zp*h*bQ{$(wJqFOL2NNfqPL1Xj$RXPmVnaE=iw)f3Dg<heQc)SG*tWH)=OcrxkJd6N zPHs<`%)3IA@)SYw!<dU{PN-Rf4~y3jk6Pn(uGYs;SpiSt54^-g;k?+`N=P;XA8Ky> zy40dc&8d(;g0d;|A=W{0HA+D?-ELhIxBk;x?2p>(00-Fuok!vQ#Z!;!(rH=Be0i$) z@VE&QyM7C3x_Z9_%lH{MKShg(c^YEXU>kw>hqe`yO!EvEG<q`idkt5{epHsjKkj=l zQ8Xxi11j$E@?1R=4MU`XPQ6!nVL7m2-^FJLSYAGV6Q5ycJ0R=J^+`@_Z#9ekDm~fS z+q#}06_QeOvP%rG!c(wxpcPQ+x6<G{=a?Pt*&8$$KlQ1^kY)+Tkl~i;lU-3$SQ_Ms zf4ASm{#v&YOOVyA;vZU-XE=*jr|vp4y~(szn7LjKOIf;Bzs{VGJDG&7%~d+#M#+$C zBcn5$Vi}nlm&H0`uwv>5Rsm;+R8|YYaA-@8F&s19i-4OgEM_qppq8h;<yj(1uz;{< z8+T6qyiS7kOFQ4atI%m6aLVaE`k9db{nsnm^^dO8&&HX6i@>(Wof9!1+chO(P~ain z|B2OKJaZ5K(6)t~?o<AhJ_4`wD&#UX)zomaZ4pvkykcp_t&Hj&n6Dy4)lmgf9$#>Q zS@O_@!<x~W<7U^m5lPU2+|RS&T*tJPpkE(X7Y0*@H^#o^zQLCm0l*w2Qba_Aq7E-M z&c4xASI>nUOoB_VRnsrcv@u_UnAK#s;wF6k-HJ{(?q(LBNtwvM^hBYqje>KZ(lsA} zft222D@P*&9pCBt_v#;US6Fl|m1Y_mW&t@%P9iUa2&dtHG+?GV^vgzPgy-icX1B|o zPZHhV_T{5R0qCAvZ@B(`FuPr1=dFi5#{3NY9Mqw2A!eF(Zx?uJ`shmL&)ay<|9C^G z?D!P*56y1?wWxt~cph}$A9z`vTN>3qU-^f&iTw{PFm^*Vuwdh<g6OQtX7O;F>*)Di zm(=Ha8Aj#NdoDOa4h~RXt+Xe8bl1v@Z|;w_Gfhvt_L}<wBpM?v1H|=~&b~9;?Ue0e zDIyNVV+`e_g5{|h#iz5QA+r_}DGmslvTMmA8j2`t`I<q{f}>2}ckA5sv4RZ5!?rhJ zZcBFhmI3whwqT!x<{cO5Mla~W&pXq8*X!LswD3^6bY<-_NLSiyE#>m=`J;R$^gDJw zar}*R14^x_Y@Awf&7t8={mUXbgMhuXUoc238{{Yjd->91$d@_TfRW|LctpC>=lTO| z`2fxskDdyowkj!z#DzEGax-a&110(!swNkwV)DebVVCM3t;;wIe@_bTz0hVLm6$}a z1(W<kdsAM3E_Jb%*t~q)_$nbJfMj^I{d?4_n<1`E4yl%80-lelaNNfq0U?(&*?5+- zE~GA<UAH6gsvaF3N-x2O4UnEPnPx&cV5nTFAS9wx&2v?WwXOJ6fYEeSmsnZ3qDPYm zAw3YTFUHz*GZ>2hsqLP3&u|1YmTi9i<-<n*w8#s5B!RwWWW4}xa$p%Ew*N4N8yGGA z0(oczopwg>CvR|OWBdxnR5ZJYHcQ`=2IF?u>CxtS#Zgzi2_66H@naT~4#}xHfya*3 zqgknbhC_t^H!Ielna5uQcI`cus;ls{eR6vHWa4!6tkpIz=B|M}7XB$`p&S+8YmRM8 zAmEg4h)qYr?_~JPO-s_fj{Pamo+Xsr|IpI^p(U-C*~Q*ye>~5!y_WR#-E+PrR6+Mo zqzJ7RaGmK$o#srAPX31mmE(ELC>G;~l?LqDt5aU@N4wm0TB`Ka^zvS^C@QJm>GkTn zT??_LxX&r`y%wNzN};Yd>fjVTz>g2GJ{zr^SxtHUtrknKII{rvhgf&tOSq)~r_v|^ z*KGb*?y3BsxBBjqJhW2Fm4>B&Hh$Myuz4SB-`Pxfl?p!e1y5OiPA|On&B%6!;|2+> zyq}glk8&h+`B~jKPaEooEF<J=gTG?K?Fo$=yPOhiA6Dy#$-48@8x&nUe9$FSScl_? zGPCE(q9?uh2*)n89?qkM*xUj$%M|u1bBXwtDe%g{pHzvw<Kz>lq*-e&j7MM%A<~H1 z((-)(YK6q7>fQS7Txm)88=;)qN65T{*vuMM>Q6lC;_@9UMH?^1OjzQktWiS|2OXf# zhKB5_S#+4bw3EzR{l8zS<yaV02R{c@#XZQI%j#1$$d5Bv_yskx9^$96KYPx<B#my_ zP#%b`kTku>XjJX1veV(nW%K`x9<a}WY$;#dXmBbmURGbR*;KEXp2$I?`{M&s7Q4*6 zOq1Mgi~=)dFSrs7xn=uwUf1F_p`1FF!w{`&g2Q(pqs)zL*Rrjia^6uQ_rx=mW39+w zCg}=CF@i>r%|ns%Xurqx$jysU6}A}RJFZRmYMTg+Bp$PaEMc}HgfDHpxCT>kgYLIG zFV`UbnYS4k!mwi`kTPkN`Z%Faf!%r>MK^GE2iik@)>w0{HnLX!hlWPk{Xr~?wm~e! zRYdlxSSRlS+b^EBV(Gd7l14yUok0Xd??P6DJUSaMr5e58-M7U|)ylRyU3<MrDtSJQ z-+ugMH56Xh@n0urol(P-dv_2|srw31mNt%PpF7k{or}Vs1xU?k=E;I-VD}Gg8U^*X zF3r}%4#4ZLeAmtVcN%naZDKnmrP4uSak8eiX8t_^(e;%b78xW5-K8JXO)aq0DS1Jp z4xL2?y?P7Lu(M27>G&zIE~}M|E@dFpd|5HF7s(~?DA_Awk|1B(v!oG?j`20Y_seV} zdG7MWafLh5NsIkjKDN+G_Y_-S014y1UNvc^BTwbSijj9u_PvCeiYr(JRU(TMRW_9A z^XBWow7cDr{|RnKDu*g}L>WG3bDirX=?E1wra<2B<jJyRMVxiXP!}Pyp9gQB=X6{b z6sp%z@@Rj}xg^tb|JN=+KdSB@T4=R%8=qJQ*W!d8zi?R?>b%>cE!FnfTa9Y&MbHCo z^X)*q-(|6g(H>qd$%neF4h_m?LblgU^p+O`qTo0bU*Y1RR=NB<H65ZkVw<*0#g*kZ zH3AO>a1!EDE1p`HkJDWF1&2VVxn<_1xZwXC!)2IoSrLk}JxiB6u^JRSJVqUY2Si9& zE+pl!*S_t-h{Yr{TVc^x+PP%7<)AD<z<O=Fou`5{9{bdMkq*ZPo2F^*Z+`K8GKbso z$#T&OKEYsZn-_XoEFx6TkFbE5rF>tr!Z)6?9|K=pS@1{r=R_xLMQW+TK5Nk4%BYLD z!#9txqDs>%GY*ogioBaRM6_Ip{6o4Uyc4WllLnVy^LzAOROv>({>uAuJLx@Y3~cKR z5><AG&BB_BEBUzI64m38me5=)hR!?+q2su8mORZ%3tuim`Cf|JR>JYYXDyZf`Tq7c zTr=_wB~SyOyQ&f;NX$8*X-3&(J7ZJUWdi+YtKNnzDz&(WZm=~A0UozYkrW85YdQSH z4VZ9Dxc3nKD`V&)-0OZH>(p(XO=~Zs%KO&@POALn7M%!!$&x|uFYxgdv*c)~>LTkP z(1aT6iU;PoM(j^>_N{E4ByRE$WTeNeJUbdjFCG7eCq<vo+X-o-8y8#~agg7#03VjP zFqRgdT{J*^PzQhZ(6}MY(#yNlB*Iv~bA8h9RHQ($ick(t>MKzO*964L06$Ja`_ZF& zchz6i$ol5Q0tjgT+nJ%kQr7O}rV7@+ynno%8M3avx?z$iUSbKgZS6QPD?1w`n|I^Z zGY=Xr@1TC{<GA?L?0WVF<Jfuqd_iA+d%(oE;jbza!?24sfn5^2lu?N1EZfFq6FsyE zrUN*F{gpXHO^cocMMOWab2ZN&B4D}4-dEt-fKl%93WbEqq;#o%$ln6Lh0L+V6`WFL zW`8{2>tdXNyMV*vP(9vNdaQ5H9sx{h6y;4s#S14HiRRV~@~~-JDAdyUxP@AyfOw9* zw?$Q^AtLX4#8ei!fYGJzqhazj`0$a{gvGd%SzBx~y|nH^rh7KE(m%OwtVrw^y*KqW z`Wfu;_pEEa#bo4X6y*s2um%j}@{E$``n5>Mud|CcfcIQxz7yU?f0?~b1q!r2n1c?m zc(xyfb%tW~kvEgTWwzRQyb(6$HC21BFSglykv{^4s&6%j7c1Z8@=Y*mOqO^Tj5~ep z?8|-uWX3nDj2=8!74wW>#B2}mne2%29Xx5M2i@~yU=2bD6g)R}H;G0+pX0Z0Yrl4w zclyZ3q|Rro0Frv3vy$x$b?IM$V3etMY;Ypkq2+B5Q^d)7RHO>-v={k?;Lcic#v1M` zN9mWNV0u~g*)p99n%jf`^V#V4+0G-2kQhh2;c^=LAgDc(m6N>fM_7h69^gPZ(ri2z zKOkSLY^DsA;@zTG_e#TTpb;FOycW@p>D{z|w5Yy{VTg>{CE)X^DpmTJB+=|Ko=Df< zQkTv?S(RIZU+!F3t}iv1s<>MCf!ec(2~0$|e%_>S!=(dxgz|sUAW1mlNn~xWbSu_G z-mZ+CmNe={!;XqpoXdsVJit^BrUxp~M0N;Fj|uPI$Q<4W+v}n;JFk{f+jF~a+cqQZ zE%h@`rF)wLt}!$w?`_P+Wik5|9-p2F>3;1TV@kT2U9qb+>+7Ru6T3e<t*~!TEF}8d z6viJ{P8tb}B-%9lG}7*(HNS$}mvDp+dPz1eQtm|+kA_4s1eUjBOphk~n#;v@1dy4{ z$$qJbJs<!fxFKr4ty!ueG~MO;perE$w`^O1L34l02pG}#HnTYt@9&)p@V=k1ZF)oz zW#qJ^UiL&unGGKJhxU_*eeLXScI40fkl0^1Wp>uU&NdVBbf~`)`N7NqPq-Os8#qJs zlIeHbU}<Cm1J`irW@oFWYoFdufQeB}=a8PS(b((YvA@3-aBWHqm4THuLMbEE_4kUM zF~@PU?)zh6di7wn%1OGzA4Jce`%?44p~=AS%16%}wl(@z&!hNsBb+@AE>B|j#rNJa zq!~UDxq$E555G*g*H*)Dj9Fgmm*6e;A|csY&ObU{+Z&sJ#4U2i?b*D>nSv~Mwpg@a zoK+Lh^vRXFr14AZ|MyL|f&SSl5s0U2wRi<?=E6JfO}!)g^}6`o#OCTBKoS9!fz*OG zY}sG|AmBD<x)~flsLnXnJbh`?J%6F`GGSvh%!pJb;>8IO4jyKiw=t1to0b7KuTiur zttJdWkXms)I943P>Xjoyj!rd$*>dYKGf%z7W9SfIWL^DNU_;{15zRv5yL-2D`EDvV z-k5f=;b?~TUiNUxY(gs7KeUBWhle)iCrzC)gN`Y)hr^d}-Z}2_z$928cI@v=#%s0} zh64VxJCupaRI6m=LkDvf(u(Kcx|duu7BBX<5JScZx+uoy<!vEBA9jw8w$Sc>Xoa56 z=PP+d{<wIrp5o^t9g$NMznecVZDUD)4NUz~9ANYLDX=b3rRN_S<G{sZ?!Dv3(_7%y zg9y>n!;inBSdUb7p#*L$Q`n-mBDIub4Y7M^ls#s5*AtK2uWs$N&x2--F8Vre?HTUH z?Mwfm{ozPmk;jNu^lt$C`G-ajmFbsomc72PT6~>r+iw)6?TDk_v>2|A0@j(PjNH>Q zZwOXdM@SWJ`|=(7xFCj9<9vtB=phm5rTcDdOP^Yu8*5fiSY%eQU?Ca7>X?;2_0s2n z4~glX!OE-=Ep-O%Q`k*LR{teZcgh_6iL6ONwrYB)5q%<Vl6w)cvHC@S11H2oI%O_h z6yA1cV-yRbfchITHJ>+Y8CNc>kg8p}5TRnrp(xQdflexx6I|1^N^dB6#H8k^ra`s- zaM@PBT-tGLKIal;GjM9aIbe%(nX*~Q>n(dmE+S_2aoDU$%r&jz`$N*eMB@!p%&Pye zS&L}MfU^ij%<etsrP;2M<%?Y<uUF&$_mq#%_saf%V+pe+(I|VM44-|!=4AziLWKj7 z!llNey^%ONo`P<Fk^;ylV3Ot3jMazJVqd?$TDZ?S7IZPYe@EAQJHxVi7q(^t^TAWU zciFiiQ)w3~=h5uRK<%-DOHWdb*t^CWEip7TnUr%$Yqv|?J=QWqyZW1Lmu|7*vvQD= z402AVKQNN9-|bs6D;BxP-^7?^t?z;8`^nxkSSF#xAq=C~-#Bqex~->1MgnrpKgh(S z@e6vT!Il^!U<3<ayAl-VnYmg?Q4qhRzg&$MuMrN?d{&wb;<W_q#Qo%Qn_}-X;xfy% zN&g-Z;N1w(Y(3YdKPJ1}9gbb%huqxW=3Qjzc|4HF-pO$7$UQ^Zph3{Z#69ZGR>him zC!=NjyvKogYT{;HVqJ~O-(@qyHbKXhu4KoofyutK$(mj2O=yt8^|S_!w3=b8v;9Qw zXNN}ep;^-4AAPp33HjxZNh~j7i1(yQ>D<7tWS;HA+jg<Z6F1fdru1-lX-yy-^5yC! zkN`ia)wZqfQ4fi0^MTA4?&ghuO_v2E^4KAkSd;jMSr&Tk+H{wmrnH}<BPZcQu^+xL z?cv5#t>C&4t$)Yei5>9iV3fOEqZogP`tjF!J##%YuciVwYo~MiP#yW?72(F#Hb8j5 z%mNf%ZYw`GV@+9j$wf$}!O6s;JOwWM&Z89NdRUI1tX);pZNEQe<=|V>*ENVT)%&79 z+K`*gN*)MG^;!(;!3MxoO?Yw40<-4TiWQc#M>`~ZxVmSv{-K@o6FjeH%Gqsk=5uA( z37NtcYuIASUSE*Jr%L}?=P{;h<9&-qwjvgk)gwRO)hO=7&avUtY`lMc1Rnxg*I)TT zb{=O(3U<?x2Um}?iQBWsa@sgvb!UP?@mZROqI$ug-W-=Uj$X+1{2FG@GsluAc*KV~ z2e=|uNWZyChGYXY1L)E5zbkq-!Ozgu<dyDu(V!V7*FL6O^gU)#2O~X<v?%Ul>v_g+ z65s)52bW|5DamyW?4~h3Lqlah$yh#<B~zi<-dHgRx)HUhq6STf;$z`wmS8n0Z=!dV z6yKYAEqEe%-8{~e!V6ek-*V_}ia53QHvQ3!6)DA!e_@KBy*B4iur0sYLu3~xD}Q#3 z$Cdz&8Ve(uVWw*QV#eF@W<$kk<BB7NMT$izs@9=FF&?nqJ73wc)s>5rCtVgIjzf_% zLK|RPEfq~Z{hxk)^gM)9H5m{3*kRjYKI!KGun1c+`ORbVzU~45y@%_%dq;mAzocpm zcR-<$<e=?T9cPj?467C>>>z{LBtxl0C5q{!QsxKZF?ynzf=B(N_~ld6jH>9LPO!yT z^%ZwGX}^W`DYSV~mw#BaQK|TxQhT@Ev|Cy_lkK4fI-llru5SAh+c7EEFl2Zs^wX6( znC4K^U;Sx&Z(U08Cz(yPkw=8u(!Gp1pY4YR1DFlu+_d8Y*Q{wN#mH_?C!uFaZu@iF ze;u;H>*X$A#%#A<@`rlrb+VeWN5?L^xQ)7wElC&IOw7*j^sTT^^)xP#k@i&ux-^0Q zI6bj3zW2KoM_U&trN%Bsae-udj)rU^{R;=qZd5Dy&F-|BOy@<Jo&Y3z=Wm-G07kJG z2YoAdxD)vBgVRHriQ*ytLGc->CTV;{e|P$fa+@MY@ZjUc!i5C}m|ircCY)jor#`aZ zxBmh-y-h6}H%|kQg=S%|y>}~1DslqCcJxYkdTaw^@jX1LAKKb-sUI!a?+(SvHgWgE zM=_q3kvc}teH_(NmrdvoO8P{mxisfE(7z``yWU&Jm;gsZfy>{O<=0!M4Z%M^uW2hi z?An`5<&1EXG<ze2D;B*L<(oEsO4~|uR-6)RYRaex_gSRNQ4)#oqm-)k+hgt=@CUOq z?b3<A8~s@_{tP;jE+%f%1$>Zbl9e>4j8SSvgp0<9XSjGf)txAqq^I5u39NHmdY5x8 zs!{de8R_SzxHD|9tn`i@vGqK~eq3tWr!^pK#gfl`L}3Ip5Gb}l^jh&0X4>^#hFOsk z#4nHy6<;zK<ML&2%`pg}&?p$g!rBX=K4n2ai!V4pCIN|v#TZLxG;sBzV8)SeR!ND( z1qWPR*mH<E#=8}A=_f_E3pTh5T9r_ev@sx5&nQ&(L%ex~KIv+1UN<IJfo+v(HKLVn zMX^Z@5w@i3*f^y}I}(4X9#d934L8Jd^7!iEZeKBM%D^XKr=&kusJqEzz+WPs7}Ac# zg*g?V7Nb)v*tnz1=6?5Q7zi-%F%fm$qs(gF%(iRkh_b4sGb|<SJ13H%zQChKXHPMZ zh-;NU;MpO48<uH@sUC5SfqQAve7<pZ<X1!EmRwF0@^?&cIfF`2nP7vy#bFY&6~{TU zO+gO=N&KdDCsfwxBJcOK!@87zdVA_ql#X4HSHWkwT)HnY5A{EK?y32Qw%6mis|toJ z1z9dIaDA%{o41VzaLU)u*VW9|zmbd%Q(?-W?^}#<DP_O78s&zS%ZR_AlVy$4KCn2R zBM3Z#@EYCDY5%$JkTi@T;-ULyhnzR@>)1FL4?f+@d15VXraot&O7Ib5*f{Z(NXr~b zppe;?O?g}yfx0uP710EYhyALY6d~7}l^P3thp5R>@MQCKX~-4iyLX9aBXTSytXN<o z>I%B<gHjLEX<jGSizIp|lxv@rxMMJPKCU%}*JA&Uc}Nx2&)R*Dm6-Q~o~)c%NxTK^ zxSoo1g#5TEEpx)qyh&qdZ4KUY45rr=^mV^w@2TU#6DN6>kzU_#aRhABdlj_G%v@@Y z2m`boUfTSwS{1=c%@<rZwL>o@m|11~vI~7Y%AVZoax7v@E<WNZPWgq-^+o1dqglay zb<X6>Eu%u|(?UK520;^;9LqNiqis^!rh653lXY%N*VV;t?WPa+O4}<kI%RZ1&(BtD zFI<?p^DFvBXsBVUDD^Yw0)2`%h<eENr#=<4wjJw!pjbEk7rX@0YlD+J+->Gv`V`ud z5czMej5Rz7m8tlm_vWB^1RtuVsdbJFXvD{yUH&`m24Z@c=>xr_sQ`W4CbGmJ!+j;G z%0Zj|3Q`y{&mfM03A^JQ4Fwi7===g!6)nZCQhxj7<f4=y-I>9v&hz#!Ri3UW7rU(p z1>#x}lKMHcH`qCX(A|PyDx|lh`#|s#Vs}$@DHu&NPS15I|Fd!+lBvMtK46zkpj1o{ z4_mK3B;o`aFM7nvP5ic`pv#=dww`2ZJg|n?^v`g0)>~tpyTCNc7PMrkN?cgo!QggI zn!WQ6ygW#iV9Ghu7dA%TU6m}|z`D^u^*@~UACukcW0!x&2<*56BS&slA0i9$Zjwb7 zN#KvQ4wR><Zw{Vk*LH$!_lwG^A(1sBPi0T%3I8`(F-DpTMg=R9Qb$kHQulL?QeF|M zIy~-l92e0oLzp)iF3?2B7xYWXLT&{(cd(hhzohn(3ohhx{IcR)Zz&{fZn;L^ZhUEg zPc})#e?7CJUfejWh|@+G)Mbz32nArLO`CQsR+KgN^e3@!X#8Al?#^29Pqc~2mDsE= zB0{+M*DAblDGTkeBi$>>bo<d8wp-cfli-+<_{M5Q)VQf~sSqS4ZpMpjq`j>8u<Y9z z#q#|XK<Lw#WqOM6d16+pmo%d(4G~1tNI1sYn@4XC9BWPoDvVABNb`vC52DI2#rbeE z*GqaqlW=BH_Q)faZoU$j+)_AtT0G=n<xSE+zKd;b;uu-v$P@<3$T`QK8j?9n3=rL8 zYAt3=xU@>Zwh8<3eYFa^VZ?hC5=<!c<qJ}-{WWK=24KlMy{*+Emo-Ffi0jCuaL`S` z<^xL%6(Ik$R590<3K;$1npH|o&A`~S1Oh9OpNQ%W_t0+rZ+YQ+2_qI9!4blet-5#@ z77@?h75QVpDfH!&=pP6q=O;KxipYBH*>w?$17qWt|B518Z^yv>wNN>x(UvUo*~c!^ zYf<oH($LxcT$5{7kVZhiqDwu3O{p9YOy&8NU2f4T{jp#W(ZXDUn1sSQK=A$btr1)e zb^QhDnAx@CkGQ-}vB|Ek^4PvijjXiIZz_f|ZMUtq1?sP2hh&!AZ%XRc$?<A2rkD|t z>J<~))^&?#KWDoh6N*{OpS>P488vnYW~iw(T}NHU=mjI(tT;;nBhV{;6~&x@qu9S! zHcwSf`**~?0!!Vw?xWQjEAQD;ml7XlkGe!V1dZjI96IksHwmM+9+0wVx*o@UHlI@3 zb)qfn7ms>u->uK}G5!=7S)(TwBj6dTVUp!g)U;DzHaW5EWo%IF5k=JpVV<H*yZ`<{ z7y<0vH2<Fc*?`GF<VX;{NI$|!mx{>~7C{zGSE+jFCCR~f%=dl0+?PL`kfj|3-5NSg z#MQW*)KI5Qj^f7V`fD<dNphLOPQ)N5p6L%;V~t96lT-qnU+?jN4!UtH`Z|_=XDjLq z8dWN3T#0t*v{^L#F;+N67mHs@*-_z3&9;j|0ooyAg5Nkt$og-Yiz;aN(ro2h*8%1+ zz=@fQPxBv7)0!1SE~1tJuAl4mb1X*RlHU!hv>jO7%9wF&ao+8W>}|FVE}nG&`v-Pn zxhtPIX^2F@onXsl1^1UNdYixmC*j^q(;1}zDknTwGd90`C5MWoCoTVzhQ+WGY>nRY zk^W6`p+3i~XxTL0J;LQR!E2oz4cO7v>0EPM^g>Cp)SXR4h#+L;XQ}i!Q(t1nR;{pJ z<@)QNGR`_VzY=y6?UE=+?A<s^V2M(NB27d(K8-MeIk}kA@%X`5Oo5RYYQTl<ghTHK z#i(=Z#saU%!I{tv3dfXNM^sT$NG!8w@e5D_0(pZf9wn0qS`0{Lb>GWl&sNi3?Ugi& z7`a}$uU|Z&&Tii~OCh}-7-{Q(My3XwV7&bUcKg8q<TfHg`DS&#AwnMOgcmub{J8je zO(14*<rib1!EUm{7%wlpQi-*7LmP1O;LN_Tk*ttRBqsAWBSRamB+pioJIcla$%2n+ zzgbfb)?%Ht`{7)m5>a-hgJ)4%=2BSQMh*W@Z8D=Qxc-lEty@F8EE@TeOl<z38wn2| z8R*$|PJ6IPn@xCH^p&}SJmG=8<E|2Bxhk%?%{bTxFE646^@93gBoT1<BcJshUtN7Q zQ}uBOA`)PqXyGgUnyB#w1s><xe+@EkbS-LSsJf$g{<G3Ak|JU7PF1g1(*K7hla<aV zRCVn2Ile+WTP|*Acpayjpg>t+t73(w<i_KxehbL0_uFe-rzM>5E%^Yu)%Y1ugrm#* zdFa<5?ste<EvEa>`-PpzP7(dBL?R)F>SiKEyXY5E*|<x;8Y*Ry;HAQ6<}5vv-{q2~ zb8vjGJ&SPcHdp#`Q>oi<a#}|n8HZd;mt6ERV?U{RlsN>Iz&4ANWUCh>s^=LDJT;DA zC}wkRU7^hLaA+*ui$gTUrG}gr2AXb}gj<%o4;KNL&2PLL@srn*^WQCa>!Qm<qgxlY zvV0c}dI3_HmffyQToSc*bP5h19^;~)!_2%W2Ae6#tS2x#cjIzUR6!CQH4V~j;L;cb zBD}o^=G*aeUZ0)*OA^%7@pDtF9Kg$Gm@8&iE?TPSb5F<VUt-LEJs16&?DMLxg}j7s zh1Eoa7E32t-Y{SGG=;j1Kin*(m>h4?RAHgq4f%dCJ!h*M`}flF%&W1yS{`C1T$-eB zk;b;e9g*Z9B~K_^MaQ(iq1E9ijX+TYwd4agZh-g76_&rs0dRk?BtbOdIua2x(3|f8 zl(N}+%ZjLaT;w-Fckl#z>`XkIyYA-(t~K9Ucx@iHgegIdTU2L-;z40{#(AGIq=X3- zy0U<f(nM0h;UDJUgNZnBTG@08FqOkRt8!%dXAbL>ViH3h+96JxD$xsEiu#M?uoZQk z>F&6EzaO%f6~@JpZAs5a+U+#;pxNr8;)3Wo!CA$29@roGxSmk^cdQ4?&C4%ytsJL~ z_&@${@?V$5C<8ht1{nXLHUCz!0Z9{_c-%W<&!1e7LNJQHAlJsi;hXP$s3pcdvGGXE z=kIJSbu(m=-$ypYZ`u%?o2b)8rkV=m!=vOybuq6XVl*<sBF8sWbAi|HQgVD-kJmi@ zqO=-_K2~l3_ix!m;{N5BOE;}7i+=D-PjsTYs=!_xY782nDWFI2R=4|m1$}+-eW8E) zP6`fQ1|>D%AYinSn3;YdSShuwY`bUXTO*fTqJ2CN@7<gC#@_nQV3|U16IoY}I%ani zW=oI1ZF)r^h{Q&%NSX^-@LnaD(^NUi&w8xyn^MW|#+$BTgjBg_5vM#+S*9^kZAir- zMBw}4ZpY^({(KDQ!go^`u7IfbnNvBI;YcE_+h;ZkYo<)O4_^9ipq>QszUjkG%Fi<; zl!TXij`ClFmQ>n<{(X`yaHfm3h+Q6r1}^RS(Vj!akj3ZZf{+Vb5@~guc=A;$O>0P9 z#lnVHdPsQQW3B^;oj&bu<02`5H!!ihwN!*s9L#<%hb6UJ|7&b$-zAl^K~YngVzlAm zUffF?`wzgi&|t?vVSD(iEd@=eiLG$@i(f+xI>v_TBpQ~l6BdpztTS@L-ia1bUKOfa z|1O^O(&QyT=LRW#NK<6|K*NnQxVhMszpHA+BC}HGN6SM*82Vp`JXlk_oFk6yJlk}_ z-U>>^)CzuXnfL{1dT<$?jh>a@AW(W)y0BRi8InRaU`xe9CbasB@HUicyLk9CA0y>2 zfr=e-i6iyiCnw)JB@v9pn;)3Mz3?1;-qsKbjJrQ7!%eFpDJIR`Jj-q>iZLoav-rz_ zS%MC;*}OC^Jwj95+J@94QHez7%Ar2ZM8#W7&K;WnZ=P~}4fwNvC(u&qh4ySeZ^Zo6 zh_%(nNplk}+91f#c<C}c{}>w!^z0OrZ76{ly<DT7v!7L53KgY@G$+OlQ7l<TTWjdh zRN}eWO!?ta!A9P?pzBfxnhM$#WYug`6Y6e;Zb6E^ZBrQ34ETuHN_r}9>jTW&*xpx7 zc^FQ)XyE61Y<F0!JI@nh>T9LYv`Gb3X2xakV{q>sU$1NCh|x*3)YF|MQcEA1FI%4J z4|;1Ga2iGpGxT9IwhKgjuwp#dci=j3HG^+%<rMrfp0m=!qCN~E9EQd)%{s}56j*QB zeO}%#=jK8pXY9bmKU~XP(_>J1lQ1Xxw$rVJk8G~HhLAGq?Oqnmj{W`C#2C3IsfMf? zX2;Sq{<2VCP|c^8xCS3S-%m&@(_iP&OtOd{^sJ!I+h?-nwQd-hL@S>#I-BEN8RneP zV|Cx!1#hQEfV-3CC0subzM$P-3?WKR6INymOI6WeYHYhHaRZcU;4&<kxzf$(Hi^<J z&U6?gvUcUmbWwP2z1wWb8~g%eV#8rfH#W*1)JkWUL)ZPt?Qp6_=8uCzP}Qhn%HoTt zBE{)J(VQ<qetzA-H)|X{S$t8=J5yf&tR?N&#hk$V%Al~eCTg>7XBN}0HTUKS)xR=K zr$R0K9g9(`S)fI`7AI#j#=`Ny-iN|gF>CDekrmEh-vODt8fiRvKaZ8B8el~BJ7HR5 zSkM|>3GU%`-;#OuM4qWWufs2ori+C<BAgdYjkvg1$XUw``N`f&0_1O@4@NIywNNqA z7C19HtC8smYU12rY~??e@f_oW`rfxdJQBJVQtO1i;(1qnwuKCo=7|=pzH5Mg{>?jj z-fmmcFBuFqQOaLjqz&Iv;{QPa&Zlf@u{ow@x`i0W8-~Thmo4IB<}%v=g7<OoZ}p5# z<Louxiyc3C%Y4*pLj5EWsE90FrTLf^s;vq;(lbj8{>ncxqf7vvAZ@DJ*Dm*B0vmwu zyof`AtULGrllg+*cHGc2@4FcvoyxZ8{-IsHj(;fQnY^Df0ubRM>PhH;%+y;kvIl>^ zS3y1ZJbkS;yJt7!9e~hea4Rx3os;Bm0xP)PA(OQ47t6D#3^YUFuix|G74WBJw$gwu zC^4U7?t;8{Xmoa`?+>YK)BA7-hdP-Z>{fdwJxoTvnT&+u8W)0Zr4eCA4gEp*&zd!} z4<jhg-LIs|)Fi!lQSTxe;cqc?Bu(@TS2K@d*IutwBvFB@DVSScA6S$(>_eaJ8@+9| zmGJ%&c)~hL+#4L(gz7-c)blwyJRSvhTIEU{7g2d{|I38fm890B5oXx@Cl52EZZB0; zBk~B><fXRAwG^m;HW%@P6Ba}3%C(x__$j?}xrJKdtWV5l<U2NPK))$Gd(YxH+kR6W z#j))%q=72NIqOLiD45J0b~OvW5%}@yh5^l^rM^^<ocj}|d1ScCe=4Rip(HiEu|?kB z@hcjJ;bkj55%ySVnR+-1o7go92!k#h3fy#dOG3AEhe3(;mJ1E)OlIaVL_yShBK-5i z-V^{pA(YO@I7kYZZ&LWa?g!S79zAzcNydl7(ArZZ9a_9RbkFdG0JIgcEM1`!w`#C0 z1H`O&tvkNN&l@He4&X|(bVM0LEg*Tl;*qrcX16}SC1M_866`!d1`Omo+4I?WL*Zm; z<8$NzpM`s#cq38}31BL7bORX(v5Vc(lqgvG;|IP=ckrL6-45jFgq{=~1{ML#P18*Y z#mWZTK$e49f%)EpR@OF)lBPST4*Qxx?miD9>l1BDZ<k~J?c}O{e*-_`vJV%up9j;? zUh+9taFDFy(g!mP`r?uKT=zBUjjOgdn=?2P4l{2i;G0Ednw92$OTf-BPUeP{I^GZ4 zpEzHAkVhHG2+BZOmyos-AO!-tAQ%i*QK)CSYT!o6-Wq51VDIzz8~ik``&>QUcr;=W zJoicOx*$k6c-$sJhV~}!%8(gmXe;DRtMOUIC^gJWhh;_#YFQm?%R|L6=drDntqTRE z)`vtCTjr=s?>ISc0qx&f!RREuSMJbXyN#u9O5*aSZ;v?cpa^2nh$bGhafbOuRmi)S zexKGL41NF2F^arPr$>j>kglFyDhBo-_CdQ2pprDbQY^{+N9#OH6k9qyKL+U>tRzBN z1YaCx1L~<{P1X+J?)_5naSjkwWvOt0l)fs}<V9|(F$GyJe*!17iKf*!K#OJmQ)uNR z9S}~464#R0U4s&MP`xXXC#eAKb-NHL@uk0jAhC}DZ9_w(!xgDR^GeP`^7YaPTd5^+ z!z;cC4Q9_Z=xuc{ZVqwU*#s<sPKw;INvgtH^|_hVS*=Mb1{%NtD8c0VUZ71brKTZW zY4~#9u7L|#<IUF0(_}%Mr(hQkZ|_xAUOuc!+?0D`o@rT~-aO#dBk$u*qb~EGrqDtS zDk6S4-8|FQW!=JrAN}NA>8k^tCi4$0q4m#OR3A))>&<E=e^HCG+U<jb3zQlWd~a2# z@n`30(=I9kSV`15`4k5nmaT=>bv3!VIo*A(tujm0=$PYp`m>YQ91)dzt7e^|yvM&Q zU&THM_E?}|^3|cgQeB3(!cZxbXEq$p=!3Jw6wFhc6H_ibl=l0=#!~xWZvo(d^{s{2 ztmwt79`cxi_hlCC^I<TyNuHu8l%EX6n`Mh~hjMq^UElP}Sv)#vy6jcMm_~Z4cA|c0 zbKx@M&zBK7Nz4}QIdnp}enYHS%oMl^ncT(zbA>|Po5?KEV_d1ZBbg>X>_QdWsy>s* z#OGbi73=uaiUHN)Z@t|k>q=plX36$mPVXyZx4#J;jX(k+OH>`}czD!h5W2ijuTVGp zMr~oaib?nBfCF`nYBm2A{mOr6X{^tCjKqs+@85a&;$>t$dc@pap|H04b#x9fGtcFl zsu!j2<#CntjD<Xe<!ircW9zAJ@ZEUJspc(JxMqn*p|sA|8(%Ksv}4!e3O6dncT;dD zk0j$l-nITJlf_WhRP|-bc@3FIrEL2dem+84dfVtpNhJB2*4FB1h3v!p5=zaKQkx>k zUQe=FGnJWzh)c6mZ$)p-r&=0h>-bR`n+$ll%R;8Y-{kt0$yYnuR~6nhcB|9lCOw0? z_PV-aHoksJi`lJ6BqKiLmJN;SRk1>uvd4Vw2U+`QJqH%5g^F$8OewlQYU&CamP9>$ z7%DNQGACG8`q0o+ONOPQrWpkAHugPgc(>tYM+LN~S*2HD^>UfE_YA8@J6dZJA+8Lt zl^Hl>ijdN3#J!Am9=gu*_$`zh?%tF+*e(s~vGtRYD3SS^5YdxQUoHqw#Gz?)BnDzp zkr}C5zkm}j81t-S?iof^<G#khZ&K2lbAXc*Qbz+7V_6GI5gKFDkoY2nn6odmx4#Fd zaZFZul^NDONOz%PB#7Xq(UwlS-aP*0Hw%&@nKog)dI}zsO@uGIIE@ltnAh}&iI^Kp z8PdsJ7L3gTvS>+fSiugBbWy;cA^tO;vfc6Zwe&n@(_M;3ZJR4}B3&I>aNC&jVM=64 z2Q7x>JmCds(+lGm)Jl?&M*4L7<S?&@*Oo!AQ{pkc9!x|mn5W0$^#9m0c(Y-OPr^(u z6_oC|j^~)^*a7*)r(A{Nn(D*XH!%K5Jt+P@vR&b-g6*P`qm!t~<ug9f>s)EAq}!U% z0=;rku65h4FKYv@9M&bZMoC5LNlpi`!jcIT*f_Bk-t*v^G$Er~*!VV7IMq}*6D%>m zYic@1g8D8}mwcK<U%E#5C`ERUGy(ggneo;uol@6NAf<ov4=VT*B9C3y-2+tTMIJ(U zjRN-%6|%`@Dep6`#f+A>UdX_{8YOALUo#MWV8Y|dboLI<#=y4~u}$Mwr1j?|flj4* zwkRG|bqkbWW0HhH&&WA7fw~h4)TUU<b$Tlr@&FR*ybsU`qQ-X{HnQ$mzNwpgQZQ|* z3R)iM>ouOmm<dgw#ErP;jSDKo*W;J?&2F@e0||redU04+apz|jyoR)?`g}};&7Kh- zcK>2*uiAe!KJHC0k%@JHX~d6MmMQOI{J8gt-n!OLkuowFiEsk{_vs`V!8V#a6i`j( zv{TPa7S0zK_3|p;tJd?T+|^hRSlSBf<P!(6=aCKtlWeHJ?BVOdcI8#*270pA*X!?* z8jkF^Lgh=cve@;`N&@cUd7nzPEzuJ4VjP9n{f}EDN=0~-WIxj<kVcS)c=W(4rdEpL z@b~Dx`c&&Ue7piSUb?6Y{w@eP_Q+tVeNa2fGYJvq)%U_0blU9{O1^&kEzHf;<K z{PulhQkm~As<gBzV3to7XRt+#++iRsuBY4{<PHLL;aN$4<rop#>UQI|ljQQo&0$ko z(jy$|7w@Ho5rPynNH^<dzWhG`Y(SI0x#`?bjZ{pin1encx}y3bQ1lWBZC)Cs6ukH_ zc~vW>gc)i1#EI2|Z-EG-z;sy~f;r(%poF!m2^yXQ);RG+8Xpnjc>o70w5n^G`7qS` ze{|eIaTn;MC*N3*og!FlDq;g&Ev9}Pl#sYhmfjUp9JkC0tK!I=u)j)aae$95;|QGV zHrz*1I|~^uuG&()e&;QJXlx$+&MJH#S8HF9%+Wn70^~nm-EQd&$+>pdTAvWmlvN}| zK07H?R9yt)Xoc1|hkk-@BnymTmcxK1;<T=cE3t~3yjZVlY^%~ZP7<9HElWUE&1$qB zya1}6m0Yx{(HE^#47M)uoH4JfUg9Ro`LJ>{H^gy0VW<xo#Ol{gN;u+(dcC@-npd|T zAsA$2ejJ((Heb3^U%!QP<+d6?h(XoROGK&&56WJQIBgM*vCP|56Y`-A7YlKEOqJk= z4U%!^3+#fbOS{>GMHEpihN)aB6l7LDGNI~39knL*Afo&DS2ZKS>B(|IO7&xgo&Nxc zpBP7_JeW}3LM=*3MAW2%RP^Cd@H(>B2}6oQS5m#<trZb5K5R#ZI}u@%FEpg2l1jDU zf)C$3xCw1VD8wyr9&oqab-~(1y(LVru0t*oOhIlyn_NI76v@JEcXeUc)=T#pg+fjn zsM}=WB~+CVGX&X+yuMNn&YrB34crN&@Wx1j@i@@ew1GAzIBl75!77>`E*P&`1$5U3 z3VR4?tBQ~5MR~zq?xz(skfP(mu%C<gaW_V~P|3kE)PE^=dT{bS6l+sL*lFA?X{A?- z*QXCbi?70=nl7SJ0dwQ%=;_Z97~!dSmv}-+uzG9uSg{ftdVeVCnkKbTwOlAlyK9~o zr$6rVdz`F`v+|0^?_Ht%A6E%}Pcqt<(h`UE*k7|ha#dD|;oaV@ob;+HYWYgil@q3z z<a@2NnQpwc&9{|!Z?y!Z1;N=1ez?dIY5*HC5wc<A)a#|U;;tKn^?8K_bR7O+n8OzX zeZx`WxOV2oDWYVFL`BOHRoI)x8sE_V;t^-Ltu-j(s~teTR;^idZ+S6Z6V9iqLIIAe zMR9xRT`7ZE2Q8$Io~&f?+h~<C*eOjo&<-d2pX{+ib}*vv={@Cb6FpU0_i&;H-4$pC z+V355O(}x6i*Gk7C)4Up!xhX|0bI~Y7M@OwJT5#;H1O#rhczVX@@0e(;^^8n6rhhn zua^}<4P9fj{Jm7gNwgB(L2|p>dNFfH^&_U(lP#Z0D}h5#vcudSBTdRe;!zPr7rLwE z%MJn>om8CGxe~ecv2ga2O%tN<qkLslEj%xXolAmIaSc^TM40*!1zMo5Y9>0<sdiJh zvj*3R61HpN3_?!h-2@BOg%QckRC0)mK<rF4sl`y*2-+gPUpAj5dT}M^t5aRXG~NOE zD}Y4Uxhi?E;kF72Wm2z7^{1x@dKBnYN_<sBuIf^nixwVUhWuFzWbwBPn{nO=9u9oo z8!=$ZAju`R!)_XnK)9WL?<xNPY58~h+BenL@K^gUzVMIju)kz~3VW8wPqwbG?2U4R zcS*vE)03uwYRPz!qADgM%tv6gKh}%Z@{oYCBsk(KJmM*C4+&63b}40zY&dMX<IhvY zgM-8|D)?sf?Ll=Gi%RE)*uFcdD%snZZN+&-gK0}lhcu4nd!zAi8k`1BoznG-O{uz> z(wO55Nj^C*ctKh72_jW-r`fV=@u+N37pFDP(~k~Mi*9}nXz;WB&C}K+g%dcb&_YkL zi`!Hq_;9OOV%VqQ;f7s>#lqG2t3;@OC`HPd{ucw7Z+w|e68Z(iTobOMlWgRTlc_`1 zP^R;{5em3S?cJMbK{zPJrq@Vp(z=^8L_|y~`$8m!j7hExhQzo^8`{G{HPhw8L=xb< zmEQ*-DGuI^OOaCoH%SvM&LL4A@ap7$wc(NI74l#X*FGccxFlduk*P#tgs5g{9<XRg zx~hpq$A5}jRVk;>r8Xut1LDe-N{GM`kC&$$AbmKWE5inlx!Z(9xJ-nrk;#M+g-n+u zt8xNLnD%twxPPPznF041dzP$9APdy+fV#PMrafmdoULC-u32I?R9~=v2=kK~0&TEp z9A-H-;WUeo?x_ZSIp8Y#>q=8~3+<OyNrbD4NlfY@JKcM@=1cLKgO-aW%5-BC6QrhK z$S9N&5&|z4jjnxIv_!r0ZN^+Nx8C@XBY0R4jDwahDyI0rWrpT2Mx)fU%MGGvP2$Kh zOwd(w`BnFMJ8$PtFMnCY`ngL?#`9rcP0Bd0!-Fd6(5@QPb!tSW?K&|UQ#`pTBTWI3 z8cc_w#bH`7LkCe!P`G3TUaDgAbhxtykZcz=L1E8}J@zHfY$G!8vlNJt8)%%Wugb+^ zs*1F&=p;%gqjb``mm%It)Uv}8&C`7t-v(W2rv)4{C!BCRLh)K9Hy1Ig;Ukk$8*)J^ z6S7t#EVN1#)Urw1ppxvUqTs!n+&PT56&*Jiy+m_El*zJWlpS@_9Mgl*+k}sOw9br; zp!jFbGo`M*Dl(mCd(nqVG&P~sM60J#D%BTAsUlT65myx9BWj)UCpg;tnlRxxnX2tl z9pv=k7prYaD4%0Y@t%r(xA(a2q4^cWr=2u>INeoF!gc*VYB;&$qu=;fKXRLKkSCvR z71+|9i0+Lk;az=)Ql+1*WVce8=9mcOa~aW^bxh;j+G<;>+5!MD%#8so8%kGkaL2T) zdPyj+I|g4BRafv$OyHV;^i;`vR|~}%QC7XlEoxQ!XnrMA6dBDY?q;Bc@a2R*5ZyG< z30xgD^4A<bI~6XDC|Bim^(Hb=RO>=d)yDFQWzwjh4hY<p6a^D`N%oNu6R&$0kcED= zH^jHgkH_P*_-k>KL}q}lRNPeAMZnzwoip2F<sBW2NDRs;_NjK(&G0luXh5XbRTC^f zX}K^_r(54~nJkuib{kG2^tST`CM(i~?($Fes=@tn5q=M=x)nZ-=gZ{1gYB3itLZF4 zgo>l%?ogpsI;KvJ!FjYAt|bii%_6e=hFER7(TJetkscnB)GadC#m^odN@%s*VVtjN zKS+@Uk=o~sLnUC@Ejc)Vsay<>TQ<3p6aKN2W$5inHkPE}0u#X%;AV)G10{1BCqkP9 zl~?%ODKRywDuqLg*bAM?RV%X<s&Lc4T7PmbH)Kf~)oLVE?5~>!J|*R@>WaKsFUlSI zVNl*Tb6)X%blZySDt(vgt~=W{rYY|1#&}gHn?&i~6<@hUQpG}siko(R%8QNELHGU) zZxGYTo-4iF+AE!L-*{CLo$vMW!;py~ub21a?9VJ!hk~o~&==5pRdGjT4F^5*6xrBn zm?ka63_@#gloe6QP9oO2(z<A=jY&FNU%kqZh5FMRX?lIZ;as?G%6-6JD4WEXN&*gb zs0t^%yK%p)Q8N)uDW6V4l+O>#ir)rXTrMH6tgA|NFQqC9mu4bPH$8NQq(*Rvs&6cP z_K3@3o`-b#2Nlkp9aQVWW0OC%oW8zqX+-+F=lJD=`ug3A80w~rtY=rIo*z_-)5_Ky zJwsjUr&(7us&$vWin7~oM(>m-9XFWbDJHdPhZRK?#2nF6Leo4&WFR*eOXN=^WFcjt zB}y8OUbnDlDS-(H)Tqw~tZC-K_DZ`@n{>^$H++~4e7$dPhNM8SgzdznTU5>o$5N+2 zma$A4#+Q3!&Z-)ofhCr^H26sF5T|KZ4)|Nka!X3+2~d_YYU<VpC*Z{?4ylsTYU!$V zZjSCWcrH41wt`9NMa6xeBUhXCah<YFJedA(k{@YYQ^H73_BF<r8I&|%iYhtzal8{3 zs-&s#ZO3%eu$$ZEUAbc<1?<wP=HAE9<xh)De-?3jX^rUaCz~0x=iII{6;HB7PlpJr zr3n=jRkcx}CTOYKTqu)-=U*6=YlU4PnQn+>MeFUwGfythPBPx2RcW4I+_*&PrF_`f zS?t|fcH!vt6h{%hJA}D5$dyQ`@u}H_iv7|}LBuGx7?Jcvf^L$baa(mOIGz+l(u&<a zRu98Wv%eq2ELNU&V8n38M-Y`;bkJH*PK@c+xOOwd$r~Nxj`MO@B-5!Cx7t!|&EBnr zRNIbA{?u~!^^8xe<`qq%?VP(4P38erdosr^UCLC3-FePCu{a^2IE>98B6o?YC@Hd( z&lM7EOGc_yX}qeatCj{smC#iU#6`~}trbUhrH9)@Xe1#m3sRyLHmcB9JOl|!CMqg1 z+}XUDs1<r~mQ>3ww8D`n*E)6i@MQdkSpoRvRZRAG5R2Z%?6wstsaHdyl;|YX2u6gP zDO_lA)<r3n>b9!CB`R5#5gQRK(_;?cw2gGGlJyQ$ReI98y%<4prz&0578Z--Jz7%< z#K>1|QFlJiN-Z&6-?jtv(?w~G@@Y2HcWpWnv|8hPg|kw6ze;S{m_;uQ<th)ujj?G? zg%8!jAhz1qWfe2>Y1Oj@y3(&!nyPwHFq(izExIXRCNfryI@O^}daz`^)HCvSVN{tE zuEiSv0DFZdkt@)ZTK>lxk-tq9F;id&dPhoUpPLrx4Kx<{Ues2calJrpH^5TTS_`{h ze;SF&1{&8w@tqW+>HX6M>d1)^H7Q7YQl)peM5{zCICaRuE=q9tEX26XbHk3Yqvr58 z-;i4oekvkisSPsVaEY>Ep?&0OmC%B}eO@(sRJP*YakpQQ2VA637TVU^iY@TK5gX04 z&t`b!&cDiw4`+7c8CPX~Pu25h&50cL)9B{LJ-%#5l<b)93P<3BAzf*uw%b&tD4J>S z;zUS@o}f_(Q@VlnYn5uaMu_uW)>;!n)ZwTvN0S181H~$BAxdSvTJ6G}cuxr-HoCV$ zi@aHMtuUUjc#WV7ndz-ly`Nqb0L5r3J9e!<R}!a4O+w-*H^d$wE|RB*P|wqbA>FK& zc}=uWGW!Dswq~^GRU0Pe3IXj(XVZwr%Epd>`H=*c3U3sMX{8)RR0?2!5?&Nm-#G_r zxk`>egbTu7#vWBA)1DSE+^%LXkrR%yA;K_4+3U;^z#!>V!o{{+u0qEVT+s7_B~;aW z$m{K^iJxu?mlta0N@U9pezid`k0jU<9B6k^O}V1tsP{sGqJp&P!mN&3vCtVXHFS}! zTN7JoqGAPu60|^R;T07?C3s6u#zoK+?_fpv(9((V8m$F$s_OFLbhR5oCqpS!@?p2Z ztq$l?;#E*+i>8_c(GgOZ0gn8Zp9JrN<SnS})1?(wxZ*VIo*EeqN?8?Xw5<;$MZ;m^ z9+4^H5oR(0yyJ>Rr$aH=6Lvu&bOI{i9v(#ICz<=(&BNfOKYEn&FR$F-8@O_ZFg3Gy z;<Z8Y(dF5St%~NKWg3W{RYO(A^^$5LArh{Hptd;^s;X#+*e>7H!aWWNPL8T!$AaS% zSmL+eYl{{4Lx>o&Tj6rO(o-!wQzR2ie8p)2#Ww{L6}s83_So8$N!Q>%;ebU!Ka4gm zFcjCCs-`Hi6%kN!Lh0xwrh0IPrAYM9Yu#}(qKa+l#Sh~aNV`)4!3t@F(6W`uchMfL zdVZ4}mWi=Bn#t()gFjc!y($(-E~d?`X>+ISadx$m$8E;nW^__%r%LGINaD0$m4AjY zS>bPFx`@YRGja%-gM{M}^r~xl!gY;8y2X~s5Rp|h=S%}}f;gNV1W!6-(jxCKtR-xT zO;so;h`1R_zPYf~Qq+b@fxf8Hp!&WhTWi^XH9Zb0QnVly-c_cPK~>wg929eVbkQ4g zNve+8<$|dasyI0+?A;tjkJ9>R5z>k%;VLer&uU?}8$>3Y)N)#EcZkH)wQ(z!_huJE zDQ|ICLblHxTUS2}idl-URXq4MnhqQ9IOh^UFBQYdN4(+^cQQ__87ivkRbAri+np(& zlLVTL98C0Ts8h>C!X}~9-Jvf^;Xsvg=t80|k$N!T@c5}pdiuD4wa%T|?82;Y7LJA7 zP1<hN5kA)nYFa_W?ozZ(l&)P^%eb36dof3mS8#xH(j%!=Yh3HM2%<)N*^s41h@Bbd zh9S1jr{8&&nQLOY^p^#uLtjFZg+<FOUM$ub(jm8HDE97f=Lmqx-|m<9SmVj%TMU<l z_IYyEXKD7lM2P5blca(wE1o&|PnPXcAo8<PkJ~p3&FbYk>pnP=HwneLKII%aK%lDG znq`%CVh!^BXywZi-6YCx-wb3*c;&Ge$+UTf-esu{qmDLNaP*+1buJj1h06X8T9<^B zQe(9l?h?`ME;?Gcj4ydKEfW@pxqAHPDnzv0<+*ffVjY^#evcLst8PY!>MYsP8aKhF zj40U0aEVZsn3-a^-Z>WIY`VyYE0m$zX1OM1#%z{99-8CQniqtg6=payTKbCV_}EKS zpUKgfQksY1Ty%FOJ}5~M!xKOmU%Bc<$2VHJNF;KB^84b)wpzMQyV)-i(o~2{M!RyI z!|@q5%C`9$HuyLol@iY&zsH9j$*S{luyao?w7Q{Md7cFc)wCH86>T?$i63WL)C8%9 z+Dd9fpo%U{`RZD|>;U(js%ljDx{8&=gIwt5n(VI(MZEs!9GCOClF+|#FdX;v{a-w6 z{M@-NX;j@|OJ|!FxzdHlBgDDHktf4B!6S;?fmcCG<1mSuk4kwlD(2&i%6W_2vV-f8 zkf4ETfZM9tZlN-Mj2PN24O!gcaVK1cM~QZ%1`dpNw4$IP7^v+f@*=Jqx!rA7W?y(4 zc~1K-L!2t5QONAo1sjl|sWqmgt`<}=x5*))wGs`{w`I{tlh#Kj(9<OA#|_vwMo1hG zal(N$0hKMNPK<MIpKXG5&~!CXK%EmsbdsXEk|)L=Mk-FIJG^=c%#xYZSFZ+0YDg`( zI@dhWXuYe46N#cgxvX9q@mJ=ms_esIAdNsZ5^)g`6&GsNI<co>?a#QQ*t=_mR6T2} zH0e<P09y)LNeDIv#V*yRbxa^|i7L9q&Ye_L)8wMzYN{x`AKllDO0^?eQFbDA;Hq2V zsyaR|S}$Kt5EPZMU51J}Yw~mH#+6#Qon=&Bt(k1aO}6+>P)SC*n;Q3lHdh?0DAC8D zk2G59E;8Vbf|pV^9Mi%;9Y}s$bN!XI2YHK^Ip3O2Yf?*ut~qy;?Mo!tZuCNz!vROL z`Zf70iFW@03ul|oH!GP+opO^dLB(zwX&~_OiZZq09eEUqbXKIee&=Ok-*Y77`1USc za^Wdrr!GkbVq4`KjU01RjA)LyD$v!{bdxNX9I4B<JEgX5ua#6T{K4W?#+oVj0y~13 z1epF6n1=gN$5A=ikt!xR*6ZyKRy+4MqTBg$x3-=iWWR7$=d#-H)zET07_G+8${Lx} za>pp!lJm>WTRBe1i*YtCZ5jSiT-v<3#*Ls7J;Ga;7~s4lG<aKMRTBYex^n*jEnMe8 zlRn_Z>Q&z1EN9Im@e!_#+tHT6sa_{asTQO}-L5A`x-4V7+^;WAn<6vkA(dcRWrm#A z<4h={B2JO?0ytRai?nxJb_YCul@8;}#5=(%*UR>H?6a;+YTFuArk93exJsC99B^58 zR%jJ6)v;=WUX-RdxsIx7Blz@M>`mmsIIC4~%>L-ramfg)x0r3JJ-)qi{{U-WtGild zs-#<$zEn8`D2hVVhDozAMXD-_EpSk0hpJkIy5NcUtoYfm)2%wFW8zF)qky@hu2^!= zV3DRdaN~iCYGo{Bps)=%xhR}t8X(a!TqV}y3T44zOh*PQE%6E@h7VL{j16><aR+4= zXOj*%N^f!6M%5CkTEvM_Nv8BGCOWB2otPz-%b+@vh9yN>Q%H(^Dj6?rF(f}4X<Lb@ z{V%!0Cmc$&(NR;@f?~}mq)e0Homo;N)~?D9;IM}39du~)VaBd-OfE7f7l)Ek_;Ff_ z;A&P5I>u7tiRGyr)7gfeWwCr0=+zvkRnqPu(E<Jv<Z7MO!^Vy;<4T%aL0Sbi>3X_7 z><T9rLrcT;swyj1>sla+<8@H!u?yfzQwriZ6-Lzr6~qNxmb>Lts$f@9aVSD`FkQV{ zx#0*aRLLr6i~hb8z?H&6rv!2@GT~YxKy@^0Y>I|GT6U`T<%eC3!_b*=omFLrTouvb z+9g#|kwmRJmkP|d(woq2rwqiJ(2vy`ds3>3wo03OF<C9I4~|U>+O>kO#6(`)Lt&Fu z;s}a|##3Frn{gV_<d@js)uj+q3h$X}BLYI!3UoykOp!5ck$S&R<i2&ZMQYs(pRLfE zx>`Ak)Xg{+&Uduw;_({chM5#p*uNBXv_9GW2wt5w>J#GgP0rYlvrW=+1ci1(W-7Vu zuSN+S=3miaMiK=(b(fmf&dh@}(Cb$_&B&g;JPI2|8!;5qYuKE_gZd@`xLl##-hHpq z7zBnNg}_Lx#a|1;ZUacdCjms8TCH%>wG;GP!eN-v(W3n(I!wGU-JK#Vmz0}X2Q4Ms zU3pJhYj%oAx<-oySM+T23nnDR*ZN3p$pBXNS&s}^k`Wq}6c}N>2(1_vmkleuhaCR^ z;Q}R4eP=p8?KGkYsfs(D5jN7e@Z9(MLa;e#bdg`=uhA<r?l)Wg6&KmJPGGsn;X{B) zwuPrP%BYm$3?Z{ZVhGu}V$B>$Vc0EEcfunlT0ZffZ#%Tlrv||aDNl^+t-kvv;I?8% zRM$mRapD}a!-_&;=&plp#Ufm?_{g6I2C9i&)CI{%i()plR3+@mac1Uwqh1;;5tT0A z0zeW=c)TObjOQ9HD;beFC_$?_;XbH^bJU77>#kJA!W5XHaJQ71F<y@;lqNN@L>fs8 z)-fP9<wYEqrvWpT?ozDM8GV^S4nYml-Nue!=If3)+}OyvK2Z-vFzkZh5gVLD;FIEu ztVEnt7ZEF|%Ji-sPiM9+J*dgUY<21_s)e@=y!ch2CGS^C8tl|N7L~^i95Y>e&M%66 zc#ke>XT7?W!%Gg{!}LW_2B$KJ$foag<<z7|m0s1tCEC|EBTk{2%J$qFeZD%hs-gwL zhjh3*A>v<<iGy2m-0pGUYgkRm<`zN~odp(KvVj<hYn3^qAR$)Cf)lQ3jsif5b#L!# z5#{J5>~1RQMZ)-=SiChYwvETMLzpp3Lu*|D;VOlvw+I1kxUs8g94RV*i`Gs@L{CmM zIT>^%P}}vcJh^HY1*V!OOFo3zf|(vA&Ql^Fq>BPz8WD5?D|wHb7N%UbTt%nkwk{*k zE)BLKyLG#uL^A2afROHrikibszG()k(M7jfY|zmuhCuAEN)>oaS(9j(sOpVJ*B^#Q zR1iseaUAY!6|M_jt)^mIWxCT1o?;Q0X{B~k)mrao+lX;t+BuWL#e^^<%b#hK+?lR3 ztcB*p8r0KG@iG-!;cfHnw?m680NHgQ%p{|Ke+o6Nmj%q0xF;R6T|kw6K`pN0_V2|c zCYV-|se~i9U(~<NGnFgZ_`V_xdwt2*+bvu+t#e#2S*Jk1>PCVj8KxgO{I7bCF_dtG z!p|~A1%syl00JtlI(DuObDX7mCLVK2N%lR(y=GgwlUz-nS|%FtHmT9U(IN`lNgQ#p za77U{F{Dd8E38`}cpz%5#|IddIU7wH5=(72N|kyuPMizUtd65D8Su%Qdxk@%o~(to z)m0M>MU`cf;GGj$2IMDUAfTmcuDHs3*dw&TmEn_j!)kU&ff!K8Ynq|g-o%x+T5nRp zkk&26w@)WK0iF|Nidc;7n>F6vJ{=VsxVY7+5GtsgMr4<X*IMrjbo18$?b`bW+|bnu zHL^5|l;uQT@yw9h5d?`k!_$MjI@D<X88@$7!7yaIRr}m=Fwn9cKI3uP)!MxmPG)X9 z(JTzIwwp>y5^hz&<2Id>Irf!HMokR@s)Jm<t$w~8=6+9gl)5}2?QUP5;f1RHjRg_J zcYoQJK@mY0fe;NV#6sOsOII?Co=m)I;fx+=VPmlSn@J#D2VJ^*T|_E5ZNN%nhWv9) z$C@B{qE4pGvLPW(#awEkSI)lj?82%Ibx{dCimHq6;dG^IwKHFb3O)tXPn6pgu3ZG1 z*s8*LbJRRY#6&)IRbQ=*PFf|ovZ|KX4`$8%Dq3>uqTyfg6JvtyH=~m)_chXqhSn>N zx(K8J!+FIGVX;t0aWli3yj_2MbdtTgiEz0|?y7g3UxjOi*G!tOOT6a9@-7q{SM=`G zOwO4qDs5i8X<;8m&=XG$$5Y@eCUX;R^0?~!CDVn{4~nizNTiBM<xJ^{R$raRN}fuR zqGLB6u2fYss?jM;w5MjwQ}KoQNvP@Y<LKZ0em~(qcJIHQ350P$!E9HAFB&MSu4|<! zjGTK>FGGfktL3g6jji4xHfKV4NoZ-L(FU6pG4yJgDsCo~qS03|qUTH}3yrT=$}#BA zXI(a6ou1=y*b!ZBOn9QOBD+;ylx;GeWv)0gx!0F?fwj2umR|~;8sN7fs`>gbs=VaW zxp!EDbCSM6s|bmWF(Y5^CX2bjws<y`droV}o_s7`MC63Gff{~4I2^f~T^wKdExD!X z-Xo`08NYs$?~mQ2HNM;*5#k65R=OJ?(Gn9XG({GH6?*W@7!g{B5<6(yG1wFUY!N7k zl<CWE-}MrMc(%d0#c?Q6=f-M7OZKjTQw}}LcV27cmt0+C`7O*+;>D=fLL?buDi8qb zT!03(&!ZacpQT`&(o;-+W#r2>$;A};cL<Kdc}urKs^YBOKSc7vltP(i<|vPnXWsB{ z=^Spi`Wo`noh$H`D!==jLg}J&r|PB>zx$v2j(7h6DMZF)`Xw6epmVt;dU9EbjWQ+v ziiCQC&CT!S)AX0-up<&*=*$F5Uk~zcnHw6e+GyrQP$KK53YQPjb6{NqVdj?$&Q4!( zy><N=p!Cz1xru%6ZYC4?WAtv6>gAjIubRBTnA0ll$R*dKm9Hi57c-7n(H{B906*DF zx54>PSX%QJB%*xYQMrHioW{8P=;YC+%5rS8%gS8Fl*WA9$;tl!>{(^+{#G~eVHEkp zl&YIQ_<H%%$g9qXxZLMnQy$g*9zMVS05-?x?<yz%0M@7f0Jhb~=jSVb{%l|SZH@kY z<$~x{57EFOQ?W~%O)J$@RP4v+)wxYJSCOqeHC~E}Tm<RlH1gw6bN4O=?usAi-G>)N zYo}22OKYaMML*KQ!XJ}r<W60N-=;)~@BY6V{{W`Gab~+x95`@=e%2eTQyTAl_srLW zCEj*eM>93;C(2$2i948FU-8JTiG8b3QkdVj+$GaGNx4c<Unn=j702RSt!ffX_>aa3 zMxI9`@f=E1X3S`1w%ctoL2a>YXqh5u6hxwbs%-xN<;VZp00;pA0|7rF{{ZkYABD^t zLRje;e^mT2)cDwM_XfZpiiGY#9cSZb(9ZL;mV7MwAA$|F=5({+e~C}`63)K_8^?EE z{{Z-X;x!N`7A;H=>l`?X2Er7~B~^pAaG*n(xbowcvaNFtp;y)8nJ}l3QY+0U$=Zt9 zstct3ph8luivuJL{j&v|wSSX|WH4H*eQN#`%ZTi}94bPS-wo>aVL^R?E1Oj!jx#TM zfKSmb7eRcDwsK*DAkuGhdn8#^jS8{UdFcUPNcGd!Wc0l@^-kb_d<Xpszk~s0J(7M= z8}vjY3FWn}ULLV0)SsEJcrx~*q6?cHz*ka=iPFQ`&@0uh;^43bW*4p;dpYGG3)_l# zFJ{<RM4i^&`SgQ;xbf(SVfBJ5>?HJaW1f|K+=AT}p^Xi(4Gq$@SslS9bDIJyO%{tb z2VSd<JM`9Gi%*o#`k>;P4YSf;MR){eXC&;nPQB1&funTttO#>%OG2wv)s#P_=0Z@Z znknN<C^hZTtn$h<J<1sAZAyp~p4ANMe0H%b9e@m$3hhUTXL(Q?!XcDtN*8#g60v1A zIF>bZ3E`JMAR^w6d8k@pZcy?AUu6lO4HAZvvBjHX-(#(rR(>il<!}a?OgcrTAP{=+ z29k@qIzROt0QBCqZd2?Jzou?e+wn0eVa^9%Y<trqJz>4|Kg_h-VC=89@GEnLTlF_O zyqMT>d&C2DW35+41jsW-*h}&v948kC(wSS+faHv{t{AL9+EuI%9b(WwaUPF}vtF<T zhl}RGA$QU)Xu)TKylK6iAS;V#A~6q?u;65?WVsQIW91P`bP2=e-zCMxCcr>#nimyY zo^GbHvWKWW1>I>3vW%>Og5!EzODy)!Yx)RyaoB@g^liRj7jUHw%4{v|-BpaboIX4j z>tr)>j`VYkXA0;*6nIKSd!&V#I7F?qH!4e)aAsM@gNn2@P(kP$bij4RcBy=d0~TVG z4@5Y6@cdzNT)m5MmTr&DyK}wKaB=dks34q27d)m=FdzxW^hZ`aNBVN}e$X>v9N1^m z@ytF#u7k+B(CitS6O({1NU_nu+*T*v65Qy}Nk?7gDX+_`y*tkE3QW;$$9n9*ndmJY z*oV?9k~4LE0B!|*Jkxk^c*7_cIz07HSlsMZS8!<+T2X`Z-W70Sp<&b1E?hL>$$2T2 zQkiv1HoHz(=h|KYR?5iaUH6qNu_pViW%r!_0MedPD9Fq%Q*@bH;Sr$n`1-+?u-~K= z0bU`gzAI1}2G~W%t&?>1=Mx`Zl`2JSye2nahzkf8vqn@U1XqUgR+uOlUQNi;Ca#Y` zC1C931#Ll#y9uaL+UyfCY!`IrK{aBv1g0__&}HQl;ZXCzvf4P?80<dQ@xI`lWo<W$ zqRq6BBswdtp@w=h04j2zbbEj(AO~UtqX|!0a+0#=@vsy$adB{Si#VZ)byOu=wRFmk z#MX1UyM)qc1EdQ2);;Pi<YQR-&LvY2+v{#_V;3tUcgpUwvK)mkoSEDb8*Ckhs$)tX zTA=P~F>v1tSJcF(<^e8}5zcDHD^ktN)ZN<%+&r5syfA_2{iu4g5LowV@s1(d3(|-^ z^(OAE6kUrsu}9wkHauekqz^cBH{@xSaiA$G+RJa{oP1qAKDUWqLtU+7jfT$zikd*N z<h_z00>w?$Y&;*NugjeZ<$lPGS6rpkn}`kU#Tj=lt{vIObyVq-)-!@fdIssy)6q)u z4&0Z2KpodJYXXWK6KJfQ&Tves&DG)5*zRG)E7!^f@2o<!sQl`pH7u(5{{WretfQZ` z(Pcl}^DDJhmm5fx=z8Kia|GV2(X+FxLH&PkTbx14Tq+CnYZ$)3#IPM!hSgSuc9v`) zDmsi65RJv7J_Ax6>C2!13{yuHG@fJ8Yb-NvJxzBhs#$Z}`*^e47B^$lty412CDh$+ zhpeU-Qib0+1;enqvpgDX$|0=Zm}q-No{*HZX9Drl%%N$?YnA^1PcBp4beZ6@I=DJw zrz{zEr&B&6ezh7hEh~m10Mj9bLb+<iI+QR6ab*#G#t}aaF$4jM_%|<Oq9ZngPJ`pu z!y0HPcRzT>p$H_JB-DT<Rm3+Um2q2d3za>R;5)~=c$6wQvg`)V(DIcY6mSs&gSWi} zAQZ!nrOjk3!;4jYVv><nbEE1`@!F<whh_@CAOrMJuE3z^gMhZx@ur?<Oilyb#y1va zukWgeD<6ltYe4NVIW!>dtDQ42E5WZ|n5!dY2McOcFuNVUP-QH(9mbtl4f@7%072m7 zNR=B@D%NbbGLbFV{*fh>__2F&fytBZL7FXRpk^;v0}3125GCF`$SnXFLa2p}i%P1K z8Q~5Tp@NJ_{35y!Cdzl{rT1H6JVkC`NXvi;QYPJ6mc$yfH8Bl_Bnft#yPF7xRA>}g zLi4#(wb<+$oB`dqyXFI+gA!HMqo0!vV_w6bw0GSEi6zU3r4cazsiJ5q=p+MRi_Csz zuvzBl?i@l5$`iedAzHOfzyf*<AO;b+p^R4GU)4+P8nqJp<;2Hq?x*Tw5Eye~hpQ^! zu3==ioz@wbIrpCUXfl(g(LLNO2)>-%%riTgk7tyZ`vGdO<!^9f&6R6T%;QTA5NCMS z<#(Q;7wfwJ0JKJ~(@$cjQs-(u>*e2dvf}KLu-K-q4|Caho!7q3{&PTFZ~V=6h{%Oc zTt-&BoelGoFrXOLRzn|X&!wnq7fx%+Q_)4#juz#b@oi7&GSENPmQ4{=iADw)>ll)F z(Jz=+NtOhSyJ95tG*%h3Vx4gX*53jnF+yfaj^CEAa7i~qZfN$^<vN{R<kj_^kg<Vj z(&gXy!k=-KU=J}fWZH8rDPLlJA^M)165C%k{vn`#Ka30loegpIFY0|s`k5{EpTzo) z^(@hN57aGdcYI!xUk1O*SN#6~<X21ebb;wVR}cnIqU||b-dk(;C4B?&F3R6mN!F{I z{!`Gk#p4l%E$R#WOWnSR8X+AM34O=`!OjCd^R&q86VG3=14*z}vVyH)mf?8DHR5Z$ zxn9vi<sjs!YuFXXZ_Q>V=CPM*+R$-stjB$yxcdIQ%3EfqP$Se#MW7L}kn1~8(7@rE z){FU_R->md)~?axjOsY2_e28^zDm_zV8t&GIz)%oBz<cGcNlg>iajP3V&&&FFS~XA z$l#y!0qdqSCUdCgmAHMOVO5vO#Pd+U)ja~a9jaXh6wrFss6aCgwNlfi>5G_H8Hy!B z=F4=cm0MyDDDz}lA!_SvX{}cwaL`@{gAUn*p3|l<psMfy%L|j5FxAHBZqn(uTDBk< z>Wf(uRl>x2*D1Ffrkw@_MJ+AH@^E=^GFk9j6sso}LzIAc64Q6dbXS^`0SYyxGQLM4 z$_09JsPs%5Y@fl5Udq8-ONLrH&SrfjqUMq%tpsqG)OPv#US=uJm--0ZH6XYoyp@v| zlB0H{Ju6zAKFeuNk}#$>i844m-uaXpKFJiT+jqWT3xO0Z(ss(bO4QS*#`KFC=n1z$ zqFOo7z>;us_c|!T*r`q#$n-klr&80vK#X8rDF=(Y%8Oc?PI!74Kug6x-T3!rLkzwa z4I=3VNr|#_)2><x)RLUIWy4Gc?T1mK+ie^R4#?aQvjSt?{((Ky5qIYvW<H{bq;!Q9 z4VjS{3+<N@)@62yBRbAMQlnF1Zv$bfsC0)c85CL@Qx7o2X$5pc09}~E_gZhTU|oI5 zaM=`=8Dt0)GUFnsA}}sWS;07({7b@r%)7sL9ltfz^IOfXo@u$g#U=56Wv&L}dc6|% zk3)<d!^u+om%w;tuYfy4mA_CIwg`uIrl(6Z8t(1kU6uosJT#Phy74nk0c^oG<-OAg zQ0DlC4$kew*7IUb)6O0`l?U+=4HP-$q;NH^s{j^jgUbxcp`Qm%1RT0B46BMIqQ=oj zIBo#5xMs{xu{W-&>DE9k(`}d$Q$zA@h1Hu;&tk=D3u(n=p~z_M5z}O8${|2o31(mh z0|8pBRIcoZ^0hr-alssCg?K5?r|2`6NnGd<-~zLt47r)WdkXe1$fIF1AjrhELnC|D zV6v^Yg1WgC=m4ED7A(5e=XI|!njw5_%Xw!`s6YjsV0miBA!Lh<+kztE#Zin=(3-qJ zsfJLBrO*@!cnlcr`CsSe7xBgUY(UuOFU+8M{Xi&aTfuL*su)EO>B1eB@`YHVG?ZOC z%+#u-E?q}~N0WClfjkRuK$6S7;V<e>2#rhwn;GonxQepVGTaswpI~AgnR&>bij5b? zj`L96RoQJ(5dn&g&!`NIn8qu`WkgKI3vdP^7eUZ4yi!%~wBB6-{-`DilicbVBpo57 zG-&E2Y~o~O+(+XsIQhf4nDDWV&<9_}xTVytymY`WF<5xvQ*^pnY;U_hBHowE2sPry zI&e{tjR=M;ho!ne?X}%wKVWh^a5>i#a0iaISQ>FuMWOH4EqXQ)i=fNQ)8|~OV%lC` z+gH4;^@Z1XJ&Y0<;$dF1`69nz9ltQbV3y7qS9$i(w|Lah^ZJyfen800<^;{CfL*s3 zSmFcOq_1HyLmP%h!V&r0w_6p{6Eh%i4$Cr%#ulo}^4fIg9&N_U<QiCB9M*LP4Qh0= zIFT@OE3I)q4qDOPSD+hJ2YLX3o|SjdlC6g8Ne)I*9Od+Dbdg=WFEf|tqyq20f!QX( z-lEVnT6b}e;Kl7N6qr*v(jJIaY7B~s!28;B8A67r<^dBya1la@V-8^vS+HGRM)L~w z!y79cB>*`H`OyN6mUErz6hN~@ELV+MmnCKM%fo$LpcuyrX^o|n$77v9<#yb_42+yg zqbXg^=%ZCcT?)rj*gWL?Oy$y^gDXqc3bcj7?r?XPQB%TOW!3>lk}wAeW1eNHq<a%~ z{H}iAm<O(}o4~qR8pl8N9=&?S^RJ=a1%jZY@B2(ez+)V$(*iZdMh22YGG-fNN<2VH zT~{|4OyadjCpnBKt+&}s7`#PxFe;daAe5^x_q)vS?wHtdnP_%vD=rSHs}}?TrFWHj zX7!b(fK{Ivn^<eSv8D9h)3$jh$aoPpnUNgxf)0p}A?OG-uSt8)ypp~6q159L%JNb4 z+zWh_c1i*sF!_Rvq&|sj^<30r7q?+^fLAe+W`!3g0`PTZD-{=k-KDmaAQ*+@1o^q! zf-mnORQ{$}&aBx|a)LbWEY7EJ7~>LKFbd*V8}-fu7TsE-MGOo+6>k_=TB<{>PP03W z2i`?`zI($|beN`r({6O59ltW=l!2SJ3{?ewN%h`fv+o~^H2NJN>l!N!Ub@~E)j^kA zRo86jwg@1|6fM@>+b=sgnOp0uSr!GL+FIA>A|ug$sUty+15d_HyxTU$v%kEcR+S7@ z2^Tj^(wP}9dduKse4I4a@irN5OC2&0O@OSxuU|)O(Vj?Vc##7Ds0cPgF+~v9w4*@K z;u4&m`xA!GB{Z~Yg(v|ktlhG+DYsa8$Hj7j%UDPefvI*16=>WS04e3i7ZtKO@5NVV z0zgG>7v0_^^dhcythEiD*#p7DvgAyS*^&nl3Er(cM(r8`XF3n~VByBB0}C<jdJhF$ zQMoppvK3$kA@szgb`tK#s=zHV6PrD6NJ6%SUZ9V8d@k}-rPCj~{LQDePodo%zbpKY zL<K38p=<vDS<lTAd!-KvC~OL^8y=G+BcOtgf*Lz>%+!i<ZGbmLVXBrUV1!#pRXPFO zq3P5Y%mwg_%R^h3w^e*WYCFyiL$~%M<tc)a#&JQ1Ap$9uZm#Xjc=8zBF9ea)9Cfd( z!i4kyWKZM{rassdO4Xq<ftxQL<Qap+u#RDZV3ZwUI+mt6m{WE3ur|t^8ZBQko$p#S z=`$RG5oR(?7mZ;HrY2Pd)tO?*r<RP(1$gj+`xQDKB?gg8HlrMed2m=RnZ}b(%O6zE zDm~1?#mlqKFyccn<-K8yD{cmW2>zA4oDXz6VyLGxO-MUPy2(8X<N_uj_8blZsnt+2 zzIFXzOO~UpW4mKJ?qt7J%eI&+^ggHS9ltNvw0;B8QG4k*zi0i4Zpo3|V6CZ7#O+}F zhqFBOGGH&hpf66roQPx%P3jH9r8DrcCK%GXI^7DRWn`GFyrv>UmxwVL+XA5coP>ig zkLtNBHq-acJt2T(fo-rfl9AH6G0q?noEou?yJB(5faMWKcPvDKt<ZsH#WyjiMgqM> z8<`iV{Hs+p&`}0gcO<ocxI597Sx68(TTtV;MP+~y6I;g@GC`gfwT2X}C4eiQCIwcQ zCiZI&7!w<NT%c_^h9c)euPfDNqn*$LY>Nc2sjSQkBd8;TK5?_4gfT%ZUtP>6?maEQ zZBRmRFW}4td#>UzquAGK$Pgy104(dURa9S-4z<J_N|!>9EzLheKLUZO9xK-Kj^CBj z;rvBT%ub3vZh7Cc`3=*r--vcu2;od!nwB0tJUQhDXtJ1b8-+5_hTO|CiJJCNbzI0G z!5Uh+pes{o5x}V<aK?eQIf5!X;aV-9P9vC6oOS5E7H17MUx~ALI2R<-N)kCNh|HD= zU=rn%9E#ZHG)=5#r*y6HQ(HuirAn{^RKoiRULw`K#`+pUKp9Mi*;v9{AZ&nbdLbo- znuvnYt1#Vqt@;++a!pHnC^_INsdT*TVx^lzJV~CcrHr$pU!rU3lzb%%d$Tj#GNxQ| zjkZ(i4oq`<;zUJ4Vl)$p%r5F?A|7b3EnX%}$_|TDFtKJWOxlLJG{akmP1BPzVXKWx z&XcY3AC5!gbdajNUj;>E#<N*{-kf_%+r6dMFY4ewH$B_(y8C<L0~dI0P-N?j=YK{A zn_sdKMslTDfKq)>nkS{U)J2x-C<i1w%~HFLUR)p$R6v*t#RAb5$D)Mc{v2sBC;*K> z*-Njr602<4$m^F~Yt|u$_^w}TETVUCF93!8%4^DAj<8FF^lX=Ls(`HbL%cKXgyl=I zkE|q`4zxT~qk9h#0V;!RX^V_95SFCrZUg~P`hNwD-4n3Hs1XxM;RH}vt;(fDQAu;g z+EBs?i+9f2MF(k{4xNa576rKC$#}YnH5F!bQgIGXd&i_l88#zW+!-k6exR5t4zUdb z&U;{pp*5XV!0Lnl0Eh%>TKQ&JSF=kN(P|XByJ$+RT{3XAOfyTE<P+^AwoB1*OF3>1 zLbq7?(kMAD52eYil?)iVbC~c7uKStUzYTqk`0e?0_WZ|qIqu(ah4gyLY-iRDUm#*# zwvzTN#=NSc2BQws)HF%3C+$w4g9eJ)4ZV6@%aH)CW}B*VVXJ}=B;M^u4<p$t3>Yzq zh7ABXBUcjsGO$ymvtPEMye4bP#8=Vlt<MHUxPoz9l3%E-m@>78=qn_^=SE<c3WBzN zaG~v(nptu<v+AnCabXU-Xv^lDm?uZ^R3@U&MRti9y_0GcWU<pOFEpZgt>oQ|hcZx9 zV;N(l)@vR>Nv%}ZxlKf`fOYWj>4Un`VB$bGBBfy*`=dr!*@ojZYj3B?AmqLbu?*z6 zg^(gL@|48S)i7xm`5Oi<C97HBa;uA%s*aO13tmiGvLY<q#ZWAwxf_*9^u(p=PAilp z@St1^tH;`2*X9H3zUs_7epe*P@7G|3@yu~m)>0Ctq9G6<sEg_g08&~U9CnrYw_pm{ z1cbI#$Q(3ko?^TZah;?UyawVaAvF7{sCmmv2b_9tT{OgDT+-xHI7%Brq3A8WLNyfk zHLOEY<Jhp!$A}lvnVNn%*9Cy*Ge*G)^Obd>g-00M1=ecjRMARDEgXiZ(Fb50X{an0 z^9@vOdetK#Nw7VTLgg+>$4Q*QoT|#iE1?fjV5?R-^i0dgs<1u}NC2Uj61A+xHkM38 zs>0)7+jZ55>MV{eMYQ{4XFw{KbzV+p71LfX0#5Pf025xe<W9E;6uD?KsA#rl71lM6 ziYs=TU{JJ|1}B5T0q_WDDx#?vO0%)f8N3GLe|`PLcKp0UFG%f@d8T^L%QZa1qI}~# zz|!dv!!lxO6zibdK+xf8Stb^;^BSZ^Dfmc)MGvuU6^XnOILP9`>iTX4sM@;i41qkC zFPN!VbV0r7YAS2TIq^+24q&2QhZZUT<E%5jr1~WUE5hIxdy3VLddjQ8<2w5)H&~?C zy-n5mO+|GyfkQdu8#Kht7{o@)S4$C_>Cm$Qz|~~8iZ-hGN92s~C>kzip=UHyTB*+z z2P>9KA!>?9dRUgnXd<jqP@wSJq~bSe4~6a&beO<6`+sU)A)mKy>{Ov)XqFyWjL@YF zJlVw1*F6nQmZ5&i0J$w(lZR-Fyx>gEymxM)Xa>exLRefMFwu%HS9mxJ(Bf|h5LJVb z!Li;^+w!o*{)flY`kw(6(})1vcsi{1OG;=AfCW=Av5C}Kt7Rwy<sDL#4$K0A42(R> zF9PN_I=8ICq=Yp|+snkGje1JgxZ`+>aKhxPTwRuSHS07{MKkFf73{3Q)osj3#*m(d zF4(+$yZ(`FdIHv*-6kmV)jWFhD#$y(DrdpttfA+4SK<zBg-O{Kcv`A8&LMiKHI*3R z?%S3wvoI^iF3~o?+zcw>F*7uY5L)Q~#f6|t*yMMO$}SC2K;0Fg<5MSYLRqvcQvU#u zC?g<vvmFGbIG_v~GkBRfzk@~;Xl81WN)^z!9$j%YS8q2?&f{9@T9jL|AUnQfk(Z<9 z+ndb!v31?v@!RtM0LQ){c;mybi}*fXI1(I<<RB+jU^dNsaPV=myh7@rS|Sv;u+!l( z*^CWw3S<^B4H?^0z_%pyg;y4gb;1vMyw|YT2z<KDN`oe>2K(+@NzAb@&@!<WW5Tx| zRKF8{fGoj>O4PY`1S4A0V(7ufo&{<cUZqTQhqtO(OrlSabWK<h&P`M)GjujvUR4KB z#G@wK1hp4;i7L9Z%NFV*M-Wal<1lnEH?(0@=0%}hyt|o8`S~}wW$B=Vwq3)U6vfP% zDTUgqw?g-nx(Za05z;<j2|uh@hd4M&Z8TIC9E}|JfW*KC>ngU$>IJBDrpN=oc!>N; zzQ3D0n8YAZvW%C`7G{2D^YDVCS49hWaa+uG{H}e^vNJfVM>Y3!SrRV|&A2UhZVHv@ zF{iLYE3)BM09xF%gvBeFghL^!<-QrZ+ccd$%dj+|YU-+928A!%4-jyWqpsDCh;lD! zP0|ji8egbII>t8@Y&N<A=v~4>D^Kz&#LOFdPbR|)0J#?U*7ikE?E6~x#K$h0M1%^w z<6V|*F2=^v_wJ}=V;!JcCqJ*$xk>Q)R7n?tHA*NfP~5no-ZW^}C%H#Ny`3E9u9R)E zrrA}x8g64cFjT*zWht<Qrs6m^DHf=9kiav%lh+z0@L9?k0Oe%+po>IKRYgreClM&U z8yKR}>Sf&s>`jiKD3@#-TDlHDCQKx=sW*&j%^TUm^S8|Dt<yOORy&aWk!Qr1=SJwN z9wDTDk>*;^i_sFD!$-H7FG_Kiu?zvdrq$#{Q-~`*<xJYL9Uz0LYnHji-gF>?Cfe7G zE40Qw)&{FAPiU87g>vn$%b4^##GhbhQJa;V8GA(8Z^Xp)>7Th|?LT>SZT5q<N25oU zsD<)Yk@Sp9HDDi}0D9VjS4760Zp0~l-UM!$Qc`t=17|n5jje|GD`h2ZEEO>0z$X~1 ztzye>V=TpkvTbDDnFBM`fTGOY)<UIPU}+nC2*KyHzRLh3IcX1k%&&#EoHqM+S<Z^e z?pLMxm4J_^k!G0IT-g|mf_=DJDTf;iRH)*ORYO94vo!g~?#=U-mTGSDC}oN&Iv=b_ z(X}Y4Lz=<s8T=KJu5`$>I1zT~EFzrstU4-LA8)2MWTlU;a+5HwRMzJnDRyMjXio>* zPGzn7g}bD0tx19=V2c9gS=J12OEC1(^?I2=qM>`E+_M&6BBl1+Va7PWE~Uq1&$P^U z>nKaGZ2*;QB|4m1UJahh?vJ`zqo;nv0vw2|8v7h#P^m!Hx6Utc^wsFa&V8jd)5X`+ zE~Q0gvwpW7WgkYp5nD`%j3)sDNlF<e#+^&}Bpog;j>!#?I*P-)5dvnQ%nU6YSexe) z0m5rF-e$=(dPgNFhEdQK_9(uKF@ggnBKei818p6t8?U2dnRw=f0YZ#C>o9E4xHAH= z<r^OV0M0N_8kgX}Z1Ekt)S!Y}IPf`zP`RL04AGwRBe3*$8L%_CbjH@>L9v!G5WMw5 zp*l5NFxZjRgCUh*cUifGnM+R2jRZqDW6032z`MnXtDaH}^CNOnBnI!=A@E1UXmh;R zT7c6SoB_1-EFHtP7}l+&8fl8`)G6pfM~jz<A#P)ave2(`$iXZ{#y}$CIf}cA0QX70 zB_JU&j>=YyTUi4Q9p@%qg=JByjUK}=SV6Qb2UU!`28P5~+UUT>fMCa}+fvgQfnK2t zhgjy5qp5BOO-BGGD;9%8M;+w?l)P^{Kzf4DF@PNXW&32~uDJ-ZG{~63+LM};VNbC| z&xBrhncI*KSI8V9kQ-2Tq1kM9U2e~5s9**>mGj1ol$~R6CP5pn-`F<yjcsFN+qP}n zwz;uw+qP{Rn@zIWlkcmq>ij%)rn+mUYyQkk^>oiOeLvUTDqA^Z+|tfGV!>V+KciC6 z&=3{T0dJsGVV-m`x#hHQ#Z`JhIfUUe&|#yH-!YH<JH?wZsyV+(%@Hzn8WA$wYZtm- z`4aSaaaX|tTEMQgCYH<rEFPyDrcg?(2>W^!ejNd)G_+$4SwSV>J&m$LdQ-D6ydKxl zn&f*;FRdXbcL{n_plbgdzS}-hOlp?|?D8Mr*63P<X+5%AP>^b}H9+U`RvB7rB-S_- zbwe~%_qVyy?-3!nK@?dz&yCn5rWARbdCUtR^7h=tM5r>-`9itKP#YJp8c8E#q(a`w z09)PtCeES;P%Qx=;<^MY^2=yWn4(KYSvAUZ2%49ZND#YQmdXiPBck%ns>4%C)^F1k zrsa%lHgr6v(G4#d_F}I6;~v#Z)qem5KtB#j0P*OR2m?P)3@%1Oah72m*PeOcFROX# z#&JyRAu5OHX|0+7boY=JEhmdd?&xF6$vYD`%v7d;(v=EdCNR{u+6<KSKN-dJc=cp` zuRONof?LkK!Z7(k%UIsEkA<Cb3Y}g-`LhS$Nr(Le0BsIB!TfQD0F!4SsBEUT;+u~1 zWXQnI4Te_L$mb#}FPUeobEDX^EmD3(D_VqEhE90s*80q|jn<CLq^yf5$1PoB1+s9Z zPU8cS;j}w}lp4hL6oA+kAbKL(jgjAWXzsiVAC4Bj1fA^l)ZAJ)fmX$uH~-)WA4|J& z&<%$}dMY9==xgcJr6(&8saP070Jt+P|D_br+-6a~u&VFxFJ6;WkMBKo7kRr_4|+*R z5@2;Hx$~T((XY%Q=8-8-1(gJ8@+`+VFyci}+OTw5t5NM$+;}NS>|6r-xV4R<C{7*G zX|)rsIn7!PbD^Vk4#^(?PG#pTcwPb~vLpo(4A6oUfe=ylOL<O|^wK}r-XBP*3?Vdd z*wIS}0JVxAK5axn?HyKAqWB}(mEVFJvpQr9(TzN09;!Li#N}Jam9ys9I+%4x$N2p_ zo;&q9xIJ?+=H;@x#QuyZ;HIlH9gRI!p*wC|#vs27F{K2L5*e?()x;vmcqXZ_Oh>40 z%n?*^P4fZw+nu$MQKJ$a^%mp07Flux9aB}jw%Z3Bg^jrW@Xz#j+BK!ElsVs==8RcP ze+-!4u{$;T37Qm{{9bIJGk7S$KR}V_3FBk6W`s!bLUUV86UjQA+X{$#B3%{{Siu9_ zT13}9dllcRu7DbErGj_n2g;woQbtYK_&6n15i6-GZJ|-%Y2zEGCnpYf+$mM{<|$Y> z_f;Yo<PQaeW{tn+<>|b<Qd*U38`w9=rfvAW^(m7Nh~_CumEA7ViaKf#0|sF#q-Kg& zajrmwZN%g1TfM;Aa%>(K(aKhR58Y4GGJF{PuAC<lP_9+iR>&V9U>Q7kA=D$lGh+38 zpmia5HuVbOJ*?Ndu`j9~+#;!yYBy@D)IL=px7bbX2tEf4)Uo*iGflUG3F<F{Fw7c( zhop<WZWCf-qn(7|{bpA<k!i8Vq@#Bs%3^w>u|&Kcqrw{H^r};8<eGjOGk%VdWQg(2 zF44N=gb5NG%AYuqi(zV5kQ7K9nbJd)J6f^r#NWbYGz>ksiH6l6{kg8pRo;EfOJGrm zb^q|dFa*YM{%okekLm)wtwK!4UTM?tzE#wNK2v~DFf@Bp&@IY($zY^h>jY$Sq~TNU zbZpRL8~9DY6rQ#YIiqwt<Qa1e!{#^nC@JoS+dk7UXtv|Lg^)(XKv~oYtR1@%a0sQ^ zV8o*to4W7$kg~b~eey$O3~duWolydY4IFQYmyU_Kl3zt6!2(24F+yBmDlmPCkoGWI zg`p1GRJU!2t^ru_Bmxzf!x&~U`ZY(WJAf%h5f<UC%m;2XzCS@#Qj2H1+`JW*sS!jG z6pu`i%mhG1(fu7q7IdBIG{w9vp~coM@Txn)?&9E3piBV;FDj^tmL@6=co1GFEuzo; zhWB-*t+bV)VSc=H3ga57up{D^n*Lx%Ns~)Qza>#aaBZb?<0z3;9uBmsS_9397%Xiz zEQT<3$cOw>o}OCBzT&-!X`zBl**Rux1>Q)hx2#it&a82UfVa@|{`*fOH6C@dm%arU z(6pdo@iG}`n+#o5-##&eNMyM!?GAagq-O;q4h552)|mwjV=ADk+&~@m@xp1dBBq8e zScyo8JYU{;t*S<OB(WlNE$kE;Mr&Yq3)3<{V4+9=s<lxg-V4iFVQ5YxbycsvsXUVI z5m}`rXepHdv1DP8CO$m&6B3;SESP&ht&INA^AZxgm^R<$)DRlHtHAJ8R}h>4EnGl+ zM9KwA03DVUw7!ii)<C7d!Wni76Z9UDW0+l_S?>%R^I##xGOyEO>UO57q31K$>SY-I zLVF6Gd{q$iM?fnxkPA{FsIqyxMd)?ig$=MuKxN?HNrgfdnSqQ8&)JQXP`G!g-N+~i zuwe?=qrgJ4aNDOnMISs?xD@B5c?1Uv@D4T>zh^aqvEpI4{+XBQXSc7Gr=^;h_Zino z0^Bjv!0Tw0_Y({9V6EFHX;y?bwbB3#54ZG|I@wxEwsxLaUX|g3X{@*lEm{YB`Nq@! zfM%nyV$-{NndrenO6miehS(iOl<Z6#1VoShj<KpGt4$ES`;F8lz!KmX%LYvo?%SDY zq)mtSsW1@H{Ej}^n5sG9=u0qivD5GQ?3=$bV~OVd-p?W?8HHtAJ7M%{R`!^7EgRJW z1$Hyz!rWp6?45@3!&`6X1lwU_`z^!KW33L@v%PvSs=P~82*jv*@c4MF%;(@G=YTwf zW+BASyD7Xcv9SRI1@q>^q$?mE3d-98fwQal+^U4A8f=lm16%(9yy?<hg@1ojwiNC( zYwPOy-xs;)YyEK#r|=XP-c+1_dqpxn5KsV_XS$*M7Loi)02A;4d-w;K^Z&0#5A=T; zJ#-Zjjz^2a&aDGa&y6>AdS$9qYGtaF$yAyHJwC#DdMz?L{b8fGIF6@azI=AR-aXGO zxZHAaw67QH;r9XR5pT4XYq^j0(2t(-+`8sAq;>hy$c>L56VD4g{zh(J!`FW!*FVr& zUcXOX|1B(m^pUUZ{jsKC2lt#Ok*=ECZlf*pKFpi)MsakSR+`jFG~tfV`i(b>OZF&J zG9I|0s&N;&k|0sxXZ?kj>q@{itCVf!*Y!zp$$$MG|H0SvHCOx(&~)+Lvj5-<{u*od zb<e$9s}|V1TJ?qco5_3^YKKa8k&=xj!aQ>iOH#A!kJI6e#V04j^sDJ|oMRA}UrA1& z-u|%-Vq%?fG2rw4e6H}d(%CBX(AXecyoNc~JQig3W}(9S%`1+WP2Se59MA?a?Rs(E zu%I3L;?}qAKqTHE=L6X5B`zxbb-qZVY9aVRXd^tM&G_ziq(aZxeln`_%`4!8x6l#s zR?;)RA$<EHPfmUU@!mj+`y^`gK_Z<hK*9>@f}5|P=gLOc*=0<IEBnAjeNa2#xr2vG zw2u%Xkzlu7eo0t;ns#3ef2&|)#h+*Y0XDMd&dvJPBOd!uV`HwF|MDRr1zHt)8hj(t z2=x=+z}@?TM-Gwf<CfB~Owq$1hoNY7FhmWcn9|01DQxd!QTE74poT<_vm~y|EP3QD zx8xSxlACjzuglQiq`mY(GFnf<b?#9#%vQw;04yQ{`UIuyF<+%bj&8Tf%62BoaqsR+ zpA}!|x8`p${JXiI%r!h0<7KWq6?<~uXZmuVZ@(Mo1j)UD3T5*w*?ACYynZM^?k8^Y zJ$@pDTG$@_LXbj`7y~sLl_&OwU0==h2i#%h^h1puiU<mH-u{#>&$wq52|v7Oy(lXd zTuDq95_voY==U(nX5<!Ny;JG|7-ga=>Ty-qfyS~9cyswbfQ<5cZmD82Q(|ndpPo~| z9Sz2>T%u7&ur(_^iD<>pE4p_yFkQ+o7)T6XP~@iV<}xqmA1l$94;$BimcMBd&lO(} zpK<<<+`WIOs^mmFon8Vrp7DNsY&j)IG9Ox6wfzG75jj}DiW6NV^vou&o1+Q(D<ZZ+ zdSIzrlNHCQPSR|cV8YPN>Mjr6`0htD(+T2y{c4N#<=iWDQlh@@2Qp4R&Qz2?!!1^S z;9)lJXBk!3{sM>RcmJIqwID2yF<Eo7{wc-go_C|vF;<Nfq61fgx{LSib71Fn?GLqk zq{DvIwDOX?iHkr$PTy@G!Nn=P;p6D?Btosa^&aoR7mEV(i1cfa%NH*F0w!}AMaf@| z5XYBxwH<9cx^kE$l#}NR5MAA_f{SpV&DY0V4+=A(VI+u|{DKc`;OKNyKiXCNl?rl< z6?w-M4dI=NuSLFGRTYKr@9PKW7oesJ#?kEXJhHB(XIdoCU*hgOOKBwQFT;1e#Z*<i zb#}rfCqjz=l=f>vB}8hAF?g#W^H<@(T>9C}9TPo^*JN^01o6u9n&zxsc@_pHq_wrQ zNj$g4yl)07=ihfp2fHrPYwj6DDMnL;5U}4d<l4<IR;mEmiC-5?Te_mo#kjSWr(;EC zg6Ueu<1b#VxX8oy#T`%7?85#=1iR4w<%G}do#t-zG$iHm?X~^WOazs4d*9gO>^WT+ zbiRtzk=pKS9^1A5y@3H?WzqKOG3PrO1nSoQ{tLX^u2F=I-&p-j?$T&BjM}i$G#x5a zdjtDt-h{juz*?A`u%_uO9BTxkvm{2dnEj>GVJf~aGSvt}t8f1HY}nRpMHJe+?V4b( z^)Rb{cz)pzx|@sC5bZCjvL(lcjHb~!j6BInP9l(ZD5OmWP=cJ__t)Xx`n3oRkk>8p zWrzEy>4Xb`RTSNZsTwZUUwLh4>1sdYcx>+9s(pXdqWALq<9tvx%}qLGdLV7L+)tyq zV$%z6N_#*`PlZPwLub1!3dy47%t7tT_j!B@OpbXfT-y63nARgnZ<DAg^O0NNmSgYk z*2kFV6~0uYC74ZlOx@mx0WHz>LOn}6AQ?-Vt_MZ&;1L_pBuaX<Lrwd9rh^*QSqYP$ z!*wU_03Ux2@pCOMoiEkjq$+fpc)YzJ^_wBji%O72<WkhOWJYHB`P^c95`Z#eehMCv zZQmD~XX5vT$Z`X`F&$H>_i7d$l*uI*8LCiEp3~IpOcpS^Q)(57WmPCEIb;~-ev}Rk zAj}b$Fw!3+LeP<EF>+hF9l0wiICxyZ`3?3#Rd)F`rmJ%A#rrJ2sL}nK7qUmq`)Y_0 z%=9Zldb?Qfg|{dkOn<BirMsWZx~a<Lg!gL!RH<rfpYqo7Bd_Acp!@i*nO(LIoPA!( z3Bp@m`?OObOS`S}WAW$~k#!DVSdP-k`-^qQ%p<3vBWTla6T$!zJ74zP$->WgtL$hN z+UjpQNYUeJYD%os4^3+f4RYJ0q+hB6J=rhZM;!|#hUur<MY$kjRKEF^EA#LGU+=-1 zX2kTX>CzyLz;Dfd4&WYOb7$(&+W`G&nk!~M>||58Q@d0!zn?NCt81tD=<ag(blc+@ zkaaST;=0kHV?`L3r|EQxkbx_9&9uev%Oj#*;%>c%$Y%Xl<ZEO|-C9;W(<s_vw$Fb? zkAaWuA@hEovd1IrpQZ<SqI?zYEpOmoB4NJb@)nHl9P7HC<SJk!xwog|NcuqlT=%5( z#eHHDl`Z*<O^tR9%H*_7ugOm%BV7E!068AcPVWUr_l#R2Gbx`E&yR~YDbWSLW>JPa zfAVdm%D&#ph6ahJ209uTae*!B-kyVOO4VTVSJkQ~nBeuuvVFcmo2N&-Oxh7Qf3y3m zMVC`$GP6Njs;=<8J<M?(9TCi18;hEvd=Vt5K@BC{oPHhNQjI2CfpgJTX<glZ<yRw~ zu<LBTBr*g&J%hF|r2=ohHh2b_M40dVS!9B!KRz$32Evpw-PW7Ty^|+fgw%nTGddrU z9lEhU4DapKHQg=D=J@GjHV!$$5BN?VNR&7a^+!u)P7o?wePFhtsK~U^?}N4nu?l<0 zsY%Nu)IE4b;oK()7FO}uH`I8Bzt{0~jaZ1xI>nBKO+La82}i^m^x-W3D4XY{YC~V_ z=dCNHih^_r-Q^7o`(pPy%88Wd3^v<Q_40^ZADAi~o&LaHC<`edfQp?WoYNi92siQ= zjPQsy(+z_ukk9Z6yy2D^FnF-D;&`GmM7g<|)}^-@hMl}aQZQJH{Rc22=)r-Y3Mk;4 z_?{L<c%DD8JA2`p-AyD#wEIFf97ma1+htCsF*RdwB1(nVm<d&tS%)BqS=e>=p$e@Z zIQj>KQGff1M=X>KWY|%M_nMCPoZJgGhHK;2*kR6P&XVb~<wgGIRz9&5h|U~B`1Y%i z9Uz^1P&-#5i2rzI(?CbuB+b{P-_S?FEMJn2vav-*aI8Vq<x?^#pem_gviP@yzO&KO zVyyKSbrGftGp0zhLyYa9i)h!%i@roEuJ=nxd9m2%WqzcOA<|GtSUfYInDR_cqgb`m z;6Q6LeLGh4Ob20SDDeo@wCyTG1xC<FydCzzf^6Uqbof)q(Jh&RP)wu$HNG?EH=617 zlP&v!cAE!EXIEy0b?6*<fuRa7p*q(9e#t0>r1;keAA6~k9lS#@!`4m-FFkkD&D3DV zhm)j*%@OssmL}4#T5BslRPt0ghWV)#U83i3Wi=T)CG*4Wd)T*yBL!Q*!6qEv0Uu^P zy3GDX?mbudlc5I0wV4Tw$fgl0?g_!b9Y%>y$gPmR<h~h^g_bs%TmeGZAwmFzYt{@6 zp(#LoNHVXX-DUho;72;pZeDMDkS3)q=0BHRGIGs0B#6PZNVj5QIsL|J81@g4skS<8 zLq<r9#ZHinbRYJHSn)<Z)~|H}vs9tqBHURTP@by33ojX)B#SHefUoaV==j4s=SEa= zXRgH`WpCVm-=q%dke{hmi~I&H{5tm?ycI06Ht`Pq+pI<P7Md%hdiN8G9)T)7Y&`<M zKQo3ZW0jD@hZxjSJX1u3X=~~^34Ae4?7;8`6a6TzTXZT1y!2by1EclnXWuYV4K+_} zT8e21wrT&>RlBP|kjsDyW6E5Ja=Jbd2ww5kxIJ3CC|2Zt3S5}GM6FGhnwj|pqkRM< z-5!jOY<m-4+wRY61^r5YH1nBP{v^e#ek<;<o6Pzs;g`%?m*wx7W^8yS;n7OJqc<IW zmfjV^2XMrPLg5{CiaY4GBshH|REhgW&Kt%g8KObt9k)dJ!oY&&De5uNUyP)Uu6U?D z!txJ5aw`77;WO8){1y><8iP6YCQ7G{hh>IB)*%aTY=IVH2CGv5QQVanxf$q@iZJ-j ze=S{gAGIaAJb+X18qZO3?vyp{=AYE@ljsg&ao8dqi)ydcv?qmRSARG>i>qzM_>K!5 zD55eV=yNSr_d97^Trr$EHwHC!-$A`CD~fF>qKx!$sST?kvn=<t7k5E3#4yD)UUQHd zDKO1|fL^=yr)io1!$gKt(la3%Ea8RImvl$!2^)?^?bWHi4#OSY(?r*4hkN`DuQ6+@ z+R4!QPz1Yxdr*(;TUQ)Rrpjw1y%nt9lc!OyfnIHyB*GDk^C~XlHoZGX^EKKg2z7Qa z;6lUqA7Guk4>0&rcJ&08i;5%jiL&SLDckF3Xr4MHDGY^NKx5?yMw626vhRn^HQ-x% zV|v)#4|{jdY_6GQpmw@%bc`^jG;h!%=+<8Eobgj`FnxNGK2mC*)ri(ipAquw8X+Ok zcD}+v<PKpgYniw57a8mX9lVOlIJNz0;!%Zdg*hpUBbEXiER;7xbkfhbE3C|IyP|cY zwAzm|`KVlh5drt*Po0YeKt`BH&`A48ofG`V3(xQ)xk>uQkKr;7P&n=mZ-+0rhF!u3 z;$FnDdzRRkZ8Bd3dWY*b%j%K4?9a~&hjMFX+rv(BV)iS3@aR;H%z?bXx=MZgd@W5Q z+;EYL>0Asf?G7E~jr-3gN5#mn5}=})KIFa(KC;kDh*YMwbkMmb?K7W4ixhB8B0&mV z+xaC=zFTq8Gtd8Q1m(Q<DQUUPQc`X)6oZa|jvM_ull@uhFWO~!L)L5VTmxMF*#KWu z${W_xM#w>=9GCxd^Bwcz#&+(hHr<;}tCrmHt=w_z_wjeJ($dn>y*se1`?CLUBn|ez zNE$Yd1^$xQXNBrbneM()rERdGL#d=h>W_|{63%kjky5YnK^l31vQ0)sE7s5<@?Fm% zouBdr%Q*`Kj%V)gUH9InKAt_#y^rtEZrA<mspI!IA-DVX=b7srcblJi-p((7&zCLU zulq5+r>pj#ex{Ab?qo(}eJR`B%YLRlKr05$g0uH5iqrkcoq9aJ<4+dWAC>-PgnhjT z{yw<K2pW01Wo!Qc6bs*V`G564?f=x3|Lp6+-uI5*{g2=E|6BTwwJ$#3evU0|Lap&s zQ8R30x>56M7}_V#^Px^pPe05B+cdW=3}a0A>zVn1X4Qr5R|tK-uMf}aEG#Uv&D5XS zZ^n{NC!<Ocit<hbB8El#iVx`NO#gR#@)h+_VdGK6;g%xWJG3K4-+pV3U4cp3D_Q*q zP;S?HZ(kU%qxgV2y5nC>@wfbX{s-^^{#|PMo&F6|{d(Zvr7*pfo7&DT>%Nn_xZ_!h zBz&ALZmOWYl;%$Q&%sYWoJ{kBf=4jN?Xv>*4B8YS>^D%1dmG$8j+jIDs7<``mWQvu zpqdq3d5uOZJ(7oik-me!gWr2gonjoi{aTReU0#AJM!a+*_5_-2Zfhf-{DDy%1mAmL zZQ;`S6dw4=G4~Jf>}LYk{zk@6-?Nj4eJ{!nZ(hqhHe<82PscphBBZtzOTE_LBL^{< zsTsLQ_GA<z{v9CiNIR7jq+=90+zN7;180wT&cCh3<)oQ-j2ir^xuj`FsR0n^pU9i0 zRT;2<UZuj<-{^8FJR>U?`tAcf$xLVBxpeRtqTEXhoYAx$L=Ldwr|{)A0~}@X!rrkk zAx`OFPS8jVM}4rU9UcR3KG7`fte<Yu8Q^WnzDYduFni2_s3i^3j)XW6TSC5NMQx<( z*q#+>mPV#LQH+`l{neL+#Ay`)<Iq-_zFlM2B1T&n6**d3Eg#>19MrI=D+or_ZqwJ+ z9!+o4nW*gh@1Ab^g3hNOQi90*o#V?`C_r$%DAumi#nxEYx+_#5X=l_7n@57Z%N5c% zFe46i$lp!=dS>^q;hu7&fQjHCvOh79C1BKAe2%)M8JkA*(%_l(gkZ(24aL}By71_w z89Y%cE**#ze);ARpv)W(4a2+KB4LVW6vOM-{57kA3bsgRR&fkWO;fZh8-PNk*ML;} zD6jtgt2N<GvWJ0@cCl0*u{6SgVQuK**?gXxVvmo2{A^nGmme%%$}dB#B4oT}9(v~V zA&B7`F+EcVnUKipUL|kYKj%>wA;*%Aj(4R9BmMclC&%uvOEzw>n(>)P*M1VRd%u5Z zrqM5;ylCFP|2=v~M2_a}1=;xyD*5IjYY{^XNa5;2u{#a)K!YPV(R;3JHrW5X;f!f& zm-hLKs8F*srh!-GG*BucxewADM>&of79SR^S+Vjj`}`zSe8C<N?|S+NNZesp!wzs~ zMgaRweJM>Ajb|L;3UEmqR^(K0nyiA!C~`D8$DfL_%^Y*3#(NyYNz<-kZdYN%h2#Un z){QC9H0nney1>z!J*cdy@l1J+R)c%Zk@hzP|4L?HL8Ybn^ZF+<hj*?$)qCug0ENAn zBcvBR>cEODc6vScl}&69L87VY21@ZBPZVP2UIepd_Jgl8f^ut<22oRBx_^6mB0oJn zD>RYKa%1R;6Uu*X(DEN3uxqY=M~1`G(T0W?H))&2bNUieb0EbMtoI)v8F5a6=Zs^$ zDD~slW~k^{1o+IlPJc9sGQtjX%%1;ffrEPAt_i%Z($LRZei>KAt-R$?=m#7zA(_$= zf~4?;j2P>gX-~C25EaS3xlZMK-)-8I(J%*5iSqMAyzJa@Ohumtak7Mn5>q;p#b`!5 zNQJx-4lZ5bYSaz>k^PrPHo2}<U*0h)AgMw-cA~$9`lrnYm8bds%~Pj8NCV`o9sWig zOMBTbaxe1vQ1D4miZpvBBkzLh-s17XqD-ynnoYzeZZpx}^@c&DTgavGLjxh~wWTbu z0eDp_4<-{Iq#Pm+d>}($>LBgKQrVYB3p=90MTgRRUpyfnnH918caLf=E%$$ZKr0W= zAPgP6;Q~%)_;cRUicKkJEr}Q|6s^Ge`=?{|2hkHDaec0y=nRE3CQhhXJUFvNg1e4b z0xzcVO^s!49$x>%PSQ+|DQahi?r=0lZbj~=LOk7*#U@Oq9Hi(ABRA4c?Y$WLo`4?a z+NxWM<ZwVw5s&1iOnSHh**Af}%(cvM4kpijIN5=v49lsY!bX?KbjDX<&ZAi=a9bhw zC%o*_WHXB=zNv%mLiX2Bto{@*ii7N?DN1W)8YA%iCy*|gGZ;vRSk-<KmsDzfN@GZd zfE%9m)KcXn1yVm0#d@z9W&2;U$?}1QJBBw=@Oa63dwPori9}QFAsv3$?wlxuzj-Rz zaga+2mJwz8*&N5?4jz@O>uT$zyUWwFQYL5EPd!ujhF-yo+bi-is`LIpp5p{?aPjSk zhUB}_b)pqlT-s?w46Q6UJN1~>7&J~?hNrh@)-?~@ZKezmbI>sQ;qtK!tHa|#JL6`O zD2<;-YglP3-lNB4fNLp}j>-PzM@iu{`a<~fmQeV`$AaVqsim#qzk)d_5ZYH}PYd$k zDrm}vCayfjYI1#uq~0$B^sJ09Vp4Y+E@mlp&dSg-5=+QCmPPfLNx|%ViVs7sZ#fz^ zsAYe@d5RWi`KE)CH}a92MRVHc^aX#3O2omDP{W&+_4A@oiJiC(XBs(Vm?S5cV}O7i zXWSGo=HqK#a?W#;dnRZ+hvusfab|H}qo8va2VjByy8j!cfFJk|Fep8cH+^nuAc>g{ z>4>aF&XD!ZLnH#w_wH?UNe)0Wxnv3YlfNR<NGwpk!LymjrJ|Vo!{e9rG2EJRr&FFR zQsCzSGMkH#J(vz1NZL7m>+{r30e3WhWLy*mDYfd|c!d6`IR3&rdWNv`9YO;%#a^sr zLxVs$TO0+8C>w>P>`Z0Fu%sD~;@xHD|29tTL%!5(jN_8K0_CtP;mLvj9+ez}jI66N zMy8QS#`HCepYnb|4j=|RDBb5l$r^&@i~yPNb3xaFl(ZVeug4m5Wm>zZYgyXfAS11i z^Kr^0H8RLbz&22|exgw!Wr~e;*90kQ^eO>D+)2!#_l8VCA1ZPGv`PnO*k)$aphMm! z1FYDT5H`&|u~C^@kD#m$viQgk&YUz7*tc>*_T%+>F|wht(~&Z8YSUh>wr2HGEmYlC zf~!fz^9noXBGQrD>|XA;K_>mZ-ph&C2qIs4+*6}?n@-z)gj=0k?$tTzidSx(Qo6Kr zFM#3>eo9%gJ=w?V^MgQHlv`@xiC|I|T&70vD{xb8uMLjBS@<NXC|htDql8-ekw5C5 zYb4%OE2rP+lIy_9<F8c9{7tRMVpq|9*VD9C@V61w!sIKnahiU5Yb>WToOe_08fZO7 zb2#pem)F?IdRG25+x{B!9Dnr(T{PvO0L#PKJ}=pVFe7*^Y<vST>;knR!oc`7HTp88 ztPaw5-zJ{%$s^0C2rsqZUev@?{6}Q6_>lCyA*Towt#Gs0AZFrd$q<YGBkDVb`)#iG z14CsUe7G3fnATZFF15({<4@`L$ZNb|-C9IG`01OHqy`=Tdk_gyZq$8>z?MkK1**gl zK4_;Y9m5B*$##+yw?L(tajGd67Sec(aM0m#GeZ&{G+qR0FH<6ek4QJSpjD`SM02!& zv_tsTWW{VB`T*iKUbd%7NXPpZn{h;f+4c>aF_9V9%x~VBqt;fGZ6I4QsJ1fOx9-jg zrpUhEsB*ZI3r0fj8YA=#R(yJdG-9VH)bSpjZvpp?;><;QBtSBr>-#&f?hs=>+^jEQ z-%r2e>_cwpHM-52G`^af<uwfdZ&{^Rfke@&SBd}H-#|-y{#WuNXfE~6pYFZdMYqux zxAOX(z^B^?+&-$$$(^;0&)mAc&ot}bxpQ^?0i=8sXMM5og^H9ZQv8qKyWIGsUTw24 zEQW8VqVKPLcrXwEC<+(~0Dx@!4Z!&SD0}S8YX#zw*_Z0-YZTd3Tb6p0$9=kYp;j9I z0Dmm6kZi*Y-~r-ZRF}H9@}o&FRvZQ}3L=atCR$Kd8Fv+9u^U<<453FhUrVA8XN32Z z{{Wta`ugC(qWTiTl^<rbDv6=Aqa$2?MG!tae_!f!ZN&ZHA>Hy#8Z&;$Rm1_>O1G_3 ztX%Z2rN=}p=ogjrvYorcm7H$QrjoCt%mcCjwwF)G#Vw}AL1>%*07nH%H*ImA-Kl&R zPpoq399BI^t-BqMM4;Q~OJh0*a5T*scpf6|lJ38Sr=v3MY1oONZ4ZF5j0NQU+>+fg z@kx)CZHaQRgYDItpyBO=uMc*myQeZ%xs{oqn^}dLtKv3zjw8Po(-;^f;|d!@1$PZ> z$HXSC%N^(1U!<nc^pp!)50Hwk?9rfYZeZ!Vpj99@9!%k%(>Jrrl@5SesIzz`YT7(Q zNYK@Mr-vC!jElA@olNJG4?C}wBR^Sng(lh%QC%SCrLsNnEWFbmPRY0T+P(PJy@>>i zVU*JSFteSYCUSksFTcvPcrD%k?%57&H=@lCQ1dV0D$}p0Ikw(GL{W%XT8!Sz<SyIw zyKUJO@YkwZR@wwKpzE1^;@Pe=Zoi2@RSyqB7DnAj+O|S0u-j3scvLjV#Vq-Swr-GO z!5L(jzCskV0K?Quw=D8deDf9)GJCDcMIJ!6Yy;2X2u67X_6lNj>$z)e+teUT`4Sp) z+EzQ2m9PJ_Zu}uhrUrLzyjtY52F{pmxe<C&9aBuuuP0-J!Iu2LdR^atgHn+1pcMHV z!2<94Ide&dc|MIgB9Cy?BG^?m;E9Itf|yiWb5G}4grbxnSOWRWdJ(#q`hL4$?fi!J z?)o3#+YoUf15>}&@lOz0#FuXyGF<?j0?1BzLgYMqvvzO;)7sPLui|x{>%Jh>Mo+Xy znW+3Fp|jGi5yalPN1R#Tykp7Ihi5D3h)#y^c*(B{o{;iD+rUYv9%<@pxs6X9*nVBz zpua-8O{*l|!dPHVSx`@cDMUVZ`43NJ^O8{Lw0TS{<YE-6wV6+2AJ|dY?v_b(+Z$8> zhXg0?3ifR23-Vw(wlrWRIZKv^IG0;;pk#zkA=6}GJhp<a5X4RpwggtUX_UDeZZj2w zTZXG;eo4Kav`f*};N0q``ITrVl#xyJiUU@_$s6K5*&g-n<|r8fZHW~QZt<uGwu^`& zoPj~hx>#bWgm5AUFem4LFf(ch6Gsq%=Ori2y1=WgWeYcIVqyq?59r=bK)8G^P9o<9 za+G1$msF>~U8fpn9B7)JaMx8QK8H-V_W~Kg{KvJNauIX3UeR#V{83&rM*aT6aF&)? zhC*N-msN`(XINdrptI2$e<9)!ce$%3h`s+ULR0%p2dr`z5h%ScYAv;)f|Z73oTZn) zaSmJAJ(8dXJH%#Um9)vCoM~|!v?pEU2j823STcCdI3Z4fKglX&N)W72LU84w=lysg z)vQRU6^j@eD^UUtb-h9ldO4*?J{5qOjScNwprATKpr0t9nvdZHVtoO{SPtRYZGtMN zMcd_>vz7)2HcCKTMn8i(-KMA=Bvy_v!X91jAxyzh*zHaPAy4d3O_SgHw<9wm0#r*v z6fU5pC->GB#Y!pnsGCnWx={=bOb8c+9Qq;G;5o${(<vcnF_4DT21$oT*n>T$ru=nB zTXK+9!pk*W+fLTl`ZT7Aie5)=j9N=7Ef88#oQNthb^c)vMc1+bBY_*CO|raNpdlJi zi%$m~z&uX1czcHd6DXP2R&P(dVy>)7uzVE5o2Mh2y(>$D-=age(_u<EAZVDQ7>BR* z7l0*IWvYe<lYpx|;O0Fg&@ME_YI7A#AEDlu?yPAasDL17sHRaF7n^Hks!rlsuf4}+ zb|Oq$ggHs43{$d-iNkYbILOUF)b7Knlmhcx%=SVx`wCNllE&32u(G_xs5*-s8DbsF zI+Ug8;>6h}%rgxCX_JytP#bH3j>NYqN@hj4+L7T^bL47+M?p18SNY*dbx*ISBqb-A zrBzCybPVb(P(ggiWw<N^ac&Y<ld9lcQg8Vjl!jLcK?>D@^hWadB+NOZ>tc}_I60Gx zYNZZS7Xs3iY%!?G3b8vZla<*JmwpD`6Xc{VWt1~vu^l!ERv>&kJTIBjq1ho7^=NhI zV%(**0AD2R4wq16bP>VT=2hZjYk+y2!G1%aKz|nLK&D<d(@O8fExKoUnqxv?o!kYd zEMT23N9!t)9vy69ag+tW|AM6&=02zhz%^(Q%D#LWM&PJ~0l-&bx6Bq+#*{(lI~4XW z#dHLy9tfqugmS8p5!4i;XvixM7iER?L*OacwZSHbVoE6$QV+B1u!I>)mE#l<7VDrH zXi;uw8%xTRff8ZEsn>2(c*i@JXojIP>%+}?P#Xnf>`roH!NS&#cevgk4S|(FfKgvH z_ixdI0qjEN6Ta~k#ohtTE7Npo>-Vt=3ZTeP6z<Kv0NVQmckTT9$Rmc;mshPQ*iI>i zfKZ5bI@qGc&e=V9rZ}yDmX>~7N?=~~^`(@k2oN65YApjIaRUB`bY2Ker!?Yryx8mW zvXhet11LtTqJayk2l?2G>|MxoPvnqiD+@;Is?8eo)@xu&lk?zUU-bi8%EK<L1sG^m z%JnM?R7*{3ry-9RB>=TNq_Opu0{bGTVo;q{EZnF<Wg@V?u#p_dhrOw?0JBf#8EL4a zrK5tN_kg8FlE)(fyS-khimipfDQ_hxLE-|MNx%ULZre>%v!t+$oTGHx#vIH+FKVY^ zTr+ve;=&K_tuNX=wLFt1Vdr9FcZISuBeh^fhl#f>A%%=Lt*V(4R;x-bTBJ=)Ti8>A zd{d_yCcAFBtc`kWI#Z#N8E|tsFOQk?;==ryIYwJuOBEZnGO%GeQSclzLY!PjB%B{K z=cdLv)0079UfmBiw3x46JoS>@j0Bm&@0b+Bl+~4W_seJiog{`U00}!&ATA^Jo%$f$ zF`(=ead^6FrCbQkFPM_q1-cV9IWIH;S49^=<20zMLs^lCvK5>L7TnxT23c!WBLHA= zs7$*L>3VMWkzEWt%_P83A$>(fXGZC}nl<|=)fo9lcpo8DnL*y-NHOrzFaS*I#G&FZ zdh0`4TOMbc0u1Z<77S6)W}@gSJ=nq(M|Z8!4C2(X1&(d$^5%}kPS8gvy0j<}qc{Y| zB^|<2MfAp>d#wte2DW;n8}VPP96!e?xOo*+mtL6-9s^%TnfV56Yi^^|)PBBEmJVY` zO+GjkTCPJ{ioTdfu&YB*avEB%H`$%v@2rq@P4q~up`<m1B+ksLL5M&LGh2p=8oR^8 zDq6=03}11_Utb2`jKhW+J*_dOEThlF9C66N6+1(R0wnAb5#e~v^nfYo_+x=OIh~f3 za>xuMfNMh#47z?N3@EtX7>^pM$_1%#A@f4yH6Ra7m*_J_sgqJEWUGlDa||4aQxgP) z14wAJ(yL|&dZIO?Gm5&1rv?nRa2kC!+0b#lBFBR#6bFN?c7`)ww}V<q%T6|Y8u<!b zCm7TKErE;SQdt<73H>1gScJG@L_PC-PWf=4AUG27NaaZif(8``IVoL{5v@Zja{yJ- ziJ229as8gH6>dE$NunTUpmo52SH0w%t@Ls9B9&Dg0kXG^TT=1_Y-n*dHDzQ1?0IAF zBI{@?s%Ab`LBIf0k!^umJns0k5-m!YW(x+FvtH8Q8?e>ZU8@@fC1BtuJ9xroC9`s- zWm;{O@bkj6IQnDE5H^0W_6@qc5ljs#SXQl}42=m;AyTn&g`-j1hO@HX872L?Ldj*8 zCknt;p@NI(!H!4e+>jwo_$Ppk28DG?9bBs!o`=HG%#z*0&h!-h3tTg?TE?4Ocv@Wp zZakz9u{!P=Li$iuiiu2PfJ42>5$_1hVlz%+BREanJ7P^vyIqyv!#nIQzqx0-^b+a= z?y!L#ySK3eR;z#p0(WOam8KFIysJ~F-=2AJM_V`a0=9X$g(iw~!YNBi(Ljk5B*m?j z8Z>=OKC(RrIh39iEqlY%Tp1>n76XNq8J|%GP+B^eW$OYwZwDr`TB_Qhzc;TEgfY~V zq<UX*njjMZ@Y5BT|In#sgF%@4-pqSQP_u~K$~nWY1}c;$v`#wBIv6O8yf+iSnzPGJ zh}cx3UKyMkQ-r$<dpkkMSWcz=%$Am6l<04`oyzbeJ_N4TRRtYk7x%=A4OSb=X9bLI z?xdnC!s2${Ro#dL+SJb}S9zo?j**W@clR=$zGV&uwGPh|g}EbbwSK<N>bJOxo|t!+ z(!)bLt0>Ah*C2xl1!w;h#Y;2wPFdY9yp!w*A?Shz7X_cLf^JS|24FItxM<XGLC!c( zTz+eK!EBR49}AB#q0)haM5b^<>i8y;YOH9@RrM*e30`W`SPNG}fT#|aLkMBwoKcTR zxT-}#x0o0ig{1j<YJEC-7z?!s+V5;#$q-YjMmKjvNLDL~U7zxH$ooCw<NJ(MOGu2c z5r#<jB2Kq~g~AgcI7~H|Q-5>gfy*u;D~mZC;j}O~23M&%#^kmrLnCTD?y}xZlWnWl zi2w?NhPXVEi>#Kmw&}@LM}~9VVtY`Nk&w2FrO&hvuff_Ch)BIn3&UU-DSFNBfhN<b zFUZJjmze7D3Z<h19ve{OM%Cw3Q>-hfvS$T%d8qs1)ti`IS2Z@-{W4f#jl`YmItoCZ zP&I5WkcAoAV$)*&8KDXjHZq*$W1O}JI(+)BSpu<+H_)PtgocJi9ieAEXp}@3z{R5@ zm{X=fRf(UFB2-D2svT%e$BwM|&2L!r0Tw(+<q8@tq<8OAs-Q`&;}!z!EvnF4N7`F* z>Zt>a`W@V8Kf+Jo8kb1S?&Eh$HtDCQP((qhrPM@K11tX`-acVa$&K-+g7$cTh%xU( zEV3T5k2&D?nw3<JS|Ph-c_Wl)si6*Q!Q{UeSQtQ)o+7jttY%6@!rxnkMS~*RK|A4C z)I2+6tt>dY${1#(!vrTZ#_%Fk6GuN|MVFIE?HnoYQ{6GgGlekXVq;t}Y6Z>UL>2)H z2w${GVH0s4YyzJ#BBq;xkfx<3ceYra%<B5fHqVE%-?*&KFc>%(p<Q@V6g5LB8V$>s z2^vMgwk*)gQdsOe^=XLEe*k@=!CJbMF$#N3gHB_^hzTp2R5yiei`E7L*r;1=)tdZ6 zEn)W3JK}GAF1$2gjuHw^qZwaYGgJAdrHQhi#%jc<^5wOOy<D3%9z3i<t^7^%5WLs* z#+Q8;!iz#Ak}Lycm>d>hKqeKF;U?|5U7s&&+GxPO*|@S!I8MvS+Yns*5q@^eF6#~V zI(G>+U|!#?t-y`z&DgAFuNPy+WOPfzVGC*TgvT3>l~)Eb&6b>WB#N&VpO(aJ>H-1r z$yAysg%JKE#z+}v)66@pjI5b33+`WrDp^dN*)IU5##F4ddK0y{Nb?IbFrsf0eL<n6 zGqyq`3cK+6QvL76)#VxJaciQ8%*`T9>ymJYQ&wGyQ-vFZO$5Q2(6ZS^qNd3(w6p=1 zRWREsqsui3<D}VH01bJ8fFekBT)Wh^=rqt%sx|B}U4pj$J&KbWAPqqrF$~~Auq?Fc z5*@4Gt=`jxk+Nl^p=ZkTbEXTxY!3E3=kQFk%vTv0)aWP3&u*>=r;NfZEODKnbrB5T zZF6U}pkWW(%2c_QT_$%oRS3bpig7is4<C<YLs;KWZlLRc$C7rL|7(ZK_^=kZ3>jTb zf0H#E=v6245&o?nB8m3S%XpQAzX+?N!YgoLJ~f=jr97~;f>RL=MRvGYLRUHfZG`{} zG%x13DK)4L1?xnZj@g7*A#)d`bxjR1S8l~qVl!(Dar6Ng@S-n+i!F3p)8jNT)=x?q zgY^bKDW@(|&N3lD^gV#)p;JFnd0ZO6mIu*M3X{*?)(g?xL$Ou>E*CmeJ@_!f>wq(i z+0uA@YdfBC{X~^#iw>~gF@OOqw1FeG;St&Z`<vG)@gjn3HIEkDjN*e~38gK{tg0;B zVr(rG0J!ccnmAAlssRiQ<*Whe4OB*vvP*-v5sYT%#tuOSQ&b|@Y&<BV29T(mMaTlF zf{c#3B3gVT!YZ36r6@7z_hk!XutQ^m_ZMWSI?6)`$s6+fVJ6R2o=x?n5pBtU<#-ag z3kg($=L18?saVI=k5d~!LkFTl)}ioCWeE@KVl?pfV?KqTI4DH(ZT`H34dy=nARw5k zgY&MwMSw;*^)j>Hlb%ld?FB?R2fMmQQ5Pd6LwWV-all^*LwsU=xS;B)=t&%bBTw1T zT2qvB5V7s0pp2-pv9kb@R4){JfI$ID|9a?de&9O4Kp!*VyavHZG=hk;!L9<8F8mIY z<%U6lX-9OdMc7V&LsBV1j4j@Ks35dXutDX9EO<;M{JU~kKHDRTwk@O^hX@S=k-H6P z1(z&luMq6sbXwmOMhB@p18;<;QPi-jjTlK{VX5tDaRW)l1h>wuj8!4@{AdAPmBiMf za)tZ=I+<2&m@^8&CC-iz`8+V6>t(z2Z<Ko~vyQ-r){J8U1A>(r`^%^u1W;k8eO0KO zo{6eb<YQVto-K>GIxn$cpD8q+5r#r(<WD4A2kLO@xLarm6&~W0{R6l;CvKHri0{xN z9&u<bJmJj`H(mNp)>nb*+VX)(M7F^jvo-9l89`69rt#EnG__5QBJMtmC<R3?6;z_t zNZ%gRl7eB220IdVBn6Ca<WU<?&z1s!R+L2zIv2?UIcVsHH8f{hrxqz58A^#+A+0Sq zLDJU-KDK0nK&b}?jm2~;0uQE{n$id(qR*&8Y*TquAVY}+c5eAM2@oCxlszS3X-9ne z?Hf3~5Iyveoiiq<crPz%JL@ZL6>lQ?m-}eTThN%erdGJ1N|2(^wi_7~!H9c{eh^5% zTUuksSh!iG83r#?WQPc%6Q~5@z+Vo2f~)~<X^#R2iDSV&I56%`925-f)+dt9qICkG zLy4L~C=)LT7CPX$96~Cu?v!_3j;)@6ha&eI-Gzo-YgTtHy*{wTfVq9k1xQ~kl*7ZW ztXHEITVVQG7**K9K)7IxT;`GCOw&ZrX}el@o#G~pfBVp#b$^5(vkQfA*BSH~Ip2!q zFxZ+N)YeZ_^FD{ikLEBEd7{{*{9>E|Kafr6o;K=rw6^==GUjOv%9X#J14}GGuWaie z1HvgxZieK8r&26aq_*h~(`v9#=w~Zf&Ps=@!A4`#1Ko0nA>&mD;Sq$6YQ#|?fEGLL z)z;7v#iiqwDA=b1h>$i^3;b|Qt_Fz`T24X-dOe1VY|Eanby7}{2A!gK$XFyO^VQKp zgF%8Q0(9dV8tB077TtygZ-|&FC?XoaQcz0aMF0>qE?AZ62wOUlbP!2`BaO2rJ-^Nb z4<g8%%-xXD{S-)w1JI#rE?2>%M-~C^a6|QgssRmp#K>Q+K^vsYLSauw{!YP!A*93` z*LqIJcY@7=Xg$`K7z%`}>M$0t(DP^>lI3mHR;8Rj;|zEoj!X*A-a3yQ-st9&OQhwx z-KqLj-(4wV5)R>e(3^bwBVhxx=H9#IBWL-%*<)Ut!v)4t-ujQ<p^Dn;g}ihM&lHy% zmt)Y-q*y<El@P+oa^%Xo;TaBVBbtlrtX%u7p*osVC{2u#2Q-G$_#m+gmx&SDkjw?> zDInKRDY5O_cvVTZAyZCFTub294OA<&QdHT&DqW$zpH8rl%d7<MuGtG-Mnr>oMO$p% zxgC&S5mi!h@eXv?U*7}s4GV;UC?Ko-$##`roDj&3CQ|9c4WCetUdCacPu~M?oIwIq zS=Ny#`b5Xxq!u~mEAoIn{JEsap|i#YlAC2rfNb2MrNv4~i~asKQ&9&fqB`NYmIOV; z$H};vp_NFNVnTLw1|8E=fUQi>T#&!a^I?%7LvHI0QQOtyZjZqXj7*0*5vwk+Kyg|W z1)PJ^{g9;@zz1>Zcr$%nx<fJl)`r%}Yx1mZ^Ak0~HT4}cpNv%$g9*S(%{a&0&$){c zb#*lnPz6e+*P+CU2~U~MD`V^U4JvxV9fQ<FAsjO5h0m9>i6O$#Y}v3R;^U_w&a~m; z_N!5?7*G1FE&RMi5R7nX%t(lk28obXhMK=lWu!}NY=$=_lURem4#&@|P*?yqkHiRE zNl1|`kRd}8BY+=_MBm;#e-Op1r$v;m4xwd2fGUnd;Utz0_D4IkkGQ<S?P3=fSU3a( zf}_fUsVCbk;)VUR5}gpzwwBlwWq4h1)JaAyeUWg+2s2XZn1ilA)_iUUIF~=rd(1sL zZAP#n>-3lF)p?xnHrOpbtk#|^>Z76!krE@VU+3^b1ZA>3V27%kR?741tu&=3n$W=C zypT?DS41Q0ibt~;Y-%#=5;zN%`?eUZ?dtV2+$>TXnvxSfz~+Q)zvv4818982Cv3a) zK)mXDE!RCKR53T<IPmN|{G9rTijG#L|Ls}h*bcS{eJt5EsHG53r7f$`MdN^Ql4{a5 zu-6UN$dSs6?Me+RfEyH0LuD1Kd#Ggv@}>hPTkVW=5P{Z(7a}J}i&*>@UQIC5NLOX! z&oO}~k+xEap)-wWNpk9vrgQx9PnQT+g-{Y9XT(4pQ1ttw83^)r?%jC-9TT22fP@Q3 ziw9vk5#z8Umsw8FcB3TRbyq7Yy3~mZUU_FA`Gz0preJ?HT0r1SAVaZ9cWP%gm4l9y zD2WJZed)E7w4)As^^dj!c4lJ+z;5~@A<Qx|w_-@U;}t%JZnx34PAkn-Pq0S$AMy!` zXKDiZL}n0}(PaGk=x{gq(!NVg3J!6BD(#U#2xQ#oi=o_DgTyjwpeMqeRi0bP=E=Ao zYZx=Pb}hZ{*wphE8i186)W)HmXoR+I7u!2yGGK{91cp_9PzkO_;>aPU(lIBtMgcUT zoO%;funXD^8=uZFQiFkoMEbfi$Oeo+S%lg)#=fp7<Nk?-Iq=s=Im(MhWvzOLsG9Va z=lw{?0+Lx-t^#~SJ}K?3h9?Ye4^4i=3Y3D*v!d7}F|h%gOr>7sEpDa>$~9}!p-V6E zU6drtdYoR1Dmz{Z2N0+hGh_5+Rc`DCViZ<~;<_#q;sOSvK7_uZQO=VOI2NO4_+)A` zM!;@Z4R9vO=!#^wjK#id<w{T+Pe~EeGD(wxH3&E=1!-s60_T<{xg_4h77)9q-fYIz zD$n%YPhc8A1rNH%<=iluF$Y=51>RHWl!{r*QHCa>^O&wEv0S6$bEs&m(PU~4TP|X2 zN-@uO+2-6OxIUmW5}qNMG)wBR2|+=YZTmFWKWdLkItITM8iTn{`Fb5`PMG}zM4k;a zg<PPk7JyS<;i1WJ#&B2dnb1!#lj9*xDk0}$31N4snhR_2)mL(b2DxdvvEgavgTN`0 z{g5HRBFUGw9fx@bHVnsBv|1iG(MJtw5y_-O2a`R<CG8{e4QseNJ*Tvfx{HCKF_$yH z<u3sYvmm0RbvnVX59>jLUW1}l8gnq^@r2z?MtvebVPOYHliBCTaUWGU`sKuyY#gmQ zoE$@2hPv-5Aw3kKEpYpXQEr4l>>R{oI`?Vjx0BOKHJpUK>rp2cCW+CGzxuy*2CT^P z_VKJTP>H0cf^=TSFo98-_=et#prBjxZmbI3M<c*JHxi`xZ;e4VWqB1Rh{NJ8LY7GO zLmwIUF?9kSP@x4b)tFcf6wk&0!cNN3PHVKNK+zOpqWgHJq05?bbEobx&+#$edhK%A z_83PD)a`riTgA{ohla$SPq9HDZ9$_pT04UtV7ux;1`$(S7`|)j`;Ja#>XVNO+7R{! zp~LC_0LDN$zpS?5owzE4dNAfNpSbRA6*YT;u`BDo;OfWx(jCX%teS!t3Je8QTT3u7 z3^dpSi-Wtuk{+TSmn%0Ad)AP4yd@ecj9l_|*-EagqFe&~YQe#v3dO>zW)K+&?jW-b zwVoLL@}eSut5xD0AQ4Qe&Map17D`(P@Zgew>r_o470(#3Ac2jGwIds7%HiC@U|M1v zVPXMrPbd{gJA(bQv}GI?R?H5r)EJ+rl9AC^-dBm?{&0-0>M>5>oYsOJZAHTs&w0QB zgtjV?I;awEDq;Y<n~m(mt4cD2SA+&%iL2F(MI5r!A9Mw_$wMI-0~oSS(I2gZd$GDx z%4wjTBtTh+Bw}m|tKK(OWO|N&sI?11t<h_~r?!kwxcNasSw=it`GcOKo3;_EGk1Au z?*Qwoqg<Wis<hI#0?&pPtZnuYI7L;CS*2CfGaep=sv{IqF`4|p5)cj?Fn_hne2TT2 z#ZB7>8bbiM#nn^QVsMUt!6A?sOrD&B4w|;3YM~3DQn|x)F@~3jmas9lEUb=NY>j4j z*)&QLvo10bI0o^~uc#<DFM&HYY*$x6&cPQU^ev|FGT%UiiFA7I_Lv7b$@VaHc(0L6 zX)u%Mu*(GXlZ0bxezuW}2F+z`1a+Ms*h0#5s0^eFM1lmga;O>&zG<M_2*U7!2|A^B zj-h~V1?G4*jKP|zrN`%5oIZiH<w<r$h(sX(Xl=k0>nhB8=AEL20$wc%Sd+?Pg+@_& z_?VV?<5VeV$i{`SC49S`c^1q7^K5NJ7D-CcR2c>UNQ4EobxL0~E#qg^O0jZo^J#O& z9@FnWSM>bDq{0BDW58}VNadTpnr6q@;ub69znL+MY=gEim@vb2RYwG_uWPg_0Gk|> zIH*9AAy;@2rL2(1qMLwK0|CGjC3EmAF`dYCP3MDBRF(i7?p(Gdz!Os^0MQ0m;(Ljr z5;DSLK;fjC=EbF{eCGwea0q~;ue(s3MU)HL!@Ck?yGJCTXvTqD0tl^A(wGfR-=<po zvab*@1X7$b9#LU3&L9f8aEijFQmv_CQo-s?_jY=<163pbtQqk%(?v$G+cF%=sG>A5 zr8}Bx+pySS#1@O*2MflPtb-0AL_H{i%mTKTT8nphg&01=Ruo&}IME_bpCp9Qikr8W zSGGdULpUIzL9aO5P%dtZnP+{fSvUwaeju6$03>39bTH*ET@-nExKm|QY!aF+EURqr zL4ed+S38tgTZ0yG0R`&k+&>|?ot>Y=7J+t(!2bYJuTiMl?Vtkm6`l!e%ID0ZMo450 zcfN3`jZghF=S4=>EHMM4+T}G<#;nc-V5>RR3}ML$GZRZ#RtCCPNLd1`fPfbl1mX+S ziW7*|Ht_CTyzne5Km%3RGO#;-08&SV)K~}HCA*Eq2~{2gTtt%WhIX;hQRT%g2Sv1Q zWzWoZhMhRYlHx-lRH;<qx~S+Dkevc4#5r0Es7i?1-hw%En$a@UP{%Qh3#lnqAP9^? z3rZ`Qp8o(9O>|OeDRCMK4Qn!x95N%g8%&#w2MrxY7YqY41WqU?V#8glov$liz3Wpq zc9qYPwZZ5tp*tQr6td(gREH`tUD$<KW1u0nW=zpxZ59)ODVN+j?OYbsaJ|<>32?9r z;egH}w!|E?_9k$#D}6-(wWi*mz?RomUsypP8pv3pq;X7~)cc3zH#uIKUZeJkGq>-P zE6D=&c--dqKI+1f4K5nP*mSc(7^V5!$6A4F6c@U>Eb*y?BLzs$H<Uu$10V*jSO<MO zsBD7>Kovx;+@S>&Aekuw_Sym+n)43T1rAedj?@~|<#L~rOR3l?bPFsSh0xigG}p*V z9dQXulC6fIE|l4U#g>UNC5#YNt5Ho3ScMV;y=dlJ{;GPXr3pcOTqdcs4(lKWOUmL< z{j3V95^U12q;QrKxzU6GU<Y_IQzENESRGkqA9sYQ%)}r@tgo(vn~`cjS+_E&mbNv! zb~A6xstsxqU7Zrj)V;bkc-cpawE?(sd2Rb>Mx(5O%)^-CRFblqAE>DYBx2H_HHPyt z69*NP6BaohP#CC@a^f60#I=+yR?JtVKtd~oS-}yA8_B={i^gL+({^GiOmea0!<EFo zolEijhE8Yk3&7!qImG*i<Tni~y7>DgN3tmcM_LV1Twwq*06ra!4)-zo1hqj!x*KGH zIZPK2n{Z%h3Eb$#<5(l5Ib%300eEdtcUptq=I!(V!dxF@QNrK=eK6#)8G~-XLm`}m zANmD4?0_vD02LM;orNlveRa&D84gpjDucrGm}(LLGNGI4UeMxL8@(l$wy&fP1u5T4 zJWiCpjJ&?O6}c`=C_t;sG+abB=zu%74^WDip?z`MUZ6>*Ah=Q0i;G}5w!RYW$E>m< zd;?TV0}D1bv38@9tS!{G?&E_f0XXhp3Wda#q;o{I0vV@Tgap_vV^}Um9vHK^ifX*Q zcwBD(0EP+%O=G}_mxVGI*sjhZjmAeMjixaPgO;H_3bkBH7VPip!h^$59hT+oP^a^A zZNq@30+vl9tP+VuC}47i6Ay-DQL@cu>znNekdF<jG#aDPnC<xu#bK}yDA!J4n@=2s zRullD*GQLe4ijt^jzg^lBR&v<5rF1^rXt%S%LUp%G7A=PjO=U_bXq}fB0Ni<Wk;A> zSs9$S#>2wo^fYcLTaXmjozx3rhF~0o>PuZhfIJ{L=%>V-it_TaEGV#Ki$Q>TKrDxF zXrk`eIARJgtf2R3H8ZPJ)lq@H2ihPz9BQ3;A_(VEr<R+2qqtf!u1*R))FM3bN6pc0 zQuQbEc$aKgg9Afo{@}LD$Ol(zxr{MYAj%uM$7+N%DJ)tA6<*SzEVi+LFHZ99cq$M8 zK*t-+N@=lF3)OIM0JZ^f3J~fDMZ&`)R|aWCF})#d5H}mO5Rf6KMh!Wm78p^2G+{#v zZ>ut9mmnh3L$t2vX6-axK)mspYG&Zf!ejtYmV-L6H7V2-GA#;*2<Q?h2$J)NmcVHj zkxi!csm|LMbr;nmt@e%==B)b<Qa<c51=VXb7M;A{8)ad!*biDStsb)RTP9;LX9sRj zQ-gk5HFIl5$^^RD#3wSiCDM@r!P$s+>-`W356xo3K)lhxg}IbFsqA6YU`ilug?zhs zK`wqB0K?I0hpk1UezAo_kwPdXXka%Rh~m}5n<k?nNV@XqbkOFVmnka1Tc+Tvjjn9S zusy)>4YO{b8V%!UF@`Y^T*-0V)IRfuH;U>joTs_g=1e3>x|L2lX36B^2%&e8UXg-M zQ3J43t{HGV3?0yAv}tcnfTqUb9SPsWK}?)k778eUR?v)BKY4ZND8#eKOW&AG^P6Q% zhy{2#g$1^42I)X~U<PIyY6`V36}Y|15RX(Q(|d)T#Mb~LH75jgU=zeWHoK;?t>KmX zI6*|kX}amvjvwDC)Bu5DKq+Ka3lgKZ=1ZYpW?{580Y*WnGu^ON3#9p4kk?|S8(pnH zR6&z43bU_=6)|eaIE^!Sykwvc7Ve>;Hj<=9${R@0WD<@!gsNCGik3TCk>6w;DRENd zPNtXy)0G`6Yfdwb)d0P*<`SYLG$_^+xaL-c6b1q!kEZX4$>a&x6a&+<M`G$#wvXD? zHCDq~p=#)9NzQp?UDcR^3IM{PSmtEAZ81o|(v%M=D7}?7CDkfeYb@4fi5$rH7lAXo zvSPUc{5v;7G6Gc%i6lWzN0?G%R%&o@<~aI{<#QXl#*9O<#|^*=4b@qw^1~;Yg~isT zoD8zc00lu+R$xQ&5$F=vR>lYn2q{2mRw9PFKv(HZ0Sp%P1zfrQ8I^L@8%~pP6}KDq zZqUaViK8q{JFps>w9L4>jW8sjK&rqjnUImTaVKMGFv#=~&`b@Q*ah@k*c&FcP)V%T zwtW1`7|#%50WUg|2tlvtdP;#QTVO(<As~=;E~RaR<+&{vLxx#e(-{>-Go3#B1;b2` z-dPGdI4(TFP#OhAWjnapud8%$Ff=cuKrVW+z|)KvHo#J7tfvMhpj_@A3N9GuEup35 zQx7U5_smFe%5aOmRztj|R)O9vX)v0D1PE@R56?J0gG`t@KRpnDZ)+(@TNLl6rP1;` zf)#F{$O!^!yEOS#7gRU5gbD`O9WGz4&De5)*xVV%&JgSX3N>z3gM^Mm0+$>q-cW`U zVul%DXx9?(F2Ye=_8@gBlS^hSRn!MD;vpDCElQx>EtCm)LtqANk-1X)IPq#VO56hD zMp18K<+?I0i7hBf%Wzc1N}cj-lO1Z;sDkxc<)Hi66mwYzir8)nYzEf|O`|pwmM=ij z9__>$-g>_A)C1-4jpI7zUDMRReEh~NBdtFT+S^nkn7!18hgz`eYz_^=HU6^UCQzb; znWJi;`<7xn0v)E~+Jyc=T%_F{89E_IVpvuUj!RmN<pY*j#}g{<YJ76Gw|!W;fcnVA z30M`9+p-_WavKKp32|(+YF8I>T$h8KAP)e8HTI{(4iz4@6N@%)U$q?!d}U`y1s&U= zTnTYzj5VMrS`8J>;9F{vRcmZ2mM%X_Z+4Du0BjX6l+}RY6OEg1SdQ3RC}_K{-nE4_ zX!J9I3S>09joyeZ^sW%TH0%yzZPRuVhBIvvH~_+IKBz@lyb!(%nt4*Kj|?XT(U@30 z4g-c3zOaJ>>q`)0mYGmv0V6>}63fg+3N%$v1Sj;TgzWotNGRFwDAT79OR@%TO+kB# z6{4w>QdjPJ^fN#evGz<9DNrchybZUB`pqak5q%fT7TaGsE?V7h1}%uy8@4pXi#uGe zHBEOkzO|2=6en84js-w;X@~pc@{z@hE69r4upe25ZKQ+2TAP;;0uQ-mc5Z9F!X}CZ z<hP4yKeiBSW4sIAx?nW8yiMqp(q82rt}|*d?Kxd;(8vgej5w7MY86KNO{VuO4(Bcs z(ZW%AiUwjxpjI8JcLS+Hbp^Zuu<b4iS~6TP5x0skRv;VpI;iEDRW`SjCfjf#*n%SR z0G*XGRc%JkHBokfNvd8WNfx1CN@m&8FwhP8BC?$JNs%ta87X%Sa`l1F6>A*BTFcrV zR)f=CgIP)!QY-+Vpu<emQh{$)oTcy>fR+eNWx#peYBqsoZT8Z%Hp<ICCpSg;L7ntU zKxM<j$pnIqan1)EMuR$SlA<V?-V6ARCykh9qikNS?*OT90MetK$R!)vM?z2QYPN8L z3&@NI1Y)!YI%~=W=2}NsF5V61dO_<lUURcg%-hqensbX92QVrsvhKM)7-T2{qhMH9 z9o4QZc1XdS1<ueH8ee`_+a#2Z%z?6@t;GjZ0s~h&SNkyQ3+ysj5rEA-Zw34fng^j7 zz^u`+6$SI#lv3%WwA~Udf*0ilS*Hb5DF?%`dJ1PX6^iC2*Cas`DNz=#*dr+UY=E%Q zbt^!HfglKjmW>KUF3k%D$ZHBmdb_C)C)lpLj5KisaE;g8Kr4wkM>@segj{sVvg%yv zfg%Mx0)`1KA0*O68z!{@jh7Hy4!GFRP+jOVFsoJY6RPF+R26ff1t6P@o0F^fjC8XI zhY<rzztFby!wI;^CLTaga5->qNfEN^33_46&|lorNt&I8``ISuH31}9L1juQ+h{#( zc0?HTwTU=Ipmnx-0)d~5d7IKhq+GvMBE*SDL@QC0fs*k_B?o{e6yu2+L#yy+#^3-e z2D*R_dwj_yqYw$9(%KHBLa+y_wZ$iDmOAzJ0)Qo%?t(1*qVWDC?(h^Bii-lK+ItM0 z5jiBbN<~;%YfVIn75EPJ=z|ahbg{$@nHw2UiD!mzViHtQ3YdYVFP`ME)ToZ<4+=UB zSX;A+nRm;JXPBT&kim+z<ZROhx0IB-a+-;i&q0LFYmgnk$Syz?QGl%_@0Ac(gf11x zC6Ayi4co!uILBg?5`<wE2;nGIoU6xi8i0$ge%+eMlE`V6+^Rs)heGV4VmyEgFY=~` zEZkxVJceqxypn(#QU?)%0a)Q>cGIL}bX8s#fo(wdI3{ic>n_7=vi|M_Vs<2Lw=V(M z(7mpRWf>KP5ru0Yw(3?Vy(Dl?hIZl_azw1aj*5ZCtkVZR_FgM9+F>&@QuFgEvx8K~ zTeSeyU5R*li(v1f5d+O-hfFNPmx1vRM+F_jlXebS?(g#f3t$0fK;gF$Lkb;Dof8N; z#QB&}lJs}*lcE3>q_L?I-j$1?-4)=FHF_g(nA?AGxl7QxR00gpmmyH2M66W2#!;Df zt}P`bAPLIMQ3BOlG6NJ?rHj>8w-t;6yWT<_imD@Kl|l^T?Uu@fh_6y1z1eEIS#L?< zDTo+K<?RF3>L+G#rH;k=^Kj^ZooXP*O1ehH8aUnbm?{H+-CVR96cV1l)D&{aRvO&z zK(HI+Hr1;$7b#Fzm%wezA&ysDNTqNK3R!i8RsmEfs(7HCeEgsW0?JlpJqw{I*(-Hm zXe9;wwM`91Sqm<pkP&wp!lS-=ij8G)@Xj~#;4v2q-Si^?3v0HkN-JKGLIov~g4-pK zVz_ac7lvCyh(K=clRLl}YPCj_3=dA*RXhc_ViAVR2S{&iq67g~xP@z66m(?-ihc{x zLq3ug@nZh~%w6h;PzzI^oq?tw6qWas2vJyOv5VgkIdK(257nU)i0ccEi(z6|$%HB_ zaYrClVW!1kvS%4|w|D?9fCbcn*i=fbnizJCuw_`p1qm#i5hovtLnyR8kFgEUb=xIs zW{SZ?7>S3ufOgx)Zaq(8+-~+2w?RsmSOn)Sl_HK%?GmTLF+zYJEE^O)jTUl?RZ!j; zZe-k+sKp|zX71}5vW=Cg6w)KT2IXn;g{fSqp04gCaACalmmozB7k03e+^B!5XWcR@ zZXYpNGBn?mw+dR~;Uf@H8YsXjpxP;vQrZ>Orzbg?haOkYP+VxWA7&^4CD2i_L&!mf z1r6f_&71{z1Zsw)s7X;`VkFY0k!blUvKUwex-M!oJq<^Vq(W;pg#_6<4s{rYQUOzh zp>JW!6%Ai)x{3{BHr@m=C`SgdSY-&w0EG5Z&Nc*0FsRdP4vle+nwrG_0H64%8s;5W zwJ8G$*HBQS1<=8I`6%dnO=}RrMh=Dug4zmcckcsGOJED-3w|5kXBESQ;-wT6QKE`G z97F{NKnd*PFG9djQwKvBAO!$)06nD!f>F?xeP`NRRmQ3gG?b7-gh5D<0001>007_& zRHDX<G|^{<T4{(aptX`0Y^Cm+)VE)EnDavBm7?0VvevEUu4AF>d^f!L%=Y#tx3T{K z%zyvd00;pB0|7q}{{ZkFK}}i>%4apq(a(8{$CRcDT=CBGCMsZ_ECSKF^;tY#@n=tR zTerC`)q9i0?oX=8X=!fKnNGgxUC((&@7*j=p7Q-vX;NIjGLs-bJe9O35iXj`<k$Tm zWuo=Ru}SY6lmX-W4JO)P^ap&uENa@Wm-(Md`9*gm=|`p@&(M2IflnV!J46-C?t5x~ zjs8t?4?psUNcy`@+x()=5397VL+b4=*!sIl4L+{X<sa$W>(&nG?EX$Vdq0!5_V?`` zg2Tu87Aqd#<m<1o{DAB5{!1Au)qjz1tMw}t^u>OlO}Fz9gm$=w){PB*ZW1dTm^)c_ z>`KH(TF=+6V^@!mZYW78zhf`jIdDpN#CocHumIJ7o3%C&cu&KBs6NQelpSHTeR0Qp zV+1kDSaVel4^%&rQ)dm5*Dj*tM;$S}+IfoFhQkxIvR^^{M&^7!S&!HcuJb-?Zab&f zm~;F$xTinUj<4R23FVKYe!Rq(KU8#S^_!*s@r(AupJjhy{{Zm*#|$p+^X$x!yf5~! zwhIQbd6m##24SF;?Gmu5&pl<@b36P9k=4whSC3Ds^ZC5nIh#uTzmrB`IQBnr%?zPH z<mLTBd4Yj2t0^x~h00ySDhkDV(RHs7(8{?;CyG__VCwDzWUK=Ri?{DC?>wIMa+%*! z&uu{zP3<3qJYsC0Ft_9n#3vZ|ang8wyv+Ffc>4C9KWWyVZ$Do0{XWwF0OQBkwDJ3S z`uB*Fs$K~u3EKMl{Z6obeST+Q1z9D$;&dp$0;*)h`f6t#ViXjtSHU52v}yvg91It8 zOiPSKN+=uGK2P=<Ksv7~GtowlI$`BY?m-$7?>@o;D_u|7eW0a6Y5}5v0Q4mjB4QQ3 zVbHqwA=r_!Cy>+x*7o20>sf(G$#ibHw%gAM;s(Ye$1C!LRtV^BcF(H%^@&w3z5(nN zDb^FdSD_YYT;%r<jmKl_AJ}A;zo<CUpWlie;Tw~NajA;z=YkH|a@}9ASQ#m_F1*1x z%l7GCxp3vno%5L6K{&Vh3enrI3|AV5620XRC9bU2;Cwe~m@fy>#M9EOt9~H(ERf0< zg137@CR5$~m}l2Nk=9;E`7CI=!~BReq4EC!Cx_eqOZ9ty$>H_wE{f^n{!Y{x2wS7| z=@u}Q^kqF6=`Pgs`@|BF<D04{?FgqKD>d)}M^_dgJrdJG&%f8|9c?_vsHziHK<S5f zHfCUd)fZa=QCEqV^h>gvfJkn-Px0VV3!yjLec)qjziFm@qKE32@7VZaui^F5f0;kb zpW;qWvp>L=H%E!u`#;$0GvWKd6prq!itPE%<`)?M0L-@vk$UNdOE1KrpeMcszgeu; z$4{84@0IdimGHlDmGboe0AX2VaUN<3a+Euzss3C1pXIX5;PU=VSBuN}5Hsw*$dZmf zqf*5_$MFt7Wr}_q3%mUowYmE}yHE4kpY^@x`0r`-?Ee5A?=t?De~$L;Kg)aepXIas zH@DZUaO19z@_&x^ndkU>PA|3mOWL{C{{VBp`t+2p2TrE=go{^?`3rHfB&=44PLuB6 zCdZkVZ~F`wm4>t+!sO<<N`edw71+S*m~Z_iYVR&5U32X)-koGK6>)Sb5l`Mul$jV~ zAVIZwB^mp_@=#w@$KrpX2o8<6&#!4-qltG7(H%V|)*bVV^L_my-l=K?d?r2%qByn; zS0jcu=`7N{(=c}W%G{Lh*vl99hQ0m&0OT`nEHhqaCLv*^LlM%fSUSh!lhP{DYv783 zW4V(MIp<UE-yyTiu)#@H{0!~IWoUrI6`20QvS@C25J&b5e%}F?v`JhtI1HY2RaLif ziWtI&x~tlv<fSE{<zDiR>{6|@Qm28qb6pfr=wr--kkaV62W)8e<i@=-04+OzIYanc z_=iFOH6%M4w+B^9%gUV^jL_i$N`MH}Qz{s)CjnsW0?`(UN($I2)W?Xya)j?SF0C7_ zaU0gEmukwiE)3*@S4EQfKd}`$LfUNxEnp7v!V+&Ji-EXqC@YVf)B@|sOEg*zq#nj! z`3g4L6|cMj^@&V;tkuw#(0~{VT$Acg)V;I-YS}VbuJKNdUg%Y}jz@yXxrM)Y=6J>a z;x11pKOZe>^EmrP;CcNL=wDfleSc62i?N<|ik-Fi1a!X!)-x5f^`Vi3xdx5012*C+ z)r!6?BL$0a5rhEG<eAeh-h9^rp^>XgdooywuxM;4Be^m+9a$VRk)k2tPLCxZ6^6l9 zUg;RHed9Y&OIBraWdLN#4iC6g8XOa%JvMN)tgzUK*JOsl;0<+VLd&UWY0?4!IfS#W zEEI07<cQ{6D`LzGVOYKZjSvh~Vz_Fh<AzA67|BW6#1jH)$;1>OIV|F=Y;_lANShMH zl$+R%<|lXJcna385`mW2Eb6EDLew6>9Cs;zw&rd^CB@royqlFPuJ{8gasaF*Lv1w9 zS60=HuYmgVuJp(OFzZwio?@m2wGs`=qyg~p-#p)4;Tt}e71`hN#lmH;6Yk$8uQLVl z64$^!<NS)En}WP*{{T^7A!p?a2JPvv`Qis~Yc*x(+4r~?0nt3v18fP3$hw3=NkGtl zpx5>mH|>{cO(wSJ1Pi2TPUVpvrrAeWH~_c}s@zp83fEGvq;Rr_4}Hwy&7P<SwI*_a z7kNw`^$aKp60>R3d&CkFg>o9}1c}@o%@bhdf+2QWFen0vv6=x+0z03L(1Gh(cnxg> zJE7Vv)9nu|Eww=a!1^(U>h|9rVZ{t@Wq#R+AhvlLxIIUR*U_tkec~GzY8SLyRLU7Z zT?8%^Fkw=Yc?ZpwMQr(CdJ^{1z-h|{IRi}&uIknnKLN9?qpIq%yJi$2;V%gDd&gRH zVW2<i1re+Lu>qc6iT7`lSDDA!GQLmEI;P%}?Y}4*F#a#xth%XfBp*OPx$JFWNi4UB ztr2LZup0bA8Z@#T#o<9hu_J;6#8X%~M0r|e3m~2VMCx0J%D~`viRlYlDzYnO3hsu` z2nrh%4WYXq8{M4Xg=uqgr!%Q|RXq*`8e=Ja9u-EYC{tBMEW!(7tD_{VE`?%&$rjoj zflS!j(qk}Pw%}4)2mlq9r-IanMxG$n`(=SF4<Sj&j3OEy-`XW%=Z-n*&RAmD+rrU5 zF+>E05{6D}^Bs<)q6I7q7FUo>0Av2K78F}{8dh)k{5q?1K!rAXAfDrM?h}89_dbKS z%UZm{m&6E7{`obN5snCS*dJw&ofe%PKXP1Il7<H@p*A|knuct$JnIxp;l8sI^bZKU zv`u%IvXy6CK?rn3Cvs)TaM81kIgiL<s~iUXPAf69=Pz=vWWdxIH0GvK$$$n4ox0*y z9(Y^gs{Ib~i-t9B5ao0v!mW#zs0!2}MGZC?yu>kE-cc{@EcG}ATcBeuRNESYm5c~7 z@-+1^1%%dEm+J1!V>p?>U*=N!UT=`uSj9_$%(vRFcKwl<5jP9u`$kMH0tj3K4%XEz z11qogMs5M4=6de}*=hl{iiSp;0)P|&W=EFTj;z&BXC5q_oN#8%*B|Otc{qjXVpL~f zTk-O?uQPMl{LJBhc<brXeIIsq23&>)S|~Sl59f(Sm4SKebcHH{coB6~I9W;qn!2v- z?FiZkS{lkY#aQfeA`C%p3}{ANDkn4-nX5UAa@g+z#ur(^ZS5{!56n%43+FBDKa$>& za;>ju0Pz<}mGNXwXm1jn;ZadSRERZ~%%V~=TRZdp^O&GQX$;LAvJ?i|mWhboTe)N{ z2^pMO&Z&TF0c)g5f^ItM2jW*H7u7<%xr~appw>ga2Q9+1(E$jO-q0z{$78}Q=egK& z5jSMARR_KL_!t2+@TbsBz7~E%{luli^RM13Mt#9P!TdAs-zKj!6~!^QaYaN&Sgj5- z!M)3cqglq2xn_7tXL2T5G6L-xQ+om_tt-G$szCt25NQ!%!VQ+lQjFDIA-V$+&S+V= z!V87byRf-wbkLV-+^W7=bJ=nWcFbGA#7n5qB`6$)w&K-Q`xFfX-R>4scTia|w=_~M zg+m+<BlY;iIaMu+_6Qq6vdAe=m!80x+5iO^wc4pwT~sTBO4&uyjetyUSTP}8n!ga} zF%^I~g*D*aq_1UVV?_u#+ahQt5*N8x@swTXCL!r16MeD`j$5EDin_H+P}Ml3!tB_N zVM`7TG)356L{NqR0|M*v0S#{|#pErQ0@FgY2R7QSQAI0tHee{3Xi=e{=nE?DUY-Xm zMm1+!u@Zz}eTV~T@)Y3SM7+kVBV5=o;&>trDY6`KcKlDfe44z?{ALrD_J1edpNaR+ z+!ZW5a1*8zqkJ*ILXmAhpxJAcwm!VNqv?N~VC6%RZr8f!?I>d=3MnZbVqF3{Nq=8Z zqgIyM+ive8a_+^HRetyG#fky?I>Wp4&Xl78MJ+M1nwlal>)u@BLl#&#aDyo-MJeUH z4cCjA`O2UOg6OkZvpS0r%?&zXaNkLKh9yNbSfN8EET=It2e1S2JeSqP*flp7VVtq* za(0Udaid|d(ym906h+Vr!-ng-*nc#XmdGnIg|gXV7__;5km1;CVOf6dv1tX8O4nyh zBj6UK9?1cMV9}%~<3?_f$S$g@0CuN|MvOlv-sj_fC*w@|_WXRb=sn;T#9jFPeW&35 zLxar*`-j>X>8mbJD~|LXQvUz}a~3bE942N$jn`Mq9!v9g{{UjD<=hTx({)c3zr0iZ zf1i$#(_GoV9=e08j;mUQINPXJwHh^gGkAu8!4>bNvj>Bqhe{z*4)+y2ThaI19h?YJ zSLBO8SEuqWU_B^+*C5Gx?n8}xz&gCwiGPnV3^=`+WHR0i$Dsn20nH<YWwM<t764X; zm8CWjrzUMy?8QJ_D%MoXMOAL|8j2ygOIJ0OU2`#9G_9ujVGzEy{{X5EdBE%){iU^i zaV!&5fF;MQ$IC{~Gwi3jKbW_(`8P+`x-lr4KKbwhvekWX{w7sI`0aI^WWB{pDT9#W zUEbwD79q`_0KWn?M!k0%w-?1rg?Yw*k@C*EnS0Hh8OVO&r=Ao&Olm2vurIO{mw#R( zDa-<eT&`s{u2t*h+(la1<=*9KXdYi*sG89hXHdPP8^0X*_L$E`++L{Zj=OIxskdh+ zKX$xiUXh6EP8>f|K>a7;{YzJ+KbiL5hs#%4ig&T^S8vk~%L|h3AaZZSeZ9XEHEQvx zeNI)Z>CI`Frxz5pO{ztqT~ga~+AO&*WCqYn7V#>XELm_`z-=hwT=j%hbNxd&wXA(z zprD>Xbn|g6+Lf8UC2)W^-g-eyOj8-jh>U!!<?jkT@T^_%aT>%0c7PniK+$#5podt} zseC<q#={lO;l-1J!mo1R2N=#IZo>n?76A2JKowfY-Xr2{xVM8GwbyZ~Y%{PLd)>q1 z=Lrd1-$C-zr{OwWpV0pRXBoZqVjiVLARxMeE7iQ;vCuPg7UjX(JnXzWVhXxHT9!B! zSJK*uuD?exJ|H#e8f~SD^%V-Okl;6WDc+|c(iDDNSwWf#W-L?{ms*X0XP-Ul05Qd< zGQJe%Hl?H8lkHHeN-F-)U7?;K!wX`ryH<SEd|-D!n5sbvtG+Z`ZVeX=7*~hxC~ga@ zi9sxkTM7yQRcI*DuYk>&c)t&poii!==TdNouS<pi=w&>c)JTHq^_S}OFjk&VnW|b% zYgip1>r}xT9lc@#x|-`K292FpNq&L1hLT(7Q3L~q7A_>@)@~POLfyJoNWuqUT;EDz z!Lg$#w5J5kJk4AVu3O>tgoRUA7G5FP8VCm1F?@fMVlRd3j76}jhcy}T2)?4RsOA9B z_FPm|OC_HwJDPl|FqV+_f00E@q`6gpfuDBy9X|$ubM^kF$Ja2GJtYHezV{gIt~t%s z{bnqyyOssRx4}HAL&emwom|@kYWhn^Da5&;UU`?4t~ntoi>~o&7e=7DxUu(mg!<*x zZ4k)Obb&6=g1&b!qR{=NpBi@<krMOx1|>GJ(kORa#pkd+Ar)(Y9<TRj-TweA)#804 zr2DtYk@GSOmZl<L{bbyi9S89%d1bvEw>B^q+d!b+tgtn0Rm+bmjtud6$93;;MWX7! zY9`m^gwPCGy7YixI~ZhKI^0NDTtU#pwjjBwZrti3B}H<>>SLO4>zb8d9?`LtZA*w% z>mFi<$lOg~dJ{6Ms_iN;7N?p1qcbBe^SSwp&4{q&9AaOs$xE8vx<m^#L4NTb!DARR zR&fLX)_cPY*wj~c{{Te$x5=l>ph2sN;C^a<ve;R0jezo+ZEd>c)Kvhn0_8Nz2s^lp z6LBedZ#7u+Dg<#${6^=?Quzpd;y0188#>}s$5n`A-Rhs%ygkBPluq+lj4v@-`l;Xj z;7HMp!w5dohi8vSvmE%06D}IUP5EYg!^vG`a`UluH#H#J$W%Q7W}z-4ME05#PUOr- zsxmMl+cD>)CwB}hO{xcUjNT)t9(}s&0|@AipiuADFxIJ;8lQIgH2L@&4*vj5#aLa< zL?E*W!q;FaicK!<>n)<|s~ag6E%J*VOLNz!UFuV1+k7jCQZk*rVDYh!OJVR7uCvJ; z@e|S-IYu1Rar3D`yumH7#^Y<2?*=NVpEDLjH<J>vv%*+dV6!tA0q-v69BiLhLUO*2 z(P`vM>0CNm7uTLC12V6vF+)r%4xbLTe2fa}9da}XBHP0e#TNzabi7^5wME%u<xR2% z4=?XAapu_KW*8KzOpvv-^C?x`EJv3yAX;;0ylaCW4x5DT{iXQK)^0Inh*n{kDzVa5 zoq928fW&x!S$G=poy0CfE%DDX+)_KFQ#Xt21Kv%$pS?_Tx2)+Dg0hDdHUZ1Izy=&H zx{INMa}8ww0CWnikIj&sKQsE4qME05rVTC*iK_Hr^3giiMmB9OfZM;kUQe>WQrb<1 zA-hW(8*}Clw;kqqec;Bu?sth}0a2B9MHc1Wf4kym3fEcO_eR4LufmXaKY#2pv|;ZK zw!|<Zi1t1F#{o}yrIg~x62B2j0b=VfX<`Fcaf@NG;HkKnJ}n)i)%k$hfG4ySYoSA0 z;oNH7NL?@TFI&(uw07sZu~RZRWWRWk5pNo&S&g2fL|I#%XgwEKm;@uZnIM+T#qrcP z8KAE-Vxir+-2BU^^*T!I1Iq&7cVYhkMToDrQtCZx-c}Ura+a<1U}PBY2sSU37??Wq z5C^bkeOoPw0JMYx>NK~HUVF+=M(Sp(w-9L4ry=GHrg@JPR30t2$_Iw^zT6@fHE+$w z)jd%SQpWR5)WmhSsXVbM+CX+vb(bYWX=-dd)G3Vu>K&@8$VFD(&3m%hDpD7Z(1lUk zcmwQI$*;5$NwK1v@Xut44)(V8gSi2@<MoNH0CgzOmFpL)nd|Ap>)LQ|=zky?!qy3K zi(uNF#Cx~eCdVDtJeCjI3WA)B9?&INEuq16Z$j~XaU7#<lJyLd>qHSeUljM8s}L)7 zouqqMx%o-tXYDrm`H4cyVldwVf!jH$O%8Hs+;lTIRB>reZzk>-!4)ojtk2{?lDUOE zYpT=*UYZ~(=sD)05jNWT!yz$T3DxkpfQ{!d9pu29>N~T9)(=Q(3-0uaLnHS(lxG<+ zXmqV8+t!+t*tN;E48Eh&1)?mP6y1KWp4G&^opp9SNnMBJ>C-viPMzSyx2!xRe)F2H zxkXNGj?A)f2NAxbVs_-2I359}^kr-O;u?~`tx?uc1}O|Wtxtr+byfYNm?*oyG8cD_ zJK_XqDOT!R=+esO1Y);W0(HBfT0GHfo?)VH^9!Pi3n_;LGt@6;CJAZl8NC3fcpVwU zQ*6$nk*Cb4_+B!-AOl44lnvqSI)tHgAsQ?Novt{H!Q>UhrYgSMyO8a>m#&OQg@IC= z#rxjl{#@N^((A^v%wIvkXA6+qqJYg}H$)^UF3!y5!v<*W96hUPTF6!`$(-|b7T0b* z+Wq^=)?u!t53MxzjK$Tyy`n2wym4eON(A>W;8)zfZ4Z~R9QMXw0f+(%$r3fIB?jB~ zf|F&AtAB_tX4}HD+66g=B3|;Mpu&RHuCu&M!)4W!dRK{Z$#^<}TDIS3m=xXILCV{Y zW!{*@(Smg%9U`FzQ!URXuQfw{A#ov2&GJ1eV@T2Xxnd0ZOOr>p<52HfspwYzxQm1< zMFn4}>zw$Ri0vHq;q8aRrZP+%07~fb+~;#3Sgp5P-udZ#Rw1=O(%FrBU)~T7gxBBu zC|sRY?$u}4#}H3BVVbL44r@H;)*gBlN|~i2dh;IKrf9*$VN%6gD^9wRB^TXl`T3u2 zuf%P|VdCZzmcg^mNE>#j)@R)oO7T9rSEK=sGJWNd!PYEnDVlaxoOth<eu6R!S0V*r z6wC~u<%H+!tfUOXW;)oO)gP=~%l2D+BQ>2!8S1D9c4ZCDh@R#jCB@3ZUQKHT-%F!2 zJ{<BNl=s(pLCUJ6YrvPmp3;YLdWYRWJk?Euv-wpe_P8>J{{YwoR655t3-cLp(!++7 z7BtU=E6$FwMPlevuEifmec;uush!x_3QGJ-3vOE%E&io-MfIBcn19prQ?aG>QQ&Kb zR(+;y7cZ|_z;7)4z&LeL;1s_vZY|woq$r1bt!H@d`@n_h^A?o0nPhv+z#Hpw)rB>0 zC`A!G!>>DBX>91sUjE`RLGd3{_m~zcR#sThw|P|W%l^YyJ>qt~7dnd+DQOT^+@Pbb ztZoGapH+_PW4Oikvp}<wuNEikpS;O0QTV%x5K7&?(FBYR(uu>tpRX~z{PzJ2ut8mo zS<I~wYong@JYc*wnOJxZZp*vnyFII|%Q8-iu;XUU^G~!wu=o8E{G0XanAuqRYF4-O zc%4A@{)jNoYpn6;eq*@&zhv<q{{YEHE7ARui!-pFs2580{zFBdf8?ha_WuBpO^bN{ z0F$nR^zAwn`XP$z+X}bGM}Gbyo6@=_Y@2^a*AlZY(&jGc_8*7yE5{zc*zlO~{{UHN zqk6Oc&eG;Dz8Hld5tbVN0Kiiw;;!>3hBX1w&-Eg^S>Ju<dG9~eoyK<=Z&_}v?l8_2 zo#(voJ?DAv7uwF_JB+q>*>)|dL8xVB8Qo`foz^R5${-3<MP29r0Gj{W00;pC0|7q} z{{Zj8@h=5!uY%fqDVG6dGSjgsF)C?-G*!e4OiRl_H97=(1RK&^=?2a{;>NLZ#HXVv zl*)QVTeVJ=`$yKq;H=7JGSc5J-wSKY_wgxh!)`yX+Gx-Y4BwXQ^g6*pp~~0dh=Slb zy#C=$r1F0t>W4tiAE9yjSYyA6w7t>1w~kx*Gq{fX-gl56I9Hq;E<5<{ehgif3b4II z?m<Rx+>~iY=;kfA+?H{-l<2R!`zZ2!sNxv#!(?i@+-SyK!TeNvTc?T1k3V1XB{}&t zO4hBisPHve%y&5=fD!m8+^@GM^v*u>9)2_AvW}R|mwlq%;?iWS_WMANgfEY~YXH^$ zZ{}M3Fot*G!S|(x2oDG5zq374mY}OS`cGqikaG`W9wF>UT)yAb>5p=Ly?-Bw*NncM zA<RDC$laX0ll3Y}?a#?0Ij^YxvElq6`m^T0P<?;-FStBL$az=jAcdz?opJj`mz5A$ zquMO7VylkOoqUchWAggnNVIo8`KQ7}5@!Co6Dht#=t11C!u}G7!<CR{>Y}?JUXu+C zMpYKRs%M}4@8rb$-vuqx<n*A;T+nWF@T<pJT&i5>tlXJ<)V8Wyq_}0fZTn(mR36ZD zRq6X6vag!`1V$9Qg)U;oXMf>TJDrTHUHyCbo^#G$7J1J(eSZg>TJB$@ze#?Q{U!QL zekxK074T>Q3D`hp3<DdtwWsRmH}KJMqW=J-S-NF<A6}B2pI+YxLsP}Xw+oJRV@;0v z4N<sm?Wd@&<t?qY9k_}Kv|Jv!d@I%iV!Xy|`)NwFc7J6b$^D#PY5kSowEoZWU)XDV z5A5oF7kTuT?q1{TJI|{>aAL|lKeMJi&+N}%Y5kOC9_RKTfG<(~mzI0P{{VV_y+7KY z?i2k8BcS@qddlkj!o4SnFH6CHT9@0E{I~JMd6q`2q*~DD*M;krj(Kwyq(GQjuzom( z63|QOWf(O8aL(d<k9SxuN}hkb7)6)Kf2n_|`knsE`37jdou%L}$NZi@WBDD^j^FYN zi@bR42A17j59Aox?H|Y^_&=XlEzO=E$#3}o0FmV@qxm|%+xZu;dzY_hjk(w#f?aCv zr*SoJP0SmM_X@fhkMev*pt9J=G==?sqT0BH74TfCzECJu@}1ImN#BYwPM@!?CxUqA zf*pzA`uhCO3~|=x4kw0qV5^DX`oFJuom-v>O|5->d5>mz<y|LWhCL_8De3Unf?Ju~ zKCUdKbsewfprORHs=8+YO!tD$&BmoIrw$|JLSXbKd6Z<g0jim@Q!(5Ezyi_cA7_4N z`(*zBY@g_puMaUDE9(wIfeP6EP<Xmcz)K4F012ORJkUCvOeM0#84KiCOt*WVL_t<u zw@lpjhpm;aRW2ovh00ZqvSu3jUL{{bQUUchDu(y?iLu~k(3z|h>|6(WAid+a61ej7 zhqfY}4(IAt5CsPphKn`q#zln{*ypNISRCR9Ur%^nzr=df`hQ`{E5ZGRz#R%TUZ>;I zWlRi-liK~ppnV6@3zoJ1<`+3<vp;E;4%F8>uWzf34Y3LfNFG)K-8dafgaWp~uXxV2 zIInuBg`w3uXg!<P^nJOV_<iSXF_hKXW4!4wP^O!QZYI9J=gR6;#$CnAOsMHC3aS49 zWvs8vxld`u42`+zc<=V605kx5MuSK&FTTC2WjDlqfxB<>c=0tHF5TXnci+99U8--` zmrrE}%}aufO=9WZ+&imc(xCGQkaf4y37&mo6+2anj_JYb*H~W>FFA_0l8p*Azid5B zLYA+=QooX<K(|1L2c`SlC{*)*vFJ)z(ROL`8|DITo=;D{;dGRJqXdp4Zf?q~)mK!0 z#wiKaozXX+%xjcD71Wrnr`9a%4_~jm95FV$=Xu?B)lc^rHxLC}VOQAArY|c<thVkc zWu{xBfX=yv=tt=OK^9-Dm<sPR&n0}Wp~RrtT)v`JLTVaz`eH;|+GuV9&c&?SzV2o` zQu68mZR&FjQB4myzyVI-?l&t_oGKupT$!@{xRnc_Q`)7I)~b&N9WYWExb%h4T)ZA* zio+**E#sSlG!|WRZO7j>h1ERpG`~inKpbnP_3p=E3`6zXgRMeK?wEkSUeMvzv5=*D z1WS8c%vkCrFcOG`t}Ws$+rNp?5Sj<SpWLigOa6a-Adphk@Ym&!O0B+`TNwac<P93Y zE3G;pC5yLbq&NEO3@tgD6xYh?98bER--q4*0AnSWr@mnotEb)1-+o9XGKlL*>t8K! zxre_RrSWq3+M4?{_J0v$ObVPC#!xyn*X;zRltZO;>q&h)!2?dSVV1GRa`-;_gTAMu zk6Qb$R#{w}b=mdlG*x(SUwlJlvHFjRg-=GX`bKz}Z{b3dZI0r@9HrNK;$BNpTICwg zyk}DN^xv?1PGPj~e}S(obw4u|P4rbO^m~T?09}3;;zM5}sj>0FZ%E1?rNxEK7+qZa zNH6v*Sh;!iIr~aPuNQluo+W3y9=)PZlsZGmxH|I)8mVu|v+HvxH4XII%l0Se0r{`& zC%`R*y5jIYjBa!*TWdC}^=U7_s1=1@=4N~)xcbx`NH{e9O2tLl3`a<ou84Pzb=|*M zIUs5J_aY;}SGygrq~17sH(Uj8GUC;0?+I;IgR8;PUIi5FxjXZZf(-ippa^sKFV6;4 z!l9|7(i-_4Ly7lOiTI}Pcx>e{?5+E5<Hvsqss_q2-ncwO7Vi2+J=tAO-}7B#S#FQw z{bQ*{+~by9g_6gvFV1-;J_+{E!SED%RU2RxeHtm>8+u0s`g->9#6LdXf8=eMx&Hu= z#amKaZ-3X(7LuGphecn954GQPC1EOo_KTe$eXssOS%zLO{Dt{8`$Qt8Z+C<D*$%Vm z;28K?y<en+rs}^`55L19v+IUw@isjn@;ZZ63C&qNuz=mTfqd9^Tu-bDqyQBu;=4D1 z=Lp?`8XI`7-rs4;8x~$Y$JJP9t9(5j{-Kwd7L6UTIo?u*DCVnXGuFbK(t{;4m#_Te zq+@I|90z=tjCb{bVA3tU{{VAZ?*}VvyQ`PpGRcZBAuC<`H_b%|=)3iTOvp#fNq#|T zc7GekIN};M2{ID0;v7s;imX+4>vG_#TcWS2nVZdc-{U@qZISTM2Iwn|JZbc!a6tv+ zz4!ibVlZhGIWSwSIy`Xo@1fGbD_vOj(}zgMOtZZk7JYr74&XlL@e{*+5Fj+c0-hnS zk<>Vsq}@L-#$R~*RH3~$zx5in3KEB$o`(}j^^6=t+V}j7m98{<bL;n(MEK({WBN1v z;y#m>V~t-j=e#?Aj_b4*ND9thfAVE;-E^*NSKhCQP`QAq6h)|`6n1&>pWF%PqC7s? z+B|MNJH?LGj3A4aZ*67AZ2dCC5ca(JO+^gGM-=$Y-;kFuWNQb%AE*cvfiQC_DCyS& z=cKn=TlBwj9{&KMnoqZXb1?RXzFkcGFVDcjcw*!5nG6BPUCKrC0I08klmJ&w@~sE- z*T1y9uwIh6Twmu<biJIYR_OiT5L$Ow)9A0}32U`6>1`f_EEFj-lRL8M_121p!J{QK zbhA%F9mK0rhi8dd2Qvt+v_^DBZqy`M$c5sY_m^4X_5B{uKsr?H9){mHh#rFA$4gR; z@n@tEH#1hkVR9Zb=b(WB!c}NOimz(#5+_VJKHOJ2oRBaj{kcD6w`TbC-&-S$RBr~J zKELEf7y`6QHI~L`qX%DJbt;_=o*h90Cadb)>#9AHGf#+X<z?FUWbVL$ZZF_C8;|Lo z$#eqm&tDz6zR&|Ee!St|<^zm(jrP59sB!Pob&Bx^&=p;LEf-{(F&`?^TdwllH1Ih0 zY5l}tO53A2FYe;{8aNu8arla?Ql-^#R<GVt4Qo@J$W`rC(B0wmtdX3st<<Cis)7fB zS`L=55+G>RfEYA7E^W2qh<dv!+8eDRqlU9Yv9~T_q&)M}h^~f~c5(Inmbtbob+-D} zin_)FF=C+_)1Kx#@nMqMW?4`x(U|=$%aE1T1smRGzYy2TWv5Y^aG#%qlr>j3eh4%w zls(*e-stNG)9>H>{{W;YFPqHzjHwS79w1SkW<d4H+9*iZ2Bjn!hgRaA7^}CKJN9RZ zh0r{YPV%D)deM5Cawnn#pW#gnQeW0?97T7jqYd{lo@G9=IAOz!9sVb%r&!Kjb0}u0 zXM^%bLADBg-tn6{utidXNqIrZ$qehdKe(y@ThiNDmBD4_3-*BIV#Qg?==H1PFxlRy zsBD1RCu?=*i>y&lHf1A=0eRn839T#6XM$4en6Tm+`Ay6`#Nuz|KG6-p(B``7OVD82 zxFu#~#hAc0hDV>SW<k1reS61A%xVB(h~q!=$(zIzy||=1C0J2wyecenAG~GMIIcQ< zXN#(iFd6uaZu5=u=2~0LjTymzXy^h;DWI-%3M!Y?!6^VmbOy!yJi}RdF{5)aw1XIM zlb4%)Hu7t{s{$2_ekF-!i)y*s7gMfo4)qNaOk^=f+VR)nr`BlnhQ3^&hM1%Q<A}{` ztxE6z0N3&olR|cJngE>CN<9oBy#3g9QUYG$>Z_19DR#<jm8V?wCr~~=?7np9M&(LU z$O5-~BYN!vzRKD|C;M}#(m51ouh)oJs?AjlzMiXy#O3dEDJ1)!xL76vFI?_4M!e=@ z<AiRj2qV^C48vPtvi|^ace>}gqDkHbqV?4r%aw!z;x~ok=KPb7t3NY$iT2a#yu?^) zlko|g1h`Bf%z%R8J}@JWtRj-`5O%zAhTu|#LW#=5zS8_4<pbz!UZOQ&nGU0VV()eR zL_WA@h%NRVw;HhMYlB?$ibZ6y;qetHA^!jgb|`>#Jx;JGRn8^`=KU9DwEK_b7&C9K z(D@iFpL$K6J_Q=Wr=85mc{;8Z%;T;1AR>aTS))l*Uo<O<mzfSN)T=k1RyYAJvn*|K z%0eC{Lm|i*?+hDXTaT8bzF|T(a>bGvDjC0ov9RI3JVk8>waN<$7O~5HV!h&bv5d7| zA<7;YVL2n7YBK3a?hc@X-43@MvwnSLNm#OGje4YAVCckl)y%CHJYGGu0OC9cGk>no z`5i-2g}q3E!xa=ZU2_Oh=VLD$C8~5x3>?>%QyE@QNXgn*F~Rq9r>icp7l;-wvVfhp zhy{UM1}1>JC|pB_7Oec$2f_L{ga8lKsY_4Fl*$F<Nnefkj6Dt_TLKC;N2!#~KF@i4 zO62BNXm`X(Oq(UsY}aVzHCRj<)(4(e6@acMgWt@pIW%T%7qcGiMb#@@;O#UIM9E9Y zxn~@M<b_~yue1ZCgrT2Dv_41S)k`J>%G6$qS*KAK8*d+Y1_yNM5aEmWoP;i;?UdSz zytu;{pm=gZOgIX~@brb~z(7L^Ab~FDU&v|vVlk29yxaXHs+XOnF#}UCLJs12BS4jM zjn>o|Wm7*d8tE&AgWfk{^o6hODQ<tbp1zxEb)DIWk^;62XEpVx=>Xa=-E;o{W7ajx zJ2epj_y!00Q$(hIw>0@aQz?x}7&-tRZG*)?QFjXa&c{cNf1g(oa2lny(6=XbC~b$K z>glh`8A6EaKe)fxvr`uZXoLc~g-c6~DY=RC7{sT_T;uZ-b9$fHBNaQ5(ssH0MVdsc z1f5`lvp3ev;#Z`j#0IbfGK<qti|MoTEx3%0W`Bf0+edUv($55<8Er$Du1$k@bt$L~ zTeb1p7=9Di-cTCoiq$lu+xhd~czxoYOlv&95|&~FF&cII&0zpEEubPB!1BPh$f}>S zVcx3uyurfxyI%Wy9c4geOUJ!R_QU&y$XR<i^@6euW_?%w#(6Dg{?6m;)@o~={{Ywq zFYEsRX3SU4zVPayr8>BQ)2E2ha-G;fSr4zTF<}Tr3=jDWa>VeLdIV=|!J!;xBuiaG z1unzC!6c97T3uo7OM6FuGsF*Ow=iyc#c@*GDlxH$rC7W3Ga^HoQo78<qj@NX?GtQY zd0Rm2idO~>l8V07(1h&p&Gd}kCSTl4whXq`CP1FdxF0>wED{(d12GF6E}D9y)o=bG zx-I7-T#uX@?)aTZ@=fM@2Q%vk1a7oxLY}E;fNIjXy<AIiafdEi@fTWgt-x86e`kbc z3a+{=^S_y+O@eG<ziEzu11~e4y=AG2%+k3y@f2V{VX|Lw=$)eV3cGyEsS>ZoI>pr} z7j=~Gf3a}P?+Pr5M%C{XGE^3!?>7hm>pVYIEw!n1m2)ui0gVJ(tJYNGsoT~xyDK^# za{cumsO<j$h6HRF0{$aYZKDmPhm^_MUC?>WVf{cuv{4tjx0=mC<C+<+z}+2XM<sB@ zk>=(4=2T6g>83h%A@_>I)cLDZq?;pVo|1q?*;k&?^Itam?pc6U+A!XpvnB&vbe0QA zsNC&f?J^~cFLMvV-n#z)vsI#%y388@%fZJJ2dRwAH5nib0;1WD^Yw~#ddGK}mLlt! zQiz<L3yw-)au$HH$l#O^3NS-~;FUEnQLQq%8iw$NNEJ66WGi=Js!LDSY7hmYtW5^% zJWn_nhEp`At1esE&SR`L3vAj|w7QGJbGgRXIuT*wjPVVEtyhj3B^nS#GDIo`SzvM~ zFRxv>Scnu+ePeHTWoHVXOuZVUeW0LpK5fIKQeIffl4tD{r+ZAMCT}chFi26k*!`oc zBf@%1*v5yfOq8sm%@O;r-x9FqQFHJ(rtUASuy3qh7?cOnpaIr&%O^#w!GwHD!k}xj z6apWdBFwG;3@pL2fe@pH78K-`wiE@HQ4aaaUt<CU7Q*3TfU?<aB99ep6dO@`x)AY3 zoNWPe`3<CLFqNAdg4;vEDVT*TPjNBI)LbtxO@ndP)Mr?>H=lMScHF8A^^)V&cW=ff zj~_Z3@CC)DCiMh?q5lApHh`*L;pmr>z41N412rfG4-U|sq2xj^^;#aOv&L@?-xZbN zaBwAQ=&QwJ>g82JS~qnHS^?G~0B<lhrS6jE7sYN0l!Gk+n~Ec0)Qw4~#<49frJ`Eq zqA5$e7YUxvue{xb3dPx?>g%a<hK5nISayY_O_T$jo}3y0h9P)igF5WMuOXu;gi6_o zL^ZetuITI-+v>C#cXR=K;0}di5U15z4{EQ!nuyRdmk>VCs=Q7T<qXdWaeMCy3P!IQ z`L>25EI^-Go7gPZNl5Jojmpju2iiC)HH|nyYXHF4?muTi1;#k><(SEbqmM}IMbU?E zq*^myTt=QqhUY(-(IXyV?}3yWCU^XXs?c6S@_%P_3~Ukf!5&L>{=jHEHPRF=?o9F5 z>u`h7w~5<JsU)MML|`Kcy88O|j#I8GUdmeh`^QQc2wqbI73nQY-F(ZzvMOf)>~!#I z1Y(WWe>(j3hUG&(`fH<4vno|+RiU3=(CAh5fq{3t_kk2)GjA;Dhg3^u4bDwG5u=Li zL@YA{DC5C40Sju~LFpCZRE2w~+5157Y1%vEJ)kWCaK|_a^ui~g&n7CdmZi|>U)Z?% zINOSE%XsGz`b75#zRb4-b7;-vcvcR%a}>Rt$A2&z!%@smmbmB1r^7U=Qjw*Z=pKH^ zf)lL{#ah0qJwp#v_A8^Y->h%I&fnYv3%_2mAOYYgdyDR|7`OE7PN6&h02MR5EpO>w z_H~qjx^m?EA?!-@`#-U<uS$NH8CR*l+-PIoAF|?Z)82n#t=GK+X8GYj?{gn&e=#~9 zANdfqP4xcNj}xay*TklUFJG_k7GvxB!Dw3kyI7bIc>Dpc13Ey+-rblG&Rsvl?Q!E> zet|m(I|XxQ9~W*u^1xf}u6ccCP4D5i&8cZ`!Po|NiP$G#owM3@51zg%Y#By^b_v*f b9~uk>B`)Z{ki_mp6}y6(mX`kj=0E@0vR)f1 diff --git a/python_apps/soundcloud-api/scapi/tests/test_connect.py b/python_apps/soundcloud-api/scapi/tests/test_connect.py deleted file mode 100644 index 3e045e6c1..000000000 --- a/python_apps/soundcloud-api/scapi/tests/test_connect.py +++ /dev/null @@ -1,334 +0,0 @@ -from __future__ import with_statement -import os -import tempfile -import itertools -from ConfigParser import SafeConfigParser -import pkg_resources -import scapi -import scapi.authentication -import logging -import webbrowser - -logger = logging.getLogger(__name__) -logger.setLevel(logging.DEBUG) -_logger = logging.getLogger("scapi") -#_logger.setLevel(logging.DEBUG) - -RUN_INTERACTIVE_TESTS = False -USE_OAUTH = True - -TOKEN = "FjNE9aRTg8kpxuOjzwsX8Q" -SECRET = "NP5PGoyKcQv64E0aZgV4CRNzHfPwR4QghrWoqEgEE" -CONSUMER = "EEi2URUfM97pAAxHTogDpQ" -CONSUMER_SECRET = "NFYd8T3i4jVKGZ9TMy9LHaBQB3Sh8V5sxBiMeMZBow" -API_HOST = "api.soundcloud.dev:3000" -USER = "" -PASSWORD = "" - -CONFIG_NAME = "soundcloud.cfg" - -CONNECTOR = None -ROOT = None -def setup(): - global CONNECTOR, ROOT - # load_config() - #scapi.ApiConnector(host='192.168.2.101:3000', user='tiga', password='test') - #scapi.ApiConnector(host='sandbox-api.soundcloud.com:3030', user='tiga', password='test') - scapi.USE_PROXY = False - scapi.PROXY = 'http://127.0.0.1:10000/' - - if USE_OAUTH: - authenticator = scapi.authentication.OAuthAuthenticator(CONSUMER, - CONSUMER_SECRET, - TOKEN, - SECRET) - else: - authenticator = scapi.authentication.BasicAuthenticator(USER, PASSWORD, CONSUMER, CONSUMER_SECRET) - - logger.debug("API_HOST: %s", API_HOST) - CONNECTOR = scapi.ApiConnector(host=API_HOST, - authenticator=authenticator) - ROOT = scapi.Scope(CONNECTOR) - -def load_config(config_name=None): - global TOKEN, SECRET, CONSUMER_SECRET, CONSUMER, API_HOST, USER, PASSWORD - if config_name is None: - config_name = CONFIG_NAME - parser = SafeConfigParser() - current = os.getcwd() - while current: - name = os.path.join(current, config_name) - if os.path.exists(name): - parser.read([name]) - TOKEN = parser.get('global', 'accesstoken') - SECRET = parser.get('global', 'accesstoken_secret') - CONSUMER = parser.get('global', 'consumer') - CONSUMER_SECRET = parser.get('global', 'consumer_secret') - API_HOST = parser.get('global', 'host') - USER = parser.get('global', 'user') - PASSWORD = parser.get('global', 'password') - logger.debug("token: %s", TOKEN) - logger.debug("secret: %s", SECRET) - logger.debug("consumer: %s", CONSUMER) - logger.debug("consumer_secret: %s", CONSUMER_SECRET) - logger.debug("user: %s", USER) - logger.debug("password: %s", PASSWORD) - logger.debug("host: %s", API_HOST) - break - new_current = os.path.dirname(current) - if new_current == current: - break - current = new_current - - -def test_load_config(): - base = tempfile.mkdtemp() - oldcwd = os.getcwd() - cdir = os.path.join(base, "foo") - os.mkdir(cdir) - os.chdir(cdir) - test_config = """ -[global] -host=host -consumer=consumer -consumer_secret=consumer_secret -accesstoken=accesstoken -accesstoken_secret=accesstoken_secret -user=user -password=password -""" - with open(os.path.join(base, CONFIG_NAME), "w") as cf: - cf.write(test_config) - load_config() - assert TOKEN == "accesstoken" and SECRET == "accesstoken_secret" and API_HOST == 'host' - assert CONSUMER == "consumer" and CONSUMER_SECRET == "consumer_secret" - assert USER == "user" and PASSWORD == "password" - os.chdir(oldcwd) - load_config() - - -def test_connect(): - sca = ROOT - quite_a_few_users = list(itertools.islice(sca.users(), 0, 127)) - - logger.debug(quite_a_few_users) - assert isinstance(quite_a_few_users, list) and isinstance(quite_a_few_users[0], scapi.User) - user = sca.me() - logger.debug(user) - assert isinstance(user, scapi.User) - contacts = list(user.contacts()) - assert isinstance(contacts, list) - assert isinstance(contacts[0], scapi.User) - logger.debug(contacts) - tracks = list(user.tracks()) - assert isinstance(tracks, list) - assert isinstance(tracks[0], scapi.Track) - logger.debug(tracks) - - -def test_access_token_acquisition(): - """ - This test is commented out because it needs user-interaction. - """ - if not RUN_INTERACTIVE_TESTS: - return - oauth_authenticator = scapi.authentication.OAuthAuthenticator(CONSUMER, - CONSUMER_SECRET, - None, - None) - - sca = scapi.ApiConnector(host=API_HOST, authenticator=oauth_authenticator) - token, secret = sca.fetch_request_token() - authorization_url = sca.get_request_token_authorization_url(token) - webbrowser.open(authorization_url) - raw_input("please press return") - oauth_authenticator = scapi.authentication.OAuthAuthenticator(CONSUMER, - CONSUMER_SECRET, - token, - secret) - - sca = scapi.ApiConnector(API_HOST, authenticator=oauth_authenticator) - token, secret = sca.fetch_access_token() - logger.info("Access token: '%s'", token) - logger.info("Access token secret: '%s'", secret) - oauth_authenticator = scapi.authentication.OAuthAuthenticator(CONSUMER, - CONSUMER_SECRET, - token, - secret) - - sca = scapi.ApiConnector(API_HOST, authenticator=oauth_authenticator) - test_track_creation() - -def test_track_creation(): - sca = ROOT - track = sca.Track.new(title='bar') - assert isinstance(track, scapi.Track) - -def test_track_update(): - sca = ROOT - track = sca.Track.new(title='bar') - assert isinstance(track, scapi.Track) - track.title='baz' - track = sca.Track.get(track.id) - assert track.title == "baz" - -def test_scoped_track_creation(): - sca = ROOT - user = sca.me() - track = user.tracks.new(title="bar") - assert isinstance(track, scapi.Track) - -def test_upload(): - assert pkg_resources.resource_exists("scapi.tests.test_connect", "knaster.mp3") - data = pkg_resources.resource_stream("scapi.tests.test_connect", "knaster.mp3") - sca = ROOT - user = sca.me() - logger.debug(user) - asset = sca.assets.new(filedata=data) - assert isinstance(asset, scapi.Asset) - logger.debug(asset) - tracks = list(user.tracks()) - track = tracks[0] - track.assets.append(asset) - -def test_contact_list(): - sca = ROOT - user = sca.me() - contacts = list(user.contacts()) - assert isinstance(contacts, list) - assert isinstance(contacts[0], scapi.User) - -def test_permissions(): - sca = ROOT - user = sca.me() - tracks = itertools.islice(user.tracks(), 1) - for track in tracks: - permissions = list(track.permissions()) - logger.debug(permissions) - assert isinstance(permissions, list) - if permissions: - assert isinstance(permissions[0], scapi.User) - -def test_setting_permissions(): - sca = ROOT - me = sca.me() - track = sca.Track.new(title='bar', sharing="private") - assert track.sharing == "private" - users = itertools.islice(sca.users(), 10) - users_to_set = [user for user in users if user != me] - assert users_to_set, "Didn't find any suitable users" - track.permissions = users_to_set - assert set(track.permissions()) == set(users_to_set) - -def test_setting_comments(): - sca = ROOT - user = sca.me() - track = sca.Track.new(title='bar', sharing="private") - comment = sca.Comment.create(body="This is the body of my comment", timestamp=10) - track.comments = comment - assert track.comments().next().body == comment.body - - -def test_setting_comments_the_way_shawn_says_its_correct(): - sca = ROOT - track = sca.Track.new(title='bar', sharing="private") - cbody = "This is the body of my comment" - track.comments.new(body=cbody, timestamp=10) - assert list(track.comments())[0].body == cbody - -def test_contact_add_and_removal(): - sca = ROOT - me = sca.me() - for user in sca.users(): - if user != me: - user_to_set = user - break - - contacts = list(me.contacts()) - if user_to_set in contacts: - me.contacts.remove(user_to_set) - - me.contacts.append(user_to_set) - - contacts = list(me.contacts() ) - assert user_to_set.id in [c.id for c in contacts] - - me.contacts.remove(user_to_set) - - contacts = list(me.contacts() ) - assert user_to_set not in contacts - - -def test_favorites(): - sca = ROOT - me = sca.me() - - favorites = list(me.favorites()) - assert favorites == [] or isinstance(favorites[0], scapi.Track) - - track = None - for user in sca.users(): - if user == me: - continue - for track in user.tracks(): - break - if track is not None: - break - - me.favorites.append(track) - - favorites = list(me.favorites()) - assert track in favorites - - me.favorites.remove(track) - - favorites = list(me.favorites()) - assert track not in favorites - -def test_large_list(): - sca = ROOT - tracks = list(sca.tracks()) - if len(tracks) < scapi.ApiConnector.LIST_LIMIT: - for i in xrange(scapi.ApiConnector.LIST_LIMIT): - scapi.Track.new(title='test_track_%i' % i) - all_tracks = sca.tracks() - assert not isinstance(all_tracks, list) - all_tracks = list(all_tracks) - assert len(all_tracks) > scapi.ApiConnector.LIST_LIMIT - - -def test_events(): - events = list(ROOT.events()) - assert isinstance(events, list) - assert isinstance(events[0], scapi.Event) - -def test_me_having_stress(): - sca = ROOT - for _ in xrange(20): - setup() - sca.me() - -def test_non_global_api(): - root = scapi.Scope(CONNECTOR) - me = root.me() - assert isinstance(me, scapi.User) - - # now get something *from* that user - favorites = list(me.favorites()) - assert favorites - -def test_playlists(): - sca = ROOT - playlists = list(itertools.islice(sca.playlists(), 0, 127)) - found = False - for playlist in playlists: - tracks = playlist.tracks - if not isinstance(tracks, list): - tracks = [tracks] - for trackdata in tracks: - print trackdata - user = trackdata.user - print user - print user.tracks() - print playlist.user - break diff --git a/python_apps/soundcloud-api/scapi/tests/test_oauth.py b/python_apps/soundcloud-api/scapi/tests/test_oauth.py deleted file mode 100644 index d283c0048..000000000 --- a/python_apps/soundcloud-api/scapi/tests/test_oauth.py +++ /dev/null @@ -1,36 +0,0 @@ -import pkg_resources -import scapi -import scapi.authentication -import urllib -import logging - -logger = logging.getLogger(__name__) -logger.setLevel(logging.DEBUG) -_logger = logging.getLogger("scapi") -_logger.setLevel(logging.DEBUG) - -TOKEN = "QcciYu1FSwDSGKAG2mNw" -SECRET = "gJ2ok6ULUsYQB3rsBmpHCRHoFCAPOgK8ZjoIyxzris" -CONSUMER = "Cy2eLPrIMp4vOxjz9icdQ" -CONSUMER_SECRET = "KsBa272x6M2to00Vo5FdvZXt9kakcX7CDIPJoGwTro" - -def test_base64_connect(): - scapi.USE_PROXY = True - scapi.PROXY = 'http://127.0.0.1:10000/' - scapi.SoundCloudAPI(host='192.168.2.31:3000', authenticator=scapi.authentication.BasicAuthenticator('tiga', 'test')) - sca = scapi.Scope() - assert isinstance(sca.me(), scapi.User) - - -def test_oauth_connect(): - scapi.USE_PROXY = True - scapi.PROXY = 'http://127.0.0.1:10000/' - scapi.SoundCloudAPI(host='192.168.2.31:3000', - authenticator=scapi.authentication.OAuthAuthenticator(CONSUMER, - CONSUMER_SECRET, - TOKEN, SECRET)) - - sca = scapi.Scope() - assert isinstance(sca.me(), scapi.User) - - diff --git a/python_apps/soundcloud-api/scapi/util.py b/python_apps/soundcloud-api/scapi/util.py deleted file mode 100644 index 00fa66897..000000000 --- a/python_apps/soundcloud-api/scapi/util.py +++ /dev/null @@ -1,53 +0,0 @@ -## SouncCloudAPI implements a Python wrapper around the SoundCloud RESTful -## API -## -## Copyright (C) 2008 Diez B. Roggisch -## Contact mailto:deets@soundcloud.com -## -## This library is free software; you can redistribute it and/or -## modify it under the terms of the GNU Lesser General Public -## License as published by the Free Software Foundation; either -## version 2.1 of the License, or (at your option) any later version. -## -## This library is distributed in the hope that it will be useful, -## but WITHOUT ANY WARRANTY; without even the implied warranty of -## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -## Lesser General Public License for more details. -## -## You should have received a copy of the GNU Lesser General Public -## License along with this library; if not, write to the Free Software -## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -import urllib - -def escape(s): - # escape '/' too - return urllib.quote(s, safe='') - - - - - - -class MultiDict(dict): - - - def add(self, key, new_value): - if key in self: - value = self[key] - if not isinstance(value, list): - value = [value] - self[key] = value - value.append(new_value) - else: - self[key] = new_value - - - def iteritemslist(self): - for key, value in self.iteritems(): - if not isinstance(value, list): - value = [value] - yield key, value - - - diff --git a/python_apps/soundcloud-api/setup.py b/python_apps/soundcloud-api/setup.py deleted file mode 100644 index dc057a603..000000000 --- a/python_apps/soundcloud-api/setup.py +++ /dev/null @@ -1,22 +0,0 @@ -from setuptools import setup, find_packages - -TEST_REQUIRES = ["ConfigObj>=4.5.3", "nose>=0.10"] - - -setup( - name = "SoundCloudAPI", - version = "0.1", - packages = find_packages(), - author = "Diez B. Roggisch", - author_email = "deets@web.de", - description = "This is an implementation of the SoundCloud RESTful API", - license = "MIT", - keywords = "Soundcloud client API REST", - url = "http://wiki.github.com/soundcloud/api/python-api-wrapper/", - install_requires = ['simplejson'] + TEST_REQUIRES, -# tests_require = TEST_REQUIRES, -# extras_require = dict( -# test = TEST_REQUIRES -# ), - test_suite = 'nose.collector' -) diff --git a/python_apps/soundcloud-api/test.ini b/python_apps/soundcloud-api/test.ini deleted file mode 100644 index c9d1422b3..000000000 --- a/python_apps/soundcloud-api/test.ini +++ /dev/null @@ -1,33 +0,0 @@ -[api] - -# api.soundcloud.dev credentials -api_host=api.soundcloud.dev -consumer=gLnhFeUBnBCZF8a6Ngqq7w -consumer_secret=nbWRdG5X9xUb63l4nIeFYm3nmeVJ2v4s1ROpvRSBvU8 -token=xt5f76c7qPVCBNX3Vrw6A -secret=Ow2WHDKN4YRxrVfcPOt9pHf52Pzv70fp8lG0catQ5w - -# api.sandbox-soundcloud.com credentials -#api_host=api.sandbox-soundcloud.com -#consumer=gLnhFeUBnBCZF8a6Ngqq7w -#consumer_secret=nbWRdG5X9xUb63l4nIeFYm3nmeVJ2v4s1ROpvRSBvU8 -#token=8aX4ApxRweZJsZYe1PTFxQ -#secret=ydZOeG5zQXe8AiExvnzQVfqgySCrbFp0TLSz7BsnBqo - -user=deets -password=kgl27f - -#request_token_url=api.sandbox-soundcloud.com/oauth/request_token -#authorize_token_url=sandbox-soundcloud.com/oauth/authorize_token -#access_token_url=api.sandbox-soundcloud.com/oauth/request_token - -[proxy] -use_proxy=false - -[logging] -test_logger=DEBUG -api_logger=DEBUG - -[test] -run_interactive_tests=false -run_long_tests=false From ca6fd4b9ee1c84ad8e8b6ff4404b49b0f4dfdd0d Mon Sep 17 00:00:00 2001 From: lukabazuka <vladimir.stefanovic@sourcefabric.org> Date: Wed, 23 Mar 2011 18:19:53 +0100 Subject: [PATCH 2/2] Issue CC-2063 resolved --- public/css/images/icon_rebroadcast.png | Bin 0 -> 1075 bytes public/css/images/icon_record.png | Bin 0 -> 1080 bytes public/css/styles.css | 21 ++++++++++++++++----- 3 files changed, 16 insertions(+), 5 deletions(-) create mode 100644 public/css/images/icon_rebroadcast.png create mode 100644 public/css/images/icon_record.png diff --git a/public/css/images/icon_rebroadcast.png b/public/css/images/icon_rebroadcast.png new file mode 100644 index 0000000000000000000000000000000000000000..5282d87b2aba3ae5ae60e122f5d1b77c4c42cb27 GIT binary patch literal 1075 zcmbVLO=#0l9M33>Z8#8gFvo;P=0#bPm!#=Owrp#g%oXf5x`G7}mL_j&*pe5MH=7m3 z;!Z*@g5be}mt92gAb1!a1QBF-@uqke1`|B(B#1Blm>$Xw29o!Y-|zSTezdxLeRO1E zgkhM`!je{^>ll4Uh6d^P*3+@Cbh$+I3R%M&q;B|#$y&IIK*2FKQ3)B=?wvz4%P=v^ zE>}pUctbI<!x<5V3muQL8D@4q^bB(g5l}^&wyUx~-@apkZK>={xd@A19@XrnhL6@7 z%Vo2%Wo9gPeh$or3Keh=F+k{SyMYp_Y+F~M`{<fyK^sE0RJP+(rML?6*hfI-VBCaB z2$BLPNQqP`H4Q{4Kpu*`AjXB1B8duwp!=}Yns03=C2g^5i=I@rMu?~Ie7#=h>Jo?j zO<u@kGLeQT#wj8m?7GAV<8Cn3Q_xUg`nE@G?1D(qsNx->veeT~2#!}Qo(j7`H&HZY zd}w&Qz(L+|qPW`VfRxZ*H~ON3@~(&Y5(@B+Z_;{fO!de#cV`=lfYcjh#kXlujBO2@ zI}UP5K~q`!hqG);$>>rpk)u%yazclKkQH-DEuGeK8cgZwjMUTU$IVJYn!+VnPUZzc zhiNejwMALXrBh-;7R4U7;0DBSP1Lh%Q@dTRcqUiL`^X^JFJrvj>wwi7COD{J59HTm zaMN}zTo0n+bYj(zZ{J1MqK_TW&aPtjv7XTc4NBQWGA+yfqwa96|H&9no#CU__@`BR zSG514?P=rF!|CWCm(Gh%2SfdkJ)uKI^OY@!->U1)W&`|Q8QNn8<dbvz6Gz9#zn%}h zIccp9PA*LDF|Af>yn4j!4_-e1UA@QYUp~HHxY9frfA;e8z=hawb39f^KB;{g)-N8+ ofop}w&Epr2cmL|lOl+Y!z)Wioe%zK{A4X$b(3iDWx%G#C0D9(6HUIzs literal 0 HcmV?d00001 diff --git a/public/css/images/icon_record.png b/public/css/images/icon_record.png new file mode 100644 index 0000000000000000000000000000000000000000..ffedeb5c12ed33368016ea3f435956de0fc28332 GIT binary patch literal 1080 zcmbVLO=#0l91jj<R0kq#pdbs`)iy6_(~sCXn!eN)>{h$N3Zj@LZ)>(CFH7FmY~W=e zDxT(Lmw~8<U8Z<aq^JW=6Ge9!qIeY#qBjLS=u6j54`l}f$@|Ff_xpd}D36@&3!Mlt z4AWOEzzSXa=^N@jM86kS``^*!I8ke43{R4V<{~C*;0eSQEo}-_kY+5-ZJ{*7^cZHf zMrx&VvW~5Y7GNU2<xn=mq=$V+(`OK2C(x8>XSi?8=NxMq8E#xEfs&I$b+fSKqOqls zs=hR%rwnfR44d|4Dqta^vA#8Hd$OP5TDmgb2iH8uwjg9C!|gg%E0x(Cb`dK@Kv)NH zz{Z7$5RD}giBqfy1i%B47sRlTkfWju0NZ{zYRxq!<qFKVZP8PPs}thLJl|+EB8_MS zyHmW7N~Hn~Q4CW=*ju!T=7()>sG|Upr@N*@Ol-4(qBeo&Nrt1I?uKAFrP7|T?X?p{ zQ^xz6!wV6>TUHQP3+<5#`s+qlv{zkp5MMzao_BRxkIA79ndWYPLjjO_BagZ!Es8b^ zu|97hn-pP&qkkfXX~-!xs>Bo;wIIb*AP8AeiNj<PDi9>pWGdRx=*CrI`FK15p(Mp~ zf}nyVkf4$Tc~MnTk{E>@ZqfFLX6vY9*Q9pa+}yrgIp-pcV7H3#Y^MXtbxg2V#}1nt zlh|?7HgLlWinALlM6S7jjJ%62wv}Dk>|#9y1qh<qSUf37-J{;+8vm0qo;t$^t?^H* zbgpRs1>3#Gr-!}KK{lNimk!38+vy!TRMSP6t@`gbD%+t=wl_WW`R0!=>&++kk8bU3 z_GDk59_{rv#|sL$b?_Q^y4AO`vV8sFhsPQ9YHqN+eDXW|^>ylST>F^ME9=|EXP550 xdNjSUcID#v-^ZGI(_c`3uD%@jbWd74aD=&Am@5yyeK8Qsa#0<D50uNxe*k*;TO|Mh literal 0 HcmV?d00001 diff --git a/public/css/styles.css b/public/css/styles.css index 4e5e20a0c..0ad93ca57 100644 --- a/public/css/styles.css +++ b/public/css/styles.css @@ -825,7 +825,6 @@ div.ui-datepicker { #schedule_playlist_chosen li > h3 > span.ui-icon.ui-icon-triangle-1-e, #schedule_playlist_chosen li > h3 > span.ui-icon.ui-icon-triangle-1-s { float:left; - margin-right: 8px; } #schedule_playlist_chosen li > h3 > span.ui-icon.ui-icon-close { @@ -1474,9 +1473,21 @@ ul.errors li { margin:-4px 3px -3px 0; float:right; } - .time-flow { - float:right; - margin-right:4px; + float:right; + margin-right:4px; } - +.small-icon { + display:block; + width:21px; + height:10px; + float:right; + margin-left:3px; +} +.small-icon.recording { + background:url(images/icon_record.png) no-repeat 0 0; +} +.small-icon.rebroadcast { + background:url(images/icon_rebroadcast.png) no-repeat 0 0; +} + \ No newline at end of file