This file is indexed.

/usr/share/doc/python-musicbrainz2-doc/html/musicbrainz2.utils-pysrc.html is in python-musicbrainz2-doc 0.7.4-1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
<?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>musicbrainz2.utils</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>&nbsp;&nbsp;&nbsp;<a
        href="musicbrainz2-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>

  <!-- Tree link -->
      <th>&nbsp;&nbsp;&nbsp;<a
        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>

  <!-- Index link -->
      <th>&nbsp;&nbsp;&nbsp;<a
        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>

  <!-- Help link -->
      <th>&nbsp;&nbsp;&nbsp;<a
        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>

      <th class="navbar" width="100%"></th>
  </tr>
</table>
<table width="100%" cellpadding="0" cellspacing="0">
  <tr valign="top">
    <td width="100%">
      <span class="breadcrumbs">
        <a href="musicbrainz2-module.html">Package&nbsp;musicbrainz2</a> ::
        Module&nbsp;utils
      </span>
    </td>
    <td>
      <table cellpadding="0" cellspacing="0">
        <!-- hide/show private -->
        <tr><td align="right"><span class="options"
            >[<a href="frames.html" target="_top">frames</a
            >]&nbsp;|&nbsp;<a href="musicbrainz2.utils-pysrc.html"
            target="_top">no&nbsp;frames</a>]</span></td></tr>
      </table>
    </td>
  </tr>
