|
5 | 5 | <meta name="viewport" content="width=device-width, initial-scale=1.0" /> |
6 | 6 | <title>Configuration — RMP Client</title> |
7 | 7 | <link rel="stylesheet" href="style.css" /> |
| 8 | + <link id="hljs-theme" rel="stylesheet" href="https://cdn.jsdelivr.net/gh/highlightjs/cdn-release@11/build/styles/github-dark.min.css" /> |
| 9 | + <script src="https://cdn.jsdelivr.net/gh/highlightjs/cdn-release@11/build/highlight.min.js"></script> |
| 10 | + <script> |
| 11 | + (function(){var t=localStorage.getItem('rmp-docs-theme');var d=t==='dark'||(!t&&window.matchMedia('(prefers-color-scheme:dark)').matches);if(d)document.documentElement.classList.add('dark')})(); |
| 12 | + </script> |
8 | 13 | </head> |
9 | 14 | <body> |
| 15 | + <header class="topbar"> |
| 16 | + <div class="topbar-right"> |
| 17 | + <a href="https://github.com/amaanjaved1/Rate-My-Professors-API-Client" class="topbar-btn" target="_blank" rel="noopener" aria-label="GitHub"> |
| 18 | + <svg width="18" height="18" viewBox="0 0 24 24" fill="currentColor"><path d="M12 0C5.37 0 0 5.37 0 12c0 5.31 3.435 9.795 8.205 11.385.6.105.825-.255.825-.57 0-.285-.015-1.23-.015-2.235-3.015.555-3.795-.735-4.035-1.41-.135-.345-.72-1.41-1.23-1.695-.42-.225-1.02-.78-.015-.795.945-.015 1.62.87 1.845 1.23 1.08 1.815 2.805 1.305 3.495.99.105-.78.42-1.305.765-1.605-2.67-.3-5.46-1.335-5.46-5.925 0-1.305.465-2.385 1.23-3.225-.12-.3-.54-1.53.12-3.18 0 0 1.005-.315 3.3 1.23.96-.27 1.98-.405 3-.405s2.04.135 3 .405c2.295-1.56 3.3-1.23 3.3-1.23.66 1.65.24 2.88.12 3.18.765.84 1.23 1.905 1.23 3.225 0 4.605-2.805 5.625-5.475 5.925.435.375.81 1.095.81 2.22 0 1.605-.015 2.895-.015 3.3 0 .315.225.69.825.57A12.02 12.02 0 0 0 24 12c0-6.63-5.37-12-12-12z"/></svg> |
| 19 | + </a> |
| 20 | + <button class="topbar-btn" id="theme-toggle" aria-label="Toggle theme"></button> |
| 21 | + </div> |
| 22 | + </header> |
| 23 | + |
10 | 24 | <aside class="sidebar"> |
11 | | - <div class="sidebar-brand"><span class="dot"></span>RMP Client</div> |
12 | | - <nav> |
13 | | - <ul> |
14 | | - <li><a href="index.html">Home</a></li> |
15 | | - <li><a href="usage.html">Usage</a></li> |
16 | | - <li><a href="reference.html">API Reference</a></li> |
17 | | - <li><a href="configuration.html" class="active">Configuration</a></li> |
18 | | - <li><a href="extras.html">Extras</a></li> |
19 | | - </ul> |
20 | | - </nav> |
| 25 | + <div class="sidebar-brand">RMP API Docs</div> |
| 26 | + <nav><ul> |
| 27 | + <li><a href="index.html">Home</a></li> |
| 28 | + <li><a href="usage.html">Usage</a></li> |
| 29 | + <li><a href="reference.html">API Reference</a></li> |
| 30 | + <li><a href="configuration.html" class="active">Configuration</a></li> |
| 31 | + <li><a href="extras.html">Extras</a></li> |
| 32 | + </ul></nav> |
21 | 33 | </aside> |
22 | 34 |
|
23 | 35 | <main class="content"> |
24 | 36 | <h1>Configuration</h1> |
25 | 37 | <p>The client is configured via <code>RMPClientConfig</code>. All fields have sensible defaults.</p> |
26 | | - |
27 | | - <pre><code>from rmp_client import RMPClientConfig, RMPClient |
| 38 | + <pre><code class="language-python">from rmp_client import RMPClientConfig, RMPClient |
28 | 39 |
|
29 | 40 | config = RMPClientConfig( |
30 | 41 | base_url="https://www.ratemyprofessors.com/graphql", |
31 | 42 | timeout_seconds=10.0, |
32 | 43 | max_retries=3, |
33 | 44 | rate_limit_per_minute=60, |
34 | 45 | ) |
35 | | - |
36 | 46 | with RMPClient(config) as client: |
37 | 47 | ...</code></pre> |
38 | 48 |
|
39 | 49 | <h2 id="available-options">Available Options <a href="#available-options" class="anchor">#</a></h2> |
40 | 50 | <table> |
41 | 51 | <tr><th>Option</th><th>Type</th><th>Default</th><th>Description</th></tr> |
42 | | - <tr><td><code>base_url</code></td><td><code>str</code></td><td><code>https://www.ratemyprofessors.com/graphql</code></td><td>GraphQL endpoint URL</td></tr> |
| 52 | + <tr><td><code>base_url</code></td><td><code>str</code></td><td><code>https://...graphql</code></td><td>GraphQL endpoint URL</td></tr> |
43 | 53 | <tr><td><code>timeout_seconds</code></td><td><code>float</code></td><td><code>10.0</code></td><td>HTTP request timeout</td></tr> |
44 | 54 | <tr><td><code>max_retries</code></td><td><code>int</code></td><td><code>3</code></td><td>Number of retry attempts for failed requests</td></tr> |
45 | 55 | <tr><td><code>rate_limit_per_minute</code></td><td><code>int</code></td><td><code>60</code></td><td>Max requests per minute (token bucket)</td></tr> |
46 | | - <tr><td><code>user_agent</code></td><td><code>str</code></td><td>Firefox UA</td><td>User-Agent header sent with every request</td></tr> |
| 56 | + <tr><td><code>user_agent</code></td><td><code>str</code></td><td>Firefox UA</td><td>User-Agent header</td></tr> |
47 | 57 | <tr><td><code>default_headers</code></td><td><code>Mapping[str, str]</code></td><td>UA + Accept-Language</td><td>Default headers for all requests</td></tr> |
48 | 58 | </table> |
49 | 59 |
|
50 | 60 | <h2 id="rate-limiting">Rate Limiting <a href="#rate-limiting" class="anchor">#</a></h2> |
51 | | - <p> |
52 | | - The client uses a token-bucket algorithm. Tokens replenish continuously at |
53 | | - <code>rate_limit_per_minute / 60</code> tokens per second. Each request consumes one token. |
54 | | - If no tokens are available, the request blocks until one becomes available. |
55 | | - </p> |
56 | | - <pre><code>config = RMPClientConfig(rate_limit_per_minute=30) # half the default rate</code></pre> |
| 61 | + <p>The client uses a token-bucket algorithm. Tokens replenish continuously. Each request consumes one token. If no tokens are available, the request blocks until one becomes available.</p> |
| 62 | + <pre><code class="language-python">config = RMPClientConfig(rate_limit_per_minute=30)</code></pre> |
57 | 63 |
|
58 | 64 | <h2 id="retries">Retries <a href="#retries" class="anchor">#</a></h2> |
59 | | - <p> |
60 | | - On 5xx errors or network failures, the client retries up to <code>max_retries</code> times. |
61 | | - 4xx errors are <strong>not</strong> retried. After exhausting retries, a <code>RetryError</code> |
62 | | - is raised containing the last underlying exception. |
63 | | - </p> |
64 | | - <pre><code>config = RMPClientConfig(max_retries=5) # more retries for flaky networks</code></pre> |
| 65 | + <p>On 5xx errors or network failures, the client retries up to <code>max_retries</code> times. 4xx errors are <strong>not</strong> retried. After exhausting retries, a <code>RetryError</code> is raised.</p> |
| 66 | + <pre><code class="language-python">config = RMPClientConfig(max_retries=5)</code></pre> |
65 | 67 |
|
66 | 68 | <h2 id="timeouts">Timeouts <a href="#timeouts" class="anchor">#</a></h2> |
67 | 69 | <p>The <code>timeout_seconds</code> value applies to each individual HTTP request (connect + read).</p> |
68 | | - <pre><code>config = RMPClientConfig(timeout_seconds=30.0) # generous timeout</code></pre> |
| 70 | + <pre><code class="language-python">config = RMPClientConfig(timeout_seconds=30.0)</code></pre> |
69 | 71 | </main> |
| 72 | + |
| 73 | + <aside class="toc"><div class="toc-title">On this page</div><ul id="toc-list"></ul></aside> |
| 74 | + <script src="script.js"></script> |
70 | 75 | </body> |
71 | 76 | </html> |
0 commit comments