mkdocs 2.0.dev2__py3-none-any.whl → 2.0.dev4__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
mkdocs/__init__.py CHANGED
@@ -1,15 +1,15 @@
1
1
  from .__version__ import __title__, __version__
2
- from .mkdocs import get_current_page, get_site_index, Page, Static, SiteIndex, MkDocs, cli
2
+ from .mkdocs import get_current_page, get_site, Page, Static, Site, MkDocs, cli
3
3
 
4
4
 
5
5
  __all__ = [
6
6
  '__title__',
7
7
  '__version__',
8
8
  'get_current_page',
9
- 'get_site_index',
9
+ 'get_site',
10
10
  'Page',
11
11
  'Static',
12
- 'SiteIndex',
12
+ 'Site',
13
13
  'MkDocs',
14
14
  'cli',
15
15
  ]
mkdocs/__version__.py CHANGED
@@ -1,2 +1,2 @@
1
1
  __title__ = "mkdocs"
2
- __version__ = "2.0.dev2"
2
+ __version__ = "2.0.dev4"
@@ -8,7 +8,7 @@ import httpx
8
8
  class URLProcessor(markdown.treeprocessors.Treeprocessor):
9
9
  def run(self, root):
10
10
  page = mkdocs.get_current_page()
11
- site_index = mkdocs.get_site_index()
11
+ site = mkdocs.get_site()
12
12
  key = ''
13
13
  link = ''
14
14
 
@@ -34,7 +34,7 @@ class URLProcessor(markdown.treeprocessors.Treeprocessor):
34
34
  path_from = page.path
35
35
  path_to = os.path.normpath(path_from.parent.joinpath(url.path))
36
36
 
37
- target = site_index.lookup.get(path_to)
37
+ target = site.lookup_by_path(path_to)
38
38
  if target is None:
39
39
  continue # Broken link!
40
40
 
mkdocs/mkdocs.py CHANGED
@@ -20,7 +20,7 @@ RESET = '\033[0m'
20
20
  # The build context is used to ensure the current page and the site index
21
21
  # are available to the RelativeURLs markdown extension.
22
22
  _current_page = contextvars.ContextVar('current_page')
23
- _site_index = contextvars.ContextVar('site_index')
23
+ _site = contextvars.ContextVar('site')
24
24
 
25
25
 
26
26
  def get_current_page():
@@ -30,8 +30,8 @@ def get_current_page():
30
30
  return ctx
31
31
 
32
32
 
33
- def get_site_index():
34
- ctx = _site_index.get()
33
+ def get_site():
34
+ ctx = _site.get()
35
35
  if ctx is None:
36
36
  raise RuntimeError("No current context")
37
37
  return ctx
@@ -52,14 +52,6 @@ class Page:
52
52
  self.url = str(url).removesuffix('index.html')
53
53
 
54
54
 
55
- class PageAsHTML:
56
- def __init__(self, page, title, html):
57
- self.path = page.path
58
- self.url = page.url
59
- self.title = title
60
- self.html = html
61
-
62
-
63
55
  class Static:
64
56
  def __init__(self, path):
65
57
  self.path = path
@@ -67,18 +59,24 @@ class Static:
67
59
  self.url = str(url).removesuffix('index.html')
68
60
 
69
61
 
70
- class SiteIndex:
62
+ class Site:
71
63
  def __init__(self, pages, statics):
72
64
  self._pages = pages
73
65
  self._statics = statics
74
66
 
