t-doc-common 0.3.dev1__tar.gz → 0.4.dev1__tar.gz

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 (50) hide show
  1. t_doc_common-0.4.dev1/.github/workflows/publish.yml +19 -0
  2. {t_doc_common-0.3.dev1 → t_doc_common-0.4.dev1}/.hgtags +1 -0
  3. {t_doc_common-0.3.dev1 → t_doc_common-0.4.dev1}/PKG-INFO +8 -5
  4. t_doc_common-0.4.dev1/README.md +11 -0
  5. t_doc_common-0.4.dev1/docs/conf.py +18 -0
  6. t_doc_common-0.4.dev1/docs/development.md +48 -0
  7. t_doc_common-0.4.dev1/docs/index.md +14 -0
  8. t_doc_common-0.4.dev1/docs/install.md +65 -0
  9. {t_doc_common-0.3.dev1 → t_doc_common-0.4.dev1}/pyproject.toml +2 -1
  10. {t_doc_common-0.3.dev1 → t_doc_common-0.4.dev1}/tdoc/common/__init__.py +3 -1
  11. {t_doc_common-0.3.dev1 → t_doc_common-0.4.dev1}/tdoc/common/cli.py +68 -12
  12. {t_doc_common-0.3.dev1 → t_doc_common-0.4.dev1}/tdoc/common/defaults.py +3 -2
  13. t_doc_common-0.3.dev1/README.md +0 -9
  14. {t_doc_common-0.3.dev1 → t_doc_common-0.4.dev1}/.github/workflows/deploy-github-pages.yml +0 -0
  15. {t_doc_common-0.3.dev1 → t_doc_common-0.4.dev1}/.gitignore +0 -0
  16. {t_doc_common-0.3.dev1 → t_doc_common-0.4.dev1}/.gitmodules +0 -0
  17. {t_doc_common-0.3.dev1 → t_doc_common-0.4.dev1}/.hgignore +0 -0
  18. {t_doc_common-0.3.dev1 → t_doc_common-0.4.dev1}/.hgsub +0 -0
  19. {t_doc_common-0.3.dev1 → t_doc_common-0.4.dev1}/.hgsubstate +0 -0
  20. {t_doc_common-0.3.dev1 → t_doc_common-0.4.dev1}/LICENSE.txt +0 -0
  21. {t_doc_common-0.3.dev1 → t_doc_common-0.4.dev1}/ext/sqlite-wasm/.gitignore +0 -0
  22. {t_doc_common-0.3.dev1 → t_doc_common-0.4.dev1}/ext/sqlite-wasm/.prettierrc +0 -0
  23. {t_doc_common-0.3.dev1 → t_doc_common-0.4.dev1}/ext/sqlite-wasm/README.md +0 -0
  24. {t_doc_common-0.3.dev1 → t_doc_common-0.4.dev1}/ext/sqlite-wasm/bin/index.js +0 -0
  25. {t_doc_common-0.3.dev1 → t_doc_common-0.4.dev1}/ext/sqlite-wasm/demo/index.html +0 -0
  26. {t_doc_common-0.3.dev1 → t_doc_common-0.4.dev1}/ext/sqlite-wasm/demo/main-thread.js +0 -0
  27. {t_doc_common-0.3.dev1 → t_doc_common-0.4.dev1}/ext/sqlite-wasm/demo/module-workers-polyfill.min.js +0 -0
  28. {t_doc_common-0.3.dev1 → t_doc_common-0.4.dev1}/ext/sqlite-wasm/demo/script.js +0 -0
  29. {t_doc_common-0.3.dev1 → t_doc_common-0.4.dev1}/ext/sqlite-wasm/demo/worker.js +0 -0
  30. {t_doc_common-0.3.dev1 → t_doc_common-0.4.dev1}/ext/sqlite-wasm/demo/wrapped-worker.js +0 -0
  31. {t_doc_common-0.3.dev1 → t_doc_common-0.4.dev1}/ext/sqlite-wasm/index.d.ts +0 -0
  32. {t_doc_common-0.3.dev1 → t_doc_common-0.4.dev1}/ext/sqlite-wasm/index.mjs +0 -0
  33. {t_doc_common-0.3.dev1 → t_doc_common-0.4.dev1}/ext/sqlite-wasm/package-lock.json +0 -0
  34. {t_doc_common-0.3.dev1 → t_doc_common-0.4.dev1}/ext/sqlite-wasm/package.json +0 -0
  35. {t_doc_common-0.3.dev1 → t_doc_common-0.4.dev1}/ext/sqlite-wasm/sqlite-wasm/jswasm/sqlite3-bundler-friendly.mjs +0 -0
  36. {t_doc_common-0.3.dev1 → t_doc_common-0.4.dev1}/ext/sqlite-wasm/sqlite-wasm/jswasm/sqlite3-node.mjs +0 -0
  37. {t_doc_common-0.3.dev1 → t_doc_common-0.4.dev1}/ext/sqlite-wasm/sqlite-wasm/jswasm/sqlite3-opfs-async-proxy.js +0 -0
  38. {t_doc_common-0.3.dev1 → t_doc_common-0.4.dev1}/ext/sqlite-wasm/sqlite-wasm/jswasm/sqlite3-worker1-bundler-friendly.mjs +0 -0
  39. {t_doc_common-0.3.dev1 → t_doc_common-0.4.dev1}/ext/sqlite-wasm/sqlite-wasm/jswasm/sqlite3-worker1-promiser.js +0 -0
  40. {t_doc_common-0.3.dev1 → t_doc_common-0.4.dev1}/ext/sqlite-wasm/sqlite-wasm/jswasm/sqlite3-worker1-promiser.mjs +0 -0
  41. {t_doc_common-0.3.dev1 → t_doc_common-0.4.dev1}/ext/sqlite-wasm/sqlite-wasm/jswasm/sqlite3-worker1.js +0 -0
  42. {t_doc_common-0.3.dev1 → t_doc_common-0.4.dev1}/ext/sqlite-wasm/sqlite-wasm/jswasm/sqlite3.js +0 -0
  43. {t_doc_common-0.3.dev1 → t_doc_common-0.4.dev1}/ext/sqlite-wasm/sqlite-wasm/jswasm/sqlite3.mjs +0 -0
  44. {t_doc_common-0.3.dev1 → t_doc_common-0.4.dev1}/ext/sqlite-wasm/sqlite-wasm/jswasm/sqlite3.wasm +0 -0
  45. {t_doc_common-0.3.dev1 → t_doc_common-0.4.dev1}/tdoc/common/common.mk +0 -0
  46. {t_doc_common-0.3.dev1 → t_doc_common-0.4.dev1}/tdoc/common/components/copyright.html +0 -0
  47. {t_doc_common-0.3.dev1 → t_doc_common-0.4.dev1}/tdoc/common/static/styles/t-doc.css +0 -0
  48. {t_doc_common-0.3.dev1 → t_doc_common-0.4.dev1}/tdoc/common/static/tdoc-sql.js +0 -0
  49. {t_doc_common-0.3.dev1 → t_doc_common-0.4.dev1}/tdoc/common/theme.toml +0 -0
  50. {t_doc_common-0.3.dev1 → t_doc_common-0.4.dev1}/tdoc/common/util.py +0 -0
