mkdocs-partial 1.2.1__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.
Files changed (41) hide show
  1. mkdocs_partial/__init__.py +24 -0
  2. mkdocs_partial/argparse_types.py +14 -0
  3. mkdocs_partial/docs_package_plugin.py +224 -0
  4. mkdocs_partial/entry_point.py +199 -0
  5. mkdocs_partial/integrations/__init__.py +0 -0
  6. mkdocs_partial/integrations/macros_plugin_shim.py +36 -0
  7. mkdocs_partial/integrations/material_blog_integration.py +149 -0
  8. mkdocs_partial/integrations/redirect_plugin_shim.py +23 -0
  9. mkdocs_partial/integrations/spellcheck_plugin_shim.py +46 -0
  10. mkdocs_partial/mkdcos_helpers.py +97 -0
  11. mkdocs_partial/packages/__init__.py +0 -0
  12. mkdocs_partial/packages/packager.py +218 -0
  13. mkdocs_partial/packages/templates/docs-package/dist-info/METADATA.j2 +7 -0
  14. mkdocs_partial/packages/templates/docs-package/dist-info/WHEEL.j2 +4 -0
  15. mkdocs_partial/packages/templates/docs-package/dist-info/entry_points.txt.j2 +2 -0
  16. mkdocs_partial/packages/templates/docs-package/package/__init__.py.j2 +3 -0
  17. mkdocs_partial/packages/templates/docs-package/package/__pyinstaller/__init__.py.j2 +5 -0
  18. mkdocs_partial/packages/templates/docs-package/package/__pyinstaller/hook-{{module_name}}.py.j2 +31 -0
  19. mkdocs_partial/packages/templates/docs-package/package/plugin.py.j2 +5 -0
  20. mkdocs_partial/packages/templates/site-package/dist-info/METADATA.j2 +7 -0
  21. mkdocs_partial/packages/templates/site-package/dist-info/WHEEL.j2 +4 -0
  22. mkdocs_partial/packages/templates/site-package/dist-info/entry_points.txt.j2 +5 -0
  23. mkdocs_partial/packages/templates/site-package/package/__init__.py.j2 +3 -0
  24. mkdocs_partial/packages/templates/site-package/package/__main__.py.j2 +4 -0
  25. mkdocs_partial/packages/templates/site-package/package/__pyinstaller/__init__.py.j2 +5 -0
  26. mkdocs_partial/packages/templates/site-package/package/__pyinstaller/hook-{{module_name}}.py.j2 +30 -0
  27. mkdocs_partial/packages/templates/site-package/package/entry_point.py.j2 +11 -0
  28. mkdocs_partial/partial_docs_plugin.py +92 -0
  29. mkdocs_partial/site_entry_point.py +151 -0
  30. mkdocs_partial/templating/__init__.py +5 -0
  31. mkdocs_partial/templating/markdown_extension.py +38 -0
  32. mkdocs_partial/templating/templater.py +76 -0
  33. mkdocs_partial/templating/templater_extension.py +17 -0
  34. mkdocs_partial/templating/version.py +5 -0
  35. mkdocs_partial/version.py +1 -0
  36. mkdocs_partial-1.2.1.dist-info/LICENSE +19 -0
  37. mkdocs_partial-1.2.1.dist-info/METADATA +31 -0
  38. mkdocs_partial-1.2.1.dist-info/RECORD +41 -0
  39. mkdocs_partial-1.2.1.dist-info/WHEEL +5 -0
  40. mkdocs_partial-1.2.1.dist-info/entry_points.txt +6 -0
  41. mkdocs_partial-1.2.1.dist-info/top_level.txt +1 -0