75
- self.lookup = {
67
+ self._paths = {
76
68
  str(resource.path): resource for resource in pages + statics
77
69
  }
78
- self.lookup_by_url = {
70
+ self._urls = {
79
71
  str(resource.url): resource for resource in pages + statics
80
72
  }
81
73
 
74
+ def lookup_by_path(self, path) -> Page | Static | None:
75
+ return self._paths.get(path)
76
+
77
+ def lookup_by_url(self, url) -> Page | Static | None:
78
+ return self._urls.get(url)
79
+
82
80
  @property
83
81
  def pages(self) -> list[Page]:
84
82
  return list(self._pages)
@@ -91,9 +89,55 @@ class SiteIndex:
91
89
  return len(self.pages) + len(self.statics)
92
90
 
93
91
 
92
+ class TableOfContents:
93
+ def __init__(self, md):
94
+ self.html = md.toc
95
+ self.title = md.toc_tokens[0]['name'] if md.toc_tokens else ''
96
+ self._items = list(md.toc_tokens)
97
+
98
+ def __bool__(self):
99
+ return bool(self._items)
100
+
101
+
102
+ class NavItem:
103
+ def __init__(self, title: str, page: Page):
104
+ self.title = title
105
+ self.page = page
106
+
107
+
108
+ class Navigation:
109
+ def __init__(self, nav_items):
110
+ self._items = nav_items
111
+
112
+ def __iter__(self):
113
+ return iter(self._items)
114
+
115
+ @property
116
+ def html(self):
117
+ page = get_current_page()
118
+ t = jinja2.Template("""<ul>{% for item in nav %}<li><a href="{{ item.page.url }}" {% if item.page == page %}class="active"{% endif %}>{{ item.title }}</a></li>{% endfor %}</ul>""")
119
+ return t.render({"nav": self, "page": page})
120
+
121
+
122
+ class PageContext:
123
+ def __init__(self, page, text, html, toc):
124
+ self.path = page.path
125
+ self.url = page.url
126
+ self.text = text
127
+ self.html = html
128
+ self.toc = toc
129
+
130
+ # Leaving this here for compatability with... `{{ page.title }}`
131
+ # TODO.... probably deprecate, but follow through with toc design discussion.
132
+ @property
133
+ def title(self):
134
+ return self.toc.title
135
+
136
+
94
137
  class MkDocs:
95
138
  def __init__(self, input_dir):
96
- self.site_index = self.load_site(input_dir)
139
+ self.site = self.load_site(input_dir)
140
+ self.nav = self.load_nav({}, self.site)
97
141
  self.env = self.init_env(input_dir)
98
142
  self.md = self.init_md()
99
143
  self.base = self.env.get_template('base.html')
@@ -121,7 +165,30 @@ class MkDocs:
121
165
 
122
166
  pages = sorted(pages, key=lambda x: x.url)
123
167
  statics = sorted(statics, key=lambda x: x.url)
124
- return SiteIndex(pages, statics)
168
+ return Site(pages, statics)
169
+
170
+ def load_nav(self, config, site):
171
+ if not config:
172
+ config = {"nav": [
173
+ {"title": page.path.stem, "path": str(page.path)}
174
+ for page in site.pages
175
+ ]}
176
+
177
+ nav_config = config.get('nav', [])
178
+ nav_config = nav_config if isinstance(nav_config, list) else []
179
+ nav_items = []
180
+ for item in nav_config:
181
+ if not isinstance(item, dict):
182
+ continue
183
+ path = item.get('path', '')
184
+ title = item.get('title', '')
185
+ if not path:
186
+ continue
187
+ if path:
188
+ page = site.lookup_by_path(path)
189
+ nav_item = NavItem(title, page)
190
+ nav_items.append(nav_item)
191
+ return Navigation(nav_items)
125
192
 
126
193
  def init_env(self, input_dir) -> jinja2.Environment:
127
194
  @jinja2.pass_context
@@ -154,26 +221,28 @@ class MkDocs:
154
221
  ],
155
222
  extension_configs={
156
223
  'footnotes': {'BACKLINK_TITLE': ''},
157
- 'toc': {'anchorlink': True, 'marker': ''}
224
+ 'toc': {'anchorlink': True, 'marker': '', 'toc_class': ''}
158
225
  }
159
226
  )
160
227
 
161
228
  @contextlib.contextmanager
162
229
  def set_context(self, current_page):
163
230
  token_page = _current_page.set(current_page)
164
- token_site = _site_index.set(self.site_index)
231
+ token_site = _site.set(self.site)
165
232
  try:
166
233
  yield
167
234
  finally:
168
235
  _current_page.reset(token_page)
169
- _site_index.reset(token_site)
236
+ _site.reset(token_site)
237
+
238
+ # Commands...
170
239
 
171
240
  def build(self, input, output):
172
241
  input_dir = pathlib.Path(input)
173
242
  output_dir = pathlib.Path(output)
174
243
 
175
- print(DARK_GRAY + "Collected %d resources" % len(self.site_index) + RESET)
176
- for page in self.site_index.pages:
244
+ print(DARK_GRAY + "Collected %d resources" % len(self.site) + RESET)
245
+ for page in self.site.pages:
177
246
  print(GREEN + " + " + RESET + BOLD + str(page.path) + RESET + DARK_GRAY + " [markdown]" + RESET)
178
247
  input_path = input_dir.joinpath(page.path)
179
248
  output_path = output_dir.joinpath(page.build_path)
@@ -181,14 +250,14 @@ class MkDocs:
181
250
  with self.set_context(page):
182
251
  text = input_path.read_text()
183
252
  html = self.md.reset().convert(text)