</table>
<h1 class="epydoc">Source Code for <a href="musicbrainz2.utils-module.html">Module musicbrainz2.utils</a></h1>
<pre class="py-src">
<a name="L1"></a><tt class="py-lineno">  1</tt>  <tt class="py-line"><tt class="py-docstring">"""Various utilities to simplify common tasks.</tt> </tt>
<a name="L2"></a><tt class="py-lineno">  2</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L3"></a><tt class="py-lineno">  3</tt>  <tt class="py-line"><tt class="py-docstring">This module contains helper functions to make common tasks easier.</tt> </tt>
<a name="L4"></a><tt class="py-lineno">  4</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L5"></a><tt class="py-lineno">  5</tt>  <tt class="py-line"><tt class="py-docstring">@author: Matthias Friedrich &lt;matt@mafr.de&gt;</tt> </tt>
<a name="L6"></a><tt class="py-lineno">  6</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
<a name="L7"></a><tt class="py-lineno">  7</tt>  <tt class="py-line"><tt id="link-0" class="py-name" targets="Variable musicbrainz2.__revision__=musicbrainz2-module.html#__revision__,Variable musicbrainz2.data.__revision__=musicbrainz2.data-module.html#__revision__,Variable musicbrainz2.data.countrynames.__revision__=musicbrainz2.data.countrynames-module.html#__revision__,Variable musicbrainz2.data.languagenames.__revision__=musicbrainz2.data.languagenames-module.html#__revision__,Variable musicbrainz2.data.releasetypenames.__revision__=musicbrainz2.data.releasetypenames-module.html#__revision__,Variable musicbrainz2.data.scriptnames.__revision__=musicbrainz2.data.scriptnames-module.html#__revision__,Variable musicbrainz2.disc.__revision__=musicbrainz2.disc-module.html#__revision__,Variable musicbrainz2.model.__revision__=musicbrainz2.model-module.html#__revision__,Variable musicbrainz2.utils.__revision__=musicbrainz2.utils-module.html#__revision__,Variable musicbrainz2.webservice.__revision__=musicbrainz2.webservice-module.html#__revision__,Variable musicbrainz2.wsxml.__revision__=musicbrainz2.wsxml-module.html#__revision__"><a title="musicbrainz2.__revision__
musicbrainz2.data.__revision__
musicbrainz2.data.countrynames.__revision__
musicbrainz2.data.languagenames.__revision__
musicbrainz2.data.releasetypenames.__revision__
musicbrainz2.data.scriptnames.__revision__
musicbrainz2.disc.__revision__
musicbrainz2.model.__revision__
musicbrainz2.utils.__revision__
musicbrainz2.webservice.__revision__
musicbrainz2.wsxml.__revision__" class="py-name" href="#" onclick="return doclink('link-0', '__revision__', 'link-0');">__revision__</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'$Id: utils.py 13322 2011-11-03 13:38:06Z luks $'</tt> </tt>
<a name="L8"></a><tt class="py-lineno">  8</tt>  <tt class="py-line"> </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">re</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">urlparse</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-name">__all__</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt> </tt>
<a name="L13"></a><tt class="py-lineno"> 13</tt>  <tt class="py-line">        <tt class="py-string">'extractUuid'</tt><tt class="py-op">,</tt> <tt class="py-string">'extractFragment'</tt><tt class="py-op">,</tt> <tt class="py-string">'extractEntityType'</tt><tt class="py-op">,</tt> </tt>
<a name="L14"></a><tt class="py-lineno"> 14</tt>  <tt class="py-line">        <tt class="py-string">'getReleaseTypeName'</tt><tt class="py-op">,</tt> <tt class="py-string">'getCountryName'</tt><tt class="py-op">,</tt> <tt class="py-string">'getLanguageName'</tt><tt class="py-op">,</tt> </tt>
<a name="L15"></a><tt class="py-lineno"> 15</tt>  <tt class="py-line">        <tt class="py-string">'getScriptName'</tt><tt class="py-op">,</tt> </tt>
<a name="L16"></a><tt class="py-lineno"> 16</tt>  <tt class="py-line"><tt class="py-op">]</tt> </tt>
<a name="L17"></a><tt class="py-lineno"> 17</tt>  <tt class="py-line"> </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 class="py-comment"># A pattern to split the path part of an absolute MB URI.</tt> </tt>
<a name="L20"></a><tt class="py-lineno"> 20</tt>  <tt class="py-line"><tt id="link-1" class="py-name" targets="Variable musicbrainz2.utils.PATH_PATTERN=musicbrainz2.utils-module.html#PATH_PATTERN"><a title="musicbrainz2.utils.PATH_PATTERN" class="py-name" href="#" onclick="return doclink('link-1', 'PATH_PATTERN', 'link-1');">PATH_PATTERN</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'^/(artist|release|track|label|release-group)/([^/]*)$'</tt> </tt>
<a name="L21"></a><tt class="py-lineno"> 21</tt>  <tt class="py-line"> </tt>
<a name="L22"></a><tt class="py-lineno"> 22</tt>  <tt class="py-line"> </tt>
<a name="extractUuid"></a><div id="extractUuid-def"><a name="L23"></a><tt class="py-lineno"> 23</tt> <a class="py-toggle" href="#" id="extractUuid-toggle" onclick="return toggle('extractUuid');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="musicbrainz2.utils-module.html#extractUuid">extractUuid</a><tt class="py-op">(</tt><tt class="py-param">uriStr</tt><tt class="py-op">,</tt> <tt class="py-param">resType</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="extractUuid-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="extractUuid-expanded"><a name="L24"></a><tt class="py-lineno"> 24</tt>  <tt class="py-line">        <tt class="py-docstring">"""Extract the UUID part from a MusicBrainz identifier.</tt> </tt>
<a name="L25"></a><tt class="py-lineno"> 25</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L26"></a><tt class="py-lineno"> 26</tt>  <tt class="py-line"><tt class="py-docstring">        This function takes a MusicBrainz ID (an absolute URI) as the input</tt> </tt>
<a name="L27"></a><tt class="py-lineno"> 27</tt>  <tt class="py-line"><tt class="py-docstring">        and returns the UUID part of the URI, thus turning it into a relative</tt> </tt>
<a name="L28"></a><tt class="py-lineno"> 28</tt>  <tt class="py-line"><tt class="py-docstring">        URI. If C{uriStr} is None or a relative URI, then it is returned</tt> </tt>
<a name="L29"></a><tt class="py-lineno"> 29</tt>  <tt class="py-line"><tt class="py-docstring">        unchanged.</tt> </tt>
<a name="L30"></a><tt class="py-lineno"> 30</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L31"></a><tt class="py-lineno"> 31</tt>  <tt class="py-line"><tt class="py-docstring">        The C{resType} parameter can be used for error checking. Set it to</tt> </tt>
<a name="L32"></a><tt class="py-lineno"> 32</tt>  <tt class="py-line"><tt class="py-docstring">        'artist', 'release', or 'track' to make sure C{uriStr} is a</tt> </tt>
<a name="L33"></a><tt class="py-lineno"> 33</tt>  <tt class="py-line"><tt class="py-docstring">        syntactically valid MusicBrainz identifier of the given resource</tt> </tt>
<a name="L34"></a><tt class="py-lineno"> 34</tt>  <tt class="py-line"><tt class="py-docstring">        type. If it isn't, a C{ValueError} exception is raised.</tt> </tt>
<a name="L35"></a><tt class="py-lineno"> 35</tt>  <tt class="py-line"><tt class="py-docstring">        This error checking only works if C{uriStr} is an absolute URI, of</tt> </tt>
<a name="L36"></a><tt class="py-lineno"> 36</tt>  <tt class="py-line"><tt class="py-docstring">        course.</tt> </tt>
<a name="L37"></a><tt class="py-lineno"> 37</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L38"></a><tt class="py-lineno"> 38</tt>  <tt class="py-line"><tt class="py-docstring">        Example:</tt> </tt>
<a name="L39"></a><tt class="py-lineno"> 39</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L40"></a><tt class="py-lineno"> 40</tt>  <tt class="py-line"><tt class="py-docstring">        &gt;&gt;&gt; from musicbrainz2.utils import extractUuid</tt> </tt>
<a name="L41"></a><tt class="py-lineno"> 41</tt>  <tt class="py-line"><tt class="py-docstring">        &gt;&gt;&gt;  extractUuid('http://musicbrainz.org/artist/c0b2500e-0cef-4130-869d-732b23ed9df5', 'artist')</tt> </tt>
<a name="L42"></a><tt class="py-lineno"> 42</tt>  <tt class="py-line"><tt class="py-docstring">        'c0b2500e-0cef-4130-869d-732b23ed9df5'</tt> </tt>
<a name="L43"></a><tt class="py-lineno"> 43</tt>  <tt class="py-line"><tt class="py-docstring">        &gt;&gt;&gt;</tt> </tt>
<a name="L44"></a><tt class="py-lineno"> 44</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L45"></a><tt class="py-lineno"> 45</tt>  <tt class="py-line"><tt class="py-docstring">        @param uriStr: a string containing a MusicBrainz ID (an URI), or None</tt> </tt>
<a name="L46"></a><tt class="py-lineno"> 46</tt>  <tt class="py-line"><tt class="py-docstring">        @param resType: a string containing a resource type</tt> </tt>
<a name="L47"></a><tt class="py-lineno"> 47</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L48"></a><tt class="py-lineno"> 48</tt>  <tt class="py-line"><tt class="py-docstring">        @return: a string containing a relative URI, or None</tt> </tt>
<a name="L49"></a><tt class="py-lineno"> 49</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L50"></a><tt class="py-lineno"> 50</tt>  <tt class="py-line"><tt class="py-docstring">        @raise ValueError: the given URI is no valid MusicBrainz ID</tt> </tt>
<a name="L51"></a><tt class="py-lineno"> 51</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
<a name="L52"></a><tt class="py-lineno"> 52</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">uriStr</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
<a name="L53"></a><tt class="py-lineno"> 53</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>
<a name="L54"></a><tt class="py-lineno"> 54</tt>  <tt class="py-line"> </tt>
<a name="L55"></a><tt class="py-lineno"> 55</tt>  <tt class="py-line">        <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-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">uriStr</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-number">3</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 class="py-keyword">if</tt> <tt class="py-name">scheme</tt> <tt class="py-op">==</tt> <tt class="py-string">''</tt><tt class="py-op">:</tt> </tt>
<a name="L58"></a><tt class="py-lineno"> 58</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-name">uriStr</tt>   <tt class="py-comment"># no URI, probably already the UUID</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-keyword">if</tt> <tt class="py-name">scheme</tt> <tt class="py-op">!=</tt> <tt class="py-string">'http'</tt> <tt class="py-keyword">or</tt> <tt class="py-name">netloc</tt> <tt class="py-op">!=</tt> <tt class="py-string">'musicbrainz.org'</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 class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">'%s is no MB ID.'</tt> <tt class="py-op">%</tt> <tt class="py-name">uriStr</tt><tt class="py-op">)</tt> </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>  <tt class="py-line">        <tt class="py-name">m</tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">match</tt><tt class="py-op">(</tt><tt id="link-2" class="py-name"><a title="musicbrainz2.utils.PATH_PATTERN" class="py-name" href="#" onclick="return doclink('link-2', 'PATH_PATTERN', 'link-1');">PATH_PATTERN</a></tt><tt class="py-op">,</tt> <tt class="py-name">path</tt><tt class="py-op">)</tt> </tt>
<a name="L64"></a><tt class="py-lineno"> 64</tt>  <tt class="py-line"> </tt>
<a name="L65"></a><tt class="py-lineno"> 65</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">m</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">if</tt> <tt class="py-name">resType</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</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">m</tt><tt class="py-op">.</tt><tt class="py-name">group</tt><tt class="py-op">(</tt><tt class="py-number">2</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">else</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">if</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt class="py-name">group</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-name">resType</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">return</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt class="py-name">group</tt><tt class="py-op">(</tt><tt class="py-number">2</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">else</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">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">'expected "%s" Id'</tt> <tt class="py-op">%</tt> <tt class="py-name">resType</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">else</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">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">'%s is no valid MB ID.'</tt> <tt class="py-op">%</tt> <tt class="py-name">uriStr</tt><tt class="py-op">)</tt> </tt>
</div><a name="L75"></a><tt class="py-lineno"> 75</tt>  <tt class="py-line"> </tt>
<a name="L76"></a><tt class="py-lineno"> 76</tt>  <tt class="py-line"> </tt>
<a name="extractFragment"></a><div id="extractFragment-def"><a name="L77"></a><tt class="py-lineno"> 77</tt> <a class="py-toggle" href="#" id="extractFragment-toggle" onclick="return toggle('extractFragment');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="musicbrainz2.utils-module.html#extractFragment">extractFragment</a><tt class="py-op">(</tt><tt class="py-param">uriStr</tt><tt class="py-op">,</tt> <tt class="py-param">uriPrefix</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="extractFragment-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="extractFragment-expanded"><a name="L78"></a><tt class="py-lineno"> 78</tt>  <tt class="py-line">        <tt class="py-docstring">"""Extract the fragment part from a URI.</tt> </tt>
<a name="L79"></a><tt class="py-lineno"> 79</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L80"></a><tt class="py-lineno"> 80</tt>  <tt class="py-line"><tt class="py-docstring">        If C{uriStr} is None or no absolute URI, then it is returned unchanged.</tt> </tt>
<a name="L81"></a><tt class="py-lineno"> 81</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L82"></a><tt class="py-lineno"> 82</tt>  <tt class="py-line"><tt class="py-docstring">        The C{uriPrefix} parameter can be used for error checking. If C{uriStr}</tt> </tt>
<a name="L83"></a><tt class="py-lineno"> 83</tt>  <tt class="py-line"><tt class="py-docstring">        is an absolute URI, then the function checks if it starts with</tt> </tt>
<a name="L84"></a><tt class="py-lineno"> 84</tt>  <tt class="py-line"><tt class="py-docstring">        C{uriPrefix}. If it doesn't, a C{ValueError} exception is raised.</tt> </tt>
<a name="L85"></a><tt class="py-lineno"> 85</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L86"></a><tt class="py-lineno"> 86</tt>  <tt class="py-line"><tt class="py-docstring">        @param uriStr: a string containing an absolute URI</tt> </tt>
<a name="L87"></a><tt class="py-lineno"> 87</tt>  <tt class="py-line"><tt class="py-docstring">        @param uriPrefix: a string containing an URI prefix</tt> </tt>
<a name="L88"></a><tt class="py-lineno"> 88</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L89"></a><tt class="py-lineno"> 89</tt>  <tt class="py-line"><tt class="py-docstring">        @return: a string containing the fragment, or None</tt> </tt>
<a name="L90"></a><tt class="py-lineno"> 90</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L91"></a><tt class="py-lineno"> 91</tt>  <tt class="py-line"><tt class="py-docstring">        @raise ValueError: the given URI doesn't start with C{uriPrefix}</tt> </tt>
<a name="L92"></a><tt class="py-lineno"> 92</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
<a name="L93"></a><tt class="py-lineno"> 93</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">uriStr</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
<a name="L94"></a><tt class="py-lineno"> 94</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>
<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-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">frag</tt><tt class="py-op">)</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">uriStr</tt><tt class="py-op">)</tt> </tt>
<a name="L97"></a><tt class="py-lineno"> 97</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">scheme</tt> <tt class="py-op">==</tt> <tt class="py-string">''</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">return</tt> <tt class="py-name">uriStr</tt> <tt class="py-comment"># this is no URI</tt> </tt>
<a name="L99"></a><tt class="py-lineno"> 99</tt>  <tt class="py-line"> </tt>
<a name="L100"></a><tt class="py-lineno">100</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">uriPrefix</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt> <tt class="py-keyword">or</tt> <tt class="py-name">uriStr</tt><tt class="py-op">.</tt><tt class="py-name">startswith</tt><tt class="py-op">(</tt><tt class="py-name">uriPrefix</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L101"></a><tt class="py-lineno">101</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-name">frag</tt> </tt>
<a name="L102"></a><tt class="py-lineno">102</tt>  <tt class="py-line">        <tt class="py-keyword">else</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">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"prefix doesn't match URI %s"</tt> <tt class="py-op">%</tt> <tt class="py-name">uriStr</tt><tt class="py-op">)</tt> </tt>
</div><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>
<a name="extractEntityType"></a><div id="extractEntityType-def"><a name="L106"></a><tt class="py-lineno">106</tt> <a class="py-toggle" href="#" id="extractEntityType-toggle" onclick="return toggle('extractEntityType');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="musicbrainz2.utils-module.html#extractEntityType">extractEntityType</a><tt class="py-op">(</tt><tt class="py-param">uriStr</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="extractEntityType-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="extractEntityType-expanded"><a name="L107"></a><tt class="py-lineno">107</tt>  <tt class="py-line">        <tt class="py-docstring">"""Returns the entity type an entity URI is referring to.</tt> </tt>
<a name="L108"></a><tt class="py-lineno">108</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L109"></a><tt class="py-lineno">109</tt>  <tt class="py-line"><tt class="py-docstring">        @param uriStr: a string containing an absolute entity URI</tt> </tt>
<a name="L110"></a><tt class="py-lineno">110</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L111"></a><tt class="py-lineno">111</tt>  <tt class="py-line"><tt class="py-docstring">        @return: a string containing 'artist', 'release', 'track', or 'label'</tt> </tt>
<a name="L112"></a><tt class="py-lineno">112</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L113"></a><tt class="py-lineno">113</tt>  <tt class="py-line"><tt class="py-docstring">        @raise ValueError: if the given URI is no valid MusicBrainz ID</tt> </tt>
<a name="L114"></a><tt class="py-lineno">114</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
<a name="L115"></a><tt class="py-lineno">115</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">uriStr</tt> <tt class="py-keyword">is</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-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">'None is no valid entity URI'</tt><tt class="py-op">)</tt> </tt>
<a name="L117"></a><tt class="py-lineno">117</tt>  <tt class="py-line"> </tt>
<a name="L118"></a><tt class="py-lineno">118</tt>  <tt class="py-line">        <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-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">uriStr</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-number">3</tt><tt class="py-op">]</tt> </tt>
<a name="L119"></a><tt class="py-lineno">119</tt>  <tt class="py-line"> </tt>
<a name="L120"></a><tt class="py-lineno">120</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">scheme</tt> <tt class="py-op">==</tt> <tt class="py-string">''</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">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">'%s is no absolute MB ID.'</tt> <tt class="py-op">%</tt> <tt class="py-name">uriStr</tt><tt class="py-op">)</tt> </tt>
<a name="L122"></a><tt class="py-lineno">122</tt>  <tt class="py-line"> </tt>
<a name="L123"></a><tt class="py-lineno">123</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">scheme</tt> <tt class="py-op">!=</tt> <tt class="py-string">'http'</tt> <tt class="py-keyword">or</tt> <tt class="py-name">netloc</tt> <tt class="py-op">!=</tt> <tt class="py-string">'musicbrainz.org'</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">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">'%s is no MB ID.'</tt> <tt class="py-op">%</tt> <tt class="py-name">uriStr</tt><tt class="py-op">)</tt> </tt>
<a name="L125"></a><tt class="py-lineno">125</tt>  <tt class="py-line"> </tt>
<a name="L126"></a><tt class="py-lineno">126</tt>  <tt class="py-line">        <tt class="py-name">m</tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">match</tt><tt class="py-op">(</tt><tt id="link-3" class="py-name"><a title="musicbrainz2.utils.PATH_PATTERN" class="py-name" href="#" onclick="return doclink('link-3', 'PATH_PATTERN', 'link-1');">PATH_PATTERN</a></tt><tt class="py-op">,</tt> <tt class="py-name">path</tt><tt class="py-op">)</tt> </tt>
<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 class="py-keyword">if</tt> <tt class="py-name">m</tt><tt class="py-op">:</tt> </tt>
<a name="L129"></a><tt class="py-lineno">129</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt class="py-name">group</tt><tt class="py-op">(</tt><tt class="py-number">1</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">else</tt><tt class="py-op">:</tt> </tt>
<a name="L131"></a><tt class="py-lineno">131</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">'%s is no valid MB ID.'</tt> <tt class="py-op">%</tt> <tt class="py-name">uriStr</tt><tt class="py-op">)</tt> </tt>
</div><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>
<a name="getReleaseTypeName"></a><div id="getReleaseTypeName-def"><a name="L134"></a><tt class="py-lineno">134</tt> <a class="py-toggle" href="#" id="getReleaseTypeName-toggle" onclick="return toggle('getReleaseTypeName');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="musicbrainz2.utils-module.html#getReleaseTypeName">getReleaseTypeName</a><tt class="py-op">(</tt><tt class="py-param">releaseType</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="getReleaseTypeName-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="getReleaseTypeName-expanded"><a name="L135"></a><tt class="py-lineno">135</tt>  <tt class="py-line">        <tt class="py-docstring">"""Returns the name of a release type URI.</tt> </tt>
<a name="L136"></a><tt class="py-lineno">136</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L137"></a><tt class="py-lineno">137</tt>  <tt class="py-line"><tt class="py-docstring">        @param releaseType: a string containing a release type URI</tt> </tt>
<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: a string containing a printable name for the release type</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-docstring">        @see: L{musicbrainz2.model.Release}</tt> </tt>
<a name="L142"></a><tt class="py-lineno">142</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
<a name="L143"></a><tt class="py-lineno">143</tt>  <tt class="py-line">        <tt class="py-keyword">from</tt> <tt id="link-4" class="py-name" targets="Package musicbrainz2=musicbrainz2-module.html"><a title="musicbrainz2" class="py-name" href="#" onclick="return doclink('link-4', 'musicbrainz2', 'link-4');">musicbrainz2</a></tt><tt class="py-op">.</tt><tt id="link-5" class="py-name" targets="Package musicbrainz2.data=musicbrainz2.data-module.html"><a title="musicbrainz2.data" class="py-name" href="#" onclick="return doclink('link-5', 'data', 'link-5');">data</a></tt><tt class="py-op">.</tt><tt id="link-6" class="py-name" targets="Module musicbrainz2.data.releasetypenames=musicbrainz2.data.releasetypenames-module.html"><a title="musicbrainz2.data.releasetypenames" class="py-name" href="#" onclick="return doclink('link-6', 'releasetypenames', 'link-6');">releasetypenames</a></tt> <tt class="py-keyword">import</tt> <tt id="link-7" class="py-name" targets="Variable musicbrainz2.data.releasetypenames.releaseTypeNames=musicbrainz2.data.releasetypenames-module.html#releaseTypeNames"><a title="musicbrainz2.data.releasetypenames.releaseTypeNames" class="py-name" href="#" onclick="return doclink('link-7', 'releaseTypeNames', 'link-7');">releaseTypeNames</a></tt> </tt>
<a name="L144"></a><tt class="py-lineno">144</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt id="link-8" class="py-name"><a title="musicbrainz2.data.releasetypenames.releaseTypeNames" class="py-name" href="#" onclick="return doclink('link-8', 'releaseTypeNames', 'link-7');">releaseTypeNames</a></tt><tt class="py-op">.</tt><tt id="link-9" class="py-name" targets="Method musicbrainz2.webservice.IWebService.get()=musicbrainz2.webservice.IWebService-class.html#get,Method musicbrainz2.webservice.WebService.get()=musicbrainz2.webservice.WebService-class.html#get"><a title="musicbrainz2.webservice.IWebService.get
musicbrainz2.webservice.WebService.get" class="py-name" href="#" onclick="return doclink('link-9', 'get', 'link-9');">get</a></tt><tt class="py-op">(</tt><tt class="py-name">releaseType</tt><tt class="py-op">)</tt> </tt>
</div><a name="L145"></a><tt class="py-lineno">145</tt>  <tt class="py-line"> </tt>
<a name="L146"></a><tt class="py-lineno">146</tt>  <tt class="py-line"> </tt>
<a name="getCountryName"></a><div id="getCountryName-def"><a name="L147"></a><tt class="py-lineno">147</tt> <a class="py-toggle" href="#" id="getCountryName-toggle" onclick="return toggle('getCountryName');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="musicbrainz2.utils-module.html#getCountryName">getCountryName</a><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="getCountryName-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="getCountryName-expanded"><a name="L148"></a><tt class="py-lineno">148</tt>  <tt class="py-line">        <tt class="py-docstring">"""Returns a country's name based on an ISO-3166 country code.</tt> </tt>
<a name="L149"></a><tt class="py-lineno">149</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L150"></a><tt class="py-lineno">150</tt>  <tt class="py-line"><tt class="py-docstring">        The country table this function is based on has been modified for</tt> </tt>
<a name="L151"></a><tt class="py-lineno">151</tt>  <tt class="py-line"><tt class="py-docstring">        MusicBrainz purposes by using the extension mechanism defined in</tt> </tt>
<a name="L152"></a><tt class="py-lineno">152</tt>  <tt class="py-line"><tt class="py-docstring">        ISO-3166. All IDs are still valid ISO-3166 country codes, but some</tt> </tt>
<a name="L153"></a><tt class="py-lineno">153</tt>  <tt class="py-line"><tt class="py-docstring">        IDs have been added to include historic countries and some of the</tt> </tt>
<a name="L154"></a><tt class="py-lineno">154</tt>  <tt class="py-line"><tt class="py-docstring">        country names have been modified to make them better suited for</tt> </tt>
<a name="L155"></a><tt class="py-lineno">155</tt>  <tt class="py-line"><tt class="py-docstring">        display purposes.</tt> </tt>
<a name="L156"></a><tt class="py-lineno">156</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L157"></a><tt class="py-lineno">157</tt>  <tt class="py-line"><tt class="py-docstring">        If the country ID is not found, None is returned. This may happen</tt> </tt>
<a name="L158"></a><tt class="py-lineno">158</tt>  <tt class="py-line"><tt class="py-docstring">        for example, when new countries are added to the MusicBrainz web</tt> </tt>
<a name="L159"></a><tt class="py-lineno">159</tt>  <tt class="py-line"><tt class="py-docstring">        service which aren't known to this library yet.</tt> </tt>
<a name="L160"></a><tt class="py-lineno">160</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L161"></a><tt class="py-lineno">161</tt>  <tt class="py-line"><tt class="py-docstring">        @param id_: a two-letter upper case string containing an ISO-3166 code</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">        @return: a string containing the country's name, or None</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">        @see: L{musicbrainz2.model}</tt> </tt>
<a name="L166"></a><tt class="py-lineno">166</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
<a name="L167"></a><tt class="py-lineno">167</tt>  <tt class="py-line">        <tt class="py-keyword">from</tt> <tt id="link-10" class="py-name"><a title="musicbrainz2" class="py-name" href="#" onclick="return doclink('link-10', 'musicbrainz2', 'link-4');">musicbrainz2</a></tt><tt class="py-op">.</tt><tt id="link-11" class="py-name"><a title="musicbrainz2.data" class="py-name" href="#" onclick="return doclink('link-11', 'data', 'link-5');">data</a></tt><tt class="py-op">.</tt><tt id="link-12" class="py-name" targets="Module musicbrainz2.data.countrynames=musicbrainz2.data.countrynames-module.html"><a title="musicbrainz2.data.countrynames" class="py-name" href="#" onclick="return doclink('link-12', 'countrynames', 'link-12');">countrynames</a></tt> <tt class="py-keyword">import</tt> <tt id="link-13" class="py-name" targets="Variable musicbrainz2.data.countrynames.countryNames=musicbrainz2.data.countrynames-module.html#countryNames"><a title="musicbrainz2.data.countrynames.countryNames" class="py-name" href="#" onclick="return doclink('link-13', 'countryNames', 'link-13');">countryNames</a></tt> </tt>
<a name="L168"></a><tt class="py-lineno">168</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt id="link-14" class="py-name"><a title="musicbrainz2.data.countrynames.countryNames" class="py-name" href="#" onclick="return doclink('link-14', 'countryNames', 'link-13');">countryNames</a></tt><tt class="py-op">.</tt><tt id="link-15" class="py-name"><a title="musicbrainz2.webservice.IWebService.get
musicbrainz2.webservice.WebService.get" class="py-name" href="#" onclick="return doclink('link-15', 'get', 'link-9');">get</a></tt><tt class="py-op">(</tt><tt class="py-name">id_</tt><tt class="py-op">)</tt> </tt>
</div><a name="L169"></a><tt class="py-lineno">169</tt>  <tt class="py-line"> </tt>
<a name="L170"></a><tt class="py-lineno">170</tt>  <tt class="py-line"> </tt>
<a name="getLanguageName"></a><div id="getLanguageName-def"><a name="L171"></a><tt class="py-lineno">171</tt> <a class="py-toggle" href="#" id="getLanguageName-toggle" onclick="return toggle('getLanguageName');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="musicbrainz2.utils-module.html#getLanguageName">getLanguageName</a><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="getLanguageName-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="getLanguageName-expanded"><a name="L172"></a><tt class="py-lineno">172</tt>  <tt class="py-line">        <tt class="py-docstring">"""Returns a language name based on an ISO-639-2/T code.</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">        This function uses a subset of the ISO-639-2/T code table to map</tt> </tt>
<a name="L175"></a><tt class="py-lineno">175</tt>  <tt class="py-line"><tt class="py-docstring">        language IDs (terminologic, not bibliographic ones!) to names.</tt> </tt>
<a name="L176"></a><tt class="py-lineno">176</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L177"></a><tt class="py-lineno">177</tt>  <tt class="py-line"><tt class="py-docstring">        @param id_: a three-letter upper case string containing an ISO-639-2/T code</tt> </tt>
<a name="L178"></a><tt class="py-lineno">178</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L179"></a><tt class="py-lineno">179</tt>  <tt class="py-line"><tt class="py-docstring">        @return: a string containing the language's name, or None</tt> </tt>
<a name="L180"></a><tt class="py-lineno">180</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L181"></a><tt class="py-lineno">181</tt>  <tt class="py-line"><tt class="py-docstring">        @see: L{musicbrainz2.model}</tt> </tt>
<a name="L182"></a><tt class="py-lineno">182</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
<a name="L183"></a><tt class="py-lineno">183</tt>  <tt class="py-line">        <tt class="py-keyword">from</tt> <tt id="link-16" class="py-name"><a title="musicbrainz2" class="py-name" href="#" onclick="return doclink('link-16', 'musicbrainz2', 'link-4');">musicbrainz2</a></tt><tt class="py-op">.</tt><tt id="link-17" class="py-name"><a title="musicbrainz2.data" class="py-name" href="#" onclick="return doclink('link-17', 'data', 'link-5');">data</a></tt><tt class="py-op">.</tt><tt id="link-18" class="py-name" targets="Module musicbrainz2.data.languagenames=musicbrainz2.data.languagenames-module.html"><a title="musicbrainz2.data.languagenames" class="py-name" href="#" onclick="return doclink('link-18', 'languagenames', 'link-18');">languagenames</a></tt> <tt class="py-keyword">import</tt> <tt id="link-19" class="py-name" targets="Variable musicbrainz2.data.languagenames.languageNames=musicbrainz2.data.languagenames-module.html#languageNames"><a title="musicbrainz2.data.languagenames.languageNames" class="py-name" href="#" onclick="return doclink('link-19', 'languageNames', 'link-19');">languageNames</a></tt> </tt>
<a name="L184"></a><tt class="py-lineno">184</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt id="link-20" class="py-name"><a title="musicbrainz2.data.languagenames.languageNames" class="py-name" href="#" onclick="return doclink('link-20', 'languageNames', 'link-19');">languageNames</a></tt><tt class="py-op">.</tt><tt id="link-21" class="py-name"><a title="musicbrainz2.webservice.IWebService.get
musicbrainz2.webservice.WebService.get" class="py-name" href="#" onclick="return doclink('link-21', 'get', 'link-9');">get</a></tt><tt class="py-op">(</tt><tt class="py-name">id_</tt><tt class="py-op">)</tt> </tt>
</div><a name="L185"></a><tt class="py-lineno">185</tt>  <tt class="py-line"> </tt>
<a name="L186"></a><tt class="py-lineno">186</tt>  <tt class="py-line"> </tt>
<a name="getScriptName"></a><div id="getScriptName-def"><a name="L187"></a><tt class="py-lineno">187</tt> <a class="py-toggle" href="#" id="getScriptName-toggle" onclick="return toggle('getScriptName');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="musicbrainz2.utils-module.html#getScriptName">getScriptName</a><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="getScriptName-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="getScriptName-expanded"><a name="L188"></a><tt class="py-lineno">188</tt>  <tt class="py-line">        <tt class="py-docstring">"""Returns a script name based on an ISO-15924 code.</tt> </tt>
<a name="L189"></a><tt class="py-lineno">189</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L190"></a><tt class="py-lineno">190</tt>  <tt class="py-line"><tt class="py-docstring">        This function uses a subset of the ISO-15924 code table to map</tt> </tt>
<a name="L191"></a><tt class="py-lineno">191</tt>  <tt class="py-line"><tt class="py-docstring">        script IDs to names.</tt> </tt>
<a name="L192"></a><tt class="py-lineno">192</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L193"></a><tt class="py-lineno">193</tt>  <tt class="py-line"><tt class="py-docstring">        @param id_: a four-letter string containing an ISO-15924 script code</tt> </tt>
<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">        @return: a string containing the script's name, or None</tt> </tt>
<a name="L196"></a><tt class="py-lineno">196</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L197"></a><tt class="py-lineno">197</tt>  <tt class="py-line"><tt class="py-docstring">        @see: L{musicbrainz2.model}</tt> </tt>
<a name="L198"></a><tt class="py-lineno">198</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
<a name="L199"></a><tt class="py-lineno">199</tt>  <tt class="py-line">        <tt class="py-keyword">from</tt> <tt id="link-22" class="py-name"><a title="musicbrainz2" class="py-name" href="#" onclick="return doclink('link-22', 'musicbrainz2', 'link-4');">musicbrainz2</a></tt><tt class="py-op">.</tt><tt id="link-23" class="py-name"><a title="musicbrainz2.data" class="py-name" href="#" onclick="return doclink('link-23', 'data', 'link-5');">data</a></tt><tt class="py-op">.</tt><tt id="link-24" class="py-name" targets="Module musicbrainz2.data.scriptnames=musicbrainz2.data.scriptnames-module.html"><a title="musicbrainz2.data.scriptnames" class="py-name" href="#" onclick="return doclink('link-24', 'scriptnames', 'link-24');">scriptnames</a></tt> <tt class="py-keyword">import</tt> <tt id="link-25" class="py-name" targets="Variable musicbrainz2.data.scriptnames.scriptNames=musicbrainz2.data.scriptnames-module.html#scriptNames"><a title="musicbrainz2.data.scriptnames.scriptNames" class="py-name" href="#" onclick="return doclink('link-25', 'scriptNames', 'link-25');">scriptNames</a></tt> </tt>
<a name="L200"></a><tt class="py-lineno">200</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt id="link-26" class="py-name"><a title="musicbrainz2.data.scriptnames.scriptNames" class="py-name" href="#" onclick="return doclink('link-26', 'scriptNames', 'link-25');">scriptNames</a></tt><tt class="py-op">.</tt><tt id="link-27" class="py-name"><a title="musicbrainz2.webservice.IWebService.get
musicbrainz2.webservice.WebService.get" class="py-name" href="#" onclick="return doclink('link-27', 'get', 'link-9');">get</a></tt><tt class="py-op">(</tt><tt class="py-name">id_</tt><tt class="py-op">)</tt> </tt>
</div><a name="L201"></a><tt class="py-lineno">201</tt>  <tt class="py-line"> </tt>
<a name="L202"></a><tt class="py-lineno">202</tt>  <tt class="py-line"> </tt>
<a name="L203"></a><tt class="py-lineno">203</tt>  <tt class="py-line"><tt class="py-comment"># EOF</tt> </tt>
<a name="L204"></a><tt class="py-lineno">204</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>&nbsp;&nbsp;&nbsp;<a
        href="musicbrainz2-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>

  <!-- Tree link -->
      <th>&nbsp;&nbsp;&nbsp;<a
        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>

  <!-- Index link -->
      <th>&nbsp;&nbsp;&nbsp;<a
        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>

  <!-- Help link -->
      <th>&nbsp;&nbsp;&nbsp;<a
        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>

      <th class="navbar" width="100%"></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 Mon Dec  5 13:37:52 2011
    </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>