@@ -0,0 +1,151 @@
1
+ # pylint: disable=duplicate-code
2
+ import glob
3
+ import inspect
4
+ import logging
5
+ import os
6
+ import shutil
7
+ import sys
8
+ from abc import ABC
9
+ from argparse import ArgumentParser, ArgumentTypeError
10
+ from pathlib import Path
11
+
12
+ import yaml
13
+ from mkdocs.__main__ import build_command as mkdocs_build_command, serve_command as mkdocs_serve_command
14
+
15
+ from mkdocs_partial.argparse_types import directory
16
+ from mkdocs_partial.entry_point import add_command_parser
17
+ from mkdocs_partial.mkdcos_helpers import normalize_path
18
+ from mkdocs_partial.partial_docs_plugin import PartialDocsPlugin
19
+
20
+
21
+ def local_docs(value: str):
22
+ values = value.split("=", maxsplit=1)
23
+ plugin = values[0]
24
+ path = "/docs" if len(values) <= 1 else values[1]
25
+ if not os.path.isdir(path):
26
+ raise ArgumentTypeError(f"directory '{path}' for plugin '{plugin}' does not exist")
27
+ return plugin, normalize_path(path)
28
+
29
+
30
+ class SiteEntryPoint(ABC):
31
+
32
+ def __init__(self, version, site_root=None, prog=None):
33
+ self.__prog = prog
34
+ self.__version = version
35
+ if site_root is None:
36
+ script_dir = os.path.dirname(os.path.realpath(inspect.getfile(self.__class__)))
37
+ self.__default_site_root = os.path.join(script_dir, "site")
38
+ else:
39
+ self.__default_site_root = site_root
40
+ logging.basicConfig(
41
+ level=logging.INFO,
42
+ format="{asctime} [{levelname}] {message}",
43
+ style="{",
44
+ )
45
+ self.logger = logging.getLogger(__name__)
46
+
47
+ def run(self):
48
+
49
+ parser = ArgumentParser(description=f"v{self.__version}", prog=self.__prog)
50
+ subparsers = parser.add_subparsers(help="commands")
51
+ self.add_mkdocs_command_parser(
52
+ subparsers,
53
+ "serve",
54
+ "execute mkdocs serve",
55
+ func=lambda args, argv: self.mkdocs(mkdocs_serve_command, args, argv),
56
+ )
57
+
58
+ self.add_mkdocs_command_parser(
59
+ subparsers,
60
+ "build",
61
+ "execute mkdocs build",
62
+ func=lambda args, argv: self.mkdocs(mkdocs_build_command, args, argv),
63
+ )
64
+
65
+ dump_command = self.add_command_parser(subparsers, "dump", "dump site files to the dir", func=self.dump)
66
+ dump_command.add_argument(
67
+ "--output", required=False, type=directory, help="Output directory. Default - Current directory"
68
+ )
69
+
70
+ args, argv = parser.parse_known_args()
71
+
72
+ if not hasattr(args, "func"):
73
+ parser.print_help()
74
+ sys.exit(0)
75
+ try:
76
+ success, message = args.func(args, argv)
77
+ if not success:
78
+ print(message, file=sys.stderr)
79
+ elif message is not None:
80
+ print(message)
81
+ except Exception as e: # pylint: disable=broad-exception-caught
82
+ self.logger.exception(f"FAIL! {e}")
83
+ success = False
84
+
85
+ sys.exit(0 if success else 1)
86
+
87
+ @staticmethod
88
+ def add_command_parser(subparsers, name, help_text, func):
89
+ command_parser = subparsers.add_parser(name, help=help_text)
90
+ command_parser.set_defaults(func=func, commandName=name)
91
+ return command_parser
92
+
93
+ @staticmethod
94
+ def add_mkdocs_command_parser(subparsers, name, help_text, func):
95
+ command_parser = add_command_parser(subparsers, name, help_text, func)
96
+ command_parser.add_argument("--local-docs", required=False, type=local_docs)
97
+ command_parser.add_argument("--site-root", required=False, type=directory)
98
+ return command_parser
99
+
100
+ def mkdocs(self, command, args, argv):
101
+
102
+ site_root_path = args.site_root
103
+ if site_root_path is None:
104
+ site_root_path = self.__default_site_root
105
+
106
+ self.logger.info(f"site root: {site_root_path}")
107
+ mkdocs_yaml_path = os.path.join(site_root_path, "mkdocs.yml")
108
+ if not os.path.isfile(mkdocs_yaml_path):
109
+ return False, "Site root does not have mkdocs.yml"
110
+ with open(mkdocs_yaml_path) as file:
111
+ mkdocs_yaml = yaml.safe_load(file)
112
+ plugins = mkdocs_yaml.get("plugins", [])
113
+ if not any("partial_docs" in plugin for plugin in plugins):
114
+ return False, f"{mkdocs_yaml_path} must define 'partial_docs' plugin"
115
+
116
+ if args.local_docs is not None:
117
+ plugin, docs_path = args.local_docs
118
+ PartialDocsPlugin.docs_path_overrides[plugin] = docs_path
119
+
120
+ current_dir = os.getcwd()
121
+ os.chdir(site_root_path)
122
+ try:
123
+ os.chdir(site_root_path)
124
+ Path(site_root_path).mkdir(parents=True, exist_ok=True)
125
+ command(argv) # pylint: disable=too-many-function-args
126
+ finally:
127
+ os.chdir(current_dir)
128
+ return False, ""
129
+
130
+ def dump(self, args, argv): # pylint: disable=unused-argument
131
+ output = args.output
132
+ if output is None:
133
+ output = os.getcwd()
134
+ output = normalize_path(output)
135
+
136
+ for path in glob.glob(os.path.join(self.__default_site_root, "**/*"), recursive=True):
137
+ path = normalize_path(path)
138
+ dest = os.path.relpath(path, self.__default_site_root)
139
+ dest = os.path.join(output, dest)
140
+ dest = normalize_path(dest)
141
+ if os.path.isdir(path):
142
+ os.makedirs(dest, exist_ok=True)
143
+ else:
144
+ os.makedirs(os.path.dirname(dest), exist_ok=True)
145
+ shutil.copy(path, dest)
146
+
147
+ return True, ""
148
+
149
+
150
+ if __name__ == "__main__":
151
+ SiteEntryPoint("1.0", r"d:\CODE\cy\subsystems\documentation\docs-site-documentation-inceptum").run()
@@ -0,0 +1,5 @@
1
+ import re
2
+
3
+ PACKAGE_NAME_RESTRICTED_CHARS = re.compile(r"[^A-Za-z0-9+_-]")
4
+ MODULE_NAME_RESTRICTED_CHARS = re.compile(r"[^a-z0-9+_]")
5
+ PACKAGE_NAME = re.compile(r"^[A-Za-z0-9+_-]+$")
@@ -0,0 +1,38 @@
1
+ import re
2
+ from html import escape
3
+ from typing import Callable, Dict
4
+
5
+ from mkdocs_partial.templating.templater_extension import TemplaterExtension
6
+
7
+
8
+ class TemplaterMarkdownExtension(TemplaterExtension):
9
+ @property
10
+ def filters(self) -> Dict[str, Callable]:
11
+ yield "escape_markdown", self.escape_markdown
12
+ yield "escape_new_lines", self.escape_new_lines
13
+ yield "nowrap", self.nowrap
14
+ yield "table_safe", self.table_safe
15
+ yield "eclipse", self.eclipse
16
+ yield "remove_tags", self.remove_tags
17
+
18
+ def escape_markdown(self, text):
19
+ text = escape(str(text))
20
+ return text.replace("|", "&#124;").replace("_", "&#95;").replace("*", "&#42;")
21
+
22
+ def escape_new_lines(self, text):
23
+ return text.replace("\r\n", "<br/>").replace("\n", "<br/>").rstrip("<br/>")
24
+
25
+ def nowrap(self, text):
26
+ return text.replace("-", "&#x2011;").replace(" ", "&#160;")
27
+
28
+ def table_safe(self, text):
29
+ return text.replace("|", "\\|")
30
+
31
+ def eclipse(self, value, length=48, add_spaces=False):
32
+ if len(value) > length:
33
+ return value[: length - 3] + "..."
34
+
35
+ return value.ljust(length) if add_spaces else value
36
+
37
+ def remove_tags(self, value):
38
+ return re.sub("\\[.*?\\]\\s*", "", value)
@@ -0,0 +1,76 @@
1
+ import os
2
+ from abc import ABC
3
+ from argparse import ArgumentError
4
+ from io import StringIO
5
+ from pathlib import Path
6
+ from typing import Callable, Dict
7
+
8
+ import jinja2
9
+
10
+ from mkdocs_partial.templating.templater_extension import TemplaterExtension
11
+
12
+
13
+ class Templater(ABC):
14
+ def __init__(self, templates_dir, template_filters: Dict[str, Callable] = None, output_path=None, **template_args):
15
+ if template_filters is None:
16
+ template_filters = {}
17
+ if output_path is None:
18
+ output_path = os.getcwd()
19
+ self.output_path = output_path
20
+ self.templates_dir = templates_dir
21
+ template_loader = jinja2.FileSystemLoader(searchpath=templates_dir)
22
+ self.__template_environment = jinja2.Environment(
23
+ loader=template_loader, trim_blocks=True, lstrip_blocks=False, newline_sequence="\r\n"
24
+ )
25
+ self.__template_args = template_args
26
+ filters = {}
27
+ filters.update(template_filters)
28
+ for name, method in filters.items():
29
+ self.__template_environment.filters[name] = method
30
+
31
+ def extend(self, extension: TemplaterExtension):
32
+ for name, method in extension.filters:
33
+ self.__template_environment.filters[name] = method
34
+ self.__template_args.update(extension.args)
35
+ return self
36
+
37
+ def write_template(self, template: str, /, *, path=None, **args):
38
+ if template is None or template == "":
39
+ raise ArgumentError(template, "template should not be None")
40
+ template_vars = {}
41
+ if path is None:
42
+ path = template
43
+ template_vars.update(args)
44
+ report_file = path
45
+ if not os.path.isabs(path):
46
+ report_file = os.path.normpath(os.path.join(self.output_path, path))
47
+ Path(os.path.dirname(report_file)).mkdir(parents=True, exist_ok=True)
48
+ with open(report_file, "w", encoding="utf-8") as file:
49
+ self.__template(template, file, **args)
50
+ return report_file
51
+
52
+ def template(self, template, **args):
53
+ stream = StringIO()
54
+ self.__template(template, stream, **args)
55
+ stream.seek(0)
56
+ return stream.read()
57
+
58
+ def template_string(self, template, **args):
59
+ stream = StringIO()
60
+ self.__template(template, stream, is_str=True, **args)
61
+ stream.seek(0)
62
+ return stream.read()
63
+
64
+ def __template(self, template, stream, is_str=False, **args):
65
+ template_vars = {}
66
+ if args is None:
67
+ args = {}
68
+ args = dict(args)
69
+ args.update(self.__template_args)
70
+ template_vars.update(args)
71
+ template = (
72
+ self.__template_environment.from_string(template)
73
+ if is_str
74
+ else self.__template_environment.get_template(template)
75
+ )
76
+ template.stream(template_vars).dump(stream)
@@ -0,0 +1,17 @@
1
+ from abc import ABC
2
+ from typing import Any, Callable, Dict
3
+
4
+
5
+ class TemplaterExtension(ABC):
6
+
7
+ def __init__(self, **kwargs):
8
+ self.__args = kwargs
9
+ super().__init__()
10
+
11
+ @property
12
+ def filters(self) -> Dict[str, Callable]:
13
+ return {}
14
+
15
+ @property
16
+ def args(self) -> Dict[str, Any]:
17
+ return self.__args
@@ -0,0 +1,5 @@
1
+ """
2
+ Version
3
+ """
4
+
5
+ __version__ = "0.1.0"
@@ -0,0 +1 @@
1
+ __version__ = "1.2.1"
@@ -0,0 +1,19 @@
1
+ Copyright (c) 2024 Exordis
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining a copy
4
+ of this software and associated documentation files (the "Software"), to deal
5
+ in the Software without restriction, including without limitation the rights
6
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
+ copies of the Software, and to permit persons to whom the Software is
8
+ furnished to do so, subject to the following conditions:
9
+
10
+ The above copyright notice and this permission notice shall be included in all
11
+ copies or substantial portions of the Software.
12
+
13
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
19
+ SOFTWARE.
@@ -0,0 +1,31 @@
1
+ Metadata-Version: 2.1
2
+ Name: mkdocs-partial
3
+ Version: 1.2.1
4
+ Summary: Mkdocs Partial Documentation
5
+ Author: Exorids
6
+ Project-URL: Homepage, https://github.com/exordis/mkdocs-partial
7
+ Project-URL: Documentation, https://docs.exordis.com/Partial%20Documentation/
8
+ Keywords: mkdocs,partial
9
+ Classifier: Programming Language :: Python :: 3
10
+ Classifier: License :: OSI Approved :: MIT License
11
+ Classifier: Operating System :: OS Independent
12
+ Requires-Python: >=3.12
13
+ License-File: LICENSE
14
+ Requires-Dist: setuptools <75,>=74
15
+ Requires-Dist: PyYAML <6.1,>=6.0.1
16
+ Requires-Dist: mkdocs <1.7,>=1.6
17
+ Requires-Dist: python-frontmatter <1.2,>=1.1.0
18
+ Requires-Dist: argparse <1.5,>=1.4
19
+ Requires-Dist: packaging >=24.0
20
+ Provides-Extra: lint
21
+ Requires-Dist: black <25,>=24.8 ; extra == 'lint'
22
+ Requires-Dist: flake8 <8.0.0,>=7.0.0 ; extra == 'lint'
23
+ Requires-Dist: isort <6.0.0,>=5.13.0 ; extra == 'lint'
24
+ Requires-Dist: pylint ==3.3.0 ; extra == 'lint'
25
+ Provides-Extra: test
26
+ Requires-Dist: pytest <8.0.0,>=7.1.3 ; extra == 'test'
27
+ Requires-Dist: pytest-cov <4.0.0,>=3.0.0 ; extra == 'test'
28
+ Requires-Dist: pytest-mock <4.0.0,>=3.0.0 ; extra == 'test'
29
+ Requires-Dist: pytest-resource-path ==1.3.0 ; extra == 'test'
30
+
31
+ Mkdocs Partial Documentation
@@ -0,0 +1,41 @@
1
+ mkdocs_partial/__init__.py,sha256=clmwB5riEm0TL650ufjrDAcyIHyKWpeG7rJzhWY_qus,1292
2
+ mkdocs_partial/argparse_types.py,sha256=0_DEhGfbs8rCqGRnyMVInTuakfZ07_9-xLub_23H2rk,332
3
+ mkdocs_partial/docs_package_plugin.py,sha256=OvkgIouMEFv_OsydmeFm3Mv289dTOHTBdBV1AKylR3k,9640
4
+ mkdocs_partial/entry_point.py,sha256=RIjzz_YXPvy4dLTf7q4TwmoaPs2zKUHUqbrBKLe4iRo,7007
5
+ mkdocs_partial/mkdcos_helpers.py,sha256=Ihi8Fxe2KiN6qGroaMHKl0XZSk9XRr6Q1E0HcCXOQBY,3681
6
+ mkdocs_partial/partial_docs_plugin.py,sha256=CNgudgX8ztjITAAyPonc4smNUBIJlLFOIek19syN2a4,3743
7
+ mkdocs_partial/site_entry_point.py,sha256=lmevOAab7VknT2Mo7biUuiiCk8Rj45VD78o-SgLkVTM,5696
8
+ mkdocs_partial/version.py,sha256=Mlm4Gvmb_6yQxwUbv2Ksc-BJFXLPg9H1Vt2iV7wXrA4,22
9
+ mkdocs_partial/integrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
10
+ mkdocs_partial/integrations/macros_plugin_shim.py,sha256=FI1lwMDHhPTDvEs6RwPPScgkNrprgA24hX2Ys8RfXOg,1451
11
+ mkdocs_partial/integrations/material_blog_integration.py,sha256=oyIAM69w9n5S8JSltHg7nX1KUIUDA-Htn67ny9BkLbk,6577
12
+ mkdocs_partial/integrations/redirect_plugin_shim.py,sha256=l5rzNnYSDiBXe39zeKLamClTfS1beDFXLhYWPl26y8U,1057
13
+ mkdocs_partial/integrations/spellcheck_plugin_shim.py,sha256=IDX_bdBxvbdH6fYTrcNRIIILjn0kOHMWM75GNVefnTE,1959
14
+ mkdocs_partial/packages/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
15
+ mkdocs_partial/packages/packager.py,sha256=hDThinVAyvufBr390rTZcpNyNHSSaQCb9s3vUkG58co,9358
16
+ mkdocs_partial/packages/templates/docs-package/dist-info/METADATA.j2,sha256=jP5exCZ02fHV5CZUSOglXC1fpR1aOu2End2UF142MwU,200
17
+ mkdocs_partial/packages/templates/docs-package/dist-info/WHEEL.j2,sha256=oqtHCHiufqw6DYjrSjrApk-sRVBDzXyYro5YVCSEvGE,83
18
+ mkdocs_partial/packages/templates/docs-package/dist-info/entry_points.txt.j2,sha256=1W6F_2bOdyyYsND6ghRt53DkRpW3Ujv1x41wdfSTos4,66
19
+ mkdocs_partial/packages/templates/docs-package/package/__init__.py.j2,sha256=tk9gDtreAfgnAcuBkmzAVKWiUaW-wDPltHV3PPgqzAM,88
20
+ mkdocs_partial/packages/templates/docs-package/package/plugin.py.j2,sha256=Vn_ONwaJz5WRqsjbyc2zx-Va9RGZQQup8GNfObduTpA,379
21
+ mkdocs_partial/packages/templates/docs-package/package/__pyinstaller/__init__.py.j2,sha256=n3qUujxBN7F1dvga4UNc5VQQ0L3GL4kp6ilu8Fbn-8E,75
22
+ mkdocs_partial/packages/templates/docs-package/package/__pyinstaller/hook-{{module_name}}.py.j2,sha256=x5JKrRwq5aGIq-BbDMoWGS60ZEZM9MfWfr4J8fm6HpU,965
23
+ mkdocs_partial/packages/templates/site-package/dist-info/METADATA.j2,sha256=jP5exCZ02fHV5CZUSOglXC1fpR1aOu2End2UF142MwU,200
24
+ mkdocs_partial/packages/templates/site-package/dist-info/WHEEL.j2,sha256=oqtHCHiufqw6DYjrSjrApk-sRVBDzXyYro5YVCSEvGE,83
25
+ mkdocs_partial/packages/templates/site-package/dist-info/entry_points.txt.j2,sha256=zeQVaJ8wUjDbFmvPJx1In2-zeCj-jObGpAsx5Xbz4ek,145
26
+ mkdocs_partial/packages/templates/site-package/package/__init__.py.j2,sha256=tk9gDtreAfgnAcuBkmzAVKWiUaW-wDPltHV3PPgqzAM,88
27
+ mkdocs_partial/packages/templates/site-package/package/__main__.py.j2,sha256=olncNMUUaIZ1L6b4QKd1Ep0czGiYH6_g-3VgFHUbF1U,94
28
+ mkdocs_partial/packages/templates/site-package/package/entry_point.py.j2,sha256=n9-sPkBWLyYqpWFlxnTrOweC0NADh0JFArvkJ-bh570,332
29
+ mkdocs_partial/packages/templates/site-package/package/__pyinstaller/__init__.py.j2,sha256=n3qUujxBN7F1dvga4UNc5VQQ0L3GL4kp6ilu8Fbn-8E,75
30
+ mkdocs_partial/packages/templates/site-package/package/__pyinstaller/hook-{{module_name}}.py.j2,sha256=pyrikIqSRRbw7YNOnSpDVPYNxZjbXRbxatroyxM2skM,1021
31
+ mkdocs_partial/templating/__init__.py,sha256=4w62VvjHdoB8ThB6Z6BLw61xP2p8rXjyfds-3vjnurg,185
32
+ mkdocs_partial/templating/markdown_extension.py,sha256=j24tTTRZkS_kZt5hD7P-O3AaZHJYdURSzDv7purKZGI,1310
33
+ mkdocs_partial/templating/templater.py,sha256=jFk-LRSnVrMyOZE46lDih-XOc4GTzZrOtb81jO27ovY,2893
34
+ mkdocs_partial/templating/templater_extension.py,sha256=CqP092ZB3OCSCIZNSAJYwovicVjEkxUm3BdscvfycOc,359
35
+ mkdocs_partial/templating/version.py,sha256=K1EbhMYUkog0O4znEW0NoISmA-SGFEjhlLvvOxTvdrc,39
36
+ mkdocs_partial-1.2.1.dist-info/LICENSE,sha256=L2U87H2Agcp9ERUZyQ3u3GNzXlp5JBSom8QTRsvmDxI,1068
37
+ mkdocs_partial-1.2.1.dist-info/METADATA,sha256=N8_QRXRbG7v0umAgC3BQv-HNF5ja1EUKzfunA3q18PM,1205
38
+ mkdocs_partial-1.2.1.dist-info/WHEEL,sha256=R06PA3UVYHThwHvxuRWMqaGcr-PuniXahwjmQRFMEkY,91
39
+ mkdocs_partial-1.2.1.dist-info/entry_points.txt,sha256=kl-tZYlorEy6jL1ua0YYFVw9suKUDBQM00D9BSLKpbs,220
40
+ mkdocs_partial-1.2.1.dist-info/top_level.txt,sha256=Sgy37fgFOY3--xaLzfu5MAPTOUeUTbK-LOQ1K9xrNWw,15
41
+ mkdocs_partial-1.2.1.dist-info/RECORD,,
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: setuptools (75.5.0)
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
5
+
@@ -0,0 +1,6 @@
1
+ [console_scripts]
2
+ mkdocs-partial = mkdocs_partial.entry_point:run
3
+
4
+ [mkdocs.plugins]
5
+ docs_package = mkdocs_partial.docs_package_plugin:DocsPackagePlugin
6
+ partial_docs = mkdocs_partial.partial_docs_plugin:PartialDocsPlugin
@@ -0,0 +1 @@
1
+ mkdocs_partial