184
- title = self.md.toc_tokens[0]['name'] if self.md.toc_tokens else ''
185
- rendered_page = PageAsHTML(page=page, title=title, html=html)
186
- output = self.base.render(page=rendered_page)
253
+ toc = TableOfContents(self.md)
254
+ page_ctx = PageContext(page=page, text=text, html=html, toc=toc)
255
+ output = self.base.render(page=page_ctx, nav=self.nav)
187
256
 
188
257
  output_path.parent.mkdir(parents=True, exist_ok=True)
189
258
  output_path.write_text(output)
190
259
 
191
- for static in self.site_index.statics:
260
+ for static in self.site.statics:
192
261
  print(GREEN + " + " + RESET + BOLD + str(static.path) + RESET + DARK_GRAY + " [static]" + RESET)
193
262
  input_path = input_dir.joinpath(static.path)
194
263
  output_path = output_dir.joinpath(static.path)
@@ -199,24 +268,24 @@ class MkDocs:
199
268
  def serve(self, input):
200
269
  input_dir = pathlib.Path(input)
201
270
 
202
- print(DARK_GRAY + "Serving %d resources" % len(self.site_index) + RESET)
203
- for page in self.site_index.pages:
271
+ print(DARK_GRAY + "Serving %d resources" % len(self.site) + RESET)
272
+ for page in self.site.pages:
204
273
  print(GREEN + " + " + RESET + BOLD + str(page.url) + RESET + DARK_GRAY + " [markdown]" + RESET)
205
- for static in self.site_index.statics:
274
+ for static in self.site.statics:
206
275
  print(GREEN + " + " + RESET + BOLD + str(static.url) + RESET + DARK_GRAY + " [static]" + RESET)
207
276
  print()
208
277
 
209
278
  def app(request):
210
- resource = self.site_index.lookup_by_url.get(request.url.path)
279
+ resource = self.site.lookup_by_url(request.url.path)
211
280
 
212
281
  if isinstance(resource, Page):
213
282
  input_path = input_dir.joinpath(resource.path)
214
283
  with self.set_context(resource):
215
284
  text = input_path.read_text()
216
285
  html = self.md.reset().convert(text)
217
- title = self.md.toc_tokens[0]['name'] if self.md.toc_tokens else ''
218
- rendered_page = PageAsHTML(page=page, title=title, html=html)
219
- output = self.base.render(page=rendered_page)
286
+ toc = TableOfContents(self.md)
287
+ page_ctx = PageContext(page=resource, text=text, html=html, toc=toc)
288
+ output = self.base.render(page=page_ctx, nav=self.nav)
220
289
  return httpx.Response(200, content=httpx.HTML(output))
221
290
  elif isinstance(resource, Static):
222
291
  input_path = input_dir.joinpath(resource.path)
@@ -227,6 +296,8 @@ class MkDocs:
227
296
  server.serve()
228
297
 
229
298
 
299
+ # Command line client...
300
+
230
301
  @click.group()
231
302
  def cli():
232
303
  if pathlib.Path('mkdocs.yml').exists():
mkdocs/theme/base.html CHANGED
@@ -35,24 +35,40 @@
35
35
  /* Layout... */
36
36
 
37
37
  main {
38
- margin-left: 20%;
38
+ margin: 0 auto;
39
+ max-width: 700px;
39
40
  width: 60%;
40
- padding: 1rem;
41
+ padding: 1rem 0;
41
42
  }
42
43
 
43
44
  @media (max-width: 1000px) {
44
45
  main {
45
- padding: 1.5rem 1rem;
46
+ margin-left: 20%;
46
47
  width: 75%;
47
- margin-left: 25%;
48
+ }
49
+
50
+ nav.toc {
51
+ display: none;
52
+ }
53
+
54
+ nav.site {
55
+ width: 25%;
48
56
  }
49
57
  }
50
58
 