@@ -0,0 +1,19 @@
1
+ # Copyright 2024 Caroline Blank <caro@c-space.org>
2
+ # Copyright 2024 Remy Blank <remy@c-space.org>
3
+ # SPDX-License-Identifier: MIT
4
+
5
+ name: Publish
6
+ on:
7
+ push:
8
+ branches: [main]
9
+ workflow_dispatch:
10
+
11
+ permissions:
12
+ contents: read
13
+ pages: write
14
+ id-token: write
15
+
16
+ jobs:
17
+ deploy:
18
+ uses: t-doc-org/common/.github/workflows/deploy-github-pages.yml@main
19
+ secrets: inherit
@@ -1 +1,2 @@
1
1
  267a6c8ad66dde08f2b75d2d82d0d2985ca8f137 0.2
2
+ ea2973414a3779c7ffbed73279ab8d811c795268 0.3
@@ -1,8 +1,9 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: t-doc-common
3
- Version: 0.3.dev1
3
+ Version: 0.4.dev1
4
4
  Summary: Common functionality for t-doc
5
5
  Project-URL: Code, https://github.com/t-docs/common
6
+ Project-URL: Documentation, https://t-doc.org/common/
6
7
  Project-URL: Homepage, https://t-doc.org/
7
8
  Author-email: Remy Blank <remy@c-space.org>, Caroline Blank <caro@c-space.org>