51
- @media (max-width: 800px) {
59
+ @media (max-width: 750px) {
52
60
  main {
53
- padding: 1.5rem 1rem;
54
- width: 100%;
55
61
  margin-left: 0;
62
+ width: 100%;
63
+ padding: 1rem 1.5rem;
64
+ }
65
+
66
+ nav.toc {
67
+ display: none;
68
+ }
69
+
70
+ nav.site {
71
+ display: none;
56
72
  }
57
73
  }
58
74
 
@@ -163,9 +179,98 @@ a.toclink:hover::after {
163
179
  margin: 0 0.8rem;
164
180
  color: var(--neutral-color);
165
181
  }
182
+
183
+ /* Table of contents styling */
184
+
185
+ nav.site {
186
+ position: fixed;
187
+ width : 20%;
188
+ padding: 2rem;
189
+ height: 100%;
190
+ overflow-y: scroll;
191
+ }
192
+
193
+ nav.toc {
194
+ position: fixed;
195
+ margin-left: 80%;
196
+ width : 20%;
197
+ padding: 2rem;
198
+ height: 100%;
199
+ overflow-y: scroll;
200
+ }
201
+
202
+ /* Navigation styling */
203
+
204
+ nav.site ul {
205
+ padding: 0;
206
+ margin: 0;
207
+ }
208
+
209
+ nav.site li {
210
+ padding: 0;
211
+ margin: 0.5rem 0;
212
+ display: block;
213
+ }
214
+
215
+ nav.site li a.active {
216
+ color: var(--link-color);
217
+ }
218
+
219
+ nav.site li a:hover {
220
+ color: var(--link-color);
221
+ text-decoration: none;
222
+ }
223
+
224
+ nav.site li a {
225
+ color: var(--muted-fg-color);
226
+ }
227
+
228
+ nav.site li a:hover {
229
+ color: var(--fg-color);
230
+ text-decoration: none;
231
+ }
232
+
233
+ nav.toc ul {
234
+ padding: 0;
235
+ margin: 0;
236
+ }
237
+
238
+ nav.toc li {
239
+ padding: 0;
240
+ margin: 0.5rem 0;
241
+ display: block;
242
+ }
243
+
244
+ nav.toc li a.active {
245
+ color: var(--link-color);
246
+ }
247
+
248
+ nav.toc li a:hover {
249
+ color: var(--link-color);
250
+ text-decoration: none;
251
+ }
252
+
253
+ nav.toc li a {
254
+ color: var(--muted-fg-color);
255
+ }
256
+
257
+ nav.toc li a:hover {
258
+ color: var(--fg-color);
259
+ text-decoration: none;
260
+ }
166
261
  </style>
167
262
  </head>
168
263
  <body>
264
+ {% if nav %}
265
+ <nav class="site">
266
+ {{ nav.html }}
267
+ </nav>
268
+ {% endif %}
269
+ {% if page.toc %}
270
+ <nav class="toc">
271
+ {{ page.toc.html }}
272
+ </nav>
273
+ {% endif %}
169
274
  <main>
170
275
  {{ page.html }}
171
276
  </main>
@@ -0,0 +1,72 @@
1
+ Metadata-Version: 2.5
2
+ Name: mkdocs
3
+ Version: 2.0.dev4
4
+ Summary: HTTP, for Python.
5
+ Author-email: Kim Christie <noreply@lovelydinosaur.com>
6
+ Classifier: Development Status :: 4 - Beta
7
+ Classifier: Environment :: Web Environment
8
+ Classifier: Intended Audience :: Developers
9
+ Classifier: Operating System :: OS Independent
10
+ Classifier: Programming Language :: Python :: 3
11
+ Classifier: Programming Language :: Python :: 3.10
12
+ Classifier: Programming Language :: Python :: 3.11
13
+ Classifier: Programming Language :: Python :: 3.12
14
+ Classifier: Programming Language :: Python :: 3.13
15
+ Classifier: Topic :: Internet :: WWW/HTTP
16
+ Requires-Python: >=3.10
17
+ Requires-Dist: click
18
+ Requires-Dist: httpx>=1.0.dev6
19
+ Requires-Dist: jinja2
20
+ Requires-Dist: markdown
21
+ Description-Content-Type: text/markdown
22
+
23
+ # MkDocs
24
+
25
+ MkDocs is a smart, simple, website design tool.
26
+
27
+ Getting started is easy...
28
+
29
+ ```shell
30
+ $ pip install mkdocs --pre
31
+ ```
32
+
33
+ *This will install the version 2.0 pre-release.*
34
+
35
+ ## Getting started
36
+
37
+ 1. Create a `docs/README.md` page.
38
+ 2. Run `mkdocs serve` to view your documentation in a browser.
39
+ 3. Run `mkdocs build` to build a static website ready to host.
40
+
41
+ ## Writing your docs
42
+
43
+ 1. Create additional markdown pages.
44
+ 2. Use relative interlinking between pages.
45
+ 3. Include images and use relative interlinking from pages.
46
+
47
+ *MkDocs supports [GitHub Flavored Markdown](https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax) for page authoring.*
48
+
49
+ ## Styling your docs
50
+
51
+ 1. Create a `templates/base.html` to customise the styling.
52
+ 2. Include css and javascript to serve static files.
53
+
54
+ *MkDocs uses [Jinja templating](https://jinja.palletsprojects.com/en/stable/templates/) for HTML rendering.*
55
+
56
+ A starting point can be as simple as...
57
+
58
+ ```html
59
+ <html>
60
+ <head>
61
+ <meta charset="utf-8">
62
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
63
+ <title>{{ page.toc.title }}</title>
64
+ <link rel="stylesheet" href="{{ '/css/default.css' | url }}">
65
+ </head>
66
+ <body>
67
+ <main>
68
+ {{ page.html }}
69
+ </main>
70
+ </body>
71
+ </html>
72
+ ```
@@ -0,0 +1,12 @@
1
+ mkdocs/__init__.py,sha256=NwNA-Nxju0I4e1-Msqo_ewJLRcjJjEMiVs2bbfzoMCg,283
2
+ mkdocs/__version__.py,sha256=H32qhExLRVyUqFMfnUmHAtd8VRrtgzXcA5Xgp9BLsUA,46
3
+ mkdocs/mkdocs.py,sha256=xCa3TEcWJM4igJk7J2yo0clYTenwulMTyPpcZlr9bQY,10242
4
+ mkdocs/extensions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
5
+ mkdocs/extensions/relative_urls.py,sha256=iVwmxDeXVAP6MvdJkkdhPT3KZY-QskD8fOQAVX1R3e4,1954
6
+ mkdocs/extensions/short_codes.py,sha256=I2SwGMcG9OT_vpkJwPI8cHBTkwQAjSPZmoQKfctsHn4,950
7
+ mkdocs/extensions/strike_thru.py,sha256=GrCbfMrHz_2Vlh3E572EQYOSDzEGym34pkHElzF2HZY,577
8
+ mkdocs/theme/base.html,sha256=tWLme7GnwgJmWFLvkHCHmUYyDobxVqEBgtge47hClXY,4269
9
+ mkdocs-2.0.dev4.dist-info/METADATA,sha256=ZkPn54kDu5kJVRpJlisgu7O0D7kkWp9bwhmMk70vVI4,2151
10
+ mkdocs-2.0.dev4.dist-info/WHEEL,sha256=zOwg4jB6zX2kU910N-cMawjivD6tO8NEWvE12je1bVk,87
11
+ mkdocs-2.0.dev4.dist-info/entry_points.txt,sha256=5PqBrzYJLZ9-yQ0djvENWOQ-0x6Xj30JYNSzM_m70ZU,38
12
+ mkdocs-2.0.dev4.dist-info/RECORD,,
mkdocs/default/base.html DELETED
@@ -1,17 +0,0 @@
1
- <html>
2
- <head>
3
- <meta charset="utf-8">
4
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
5
- <title>...</title>
6
- {% with favicon='📘' %}{% include 'favicon.html' %}{% endwith %}
7
- <style>
8
- {% include 'style.css' %}
9
- {% include 'highlight.css' %}
10
- </style>
11
- </head>
12
- <body>
13
- <main>
14
- {{ html }}
15
- </main>
16
- </body>
17
- </html>
@@ -1 +0,0 @@
1
- <link rel="icon" href="data:image/svg+xml,&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 0 100 100&quot;&gt;&lt;text y=&quot;.9em&quot; font-size=&quot;90&quot;&gt;{{ favicon }}&lt;/text&gt;&lt;/svg&gt;">
@@ -1,86 +0,0 @@
1
- pre { line-height: 125%; }
2
- td.linenos .normal { color: #6e7681; background-color: #0d1117; padding-left: 5px; padding-right: 5px; }
3
- span.linenos { color: #6e7681; background-color: #0d1117; padding-left: 5px; padding-right: 5px; }
4
- td.linenos .special { color: #e6edf3; background-color: #6e7681; padding-left: 5px; padding-right: 5px; }
5
- span.linenos.special { color: #e6edf3; background-color: #6e7681; padding-left: 5px; padding-right: 5px; }
6
- .codehilite .hll { background-color: #6e7681 }
7
- .codehilite { background: #0d1117; color: #E6EDF3 }
8
- .codehilite .c { color: #8B949E; font-style: italic } /* Comment */
9
- .codehilite .err { color: #F85149 } /* Error */
10
- .codehilite .esc { color: #E6EDF3 } /* Escape */
11
- .codehilite .g { color: #E6EDF3 } /* Generic */
12
- .codehilite .k { color: #FF7B72 } /* Keyword */
13
- .codehilite .l { color: #A5D6FF } /* Literal */
14
- .codehilite .n { color: #E6EDF3 } /* Name */
15
- .codehilite .o { color: #FF7B72; font-weight: bold } /* Operator */
16
- .codehilite .x { color: #E6EDF3 } /* Other */
17
- .codehilite .p { color: #E6EDF3 } /* Punctuation */
18
- .codehilite .ch { color: #8B949E; font-style: italic } /* Comment.Hashbang */
19
- .codehilite .cm { color: #8B949E; font-style: italic } /* Comment.Multiline */
20
- .codehilite .cp { color: #8B949E; font-weight: bold; font-style: italic } /* Comment.Preproc */
21
- .codehilite .cpf { color: #8B949E; font-style: italic } /* Comment.PreprocFile */
22
- .codehilite .c1 { color: #8B949E; font-style: italic } /* Comment.Single */
23
- .codehilite .cs { color: #8B949E; font-weight: bold; font-style: italic } /* Comment.Special */
24
- .codehilite .gd { color: #FFA198; background-color: #490202 } /* Generic.Deleted */
25
- .codehilite .ge { color: #E6EDF3; font-style: italic } /* Generic.Emph */
26
- .codehilite .ges { color: #E6EDF3; font-weight: bold; font-style: italic } /* Generic.EmphStrong */
27
- .codehilite .gr { color: #FFA198 } /* Generic.Error */
28
- .codehilite .gh { color: #79C0FF; font-weight: bold } /* Generic.Heading */
29
- .codehilite .gi { color: #56D364; background-color: #0F5323 } /* Generic.Inserted */
30
- .codehilite .go { color: #8B949E } /* Generic.Output */
31
- .codehilite .gp { color: #8B949E } /* Generic.Prompt */
32
- .codehilite .gs { color: #E6EDF3; font-weight: bold } /* Generic.Strong */
33
- .codehilite .gu { color: #79C0FF } /* Generic.Subheading */
34
- .codehilite .gt { color: #FF7B72 } /* Generic.Traceback */
35
- .codehilite .g-Underline { color: #E6EDF3; text-decoration: underline } /* Generic.Underline */
36
- .codehilite .kc { color: #79C0FF } /* Keyword.Constant */
37
- .codehilite .kd { color: #FF7B72 } /* Keyword.Declaration */
38
- .codehilite .kn { color: #FF7B72 } /* Keyword.Namespace */
39
- .codehilite .kp { color: #79C0FF } /* Keyword.Pseudo */
40
- .codehilite .kr { color: #FF7B72 } /* Keyword.Reserved */
41
- .codehilite .kt { color: #FF7B72 } /* Keyword.Type */
42
- .codehilite .ld { color: #79C0FF } /* Literal.Date */
43
- .codehilite .m { color: #A5D6FF } /* Literal.Number */
44
- .codehilite .s { color: #A5D6FF } /* Literal.String */
45
- .codehilite .na { color: #E6EDF3 } /* Name.Attribute */
46
- .codehilite .nb { color: #E6EDF3 } /* Name.Builtin */
47
- .codehilite .nc { color: #F0883E; font-weight: bold } /* Name.Class */
48
- .codehilite .no { color: #79C0FF; font-weight: bold } /* Name.Constant */
49
- .codehilite .nd { color: #D2A8FF; font-weight: bold } /* Name.Decorator */
50
- .codehilite .ni { color: #FFA657 } /* Name.Entity */
51
- .codehilite .ne { color: #F0883E; font-weight: bold } /* Name.Exception */
52
- .codehilite .nf { color: #D2A8FF; font-weight: bold } /* Name.Function */
53
- .codehilite .nl { color: #79C0FF; font-weight: bold } /* Name.Label */
54
- .codehilite .nn { color: #FF7B72 } /* Name.Namespace */
55
- .codehilite .nx { color: #E6EDF3 } /* Name.Other */
56
- .codehilite .py { color: #79C0FF } /* Name.Property */
57
- .codehilite .nt { color: #7EE787 } /* Name.Tag */
58
- .codehilite .nv { color: #79C0FF } /* Name.Variable */
59
- .codehilite .ow { color: #FF7B72; font-weight: bold } /* Operator.Word */
60
- .codehilite .pm { color: #E6EDF3 } /* Punctuation.Marker */
61
- .codehilite .w { color: #6E7681 } /* Text.Whitespace */
62
- .codehilite .mb { color: #A5D6FF } /* Literal.Number.Bin */
63
- .codehilite .mf { color: #A5D6FF } /* Literal.Number.Float */
64
- .codehilite .mh { color: #A5D6FF } /* Literal.Number.Hex */
65
- .codehilite .mi { color: #A5D6FF } /* Literal.Number.Integer */
66
- .codehilite .mo { color: #A5D6FF } /* Literal.Number.Oct */
67
- .codehilite .sa { color: #79C0FF } /* Literal.String.Affix */
68
- .codehilite .sb { color: #A5D6FF } /* Literal.String.Backtick */
69
- .codehilite .sc { color: #A5D6FF } /* Literal.String.Char */
70
- .codehilite .dl { color: #79C0FF } /* Literal.String.Delimiter */
71
- .codehilite .sd { color: #A5D6FF } /* Literal.String.Doc */
72
- .codehilite .s2 { color: #A5D6FF } /* Literal.String.Double */
73
- .codehilite .se { color: #79C0FF } /* Literal.String.Escape */
74
- .codehilite .sh { color: #79C0FF } /* Literal.String.Heredoc */
75
- .codehilite .si { color: #A5D6FF } /* Literal.String.Interpol */
76
- .codehilite .sx { color: #A5D6FF } /* Literal.String.Other */
77
- .codehilite .sr { color: #79C0FF } /* Literal.String.Regex */
78
- .codehilite .s1 { color: #A5D6FF } /* Literal.String.Single */
79
- .codehilite .ss { color: #A5D6FF } /* Literal.String.Symbol */
80
- .codehilite .bp { color: #E6EDF3 } /* Name.Builtin.Pseudo */
81
- .codehilite .fm { color: #D2A8FF; font-weight: bold } /* Name.Function.Magic */
82
- .codehilite .vc { color: #79C0FF } /* Name.Variable.Class */
83
- .codehilite .vg { color: #79C0FF } /* Name.Variable.Global */
84
- .codehilite .vi { color: #79C0FF } /* Name.Variable.Instance */
85
- .codehilite .vm { color: #79C0FF } /* Name.Variable.Magic */
86
- .codehilite .il { color: #A5D6FF } /* Literal.Number.Integer.Long */
mkdocs/default/style.css DELETED
@@ -1,148 +0,0 @@
1
- /* Color scheme */
2
-
3
- :root {
4
- --fg-color: #f0f6fc;
5
- --muted-fg-color: #9198a1;
6
- --neutral-color: #3d444d;
7
- --bg-color: #151b23;
8
-
9
- --link-color: #4493f8;
10
- --code-bg-color: #0d1117;
11
-
12
- --accent-note: #0969da;
13
- --accent-tip: #1a7f37;
14
- --accent-important:#8250df;
15
- --accent-warning: #9a6700;
16
- --accent-caution: #d1242f;
17
- }
18
-
19
- /* Basic reset */
20
-
21
- * {
22
- margin: 0;
23
- padding: 0;
24
- box-sizing: border-box;
25
- font-weight: 300;
26
- }
27
-
28
- /* Layout... */
29
-
30
- main {
31
- margin-left: 20%;
32
- width: 60%;
33
- padding: 1rem;
34
- }
35
-
36
- @media (max-width: 1000px) {
37
- main {
38
- padding: 1.5rem 1rem;
39
- width: 75%;
40
- margin-left: 25%;
41
- }
42
- }
43
-
44
- @media (max-width: 800px) {
45
- main {
46
- padding: 1.5rem 1rem;
47
- width: 100%;
48
- margin-left: 0;
49
- }
50
- }
51
-
52
- /* Typography & spacing */
53
-
54
- html {
55
- scroll-behavior: smooth;
56
- }
57
-
58
- body {
59
- line-height: 1.6;
60
- color: var(--fg-color);
61
- background-color: var(--bg-color);
62
- font-family: Helvetica, sans-serif;
63
- }
64
-
65
- h1, h2, h3, h4, h5 {
66
- margin-top: 1.5rem;
67
- margin-bottom: 1.5rem;
68
- line-height: 1.3;
69
- }
70
-
71
- h1 {
72
- border-bottom: 1px solid var(--neutral-color);
73
- }
74
- h2 {
75
- border-bottom: 1px solid var(--neutral-color);
76
- }
77
-
78
- p {
79
- margin: 1rem 0;
80
- }
81
-
82
- strong {
83
- font-weight: 600;
84
- }
85
-
86
- ul, ol {
87
- padding-left: 2rem;
88
- }
89
-
90
- li {
91
- margin: 0.5rem 0;
92
- }
93
-
94
- hr {
95
- margin-top: 1rem;
96
- margin-bottom: 1rem;
97
- border: none;
98
- border-top: 4px solid;
99
- color: var(--neutral-color);
100
- }
101
-
102
- blockquote {
103
- border-left: 0.25rem solid var(--neutral-color);
104
- padding: 0 1rem;
105
- color: var(--muted-fg-color);
106
- }
107
-
108
- pre {
109
- padding: 1rem;
110
- overflow-x: scroll;
111
- }
112
-
113
- img {
114
- max-width: 100%
115
- }
116
-
117
- a {
118
- color: var(--link-color);
119
- text-decoration: none;
120
- }
121
-
122
- a:hover {
123
- text-decoration: underline;
124
- }
125
-
126
- /* Tables */
127
-
128
- table {
129
- border-collapse: collapse;
130
- }
131
-
132
- th, td {
133
- padding: 6px 13px;
134
- border: 1px solid var(--neutral-color);
135
- }
136
-
137
- /* Header anchor links */
138
-
139
- a.toclink {
140
- color: inherit;
141
- text-decoration: none;
142
- }
143
-
144
- a.toclink:hover::after {
145
- content: "#";
146
- margin: 0 0.8rem;
147
- color: var(--neutral-color);
148
- }
@@ -1,20 +0,0 @@
1
- Metadata-Version: 2.5
2
- Name: mkdocs
3
- Version: 2.0.dev2
4
- Summary: HTTP, for Python.
5
- Author-email: Kim Christie <noreply@lovelydinosaur.com>
6
- Classifier: Development Status :: 4 - Beta
7
- Classifier: Environment :: Web Environment
8
- Classifier: Intended Audience :: Developers
9
- Classifier: Operating System :: OS Independent
10
- Classifier: Programming Language :: Python :: 3
11
- Classifier: Programming Language :: Python :: 3.10
12
- Classifier: Programming Language :: Python :: 3.11
13
- Classifier: Programming Language :: Python :: 3.12
14
- Classifier: Programming Language :: Python :: 3.13
15
- Classifier: Topic :: Internet :: WWW/HTTP
16
- Requires-Python: >=3.10
17
- Requires-Dist: click
18
- Requires-Dist: httpx>=1.0.dev5
19
- Requires-Dist: jinja2
20
- Requires-Dist: markdown
@@ -1,16 +0,0 @@
1
- mkdocs/__init__.py,sha256=bpMsoVf4vXq24u68lQIJ4ZObI95LoIPRSOUq-NBw1_c,305
2
- mkdocs/__version__.py,sha256=EqRxpiV6Ug87HD5Jo_az1A4j2AMDx6hbktEUBq5_1dM,46
3
- mkdocs/mkdocs.py,sha256=c4MSgt6diWYLVzvfredr4hbLUCObeGbPXZ_B8bkEQKk,8256
4
- mkdocs/default/base.html,sha256=lrJDGMMkQq-iWkdjPwRDUWp-sBGZMMtqyvustu1dx9A,440
5
- mkdocs/default/favicon.html,sha256=6-o5g6-nIJRTp83ZzABUaaV0_JNcm-1HxdTKeLbLsxg,227
6
- mkdocs/default/highlight.css,sha256=2N7xpE1RkMFjJSnFOjQX3x0Mj6yKf6pM8-B08rE2n-o,5600
7
- mkdocs/default/style.css,sha256=97Ja4pF93L-13enfKF2vyzfRIULkyH15VMeX85FC9Pc,2107
8
- mkdocs/extensions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
9
- mkdocs/extensions/relative_urls.py,sha256=LbcM00LtwlMjAoflVuPklbe_KJyDroOcNVO1SuksnvE,1968
10
- mkdocs/extensions/short_codes.py,sha256=I2SwGMcG9OT_vpkJwPI8cHBTkwQAjSPZmoQKfctsHn4,950
11
- mkdocs/extensions/strike_thru.py,sha256=GrCbfMrHz_2Vlh3E572EQYOSDzEGym34pkHElzF2HZY,577
12
- mkdocs/theme/base.html,sha256=IMq7rrAb97Hg3lKAxPtCufuwe3zNfRlWBGjvvT6kzSc,2785
13
- mkdocs-2.0.dev2.dist-info/METADATA,sha256=Bez3eQjRzfDD_tdUZggcw8fxArFF36zCRezU9ppAQug,729
14
- mkdocs-2.0.dev2.dist-info/WHEEL,sha256=zOwg4jB6zX2kU910N-cMawjivD6tO8NEWvE12je1bVk,87
15
- mkdocs-2.0.dev2.dist-info/entry_points.txt,sha256=5PqBrzYJLZ9-yQ0djvENWOQ-0x6Xj30JYNSzM_m70ZU,38
16
- mkdocs-2.0.dev2.dist-info/RECORD,,