8
9
  License: Copyright 2024 Caroline Blank <caro@c-space.org>
@@ -45,15 +46,17 @@ Requires-Dist: sphinx-design>=0.6.0
45
46
  Requires-Dist: sphinx-exercise>=0.4.1
46
47
  Requires-Dist: sphinx-proof>=0.1.3
47
48
  Requires-Dist: sphinx-togglebutton>=0.3.2
48
- Requires-Dist: sphinx<8,>=7.4.7
49
+ Requires-Dist: sphinx>=8.0.2
49
50
  Description-Content-Type: text/markdown
50
51
 
51
52
  <!-- Copyright 2024 Caroline Blank <caro@c-space.org> -->
52
53
  <!-- Copyright 2024 Remy Blank <remy@c-space.org> -->
53
54
  <!-- SPDX-License-Identifier: MIT -->
54
55
 
55
- # t-doc - Base commune
56
+ # t-doc - Common
56
57
 
57
- Ce package contient la fonctionnalité commune aux documents basés sur t-doc.
58
+ [![Publish](https://github.com/t-doc-org/common/actions/workflows/publish.yml/badge.svg)](https://github.com/t-doc-org/common/actions/workflows/publish.yml)
58
59
 
59
- Ce logiciel est distribué sous la licence [MIT](LICENSE.txt).
60
+ This package contains the common functionality for documents based on t-doc.
61
+
62
+ This software is distributed under the [MIT](LICENSE.txt) license.
@@ -0,0 +1,11 @@
1
+ <!-- Copyright 2024 Caroline Blank <caro@c-space.org> -->
2
+ <!-- Copyright 2024 Remy Blank <remy@c-space.org> -->
3
+ <!-- SPDX-License-Identifier: MIT -->
4
+
5
+ # t-doc - Common
6
+
7
+ [![Publish](https://github.com/t-doc-org/common/actions/workflows/publish.yml/badge.svg)](https://github.com/t-doc-org/common/actions/workflows/publish.yml)
8
+
9
+ This package contains the common functionality for documents based on t-doc.
10
+
11
+ This software is distributed under the [MIT](LICENSE.txt) license.
@@ -0,0 +1,18 @@
1
+ # Copyright 2024 Caroline Blank <caro@c-space.org>
2
+ # Copyright 2024 Remy Blank <remy@c-space.org>
3
+ # SPDX-License-Identifier: MIT
4
+
5
+ import time
6
+
7
+ from tdoc.common.defaults import *
8
+
9
+ project = "t-doc"
10
+ copyright = f"{time.strftime('%Y')} Remy Blank"
11
+ license = 'MIT'
12
+ language = 'en'
13
+
14
+ keep_warnings = True
15
+
16
+ html_theme_options = {
17
+ 'repository_url': 'https://github.com/t-doc-org/common',
18
+ }
@@ -0,0 +1,48 @@
1
+ <!-- Copyright 2024 Caroline Blank <caro@c-space.org> -->
2
+ <!-- Copyright 2024 Remy Blank <remy@c-space.org> -->
3
+ <!-- SPDX-License-Identifier: MIT -->
4
+
5
+ # Development
6
+
7
+ ## Install
8
+
9
+ - Install the [required packages](install.md#requirements) for your system.
10
+
11
+ - Clone the `t-doc/common` repository (substitute `USER` with your username).
12
+ ```{code-block} shell-session
13
+ hg clone https://USER@c-space.net/rc/hg/t-doc/common
14
+ cd common
15
+ ```
16
+
17
+ - Enable git subrepositories.
18
+ ```{code-block} shell-session
19
+ echo -e '[subrepos]\ngit:allowed = true\n' >> .hg/hgrc
20
+ ```
21
+
22
+ - Checkout the subrepositories and activate the `main` bookmark.
23
+ ```{code-block} shell-session
24
+ hg checkout main
25
+ ```
26
+
27
+ - Install the `t-doc-common` package from editable sources.
28
+ ```{code-block} shell-session
29
+ python -m pip install --user --editable .
30
+ ```
31
+
32
+ ## Upgrade
33
+
34
+ - Pull missing changesets from the `t-doc/common` repository.
35
+ ```{code-block} shell-session
36
+ cd common
37
+ hg pull
38
+ ```
39
+
40
+ - Update to the branch head.
41
+ ```{code-block} shell-session
42
+ hg update --check
43
+ ```
44
+
45
+ - Upgrade the `t-doc-common` package metadata and any out-of-date dependencies.
46
+ ```{code-block} shell-session
47
+ python -m pip install --user --upgrade --editable .
48
+ ```
@@ -0,0 +1,14 @@
1
+ <!-- Copyright 2024 Caroline Blank <caro@c-space.org> -->
2
+ <!-- Copyright 2024 Remy Blank <remy@c-space.org> -->
3
+ <!-- SPDX-License-Identifier: MIT -->
4
+
5
+ # t-doc
6
+
7
+ This documentation describes how to install and use t-doc.
8
+
9
+ ```{toctree}
10
+ :maxdepth: 1
11
+
12
+ install
13
+ development
14
+ ```
@@ -0,0 +1,65 @@
1
+ <!-- Copyright 2024 Caroline Blank <caro@c-space.org> -->
2
+ <!-- Copyright 2024 Remy Blank <remy@c-space.org> -->
3
+ <!-- SPDX-License-Identifier: MIT -->
4
+
5
+ # Install & upgrade
6
+
7
+ ## Requirements
8
+
9
+ t-doc requires the following software to be installed:
10
+
11
+ - [Python](https://www.python.org/) 3.12 or later
12
+ - [Graphviz](https://graphviz.org/), for `{graphviz}` directives
13
+ - [Mercurial](https://www.mercurial-scm.org/), for managing source files
14
+
15
+ ### Windows
16
+
17
+ - Install [Python](https://www.python.org/).
18
+ ```{code-block} shell-session
19
+ winget install --id Python.Python.3.12
20
+ ```
21
+
22
+ - Install [Graphviz](https://graphviz.org/). The installer must be run
23
+ interactively and the **"Add Graphviz to the system PATH for all users"**
24
+ option must be enabled.
25
+ ```{code-block} shell-session
26
+ winget install --id Graphviz.Graphviz --interactive
27
+ ```
28
+
29
+ - Install [TortoiseHg](https://tortoisehg.bitbucket.io/).
30
+ ```{code-block} shell-session
31
+ winget install --id TortoiseHg.TortoiseHg
32
+ ```
33
+
34
+ ```{admonition} TODO
35
+ TODO: Describe how to update .hgrc to configure the name and email address.
36
+ ```
37
+
38
+ - (Optional, Windows 10) Install
39
+ [Windows Terminal](https://github.com/microsoft/terminal) (it's already
40
+ installed on Windows 11 and later).
41
+ ```{code-block} shell-session
42
+ winget install --id Microsoft.WindowsTerminal
43
+ ```
44
+
45
+ ### Linux, macOS
46
+
47
+ - Install [Python](https://www.python.org/), [Graphviz](https://graphviz.org/)
48
+ and [Mercurial](https://www.mercurial-scm.org/) through your system's package
49
+ manager.
50
+
51
+ ## Install
52
+
53
+ - Install the [required packages](#requirements).
54
+
55
+ - Install the `t-doc-common` package.
56
+ ```{code-block} shell-session
57
+ python -m pip install --user t-doc-common
58
+ ```
59
+
60
+ ## Upgrade
61
+
62
+ - Upgrade the `t-doc-common` package and any out-of-date dependencies.
63
+ ```{code-block} shell-session
64
+ python -m pip install --user --upgrade t-doc-common
65
+ ```
@@ -10,6 +10,7 @@ authors = [
10
10
  {name = "Caroline Blank", email = "caro@c-space.org"},
11
11
  ]
12
12
  urls.Code = "https://github.com/t-docs/common"
13
+ urls.Documentation = "https://t-doc.org/common/"
13
14
  urls.Homepage = "https://t-doc.org/"
14
15
  readme = "README.md"
15
16
  license.file = "LICENSE.txt"
@@ -28,7 +29,7 @@ requires-python = ">=3.12"
28
29
  dependencies = [
29
30
  "colorama>=0.4.6; sys_platform == 'win32'",
30
31
  "myst-parser>=3.0.1",
31
- "Sphinx>=7.4.7,<8",
32
+ "Sphinx>=8.0.2",
32
33
  "sphinx-book-theme>=1.1.3",
33
34
  "sphinx-copybutton>=0.5.2",
34
35
  "sphinx_design>=0.6.0",
@@ -8,7 +8,8 @@ from docutils import nodes
8
8
  from sphinx.directives.code import CodeBlock
9
9
  from sphinx.util import logging
10
10
 
11
- __version__ = '0.3.dev1'
11
+ __project__ = 't-doc-common'
12
+ __version__ = '0.4.dev1'
12
13
 
13
14
  _common = pathlib.Path(__file__).absolute().parent
14
15
  _root = _common.parent.parent
@@ -23,6 +24,7 @@ _license_urls = {
23
24
  'CC-BY-NC-4.0': 'https://creativecommons.org/licenses/by-nc/4.0/',
24
25
  'CC-BY-NC-SA-4.0': 'https://creativecommons.org/licenses/by-nc-sa/4.0/',
25
26
  'CC-BY-ND-4.0': 'https://creativecommons.org/licenses/by-nd/4.0/',
27
+ 'MIT': 'https://opensource.org/license/mit',
26
28
  }
27
29
 
28
30
  def setup(app):
@@ -6,14 +6,18 @@ import argparse
6
6
  import contextlib
7
7
  from http import server
8
8
  import itertools
9
+ from importlib import metadata
10
+ import json
9
11
  import pathlib
10
12
  import shutil
11
13
  import socket
12
14
  import stat
13
15
  import subprocess
16
+ import sys
14
17
  import threading
15
18
  import time
16
19
 
20
+ from .. import common
17
21
  from . import util
18
22
 
19
23
 
@@ -81,6 +85,10 @@ def main(argv, stdin, stdout, stderr):
81
85
  arg('--watch', metavar='PATH', action='append', dest='watch', default=[],
82
86
  help="Additional directories to watch for changes.")
83
87
 
88
+ p = subparsers.add_parser('version', add_help=False,
89
+ help="Display version information.")
90
+ p.set_defaults(handler=cmd_version)
91
+
84
92
  cfg = parser.parse_args(argv[1:])
85
93
  cfg.stdin, cfg.stdout, cfg.stderr = stdin, stdout, stderr
86
94
  cfg.ansi = util.ansi if cfg.color else util.no_ansi
@@ -95,15 +103,6 @@ def cmd_build(cfg):
95
103
  if res.returncode != 0: return res.returncode
96
104
 
97
105
 
98
- def sphinx_build(cfg, target, *, build, **kwargs):
99
- argv = [cfg.sphinx_build, '-M', target, cfg.source, build,
100
- '--jobs=auto', '--fail-on-warning']
101
- if cfg.debug: argv += ['--show-traceback']
102
- argv += cfg.sphinx_opts
103
- return subprocess.run(argv, stdin=cfg.stdin, stdout=cfg.stdout,
104
- stderr=cfg.stderr, **kwargs)
105
-
106
-
107
106
  def cmd_clean(cfg):
108
107
  return sphinx_build(cfg, 'clean', build=cfg.build).returncode
109
108
 
@@ -129,15 +128,30 @@ def cmd_serve(cfg):
129
128
  cfg.stderr.write("Interrupted, exiting\n")
130
129
 
131
130
 
132
- class ServerBase(server.ThreadingHTTPServer):
131
+ def cmd_version(cfg):
132
+ cfg.stdout.write(f"{common.__project__}-{common.__version__}\n")
133
133
 
134
+
135
+ def sphinx_build(cfg, target, *, build, **kwargs):
136
+ argv = [cfg.sphinx_build, '-M', target, cfg.source, build,
137
+ '--jobs=auto', '--fail-on-warning']
138
+ if cfg.debug: argv += ['--show-traceback']
139
+ argv += cfg.sphinx_opts
140
+ return subprocess.run(argv, stdin=cfg.stdin, stdout=cfg.stdout,
141
+ stderr=cfg.stderr, **kwargs)
142
+
143
+
144
+ class ServerBase(server.ThreadingHTTPServer):
134
145
  def __init__(self, *args, cfg, **kwargs):
135
146
  self.cfg = cfg
136
147
  self.lock = threading.Lock()
137
- self.directory = self.cfg.build / 'html'
148
+ self.directory = self.build_dir(0) / 'html'
149
+ self.upgrade_msg = None
138
150
  self.stop = False
139
151
  self.builder = threading.Thread(target=self.watch_and_build)
140
152
  self.builder.start()
153
+ self.checker = threading.Thread(target=self.check_upgrade, daemon=True)
154
+ self.checker.start()
141
155
  super().__init__(*args, **kwargs)
142
156
 
143
157
  def server_bind(self):
@@ -227,10 +241,28 @@ class ServerBase(server.ThreadingHTTPServer):
227
241
  if ':' in host: host = f'[{host}]'
228
242
  self.cfg.stdout.write(self.cfg.ansi("Serving at <@{LBLUE}%s@{NORM}>\n")
229
243
  % f"http://{host}:{port}/")
244
+ with self.lock:
245
+ msg = self.upgrade_msg
246
+ if msg: self.cfg.stdout.write(msg)
247
+
248
+ def check_upgrade(self):
249
+ try:
250
+ project = common.__project__
251
+ upgrades, editable = pip_check_upgrades(self.cfg, project)
252
+ if project not in upgrades: return
253
+ msg = self.cfg.ansi(
254
+ "@{LYELLOW}A t-doc upgrade is available:@{NORM} "
255
+ "%s @{CYAN}%s@{NORM} => @{CYAN}%s@{NORM}\n"
256
+ "See <@{LBLUE}https://t-doc.org/common/%s#upgrade@{NORM}>\n"
257
+ % (project, metadata.version(project), upgrades[project],
258
+ 'development' if editable else 'install'))
259
+ with self.lock:
260
+ self.upgrade_msg = msg
261
+ except Exception:
262
+ if self.cfg.debug: raise
230
263
 
231
264
 
232
265
  class HandlerBase(server.SimpleHTTPRequestHandler):
233
-
234
266
  def log_request(self, code='-', size='-'):
235
267
  pass
236
268
 
@@ -240,5 +272,29 @@ class HandlerBase(server.SimpleHTTPRequestHandler):
240
272
  (format % args).translate(self._control_char_table)))
241
273
 
242
274
 
275
+ class Namespace(dict):
276
+ def __getattr__(self, name):
277
+ return self[name]
278
+
279
+
280
+ def pip(cfg, *args, json_output=False):
281
+ p = subprocess.run((sys.executable, '-m', 'pip') + args,
282
+ stdin=subprocess.DEVNULL, capture_output=True, text=True)
283
+ if p.returncode != 0: raise Exception(p.stderr)
284
+ if not json_output: return p.stdout
285
+ return json.loads(p.stdout, object_pairs_hook=Namespace)
286
+
287
+
288
+ def pip_check_upgrades(cfg, package):
289
+ data = pip(cfg, 'install', '--dry-run', '--upgrade',
290
+ '--upgrade-strategy=only-if-needed', '--only-binary=:all:',
291
+ '--report=-', '--quiet', package, json_output=True)
292
+ upgrades = {pkg.metadata.name: pkg.metadata.version for pkg in data.install}
293
+ if package not in upgrades: return {}, False
294
+ pkgs = pip(cfg, 'list', '--editable', '--format=json', json_output=True)
295
+ editable = any(pkg.name == package for pkg in pkgs)
296
+ return upgrades, editable
297
+
298
+
243
299
  if __name__ == '__main__':
244
300
  main()
@@ -39,7 +39,7 @@ graphviz_output_format = 'svg'
39
39
  todo_include_todos = True
40
40
 
41
41
  # MyST options.
42
- myst_enable_extensions = [
42
+ myst_enable_extensions = {
43
43
  'amsmath',
44
44
  'colon_fence',
45
45
  'deflist',
@@ -52,8 +52,9 @@ myst_enable_extensions = [
52
52
  'strikethrough',
53
53
  'substitution',
54
54
  'tasklist',
55
- ]
55
+ }
56
56
  myst_dmath_double_inline = True
57
+ myst_heading_anchors = 6
57
58
 
58
59
  # HTML rendering options.
59
60
  html_show_sphinx = False
@@ -1,9 +0,0 @@
1
- <!-- Copyright 2024 Caroline Blank <caro@c-space.org> -->
2
- <!-- Copyright 2024 Remy Blank <remy@c-space.org> -->
3
- <!-- SPDX-License-Identifier: MIT -->
4
-
5
- # t-doc - Base commune
6
-
7
- Ce package contient la fonctionnalité commune aux documents basés sur t-doc.
8
-
9
- Ce logiciel est distribué sous la licence [MIT](LICENSE.txt).
File without changes